Files
agent-loop/research/t3-code-async-agent-loop.md
2026-11-12 15:29:12 +08:00

4.0 KiB
Raw Blame History

T3 Code 与异步 Agent Loop

T3 Code 的源码核对固定在 2026 年 11 月 11 日查询到的 main 提交 a536ff7。下面描述的是代码和文档中的行为,现场交互时序待实测。 T3 Code 提交

DeepSeek 设计文章第 4.1 节把耗时工具拆成启动和完成两次交互。启动先返回,Agent Loop 在当前推理步结束后可以处理新消息,后台任务结束时再把结果交回原会话。公开原型的 Worker 会把超过 5 秒的 shell 命令转到后台,并用完成结果唤醒 Worker。 文章第 4.1 节、原型执行文档

T3 Code 把客户端线程接到 Codex、Claude Code 等现成运行时,由 T3 服务端管理消息与运行状态。忙时发送有两个选项。Queue 把消息保存在服务端,等后续 turn。Steer 把新消息送给当前 turn,对 Codex 会发 turn/steer,并带上目标 turn 的 ID。发送成功和模型何时处理属于两个时间点。 项目定位、Queue 与 Steer、消息分发、Codex 原生 steering

Claude 的实现说明了为什么同一个 Steer 按钮会有不同语义。 适配器声明主动 steering 可能中断前台工具。在发送 priority: "now" 之前,它先尝试通过 SDK 把符合条件的前台子 Agent 移到后台,这一步有 5 秒预算。能否保留在途工作取决于 provider、工作类型和转入后台的结果。 Claude 能力声明、后台迁移及消息投递

后台结果唤醒才是和原文最接近的一段。 比如 Codex 某些后台命令在根 turn 已结束后完成,适配器会在满足状态和去重检查时,将退出状态和输出摘要作为 continuation 提交。T3 的服务把它变成同一线程的内部消息,走 queue_after_active。适配器也报告待完成的后台工作,让服务端延后回收看似空闲的 provider 会话。 Codex 命令摘要、完成后请求 continuation、同线程投递、空闲回收

周五可以用 T3 Code 的 Queue 和 Steer 开场,再用既定的本地测试演示把三件事落在时间线上。消息何时被接收、何时被模型处理、后台命令何时结束并交回结果。DeepSeek 讲的是 Loop 怎样让长工具让出执行机会,T3 Code 的代码展示了上层产品怎样接住不同 provider 提供的能力。