Skip to content
目录

Human-in-the-Loop 机制

HITL 依赖 checkpoint 持久化 + 节点内 interrupt():图在指定点暂停,暴露当前 state,待人修改或确认后 Command(resume=...) 继续。


1. 典型流程

mermaid
sequenceDiagram
  participant G as Graph
  participant U as 用户
  G->>G: 节点执行到 interrupt
  G->>U: 返回 __interrupt__ 载荷
  U->>U: 审核 / 编辑 state
  U->>G: invoke(Command(resume))
  G->>G: 从 checkpoint 继续

2. interrupt 语义

  • 在节点内调用 interrupt(value) → 引擎抛控制流,本超步 checkpoint 已写
  • 返回给调用方的 payload 可展示在 UI(待批准工具参数等)。
  • resume 后节点会重新执行(从函数开头),因此 interrupt 宜放在副作用前,或用 idempotent 设计。官方称「replay from start of node」。

3. 与 checkpointer

无 checkpointer 则无法跨进程/跨请求 resume;生产必须配 saver + thread_id

updateState 可在暂停时人工改 channel 再 resume。


4. 模式

模式说明
批准工具调用interrupt 展示 args,拒绝则 resume 取消
编辑计划改 state.plan 再继续
多轮澄清多次 interrupt/resume 同一 thread

5. 注意

  • 节点重跑:避免 interrupt 前重复扣费/写库,用幂等或检查 resume 输入。
  • 超时与取消:应用层管理 thread 生命周期。
  • 安全:resume 数据需校验。

6. 总结

HITL = checkpoint + interrupt + Command;理解「节点重执行」是正确使用的前提。

MIT License.