人机协作机制
概述
人机协作(Human-in-the-Loop, HITL)是AI Agent安全、可靠运行的关键机制。在Agent能力尚未完全可靠的今天,合理的人机协作设计既能发挥Agent的效率优势,又能通过人类监督保障质量和安全。
HITL模式分类
graph TD
A[人机协作模式] --> B[审批式]
A --> C[监督式]
A --> D[协作式]
A --> E[兜底式]
B --> B1[每个关键动作需人工批准]
C --> C1[人类实时监控Agent执行]
D --> D1[人类和Agent交替执行]
E --> E1[Agent自主执行,失败时转人工]
style A fill:#e3f2fd
审批式(Approval-based)
Agent生成方案,人类批准后执行。
适用场景:
- 高风险操作(资金转账、数据删除)
- 对外通信(发送邮件、发布内容)
- 不可逆操作
监督式(Supervision-based)
人类实时观察Agent执行,可随时干预。
适用场景:
- Agent能力不确定的新任务
- 需要人类判断的灰色地带
- 培训和调试Agent
协作式(Collaborative)
人类和Agent各负责擅长的部分。
适用场景:
- 创意工作(人类创意 + Agent执行)
- 复杂决策(Agent分析 + 人类决策)
- 领域专业任务
兜底式(Fallback-based)
Agent自主执行,失败或不确定时转人工。
适用场景:
- 成熟的自动化流程
- Agent高成功率的任务
- 大规模批处理
审批工作流
设计模式
graph TD
A[Agent生成动作] --> B[风险评估]
B --> C{风险级别}
C -->|低风险| D[自动执行]
C -->|中风险| E[异步审批]
C -->|高风险| F[同步审批]
E --> G{审批结果}
F --> G
G -->|批准| H[执行动作]
G -->|拒绝| I[Agent调整方案]
G -->|修改| J[人工修改后执行]
I --> A
style C fill:#fff3e0
style G fill:#fff3e0
风险评估函数
\[
\text{Risk}(action) = w_1 \cdot \text{Impact} + w_2 \cdot \text{Reversibility}^{-1} + w_3 \cdot \text{Uncertainty}
\]
| 因素 | 低 (1) | 中 (2) | 高 (3) |
|---|---|---|---|
| 影响范围 | 仅Agent内部 | 影响单个系统 | 影响多个系统/用户 |
| 可逆性 | 完全可逆 | 部分可逆 | 不可逆 |
| 不确定性 | Agent高度确信 | 存在歧义 | Agent不确定 |
审批UI设计原则
- 上下文充分:显示Agent的推理过程和依据
- 操作明确:清晰展示Agent将执行的操作
- 影响预览:预览操作可能产生的影响
- 快速决策:支持一键批准/拒绝
- 批量处理:支持批量审批相似请求
置信度阈值
基于置信度的自主决策
\[
\text{Decision} = \begin{cases} \text{Auto-execute} & \text{if } \text{conf} > \theta_{\text{high}} \\ \text{Request approval} & \text{if } \theta_{\text{low}} < \text{conf} \leq \theta_{\text{high}} \\ \text{Escalate to human} & \text{if } \text{conf} \leq \theta_{\text{low}} \end{cases}
\]
阈值校准:
class ConfidenceThresholds:
def __init__(self):
# 不同操作类型的阈值
self.thresholds = {
"read_only": {"high": 0.7, "low": 0.3},
"create": {"high": 0.8, "low": 0.5},
"modify": {"high": 0.9, "low": 0.6},
"delete": {"high": 0.95, "low": 0.8},
"external_communication": {"high": 0.95, "low": 0.7},
}
def should_auto_execute(self, action_type, confidence):
t = self.thresholds[action_type]
if confidence > t["high"]:
return "auto_execute"
elif confidence > t["low"]:
return "request_approval"
else:
return "escalate"
升级机制
升级触发条件
| 触发条件 | 说明 |
|---|---|
| 连续失败 | Agent连续3次以上执行失败 |
| 用户要求 | 用户明确要求人工处理 |
| 安全风险 | 检测到潜在安全问题 |
| 超时 | 任务执行超过预设时间 |
| 低置信度 | Agent对结果不确信 |
| 异常模式 | 检测到异常行为模式 |
升级流程
graph TD
A[Agent执行中] --> B{触发升级?}
B -->|否| C[继续执行]
B -->|是| D[保存当前状态]
D --> E[生成上下文摘要]
E --> F[通知人工]
F --> G[人工接手]
G --> H{处理方式}
H -->|直接处理| I[人工完成任务]
H -->|指导Agent| J[人工提供指导]
H -->|修正后继续| K[修正Agent方向]
J --> L[Agent继续执行]
K --> L
上下文传递
升级时需要向人类传递的信息:
- 任务描述:原始任务是什么
- 已完成部分:Agent已经做了什么
- 当前状态:现在卡在哪里
- 失败原因:为什么需要升级
- 建议方案:Agent认为可能的解决方向
UX设计
Agent透明度
用户应能理解Agent在做什么:
| 透明度级别 | 展示内容 | 适用用户 |
|---|---|---|
| 最低 | 仅最终结果 | 普通用户 |
| 中等 | 关键步骤摘要 | 进阶用户 |
| 最高 | 完整推理链和工具调用 | 开发者 |
交互模式
模式1: 自动执行(显示进度)
[=========> ] 50% 正在分析数据...
模式2: 逐步确认
Agent: "我计划执行以下操作:1.读取文件 2.修改配置 3.重启服务"
用户: "继续" / "跳过步骤3"
模式3: 实时对话
Agent: "我发现了两种方案,方案A更快但风险较高,方案B更稳但需要更长时间。您偏好哪种?"
干预设计
用户应能随时:
- 暂停:暂停Agent执行
- 取消:取消当前任务
- 修改:修改Agent的执行方向
- 撤销:回滚Agent的操作(如果可逆)
- 恢复:从暂停状态恢复执行
最佳实践
- 默认安全:新任务默认需要审批,逐步放开
- 渐进信任:根据Agent的表现动态调整自主权
- 清晰边界:明确哪些操作Agent可以自主执行
- 快速反馈:审批请求应能快速处理
- 学习改进:从人工干预中学习,减少未来的干预需求
参考文献
- Amershi, S., et al. "Guidelines for Human-AI Interaction." CHI 2019.
- Horvitz, E. "Principles of Mixed-Initiative User Interfaces." CHI 1999.
- Anthropic. "Claude Code: Permission Model." 2025.