跳到主要内容

框架支持

查看 Markdown

每个 Agent 框架都通过自己的适配器运行在同一个 Session Flow 上。选择你的框架,查看它的 turn 怎样对应到 Step、它有哪些 Session 功能,以及它的限制。

你的框架如何运行一个 turn

大多数适配器会在 tool 运行前让框架停下,因此每次 Tool Call 都在自己的 Step 中并行运行:读操作或幂等写操作用 CallTool,其他写操作用 CallSingleAttemptTool。需要审批的调用先在 AwaitToolApproval 中等待。下一个 RunModel 把记录下来的结果交给框架,因此没有 tool 会再次运行。一个查询订单的 turn 依次运行 RunModel、CallTool、ResumeTurn 和 RunModel。Claude Agent SDK 是例外:它在 RunModel 内部运行读操作。

下面的标签页展示每个框架如何被暂停和恢复,以及各框架的不同之处。

Claude Agent SDK 把 Claude Code 作为 Agent 运行。它的 Agent Loop 在 Claude Code CLI 中运行,CLI 是 Worker 的一个子进程。Dex 适配器在持久化 Session 内运行这个 Agent Loop。它支持 Python 和 TypeScript。

何时使用

想要 Claude Code 的 Agent Loop、上下文管理和 tool 时,使用它。你的 Agent 已经在用 Claude Agent SDK 时,也使用它。

如果想要每个 Step 一次模型调用、并行的 tool Step 或 Dex compaction,请使用 内置 Agent Loop。

Session 如何运行

Claude Code 会运行整个 turn,所以适配器把一个 turn 拆成多个 segment。一个 RunModel Step 为一个 segment 运行 CLI。模型调用在 segment 内运行,读操作 tool 也是:延后执行的读操作会让 CLI 重启。Connector Tool Call 是例外:即使是读操作,它也总是离开 segment。见 连接 Connector。

写操作 Tool Call 会结束 segment。需要审批时,它在 AwaitToolApproval 中等待。然后它在自己的 Step 中运行:幂等写操作用 CallTool,其他写操作用 CallSingleAttemptTool。接着 ResumeTurn 回到 RunModel,后者恢复同一个 Claude session。CLI 拿到记录下来的结果,不会再次运行这个 tool。

失败的 segment 会重试,最多尝试三次,并且整体重新运行。其中的模型调用和读操作会再次运行。已经在自己的 Step 中运行过的写操作,在 segment 重试时不会再次运行。

查询订单的 turn 运行一个 RunModel Step。取消订单的 turn 依次运行 RunModel、AwaitToolApproval、CallSingleAttemptTool、ResumeTurn 和 RunModel。

各 Harness 支持的功能

有些 Session 功能取决于 harness:

功能框架适配器内置 Agent Loop
排队消息、Steer 和 cancel_turn是是
Dex 对旧 message 的 compaction是,Claude Agent SDK 除外是
向用户提问(ask_user)否是
Plan(plan mode 和 execute_plan)否是

限制

每个标签页列出一个适配器中会影响 Agent 写法的限制,以及替代做法。

  • 每个 segment 只有一次写操作调用离开 turn。包含两次写操作的回复要多花一个 segment 和一次模型调用。同一次回复中的写操作永远不会作为并行的 Step 运行。
  • 在 CLI 内部运行的 tool,例如 Bash 或 Edit,是 at least once 的。Segment 重新运行时它们也会再次运行。CLI 修改的文件不会被记录。
  • Segment 必须在 RunModel 的 method timeout 内完成,默认 15 分钟。可以用 Python 中的 run_model_limit 或 TypeScript 中的 runModelLimit 调高它。
  • Claude Code 自己压缩 transcript,Dex compaction 保持关闭。长 Session 的终点是 state 上限,而不是 context window:即单个 Session 的 active state,默认 64 MiB(Session limits(英文))。
  • 记录下来的 tool result 只保留文本。
  • Subagent 内的写操作调用会被拒绝。模型会被要求在主对话中调用它。

Server 的限制见 Limits for long sessions(英文)。

下一步