Human-in-the-loop 不是一个统一按钮。真正要判断的是 Agent 应该停在哪里:durable workflow、MCP 工具调用,还是现有 agent loop 里的某一次敏感工具执行。
先写清会出事的动作
Cloudflare Agents 文档把 HITL 放在批准、确认、补充输入这些动作之前。适用场景不是“加一层安全感”,而是 Agent 要碰付款、发布、权限、数据删除、外部沟通或高风险工具调用。
- Workflow approval:审批可能等几小时或几天。
- MCP elicitation:MCP server 运行中需要结构化输入。
- Tool approval:只拦住某一次敏感函数调用。
长等待用 Workflow approval
Cloudflare 把 workflow approval 用在 durable、多步骤流程里。它适合需要 pending approval state、timeout、escalation、audit trail,以及审批后继续原流程的场景。
如果 Agent 要处理报销、改权限、发布内容,或跑一个审核人不一定在线的长流程,先评估这个模式,而不是只在聊天框里弹一个确认按钮。
窄暂停用 MCP 或 Tool approval
MCP elicitation 更像“工具运行中缺一个结构化答案”。它不一定是完整业务审批,而是让 server 在执行过程中向用户要必要输入。
如果应用本来已经有聊天或 agent loop,只是某个工具调用需要停一下,tool-level approval 更轻。Vercel AI SDK 的 `needsApproval` 和 OpenAI Agents SDK 的 interruptions / resumable run state 都是这个思路。
给写权限前检查
- 写清 proposed action、payload preview、actor、approver 和 request ID。
- 判断审批能等几分钟、几小时,还是几天。
- 定义 timeout、reject、retry 和 escalation 行为。
- 被拒绝的动作要记录,但不能静默重试。
- 确认审批后能从同一个 state 继续执行。
来源
- Cloudflare Docs·官方资料·核心来源Cloudflare Agents human-in-the-loop patterns
- Vercel AI SDK·官方资料·辅助来源Vercel AI SDK human-in-the-loop cookbook
- OpenAI·官方资料·辅助来源OpenAI Agents SDK human-in-the-loop
- Temporal·官方资料·辅助来源Temporal human-in-the-loop AI agent cookbook
