一、权限疲劳是 HITL 设计的根本失败

2026 年 9 月,一项 40000 次交互规模的实证研究证实了一个长期被怀疑但缺少硬数据的问题:Human-in-the-Loop(HITL)的"人工复核"在规模化场景下根本不可靠——人类在高频审批中会漏掉三分之一的恶意 Agent 命令。

这不是单点失败,是HITL 整个设计哲学的根本问题:

  • HITL 的隐含假设:"人类审批能挡住 Agent 的危险行为"
  • HITL 的现实:"审批弹窗高频出现 → 用户疲劳 → 跳过细节 → 无脑 Allow"

这个问题在 2025 年 Replit Agent 误删生产数据库事件里已经暴露过——用户下 code freeze,Agent 没听,继续操作。HITL 没拦下,因为没人在 Loop 里。

现在有了硬数据:即使人在 Loop 里,Loop 也不起作用。

二、40000 次研究的核心结论

研究的发现可以总结为三个层次:

层次一:疲劳导致判断力下降

  • 用户对 Agent 命令的判断准确率随着命令数量增加而下降
  • 前 100 次判断准确率远高于后 100 次
  • 后期用户对 "看似无害" 的命令几乎不再审查

层次二:用户对恶意命令的识别率不到 70%

  • 研究测试中混入约 1/3 的"故意危险"命令
  • 用户正确拒绝的比例只有约 67%
  • 意味着 33% 的恶意命令被无脑 Allow

层次三:疲劳是累积的,不是单次决策问题

  • 用户的"判断力下降"是跨任务累积的,不是单次决策疲劳
  • 一次决策疲劳 → 用户休息后可恢复;累积疲劳 → 即使休息也恢复缓慢

这三个层次加在一起意味着:HITL 在规模化场景下不是"安全网",而是"伪安全网"——给了用户和企业心理安慰,但实际阻止不了危险操作。

三、为什么 OpenCode Auto Permissions 选择"分级权限"路径

2026 年 8 月,hueyexe 发布 OpenCode Auto Permissions——一个给 OpenCode coding Agent 的智能权限复审插件。它的设计哲学不是"减少弹窗",而是"分级弹窗":

默认策略:

  • 常规操作 → allow(不弹窗)
  • 风险操作 → ask(弹窗给自动复审模型,不是用户)
  • 真正不可逆操作 → ask(弹窗给用户)

关键洞察:用户不应该看到每一次"读文件"、"列目录"、"git status"——这些操作 99.9% 是安全的。只有真正风险的操作才需要人工介入。

自动复审模型:对"中度风险"操作,插件用另一个 LLM 来判断是否放行。这相当于"二级 HITL"——不是用户直接审批,而是另一个 AI 替代用户做高频判断,用户只在关键决策时介入。

这个设计直接承认 HITL 不可靠的事实:不是让用户审批每一个操作,而是让系统按风险分级处理。

四、为什么 YoloAI 选择"完全消除弹窗"路径

跟 OpenCode Auto Permissions 同月,kstenerud 发布 YoloAI——一个完全消除 permission prompts 的 sandboxed agent runner。

YoloAI 的工作流:


yoloai new fix-bug ./my-project --prompt "fix the failing tests" # Agent 在 disposable container 里自由操作

yoloai diff fix-bug # 看 agent 改了什么 yoloai apply fix-bug # 选择性应用 patch yoloai destroy fix-bug # 销毁 sandbox


关键设计哲学:

  • Agent 在 disposable container 里跑,完全无权限提示
  • 用户只在最后审 diff(一次性审查 vs 1000 次单步审批)
  • 应用 patch 是显式动作,用户控制什么进真实项目

作者原话:

"Permission prompts exist because agents make mistakes. After the hundredth approve/deny you stop reading them, and—dangerous—you reach for --dangerously-skip-permissions and hope for the best. Neither option is great."

中文:权限提示存在是因为 Agent 会犯错。第 100 次 approve/deny 之后你就不再读了,然后你打开了 --dangerously-skip-permissions 期待好运。两个选项都不行。

YoloAI 的答案是"把 HITL 推到末尾"——不是审批每一个操作,而是审查最终结果。

五、四种 HITL 替代方案的对比

把 OpenCode Auto Permissions、YoloAI、之前我们讨论过的 Seahaven、Replit 反思放在一起,可以拼出 HITL 的四种替代路径:

路径 A:分级权限 + 智能复审(OpenCode Auto Permissions)

  • 适合:日常 coding 工作流
  • 核心理念:高频安全操作放行,中风险让 AI 复审,低概率高风险让人审批
  • 优点:用户体验好,保留关键 HITL
  • 缺点:对 AI 复审模型的能力有要求,可能被绕过

路径 B:Disposable sandbox + diff 审查(YoloAI)

  • 适合:不愿被权限提示打扰的开发者
  • 核心理念:Agent 在隔离环境自由操作,人类只审最终 diff
  • 优点:完全消除弹窗疲劳
  • 缺点:用户的 diff 审查也需要时间,某些场景下 diff 比单步审批更复杂

路径 C:Linux namespace 隔离 + 配置文件声明(Seahaven)

  • 适合:个人/小团队,精细控制 Agent 看到什么
  • 核心理念:不是审批每个操作,而是配置 Agent 视野
  • 优点:零提示疲劳 + 系统级保护
  • 缺点:只支持 Linux、需要 bubblewrap

路径 D:审批工作流 + 结构化审计(dbward / Claude Secure VM)

  • 适合:企业生产 DB 操作
  • 核心理念:Agent 不直接持凭据,所有操作走审批 + audit
  • 优点:可审计、可合规
  • 缺点:工程量大,需要专门的审批系统

四种路径的共同点:HITL 不可靠,必须用结构化方式替代高频单步审批。

六、对企业的现实启示

短期(立刻):

  • 自检:你的 Agent HITL 设计是哪种?如果是"每个操作弹窗让用户 Allow",这条路径在规模化时会被证明不可靠
  • 重新评估 HITL 的 ROI——如果用户批准率 < 70%,HITL 的工程价值低于它带来的认知负担
  • 考虑分级权限——把"常规操作 allow,中风险 AI 复审,关键操作人工审批"作为默认策略

中期(3-6 个月):

  • 建立"diff/apply"工作流——让 Agent 在 sandbox 里跑,人类审最终 diff,而不是审批每个工具调用
  • 建立"配置即边界"机制——让 Agent 的视野通过配置文件声明,而不是通过运行时弹窗
  • 关注 AI 复审模型的能力——如果用 AI 替代人类做高频审批,复审模型本身的安全能力是新的关注点

长期(1 年+):

  • HITL 的范式转移:从"每个操作弹窗"到"按风险分级 + 结构化审计 + 系统级隔离"是行业不可逆的方向
  • 监管层面跟进——HITL 不可靠这件事,合规机构需要正式承认。对 Agent 决策的审计要求可能从"操作级"变成"结果级"
  • Agent 安全从"边界防御"到"全链路治理"——HITL 是单点防御,真正的安全是 sandbox + 分级权限 + 审计 + 配置即边界的组合

七、回到题目:HITL 为什么不可靠

40000 次研究的真正贡献是:给行业一个量化数据,证明 HITL 的根本缺陷。

之前业内对 HITL 的认知是模糊的——"用户可能疲劳"、"用户可能不认真看"。现在有了硬数据——33% 的恶意命令被无脑 Allow。

这意味着任何把 HITL 作为主要安全机制的 Agent 系统,实际上给企业的是虚假安全感。

真正的解决方案不是"更好地训练用户看弹窗",而是重新设计 HITL 在 Agent 工作流中的位置:

  • HITL 不应该出现在高频路径上(每步都弹窗)
  • HITL 应该出现在低频高价值路径上(关键决策、最终结果)
  • HITL 的角色从"操作审批者"变成"结果审查者"
  • HITL 的兜底是系统级保护,不是"人类注意力"

2026 年下半年,任何还在用"每步弹窗让用户审批"的 Agent 系统,都已经落后于行业实践。OpenCode Auto Permissions + YoloAI + Seahaven + dbward 已经在不同场景给出了替代方案。

HITL 不可靠是结论。问题是怎么重新设计 Agent 系统,把 HITL 放到它真正有效的地方。