一、权限疲劳是 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 放到它真正有效的地方。