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