📌 本文是「AI Agent 的人类控制权」系列的第 3/5 篇第一篇建立问题意识,第二篇给出三层分析框架,本篇用框架做六大框架体检,第四篇深入工程实现,第五篇讨论前端设计与 Automation Bias。另有番外篇讲微软 Agent 框架的分裂与统一。

——用三层模型给主流 Agent 框架做一次 HITL 体检


上一篇我们建立了 HITL 三层模型:Layer 1 定义人类角色(把关人/协作者/纠正者),Layer 2 定义工程机制(工具级审批/计划审批/升级模式/反馈循环),Layer 3 定义基础设施(检查点/滑动自主性)。

模型的价值不在于它本身,而在于它能不能用。这篇我们就用它作为统一坐标系,对六个主流 Agent 框架做一次横向体检:LangGraph、AutoGen(0.4)、CrewAI、Semantic Kernel、Microsoft Agent Framework、Claude Code

体检的方法是:从每个框架的官方文档和 API 中提取所有 HITL 相关 feature,然后逐一标注它属于三层模型的哪个位置——支持了哪种角色,实现了哪种机制,是否具备必要的基础设施。


逐个过堂

LangGraph:标杆选手

LangGraph 是目前 HITL 能力最完整的框架,也是唯一一个把持久化作为一等公民设计的 Agent 框架。

核心 API:

  • interrupt(payload) ——在任意节点内暂停执行,将 payload 呈现给人类。这是 2025 年初引入的统一 HITL 原语,取代了早期的 interrupt_before / interrupt_after
  • Command(resume=value) ——人类提供输入后恢复执行。
  • update_state(config, values) ——直接修改 Agent 的状态(State Surgery)。人类可以在暂停期间改掉 Agent 记忆中的任何值,Agent 从修改后的状态继续。

三层覆盖:

  • Layer 1:三种角色全覆盖。interrupt + 规则判断 = 把关人;interrupt + 等待用户输入 = 协作者;update_state = 纠正者。
  • Layer 2:四种机制中覆盖三种。工具级审批(interrupt 嵌入工具节点)、升级模式(Agent 自主调用 ask_human 工具触发 interrupt)、反馈循环(interrupt_after + update_state)。计划审批没有原生支持,但可以用 interrupt 在计划节点后暂停来模拟。
  • Layer 3:这是 LangGraph 的决定性优势。 Checkpoint 是框架内建的核心能力,开箱即用。开发环境用 InMemorySaver,生产环境换成 PostgresSaver,只改一行代码,图逻辑完全不变。每一步执行都会自动写入检查点,interrupt 暂停时线程可以释放,任意时间后通过 thread_id 精确恢复。

一句话评价: HITL 能力最完整,且是唯一把 Checkpoint 真正做成"不需要你操心"的框架。如果你今天就要上线一个需要人类审批的 Agent 服务,LangGraph 是阻力最小的选择。


AutoGen 0.4:架构大重构后的半成品

AutoGen 0.4 相对 0.2 做了彻底的架构重构。0.2 的 human_input_mode 简单粗暴但好用;0.4 转向了更灵活的 Handoff 机制,但 HITL 能力在重构过程中出现了明显的空窗。

核心 API:

  • Handoff(target="user") ——Agent 将对话控制权交给用户。
  • HandoffTermination ——检测到 Handoff 消息时终止当前 Agent 循环。
  • 用户通过 HandoffMessage 将控制权交回 Agent。

三层覆盖:

  • Layer 1:协作者是主要支持的角色(通过 Handoff 机制)。把关人支持有限——HandoffTermination 可以在特定条件下暂停,但没有工具级别的细粒度拦截。纠正者支持较弱——用户返回的 HandoffMessage 可以携带反馈,但没有 State Surgery 能力。
  • Layer 2:升级模式是最自然的实现(Handoff 本质上就是 Agent 将控制权升级给人类)。工具级审批需要自己在 Handoff 逻辑中实现。反馈循环需要通过多轮 Handoff 来模拟。
  • Layer 3:这是 AutoGen 0.4 的最大短板。 没有内建的 Checkpoint 机制。save_state / load_state 存在但需要开发者自己接持久化存储。这意味着在 Web 服务中部署时,暂停→恢复的流程需要从头搭建。

一句话评价: Handoff 机制在多 Agent 协作场景中有独特优势,但 HITL 的基础设施(特别是 Checkpoint)需要大量自建工作。适合研究和原型,生产部署的 HITL 门槛较高。


CrewAI:最低门槛,最浅深度

CrewAI 的 HITL 设计哲学是极简——用最少的 API 让你最快跑通。

核心 API:

  • human_input=True ——在 Task 级别开启,任务完成后自动请求人类反馈。
  • HumanTool ——一个预定义的工具,Agent 可以在执行过程中调用它来问人类问题。

三层覆盖:

  • Layer 1:纠正者通过 human_input=True(任务后反馈)。协作者通过 HumanTool(执行中提问)。把关人缺失——没有工具级的前置审批机制。
  • Layer 2:反馈循环(human_input=True)和升级模式(HumanTool)。工具级审批和计划审批均不支持。
  • Layer 3:没有 Checkpoint,没有状态持久化。 所有 HITL 交互都是同步阻塞的——human_input=True 触发时,进程在 input() 处阻塞等待终端输入。这意味着 CrewAI 的 HITL 只能在 CLI 或 Notebook 环境中使用,无法部署为 Web 服务。

一句话评价: 上手最快,5 分钟就能跑通一个有人类反馈的 Agent。但缺少把关人角色和 Checkpoint 基础设施,意味着它只适合原型验证和简单场景,无法满足需要安全审批的生产需求。


Semantic Kernel:企业级过滤器,差一个持久层

Semantic Kernel 来自微软,走的是企业级中间件路线。它的 HITL 实现基于 Filter 模式——在函数调用的管道中插入过滤器。

核心 API:

  • FunctionInvocationFilter ——在任意 Kernel Function 调用前/后插入拦截逻辑。
  • AutoFunctionInvocationFilter ——专门针对 LLM Function Calling 的过滤器,可以在 AI 发起的工具调用前拦截。
  • 过滤器内可以修改 FunctionResult,实现对工具返回值的篡改/修正。

三层覆盖:

  • Layer 1:把关人是最强项——AutoFunctionInvocationFilter 可以在任何 AI 工具调用前拦截,检查参数,决定是否放行。纠正者部分支持——过滤器可以在工具执行后修改返回值。协作者较弱——没有原生的"暂停等人类回答"机制。
  • Layer 2:工具级审批是核心能力(通过 Filter 实现)。反馈循环有限度支持(修改 FunctionResult)。升级模式和计划审批需要自建。
  • Layer 3:没有内建 Checkpoint。 Filter 本身是同步管道中的拦截器,要实现异步审批(暂停→持久化→恢复),需要开发者自己搭建状态管理。

一句话评价: Filter 模式在架构上很优雅,给了开发者极大的灵活性——你可以拦截任何函数调用并注入任意逻辑。但"灵活"也意味着"什么都要自己写"。适合已有成熟基础设施的企业团队,不适合从零开始搭建 HITL 系统。


Microsoft Agent Framework:后来者的完整答卷

Microsoft Agent Framework(2025 年发布)是微软 Agent 生态的最新框架,也是六个框架中 HITL 设计最系统化的。它的官方文档明确声明:“所有编排模式都支持 HITL。”

核心 API:

  • @tool(approval_mode="always_require") ——装饰器声明工具需要审批。
  • AgentRequestInfoResponse.approve() ——批准 Agent 的请求。
  • AgentRequestInfoResponse.from_messages() ——以消息形式提供反馈。
  • with_request_info(agents=[...]) ——在编排层面选择性地为特定 Agent 启用 HITL。

三层覆盖:

  • Layer 1:三种角色全覆盖。approval_mode = 把关人;AgentRequestInfoResponse.from_messages() = 纠正者;编排中的人类参与 = 协作者。
  • Layer 2:工具级审批(approval_mode)、反馈循环(from_messages)、升级模式(with_request_info)。计划审批通过 Sequential/Concurrent Workflow 的阶段性审查实现。四种机制全覆盖。
  • Layer 3:有 Session State 管理,支持异步审批流程。Checkpoint 能力存在但文档较少,需要进一步验证生产环境的成熟度。

一句话评价: 设计最系统化,API 最声明式(approval_mode="always_require" 这种装饰器方式对开发者非常友好)。但作为 2025 年才发布的框架,生态成熟度和社区实践还需要时间积累。如果你在微软技术栈内,这是优先选择。


Claude Code:产品级 HITL,但不是框架

Claude Code 不是一个通用 Agent 框架,而是 Anthropic 的编码 Agent 产品。把它放在这里是因为它展示了一种独特的 HITL 设计思路——以产品体验为中心,而非以 API 为中心

核心机制:

  • Allowlist / Denylist——工具按风险分三级:允许自主执行的(如读文件)、需要审批的(如写文件)、完全禁止的。用户可以自定义分类。
  • 模型侧升级——Claude 在推理过程中自主判断何时需要问用户。这不是通过框架 API 实现的,而是通过模型训练和 system prompt 引导的。

三层覆盖:

  • Layer 1:把关人通过 allowlist/denylist 实现。协作者通过模型侧升级(Claude 主动提问)。纠正者通过对话中的自然语言反馈。
  • Layer 2:工具级审批是核心机制。升级模式依赖模型能力。反馈循环通过多轮对话实现。
  • Layer 3:作为产品,Checkpoint 和状态管理由 Anthropic 内部处理,用户无感。滑动自主性通过 allowlist 的自定义实现——用户可以逐步扩大自动批准的工具范围。

一句话评价: 不是通用框架,不能直接拿来搭建自己的 Agent 系统。但它展示了"HITL 应该是什么体验"——用户几乎不需要理解底层机制,权限配置简单直觉,审批流程嵌入自然交互。其他框架在设计 HITL 的 UX 时,可以参考 Claude Code 的产品决策。


总览矩阵

把六个框架的能力放到一张表里:

Layer 1 覆盖:角色支持

框架把关人协作者纠正者
LangGraph✅ interrupt + 规则✅ interrupt + 等待输入✅ update_state
AutoGen 0.4⚠️ 需自建✅ Handoff⚠️ 有限(无 State Surgery)
CrewAI❌ 缺失✅ HumanTool✅ human_input
Semantic Kernel✅ Filter 拦截⚠️ 需自建⚠️ 有限(修改返回值)
MS Agent FW✅ approval_mode✅ with_request_info✅ from_messages
Claude Code✅ allowlist/denylist✅ 模型侧升级✅ 对话反馈

Layer 2 覆盖:机制实现

框架工具级审批计划审批升级模式反馈循环
LangGraph⚠️ 可模拟
AutoGen 0.4⚠️ 需自建⚠️ 多轮 Handoff
CrewAI
Semantic Kernel⚠️ 需自建⚠️ 有限
MS Agent FW✅ Workflow
Claude Code

Layer 3 覆盖:基础设施

框架Checkpoint滑动自主性
LangGraph✅ 内建(Postgres/SQLite/Memory)⚠️ 需自建策略
AutoGen 0.4⚠️ 需自建
CrewAI
Semantic Kernel❌ 需自建
MS Agent FW✅ Session State⚠️ 需自建策略
Claude Code✅ 产品内建✅ Allowlist 配置

读表:几个不应忽略的发现

发现一:Checkpoint 是分水岭。

六个框架在 Layer 1 和 Layer 2 的差异不大——基本都能以某种方式支持三种角色和大部分机制。真正拉开差距的是 Layer 3。只有 LangGraph 和 MS Agent Framework 有内建的 Checkpoint,其余框架要么需要自建,要么完全不支持。这直接决定了你的 HITL 能不能从"demo 里跑通"走到"生产环境上线"。

如果你选了一个没有 Checkpoint 的框架,你面临的不是"少一个 feature"的问题,而是"需要自己搭建一整套状态持久化和异步恢复机制"的问题。这个工作量可能比你的 Agent 业务逻辑本身还大。

发现二:把关人是最被低估的角色。

CrewAI 完全缺少把关人角色——没有工具级审批机制。这意味着如果 Agent 要调用一个高风险工具,框架层面没有任何手段在执行前拦截。你只能依赖 system prompt(软控制)来让模型"自觉"地先问用户。我们在第一篇已经论证过,这不够。

发现三:计划审批是目前最薄弱的环节。

六个框架中,只有 MS Agent Framework 通过 Workflow 编排原生支持计划审批。其余框架要么完全不支持,要么需要用 interrupt 在特定节点后暂停来手动模拟。这可能反映了当前 Agent 生态的一个现实——大多数 Agent 还在做"接到指令就开始执行"的单步或少步任务,“先规划再执行"的模式尚未成熟。随着 Agent 承担的任务越来越复杂,计划审批会成为刚需。

发现四:Claude Code 展示了终局体验。

Claude Code 作为产品,在 HITL 体验上比所有框架都好。原因很简单——它不需要开发者做任何配置,所有 HITL 逻辑(allowlist、模型侧升级、对话反馈)都作为产品特性内建了。这提示了一个方向:最好的 HITL 是用户感知不到"HITL"的存在的。 Agent 该问就问,该等就等,该自主就自主,过渡自然到用户根本不会意识到背后有一套复杂的控制机制。框架开发者和产品设计者都应该以此为目标。


选型建议

基于以上分析,针对不同场景的选型建议:

“我需要今天就上线一个有人类审批的 Agent Web 服务”LangGraph。Checkpoint 开箱即用,interrupt API 成熟,社区实践最多。

“我在微软技术栈内,需要企业级的 HITL”MS Agent Framework。API 设计最声明式,HITL 与编排深度集成。但要留意框架还比较新,生产案例积累中。

“我只是想快速验证一个 Agent 原型,看看加人类反馈效果如何”CrewAI。5 分钟跑通,但请清楚地知道它的天花板在哪里——没有 Checkpoint,没有把关人。

“我有成熟的基础设施团队,想在已有系统中嵌入 Agent HITL”Semantic Kernel。Filter 模式足够灵活,但 Checkpoint、异步审批等都需要自建。

“我的场景是多 Agent 协作,人类参与的主要方式是在 Agent 之间传递信息”AutoGen 0.4。Handoff 机制天然适合这个场景。但要为 Checkpoint 做好自建准备。


小结

用三层模型做完这次体检,结论可以提炼为一句话:

大多数框架在 Layer 1(角色支持)和 Layer 2(机制实现)上差距不大,真正的分水岭在 Layer 3(基础设施)。Checkpoint 的有无决定了你的 HITL 是一个 demo 还是一个可上线的系统。

如果你从这个系列中只带走一个选型标准,那就是:在评估一个 Agent 框架的 HITL 能力时,第一个问题不是"它支持哪种审批模式”,而是"它怎么处理暂停和恢复"。


这是「AI Agent 的人类控制权」系列的第三篇。 完整系列: