关于 baton
baton 是用于交接 AI 产出并通过独立重放进行核验的 MCP 服务。它将交接内容与实际执行证据绑定为服务端签名的 Verification Receipt,适用于需要跨人员或 Agent 评估成果的团队。
主要功能
- 01封装并交接工作胶囊
- 02独立重放交接内容
- 03签发 Verification Receipt
- 04按信任级别汇总交接
- 05管理团队房间和邀请
- 06绑定 Git 与测试证据
适用场景
- 01验收外包的 AI 变更前进行核验
- 02在团队成员之间交接工作
- 03审查 Agent 交接中的执行证据
- 04汇总多项交接的核验结果
MCP 相关
任何支持 MCP 的客户端都可连接 baton,以传递、接收、比较和核验工作胶囊。它提供交接、核验、团队房间、任务、Git 和成本工具。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://baton-mcp-production.up.railway.app/mcpclaude mcp add --transport http vinsenzo83-baton https://baton-mcp-production.up.railway.app/mcp{"mcpServers":{"vinsenzo83-baton":{"type":"http","url":"https://baton-mcp-production.up.railway.app/mcp"}}}在 Cursor 中打开{"servers":{"vinsenzo83-baton":{"type":"http","url":"https://baton-mcp-production.up.railway.app/mcp"}}}在 VS Code 中打开{"mcpServers":{"vinsenzo83-baton":{"type":"http","url":"https://baton-mcp-production.up.railway.app/mcp"}}}{"mcpServers":{"vinsenzo83-baton":{"serverUrl":"https://baton-mcp-production.up.railway.app/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
45| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| name | string | 否 | 房间名称 |
| alias | string | 否 | 房主昵称(提供后自动加入) |
| api_key | string | 否 | 房主账号密钥——具有房间管理(签发邀请、kick、审批)权限。也会通过 Authorization 标头自动附加 |
| require_approval | boolean | 否 | true=加入需要房主批准 |
详细介绍
🏃 BATON
交接 AI 工作——并附上凭证。
AI 完成了工作。下一位接手者——或下一个 AI——如何知道它确实可用,而不只是构建通过?BATON 将一项 AI 工作封装成可移植的胶囊,再由独立验证者重放并签发服务器签名的验证凭证。接收者信任的是观察到的证据,而非口头声明。
没有凭证,就绝不信任 Agent 的交接。
BATON 是一个标准的 MCP(Model Context Protocol)服务——任何支持 MCP 的工具(Claude Code、Codex CLI、Gemini CLI、Cursor …)只需通过一个 URL 连接。生产者和验证者可以是不同的模型、机器和人员。
为什么选择它,而不是那十几种编排工具?
同时运行 Claude + Codex + Gemini(蜂群、房间、Agent 消息传递)是一个竞争激烈的领域。BATON 不属于这一类。它专注于几乎没人做的一件事:**将交接产物与独立执行证据绑定为一个可验证、防伪的信任单元。**这就是凭证。
Claude did the work
↓ baton_pass → sealed capsule (BTN-H-…)
Codex / a teammate receives it
↓ baton_verify → replay in a clean env, observe the real flow
↓
🕸️ VERIFIED — signed receipt: who verified · what was observed · in what env · with what artifacts
↓
trust (or reject)
真正的买家不是“我在 Claude→Codex 之间切换”(重读代码库就行),而是外包方→内部团队、离职者→接任者、韩国团队→美国团队——对他们来说,“这是 AI 做的,它真的可用吗?”是值得花钱得到答案的问题。
凭证(差异化优势)
baton_verify 不会返回一个 ✅ 贴纸,而是返回一条签名记录:
{
"kind": "baton.verification-receipt/v1",
"capsule": "BTN-H-…", // the handoff this verifies
"verifier": "receiver-spider", // WHO verified — independent of the producer
"environment": { "os": "ubuntu-24.04", "node": "24.2" },
"observed": [{ "claim": "payment succeeds", "observed": true,
"detail": "POST /pay 200 + order row +1" }],
"artifacts": ["playwright.trace.zip", "network.har"],
"verdict": "verified",
"signature": "…hmac-sha256…" // server-signed → tamper the verdict, break the sig
}
如果将 verdict 改为 "verified" 却不重新签名,徽章就会被拒绝。构建通过本身永远不足以获得 verified——只有观察到的端到端结果才行(这能捕捉到无声的 upsert:返回 200,却什么也没写入)。
工具
| 分组 | 工具 | 功能 |
|---|---|---|
| 交接 | baton_pass baton_receive baton_diff baton_revoke | 将工作胶囊封装为代码(BTN-H-…),交接并比较版本。正文使用由代码派生的密钥加密——服务器永远看不到明文 |
| 验证 | baton_verify baton_verify_plan baton_consolidate + spider_* ×6 | 独立验证者重放并签发签名凭证(无观察结果,就没有 🕸️);consolidate 按信任等级将多个交接汇总到一块结果看板 |
| 团队房间 (辅助功能) | baton_create_room baton_new_invite baton_join baton_send baton_inbox baton_who baton_leave baton_kick baton_approve baton_close_room | 由所有者管理的持久化房间;成员通过轮换的邀请码加入(BTN-R-…,有效期 72h,可重新签发)。所有者可以移除成员、批准加入(可选门槛)或关闭房间。加入后,活动按 member_id 记录 |
| 运营 | baton_task_* baton_git_* baton_cost_* | 支持循环依赖检查的私有任务 DAG、Git 提交/差异/测试证据绑定,以及幂等的提供方/模型/任务成本账本 |
运营仪表板:/ops.html。它只存储任务元数据、Git 证据和成本信息;BATON 从不要求提供代码库凭据。
网络仪表板:/network.html。共享记忆使用账户密钥加密正文,且只搜索元数据。MCP Hub 会拒绝包含凭据的 URL。市场声誉只接受独立、服务器签名的 VERIFIED 凭证。
所有公开界面默认使用韩语,并通过 /dash.html(协作房间)、/board.html(验证结果)、/ops.html(任务·Git·成本)、/network.html(记忆·MCP·Agent)相互连接。
设计原则(来自安全审查)
- **使用代码派生的密钥加密。**服务器只存储
ciphertext + code_hash。没有代码,即使运营者也无法读取明文——这证明了“我们无法将你锁定在平台内”。 - **签名凭证。**判定结果由服务器端使用 HMAC 签名(
BATON_RECEIPT_SECRET);任何客户端都无法伪造verified。 - **遏制提示词注入。**传入的胶囊/消息会以围栏形式作为不可信数据返回;秘密信息在存储前会自动遮蔽。
- 代码是至少 128 位的秘密值;一次性代码以原子方式兑换,并阻止别名欺骗。
- 构建通过 ≠ 行为可用。
verified必须有观察到的副作用,绝不能只靠静态分析。
运行
npm install
npm test # 15/15 E2E groups pass
node src/server.js # stdio (local / any CLI)
BATON_HTTP=1 PORT=8080 node src/server.js # remote Streamable HTTP
注册(远程)
claude mcp add --transport http baton https://baton-mcp-production.up.railway.app/mcp
计费/门控默认关闭(内部试用阶段)。设置 BATON_BILLING=on 可重新启用配额。完整指南请参阅 USAGE.md。
存储
MVP 使用 SQLite(better-sqlite3)——可自托管的单一二进制文件。托管服务会在 src/store.js 的精简接口中接入 Postgres 适配器。
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。