3.5 KiB
3.5 KiB
权限与确认引擎
1. 目标
Agent 不能只靠提示词判断能不能执行动作。
财务系统需要独立的权限与确认引擎:
Permission Engine
Confirmation Engine
它们负责:
- 判断用户是否能看某类数据。
- 判断任务是否能调用某个能力。
- 判断动作是否需要确认。
- 判断动作是否禁止自动执行。
2. 动作风险分级
建议按 L0-L5 分级。
L0 只读查询
例子:
- 查询制度。
- 查询单据状态。
- 查询规则说明。
- 查询任务运行记录。
要求:
- 需要权限。
- 不需要确认。
L1 生成建议
例子:
- 生成审批意见建议。
- 生成风险解释。
- 生成规则优化建议。
要求:
- 需要权限。
- 不写业务状态。
- 不需要确认,但要标记为建议。
L2 生成草稿
例子:
- 生成报销草稿。
- 生成付款申请草稿。
- 生成知识库候选。
要求:
- 需要权限。
- 写入草稿区。
- 不进入正式流程。
L3 用户确认后提交
例子:
- 用户确认后提交报销。
- 审批人确认后写入审批意见。
- 用户确认后发起补件。
要求:
- 必须二次确认。
- 必须记录确认人。
- 必须记录确认前后内容。
L4 管理员确认后发布
例子:
- 发布规则。
- 发布知识库。
- 启用 MCP。
- 启用任务。
要求:
- 必须管理员确认。
- 必须有审核记录。
- 必须有版本。
L5 禁止自动执行
例子:
- 自动最终审批。
- 自动付款。
- 自动绕过风控。
- 自动修改核心财务状态。
要求:
- Agent 永远不能直接执行。
3. 权限判断输入
{
"user_id": "emp_001",
"agent": "user_agent",
"source": "user_message",
"action": "create_reimbursement_draft",
"domain": "reimbursement",
"resource": {
"type": "reimbursement_request",
"id": ""
},
"capability": "travel_reimbursement_create"
}
4. 权限判断输出
{
"allowed": true,
"risk_level": "L2",
"requires_confirmation": false,
"reason": "",
"permission_scope": {
"departments": ["current_user"],
"data_masking": false
}
}
5. 确认弹窗策略
需要确认的动作必须显示:
- 动作名称。
- 影响对象。
- 关键字段。
- 执行后果。
- 是否可撤销。
- 确认人。
示例:
{
"title": "确认提交报销申请",
"action": "submit_reimbursement",
"summary": "将提交差旅报销单 TR-202605001,金额 ¥3,280。",
"risk_level": "L3",
"confirm_button": "确认提交"
}
6. Hermes 权限
Hermes 使用服务账号,不使用个人账号。
建议拆分权限:
hermes:risk_scan
hermes:finance_statistics
hermes:knowledge_candidate
hermes:mcp_health_check
Hermes 默认只允许:
- 读脱敏快照。
- 跑规则。
- 调只读 MCP。
- 写报告、候选、工单。
Hermes 不允许:
- 写正式审批状态。
- 写正式付款状态。
- 发布规则。
- 发布知识。
7. User Agent 权限
User Agent 继承当前用户权限。
例如:
- 员工只能看自己的报销。
- 部门负责人可以看本部门。
- 财务可以看授权范围内数据。
- 管理员可以管理规则、任务、MCP。
User Agent 不能扩大用户权限。
8. 开发步骤
Step 1: 定义 action risk level
Step 2: 建立 Permission Engine 接口
Step 3: 所有工具调用前接入权限判断
Step 4: L3/L4 动作接入确认弹窗
Step 5: 审计记录确认内容
Step 6: 增加权限测试用例