Skip to content

Human-in-the-Loop:你才是最终决策者

上下文视角:你的每次批准、拒绝、修改,都会改写下一轮上下文,从而改变 Agent 的行为。你不只是在审批——你在塑造 Agent 的决策路径。

Agent 能自己判断很多对不对的事——测试跑通了吗、构建成功了吗、exit code 正常吗。但有些事机器判断不了:该不该 push 到 production?这个重构方向对不对?删除这批数据真的没问题吗?

这些需要你来拍板。

一个理想与现实

理想状态:你表达意图,Agent 完成一切,你验收结果。中间零介入。

现实:Agent 会犯错、会卡住、会在高风险操作前需要你确认。你的介入是安全网。

但要注意:如果你发现自己不断在修 Agent 的半成品,这不是"协作"——这是 Agent(或你的指令)出了问题。 健康的 Human-in-the-Loop 是你的介入越来越少,而不是越来越多。每次介入都应该是一个信号:要么提升 Agent 的配置(更好的 System Instructions、更清晰的指令),要么接受当前能力边界。

1. Define Task "Paving the Road" RISK? LOW RISK (AUTO) HIGH RISK (Needs Approval) Cognitive Debt (Drifting off course) ! 2. Approval Gatekeeper 3. Review Acceptance CONTEXT INJECTION (Correction Loop) LEGEND Auto Flow Needs Approval Ctx Shift Human-in-the-Loop Paving the road for agents
1. Define Task "Paving the Road" RISK? LOW RISK (AUTO) HIGH RISK (Needs Approval) Cognitive Debt (Drifting off course) ! 2. Approval Gatekeeper 3. Review Acceptance CONTEXT INJECTION (Correction Loop) LEGEND Auto Flow Needs Approval Ctx Shift Human-in-the-Loop Paving the road for agents

铺轨策略

觉得累?多半是你把 Agent 当全自动驾驶,自己又时刻握着方向盘。

更轻松的模式:先铺轨,再发车。

  • 你铺轨:项目骨架、测试用例、API 接口。结构性的、高上下文的活。
  • Agent 跑车:填空、实现函数、通过测试。消耗性的、低上下文的活。

轨道限制了跑偏幅度。测试用例就是护栏。

你在流程中的三个位置

  1. 输入端:定义任务。 你给出意图、提供背景、定义什么叫"完成"。这是你对上下文的第一次注入——指令质量直接决定后续一切。

  2. 中间:关键决策点。 Agent 遇到高风险操作时暂停,等你确认。你的决策(批准/修改/拒绝)回注入上下文,改写 Agent 的下一步行为。

  3. 输出端:结果验收。 Agent 说"搞定了",你确认是否真的搞定。对于低风险任务,这一步可以跳过;对于高风险任务,这是最后一道关。

每个位置的道理都一样:你的决策 → 上下文变化 → Agent 行为改变。 四件事最值得你亲自看:

  • Agent 的执行计划——它打算怎么做、先做什么后做什么。方向错了,后面全白干。
  • 测试用例设计——Agent 写的测试覆盖了哪些场景?遗漏了哪些边界条件?测试用例定义了"完成"的标准。
  • 实现方案的设计决策——用什么架构、怎么拆分模块、选哪个依赖。这些决策一旦落地,修改成本很高。
  • 最终结果的正确性——不是"测试通过了",而是"这真的是我想要的"。

放手 vs. 介入

不是所有任务都需要你盯着。判断标准不是感觉,是风险评估。

风险级别任务特征你的策略示例
低风险 / 可逆影响范围小,易回滚,验证成本低放手生成单元测试、重构纯函数、写文档初稿
中风险 / 可控涉及多文件,有版本控制抽查添加新特性、修改 API、升级依赖
高风险 / 不可逆操作生产环境、删除数据、对外发布强制审批数据库迁移、git push --force、部署生产

三个硬触发器——无论你多信任 Agent,以下操作必须人工确认:

  • 对外写操作git push、发布 npm 包、部署网站
  • 不可逆操作:删除文件、git reset --hard、清理数据库
  • 高成本操作:昂贵的 API 调用、大规模 CI/CD 流程

部分 Agent 工具会在这些操作前自动暂停并展示 diff。如果你的工具没有这个功能,在 System Instructions 里写明:"执行以下操作前必须先请求确认。"

纠偏策略

Agent 跑偏时,你有三条路:

策略什么时候用理由
立即打断从一开始就理解错了意图,或正在执行明显错误操作越早打断,沉没成本越低
让它跑完再改整体方向对,但细节有瑕疵保留大部分工作成果,只修正细节
放弃重来上下文已严重污染,Agent 陷入无法恢复的混乱干净会话 + 清晰指令 > 泥潭里挣扎

怎么选?问自己:继续下去的预期收益,是否大于从零开始的成本?

认知债务

一个隐蔽但严重的风险:过度委托导致你对系统的理解被稀释。

代码是 Agent 写的,Bug 是 Agent 修的,架构是 Agent 调整的——几个月后,你可能已经说不清某些模块的工作原理了。这不是技术债,是认知债。负债的不是代码,是你的大脑。

怎么发现自己在积累认知债?几个症状:

  • 有人问你某个模块怎么工作,你需要让 Agent 给你解释
  • Code review 的时间越来越短——因为你已经"看不懂"了,只能信任 Agent
  • 出了故障,你第一反应不是自己排查,而是让 Agent 来定位

团队里这个问题更严重。每个人各自委托 Agent 做不同模块,过一段时间后,很难有人完整说清整个系统的全貌。不是代码丢了——代码都在 git 里。丢的是团队对代码库的共享理解。

缓解方式:

  • 认真 review Agent 的提交——像 review 同事的代码一样
  • 核心模块自己动手,或者跟 Agent 结对编程
  • 定期画架构图——让 Agent 生成也行,但你必须看懂并确认

Agent 能帮你做更多事。但如果你对代码库的理解掉队了,产出的质量你根本把不住关。

速度快不等于质量高。Agent 产出变快之后,你不知不觉降低了验收标准。代码看着能跑就合并,diff 太长就跳过,测试通过就算完——直到某天发现代码库里积累了大量"能跑但不对"的逻辑。

缓解方式很简单:给自己设一个检查点,哪怕只花两分钟——打开 diff 看最关键的三个文件,确认改动和你的意图一致。不用逐行审查,但方向不能偏。

Cognitive Debt Accumulation As task delegation increases, the gap between agent output and human understanding deepens. Time & Delegation Volume → Volume / Depth Agent Output Human Understanding CRITICAL THRESHOLD COGNITIVE DEBT Mindless Approvals Skip Diff Reviews Ignore Logs
Cognitive Debt Accumulation As task delegation increases, the gap between agent output and human understanding deepens. Time & Delegation Volume → Volume / Depth Agent Output Human Understanding CRITICAL THRESHOLD COGNITIVE DEBT Mindless Approvals Skip Diff Reviews Ignore Logs

还有一个方向相反但同样危险的滑坡:审批疲劳。Agent 每次高风险操作前都暂停等你确认,反复弹确认,你的注意力先于意愿垮掉——从"认真看 diff"滑到"条件反射点确认"。缓解方式和上面的"放手 vs. 介入"一样:低风险的别弹,把审批预算留给真正需要你判断的操作。

本节小结

  • 上下文流动:你的每次决策(批准、拒绝、修改)都是一次上下文注入。Agent 的产出是你决策的输入,你的决策是 Agent 下一轮推理的输入。这是整个教程里唯一的双向闭环——人和 Agent 互为上下文。
  • 风险:两个方向都危险。过度信任导致认知债务累积和失控;审批疲劳导致你对 Agent 的请求不假思索一路绿灯——跟不审批没区别。
  • 可审计性:你做出的每次介入——批准了什么、拒绝了什么、改了什么——都应该被记录。这不只是追溯问题的依据,也是你复盘"我和 Agent 的协作模式是否健康"的数据源。

下一节是最后一站:Peer-to-Peer Agents。到目前为止,人类始终是上下文的最终仲裁者——但当多个 Agent 开始平级协作时,上下文的流动会变得更复杂。