我同时运行 Claude Code 和 Codex,却总是丢失它们之间的线索——于是构建了一个位于 S3 存储桶中的无服务器协调层
摘要
tracecraft 是一个 CLI 工具,使用兼容 S3 的存储桶作为多个编码代理(如 Claude Code 和 Codex)的无状态协调层,支持原子任务认领、邮箱、共享内存和跨工具框架会话镜像。
同时运行多个编码代理——几个 Claude Code 实例,有时还有 Codex——协调总是临时凑合的。两个痛点让我抓狂:1. 它们抢同一份工作。两个代理都决定重构 api(.)py,结果一团糟。没有共享的“我来处理这个”机制。2. 它们无法通信,历史记录分散且与工具绑定。我不得不手动将一个终端输出粘贴到另一个终端,之后也没有谁做了什么事的统一记录。于是,我构建了 tracecraft——一个 CLI 工具,可将任何兼容 S3 的存储桶(AWS、R2、MinIO、B2、Wasabi 或 HuggingFace Buckets)变成协调层。无需服务器、无需数据库、无需守护进程;每次调用都是无状态的,所有状态都是你拥有的纯 JSON。协调原语:
- 原子任务认领 —— 使用 S3 If-None-Match 条件写入,这样两个代理不会同时认领同一个步骤。先到先得,后者退出。无需锁服务。
- 邮箱 —— 代理之间发送直接消息和广播(每个都是 JSON 文件)。这部分取代了我的复制粘贴:一个代理执行 `tracecraft send developer "contract is in memory key design.contract"`,另一个读取其收件箱。
- 共享键值内存 + 带备注的交接给下一个代理。
我最满意的部分是工具框架适配器框架——它将会话转录镜像到同一个存储桶中,涵盖四个工具框架,通过一个接口适配它们:
| 工具框架 | 会话存储 | 适配器 |
|---|---|---|
| Claude Code | ~/.claude/projects/.../<id>.jsonl | 字节偏移尾部 |
| Codex | ~/.codex/sessions/.../rollout-*.jsonl | 字节偏移尾部 |
| OpenClaw | <state>/agents/<id>/sessions/*.jsonl | 字节偏移尾部 |
| Hermes | ~/.hermes/state.db (SQLite/WAL) | 只读,rowid 游标,合成 JSONL |
一个游标抽象让它们都适用:`read_new(cursor) -> (bytes, new_cursor)` —— 文件用字节偏移,Hermes 用 rowid,循环不关心具体哪种。添加第五个工具框架大约需要 50 行代码。
默认运行编辑(针对 AWS/Anthropic/OpenAI/HF/GitHub/Slack 的令牌形状)。
最终结果:一个存储桶同时保存协调事件(认领、消息、交接)和每个代理的推理轨迹,可以作为纯 JSON 浏览(包括在 HF Hub UI 中)。
直接说明这到底是什么:这些原语本身并不新颖——mcp_agent_mail/Beads 实现了邮箱+认领,Anthropic Agent Teams 实现了进程内认领。不同之处在于部署模式——无服务器、无关后端、状态存储在远程存储桶——因此不同机器/云上的代理默认就能协调。跨工具框架的会话镜像到同一位置是我从未在其他地方见过的。
已知不足:认领尚未设置 TTL;HF 存储桶采用尽力而为的认领(无条件写入);回放查看器尚未构建。
我实际会采纳的反馈:
- 游标抽象对于工具框架层是正确选择吗,还是有更简洁的方案?
- 接下来应该添加哪个工具框架?
- “存储桶作为协调器”在大规模下会在哪些方面出现问题?
相似文章
一篇详细描述Anthropic自身工程师使用Claude Code时的确切配置和工作流程的文章,包括并行实例、CLAUDE.md模式、写作者/审阅者分离、技能文件夹、插件、钩子和批量操作。
一篇详细介绍Anthropic工程师在使用Claude Code时的具体配置和工作流程的文章,涵盖并行实例、CLAUDE.md模式、写作者/审阅者分离、技能文件夹、插件、钩子和批量操作。
发现一个自托管的多智能体配置,以 Claude Code 为运行器,其协调层确实令人感兴趣
一个新的开源项目介绍了一个自托管的、语音优先的 macOS 多智能体编排系统,该系统使用 Claude Code 作为执行运行器。其设置采用新颖的父子结构,并带有一个看门狗层,以防止智能体之间的无尽审查循环。
多代理工作流的开源本地控制器——为Cursor、Claude Code、Codex、Antigravity会话提供统一收件箱及代理间群聊
一个名为Claude Command Center (CCC) 的开源本地面板,管理跨多个引擎(如Cursor、Claude Code、Codex和Antigravity)的多个AI编码代理会话,提供跨引擎收件箱、实时状态、git工作树生成和代理间群聊。
Boxes.dev
Boxes.dev 允许你在自己的云环境中运行 Claude Code 和 Codex。
我如何不再监控Claude Code和Codex长达数小时的运行:规划、Git检查点以及代理外部的测试闸门
作者分享了在长时间、多步骤任务中运行Claude Code和Codex无需持续监控的技巧,使用外部测试闸门、每个任务的Git检查点以及基于DAG的计划,避免阻塞任务导致整个运行停滞,并将这些方法打包成一个开源工具。