人类审批
人类审批(Human-in-the-loop)是在 Agent 执行高风险、不可逆、外部可见或合规敏感动作前,由具备权限的人确认动作、参数、上下文和风险。审批不是降低模型能力,而是把自主执行限制在可接受风险范围内。
核对日期:2026-05-09。
1. 定义与边界
需要审批的不是“模型回答”,而是高影响动作:
| 动作类型 | 示例 |
|---|---|
| 外部发送 | 发邮件、发 Slack、发 webhook、发布社媒、提交表单。 |
| 数据变更 | 删除、覆盖、批量更新、权限调整、合并客户记录。 |
| 财务与交易 | 付款、退款、下单、调价、发票、采购。 |
| 安全操作 | 改 IAM、旋转密钥、关闭告警、隔离主机。 |
| 法务与合规 | 对外承诺、合同条款、监管回复、个人数据导出。 |
审批不应让人“盲点确认”。审批人需要看到动作摘要、关键参数、风险原因、数据影响和可回滚性。
2. 风险机制
没有审批时,攻击或误判会直接变成副作用:
加入审批后,链路变成:
3. 审批触发条件
| 条件 | 示例策略 |
|---|---|
| 工具风险等级 | risk=high 必须审批。 |
| 参数阈值 | 金额大于 1000、收件人超过 10、删除记录超过 1 条。 |
| 外部目标 | 非公司域名、未知 webhook、公开发布渠道。 |
| 数据敏感度 | 包含 PII、合同价、密钥、漏洞细节。 |
| 用户权限 | 用户无直接执行权限,但可提交审批。 |
| 异常行为 | 工具序列罕见、频率异常、注入检测命中。 |
4. 工程实现
4.1 审批对象
{
"approval_id": "appr_123",
"run_id": "run_456",
"requester": "user_001",
"tool": "send_email",
"risk": "high",
"reason": "external_recipient_and_confidential_content",
"proposed_args": {
"to": ["partner@example.com"],
"subject": "Contract summary",
"body_redacted": "..."
},
"policy_version": "agent-policy-2026-05-09",
"expires_at": "2026-05-09T10:30:00Z"
}
4.2 审批结果
审批动作应支持:
- approve:按原参数执行。
- reject:拒绝并给出原因。
- edit_and_approve:修改参数后批准,修改内容进入审计。
- escalate:转给更高权限审批人。
- require_more_context:要求 Agent 补充来源和证据。
4.3 审批后再校验
审批不是绕过策略。执行前仍需校验:
- 审批是否过期。
- 审批人是否有权限批准该动作。
- 工具参数是否和审批内容一致。
- 用户和租户权限是否仍然有效。
- 数据和外部目标是否仍符合策略。
5. 生产流程
- 为所有工具标注风险等级和审批规则。
- 定义审批角色、代理审批、双人审批和紧急绕过流程。
- 设计审批 UI:展示风险摘要、参数差异、敏感数据脱敏、来源链接。
- 记录审批证据:审批人、时间、理由、参数、策略版本、执行结果。
- 定期抽样复核审批质量,识别橡皮图章式审批。
6. 常见反模式
| 反模式 | 问题 |
|---|---|
| 审批弹窗只显示“是否允许?” | 审批人没有足够上下文判断风险。 |
| 审批后允许模型修改参数再执行 | 审批对象与实际动作不一致。 |
| 所有动作都审批 | 造成审批疲劳,真正高风险动作被草率通过。 |
| 审批人权限不校验 | 低权限人员可能批准高权限动作。 |
| 审批日志不记录拒绝原因 | 无法复盘策略误报或攻击尝试。 |
7. 评测与演练
| 用例 | 期望 |
|---|---|
| 外发含敏感数据的邮件 | 触发审批,并显示敏感原因。 |
| 审批后修改收件人 | 执行前阻断,要求重新审批。 |
| 过期审批继续执行 | 阻断。 |
| 低权限审批人批准转账 | 阻断。 |
| 注入攻击诱导绕过审批 | 策略仍触发审批或拒绝。 |
指标:
- 高风险动作审批覆盖率。
- 审批后参数一致率。
- 审批超时率。
- 拒绝原因分布。
- 审批抽检问题率。
8. 安全资料
- OWASP LLM06 Excessive Agency: https://genai.owasp.org/llmrisk/llm062025-excessive-agency/
- MCP Security Best Practices: https://modelcontextprotocol.io/docs/tutorials/security/security_best_practices
- OpenAI Agents and tool calling docs: https://platform.openai.com/docs/guides/function-calling
- Anthropic Tool Use docs: https://docs.anthropic.com/en/docs/agents-and-tools/tool-use/implement-tool-use
- NIST AI RMF: https://www.nist.gov/itl/ai-risk-management-framework
9. 二次精修:审批策略工程化
9.1 审批触发矩阵
| 动作类型 | 示例 | 审批策略 |
|---|---|---|
| 外发信息 | 发外部邮件、HTTP POST、导出文件 | 默认审批,敏感字段命中则强审批 |
| 财务动作 | 转账、退款、改价格、下采购单 | 双人审批或业务系统审批流 |
| 权限动作 | 创建账号、改角色、授权 API key | 安全/管理员审批 |
| 破坏性动作 | 删除记录、关闭告警、回滚生产配置 | 审批加二次确认 |
| 不可逆公开动作 | 发社媒、发布公告、提交外部系统 | 审批加内容留档 |
9.2 审批载荷设计
{
"approval_id": "apv_20260509_001",
"run_id": "run_abc",
"user_id": "u_123",
"tool": "send_email",
"risk": "high",
"proposed_args": {
"to": ["customer@example.com"],
"subject": "Renewal summary"
},
"evidence": {
"source_documents": ["doc_1", "doc_9"],
"sensitive_fields_detected": ["contract_amount"]
},
"policy_version": "agent-policy-2026-05-09",
"expires_at": "2026-05-09T12:30:00+08:00"
}
9.3 审批后执行一致性
9.4 人类审批不是万能控制
| 失败模式 | 控制 |
|---|---|
| 审批疲劳 | 只把真正高风险动作送审,批量合并低风险重复动作 |
| 信息不足 | 审批界面展示来源、差异、敏感命中和可回滚性 |
| 橡皮图章 | 抽检审批质量,记录拒绝率和修改率 |
| 参数漂移 | 审批绑定参数摘要,执行前复核 |
| 越权审批 | 审批人本身也要 RBAC 和 SoD 分离 |
9.5 评测指标
- 高风险动作审批覆盖率。
- 审批后参数一致率。
- 审批拒绝原因可分类比例。
- 审批超时导致任务中断率。
- 抽检发现的错误批准率。
核对日期:2026-05-09。