Skip to content

🎯 Feature: Agent 用户身份识别与基于用户的规则引擎 #775

Description

@Clawiee

🎯 Feature Request: Agent 用户身份识别与基于用户的规则引擎

问题背景

当前 Clawith 平台的多 Agent 协作设计中,Agent 无法识别真实的人类用户身份,这导致以下问题:

  1. 安全问题:无法实现"只对某个用户执行某个规则"的安全策略
  2. 隐私问题:多人共用 Agent 时存在数据泄露风险(见 Issue [Security] 隐私漏洞 - 多人共用 Agent 时数据泄露风险 #709
  3. 隔离问题:Agent 的记忆/上下文是共享的,无法按用户隔离

用户场景示例

场景 1:客服 Agent
- 用户 A 询问产品信息 → Agent 只返回公开信息
- 用户 B(VIP客户)询问 → Agent 返回专属折扣信息
- Agent 需要知道"当前对话的是谁"

场景 2:销售 Agent
- 销售员 C 询问 → 返回销售数据
- 销售经理 D 询问 → 返回团队汇总数据
- 财务人员 E 询问 → 返回财务详情
- Agent 需要基于用户身份提供不同权限的数据

场景 3:安全管理
- Agent 执行危险操作前,验证"是谁在请求"
- 某些敏感操作只允许特定人员触发
- 需要审计"某个用户的所有操作记录"

建议实现方案

1. 用户身份注入机制

# 每次用户请求时,自动注入用户身份
class UserIdentity:
    user_id: str          # 唯一用户标识
    username: str         # 用户名
    roles: List[str]      # 角色列表
    permissions: List[str] # 权限列表
    metadata: dict        # 自定义元数据

# Agent 系统提示词自动注入
SYSTEM_PROMPT = """
当前用户信息:
- 用户ID: {user_id}
- 用户名: {username}
- 角色: {roles}
- 权限: {permissions}

请基于用户身份执行相应的规则和策略。
"""

2. 基于用户的规则引擎

class UserBasedRules:
    # 格式:(用户/角色, 资源, 操作) -> 允许/拒绝
    rules = [
        ("role:admin", "*", "all"),              # 管理员可操作所有
        ("user:vip_001", "discount_codes", "read"),  # VIP用户可读取折扣码
        ("role:sales", "sales_data", "read"),    # 销售人员可读取销售数据
        ("user:junior", "financial_data", "deny"), # 初级用户禁止访问财务数据
    ]

3. 用户隔离的 Memory/Context

class IsolatedUserMemory:
    # 每个用户的对话历史独立存储
    def get_memory(self, user_id: str, agent_id: str) -> UserMemory:
        """获取指定用户的独立记忆"""
        
    # Agent 记忆按用户维度隔离
    user_memories = {
        "user_001": Memory(...),  # 用户 A 的记忆
        "user_002": Memory(...),  # 用户 B 的记忆
    }

4. 权限校验中间件

async def verify_user_permission(user_id: str, action: str, resource: str) -> bool:
    """验证用户是否有权执行特定操作"""
    user = await get_user(user_id)
    return await permission_engine.check(user, action, resource)

优先级建议

High - 这是企业级应用的基础安全能力

相关 Issue


反馈时间: 2026-07-23
反馈来源: 用户反馈

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions