Agent 开发学习站
Agent 开发›进阶›进阶

人机协同:审批门与自主性分级

进阶进阶

一句话定义

人机协同(Human-in-the-Loop, HITL)是在 Agent 的行动链路上设置人工决策点——审批门(gate)——让"不可逆、高代价、低置信"的动作必须经人确认,其余放行;自主性分级则是把"哪些动作放行、哪些拦截"做成随风险与信任度调节的阶梯。

为什么重要

Agent 的商业价值与它被授权的范围成正比,与它造成的损失成反比——HITL 是同时优化两者的旋钮。实践数据很直白:2025 年的 GATES 论文给出"在策略性位置插入少量审批点"几乎不损失任务完成度,却把高风险事故率压低一个数量级;而 Claude Code 的权限模式(默认询问→会话允许→跳过确认)是它敢让模型跑 bash 的前提。没有刹车的车不是快,是不能上路。

前置知识

kp-007(自主性光谱)、kp-010(工具设计——审批可以编码进工具)。

核心概念

审批门的三种实现位

  1. 工具参数位(kp-010 的 confirm: true 模式):高风险工具必带确认参数——最轻量,适合点状防护
  2. 执行前钩子(pre-execution hook):框架/运行时在工具执行前回调你的函数,按策略放行/拦截/升级人工——Claude Code 的 permission 系统与 hooks 即此
  3. 流程节点位(LangGraph interrupt):工作流中显式的人审节点,暂停整个运行等人输入——适合里程碑级审查

风险分级放行矩阵

动作类别例子默认策略
只读无副作用搜索、读文件、查询放行
可逆写操作写草稿、建分支、发内部消息放行/白名单
不可逆低代价删草稿、覆盖临时文件白名单或首次确认
不可逆高代价发对外邮件、付款、删库、部署生产、发 PR 合并审批门
模型低置信自评不确定 / 校验失败升级人工

两个配套概念:信任升温(首次每种工具都问,用户连续批准 N 次后加入白名单——浏览器权限的成熟模式)与降级终止(kp-014:重试耗尽后带完整轨迹转人工,而不是硬编结果)。

自主性分级(工程版)

借用自动驾驶分级的记法,Agent 的 L0-L5:

  • L0 全人工(人操作,AI 无参与)
  • L1 建议(Copilot:每步人都看)
  • L2 执行确认(每步动作人点头)
  • L3 条件自主(默认自主,风险动作与低置信时交人——当前生产主流)
  • L4 受限全自主(限定任务域内全自主 + 事后审计,如定时数据管道)
  • L5 完全自主(研究愿景,见 kp-032 争论)

2026 年的现实:绝大多数生产系统设计在 L3;L4 只出现在错误代价可承受且可审计的封闭域。

原理与机制

审批门的经济学:每次人工确认有成本(打断流、人疲劳后无脑点"同意"——审批疲劳),漏放一次高危动作的损失是尾部风险。最优门位应满足:拦截动作的事后期望损失 > 审批的人力成本。由此导出三条工程推论:

  1. 门要少而准:每加一道门都降低整体人力把关质量(疲劳稀释),风险矩阵要定期按事故复盘修订(kp-025 的轨迹是修订依据)
  2. 给审批人上下文而非只给按钮:弹窗里带"为什么这么做、改了什么、影响范围"(可解释性来自 kp-012 的 Thought 与轨迹摘要),否则确认退化为橡皮图章
  3. 批量的粒度设计:允许"这类的剩余全部放行"(remember my decision),把 N 次确认合并为 1 次决策

置信度信号从哪来:模型自评(要求结构化输出置信字段,kp-005)、外部校验失败(kp-014)、以及结果异常检测(写文件行数异常、API 返回码异常)——三者任一触发都可升级人工。

直观类比

新司机的家长陪驾:第一天每个路口都问(L2);一个月后只有上高速时确认(L3,风险分级);半年后市区完全放手,长途要求到站报平安(L4,域内自主+事后审计)。真正的关键是那本"陪驾守则"(风险矩阵)随着事故与信任动态修订——而不是从头到尾"全问"或"全放"。

实例与案例

编程 Agent 的权限配置(Claude Code 风格 settings 片段):

json{
  "permissions": {
    "allow": ["Read(**)", "Grep(**)", "Bash(git status)", "Bash(git diff:*)"],
    "deny":    ["Bash(rm -rf *)", "Read(.env*)", "Bash(curl*)"],
    "ask":     ["Write(**)", "Bash(*)"]
  }
}

读类放行、明危险硬拒、其余写/执行一律问——这就是 L3 的落地形态。三个细节:.env 读拦截(敏感信息,kp-026);curl 拦截(数据外传通道);用户可以 --dangerously-skip-permissions 全放——但那是用户在知情后转移风险,不是系统缺省。

常见误区

  • 误区一:"HITL 拖慢 Agent"。门设在不可逆动作上,长尾任务里人工介入占比通常 <5%;真正拖慢的是无门系统的事故返工。
  • 误区二:确认弹窗只有"允许/拒绝"。不给上下文与"改法"选项("允许但去掉删除语句")的审批门制造疲劳与橡皮图章。
  • 误区三:把 L5 当目标炫耀。自主性是成本-风险权衡的输出,不是道德成就;盲目追求"全自动"通常是事故的前奏。
  • 误区四:审批策略上线后不再修订。风险矩阵应是活文档——每次人工拦截/放行的结果都应回流统计(kp-025)。

自测题

  1. 最优审批门位的经济学条件是什么?
  2. L3 的定义是什么?为什么它是当前生产主流?
  3. 好的审批交互要给人工哪三样东西?

(参考答案:1. 拦截动作的事后期望损失 > 审批人力成本;2. 默认自主、风险动作与低置信时交人——在效率与安全间取得当前技术条件下的最优平衡;3. 上下文(为什么/改了什么/影响)、批量决策选项、非二元的改法选项。)

与其他知识点的关系

  • 安全防线的关系 → kp-026(HITL 是纵深防御的一层,不是全部)
  • 低置信检测 → kp-014;审批日志 → kp-025
  • 自主性哲学争论 → kp-032;产品形态选择 → kp-007

延伸阅读

  • Schmid et al., GATES: Generation-Augmented Planning for Human Approval(2025,审批门位置优化的实证)
  • Claude Code, Permissions & Hooks 官方文档