Postbag
让 Claude Code 与 Codex 通过各自原生输入互写信件,无需在两个窗口间复制粘贴。
- Star 数
- ★ 11
- 最近更新
- 23 天前
- License
- MIT
- 主语言
- Python
- FA 评分
- 60/100 · 存在缺口
30 秒速览
- 可在哪里用
- 兼容但需适配Codex · Claude Code
- 开始前需要
- 典型场景
- Claude Code 改完一段代码后,直接请 Codex 审查 diff,再决定是否提交。
- 主要局限
- 投递只在 macOS 上测试过,其他平台属于未验证状态。
- 源码审查
- 60/100 · 存在缺口
这个 Agent 能做什么,适合哪些场景?
Postbag 是一个本地 MCP 服务器,把 Codex 和 Claude Code 两个编码代理会话接入同一个"袋子"(bag,即命名对话),让它们互发信件。安装后通过 postbag-mcp 同时注册到 Claude Code 和 Codex,每个会话拿到五个工具:postbag_join、postbag_send、postbag_read、postbag_bags、postbag_leave。信件通过收件方自己的原生输入变成一个新的回合,不需要常驻守护进程、轮询或钩子。每个袋子在本地保存一份共享日志,任意一方都能用 postbag_read 翻查历史。核心逻辑基于 Python 标准库,仓库亦提供 CLI 与 MCP 两种入口。投递在 macOS 上经过测试,两个会话需在同一台机器、同一版本下运行。
代理通过 MCP 调用 postbag_join 以自己的名字加入某个袋子(不存在则创建);随后用 postbag_send 给袋中某个名字发信,final: true 表示最后一封、不要求回复。每条信件结尾都写明如何回复或声明无需回复,因此对方无需额外提示即可继续。收件方会话在自己的原生输入里收到信件,成为新的回合;发件成功仅确认"已提交并记录",并不证明对方已接收、阅读或执行。postbag_read 可分页浏览袋子的历史,postbag_bags 列出本地袋子及信件数和已注册名字,postbag_leave 让当前会话退出但保留历史。账本存放在 ~/.postbag/,其中包含 Claude Code 的收件 token,新文件权限为 0600。
- Claude Code 改完一段代码后,直接请 Codex 审查 diff,再决定是否提交。
- 需要分工时,让 Codex 写测试、Claude Code 写实现,两边通过信件对齐接口。
- 某个代理卡在 bug 上时,请另一个代理从零开始读一遍代码给出第二意见。
- 在同一仓库同时开着两个会话的开发者,希望省去手动复制粘贴上下文的步骤。
- 想保留一段可回溯的多代理讨论记录,之后用
postbag_read翻查。
如何安装或部署这个 Agent?
需要 Python 3.10+、Claude Code,以及支持 codex queue 的较新 Codex CLI。两个会话须在同一台机器上运行相同版本的 postbag。
pipx install 'postbag[mcp]'
claude mcp add --scope user postbag -- "$(command -v postbag-mcp)"
codex mcp add postbag -- "$(command -v postbag-mcp)"在两个应用中各开一个新会话,运行 /mcp,应能看到五个工具。使用 uvx 等其他方式时参考仓库的 MCP setup 文档。
如何使用这个 Agent?
先在同一仓库中打开 Codex 和 Claude Code,让双方看到同一份代码。
在 Codex 中:
Join postbag bag "review" as codex.在 Claude Code 中:
Join postbag bag "review" as claude, then ask codex to review my last commit.Codex 先加入,这样 Claude Code 才有人可写。提示时批准 postbag 的工具。请求会作为新回合出现在 Codex 中,回复以同样方式回到 Claude Code;任一方都可以用 final: true 结束对话。
这个 Agent 有哪些优点和局限?
- 投递走收件方自身的原生输入,不需要额外守护进程、轮询或钩子。
- 核心基于 Python 标准库,安装面小,一条
pipx命令即可。 - 同时提供 CLI 与 MCP 两种入口,工具集精简(五个)且语义清晰。
- 每条信件自带回复方式或"无需回复"标记,减少了设置提示的成本。
- 共享日志可回溯,任一方都能用
postbag_read查历史。
- 投递只在 macOS 上测试过,其他平台属于未验证状态。
- 依赖 Codex CLI 的
codex queue特性,对版本有明确要求。 - 两个会话必须同机、同版本,无法跨机器协作。
- 发送成功只代表已提交并记录,不保证对方接收或执行。
- 账本含 Claude Code 收件 token,需要自行防止提交或分享。
这个 Agent 与同类方案有什么区别?
与相关度最高的同类 agent 并排比较关键指标。
| Agent | 源码审查 | 形态 / 费用 | Star | 最近更新 | 主语言 | 完整支持的平台 |
|---|---|---|---|---|---|---|
| Postbag 当前 | 60 · 存在缺口 | — | ★ 11 | 23 天前 | Python | Codex · Claude Code |
| AgentBridge | 61 · 存在缺口 | 命令行工具免费 + 模型费 | ★ 414 | 今天 | TypeScript | Codex · Claude Code |
| RepoBrain 代码库智能问答引擎 | 49 · 缺口较多 | Agent 插件 / 技能免费 + 模型费 | ★ 1.4k | 11 天前 | Python | Codex · Claude Code |
| SkillKit — AI Agent 技能包管理器 | 40 · 缺口较多 | 命令行工具免费 + 模型费 | ★ 1.6k | 4 个月前 | TypeScript | ChatGPT · Claude Code |
FollowAgents 如何评估这个 Agent?
查看各维度的扣分理由
最小权限:核心仅用标准库、无守护进程,写入限定在 ~/.postbag 与显式路径,新文件 0600、目录 0700,且拒绝非普通文件与不可打印路径,属合理但非最小化到极致(仍会向对端会话注入新回合)。用户确认:README 明确说明无信件上限,需宿主自行配置每次 postbag_send 前确认,默认不强制确认,故仅 1 分。数据流透明:README 与测试清晰描述信件经对端原生输入投递、回执不代表已读,透明度较好。敏感数据处理:README 明确 ledger 含 Claude Code inbox token、0600、勿提交,测试覆盖权限位,但 token 明文落盘无加密,扣分。依赖安全:核心零依赖,mcp 可选且版本约束 mcp>=2.2,<3,CI 固定 action SHA,较好。外部影响:发送即向另一会话注入回合,属不可撤回的外部副作用,仅靠 final 与提示约束,回滚能力弱。回滚:无撤销已投递信件的机制,仅历史保留,扣分。来源归属:MIT 与作者署名清晰,但发布者身份未经 FollowAgents 验证,属未知而非可疑,仅给 1 分。
自一致性:测试覆盖选择器优先级、缺失 bag 不隐式创建、并发创建竞态、legacy ledger 兼容,行为与文档一致,较好。依赖可用性:requires-python>=3.10,核心无第三方依赖,mcp 可选,CI 多版本多 OS 矩阵,较好。失败信息:错误信息统一带 bag 名、恢复命令与 'stop and ask the human',测试逐字断言,处理充分,给 3 分。
受众与场景:面向开发者跨 Claude Code/Codex 协作评审,场景明确。能力边界:README 明确投递不证明接收方已读、模型指引非安全边界,边界清晰。触发精度:工具表与 join/send/read 语义明确,final 语义有测试。环境适配:README 称投递仅在 macOS 测试,需 codex queue 与特定 CLI 版本,跨平台适配证据有限,扣分。
信息架构:README 结构清晰,含安装、快速开始、工具表、安全。安装说明:pipx 与 claude/codex mcp add 命令具体,另有 llms-install.md 指引。命名稳定:工具名与 CLI 动词稳定并有测试。示例与 FAQ:有快速开始与演示 GIF,但无独立 FAQ,扣分。已知限制:README 明确无信件上限、投递不保证已读、仅 macOS 测试。许可证:MIT 全文与 pyproject 一致,给 3 分。版本与变更:有 CHANGELOG 与 release 流程校验 tag 与版本一致,但 CHANGELOG 正文未在证据中,给 2 分。维护责任:单一作者、发布者未验证,无治理说明,扣分。
输出可用性:回执格式明确、含 bag 与未确认提示,read 分页与 final 标记清晰。边际价值:解决跨会话复制粘贴痛点,价值真实但依赖两 agent 同时在线。成本收益:零依赖、pipx 安装轻量,但需双会话与手动确认配置,收益中等。
声明可追溯:README 声明与测试、CI 步骤对应,如 0600 权限、final 语义均有测试。跨源印证:README、pyproject、CI、测试相互印证版本与行为。事实与推断分离:README 明确区分'提交成功'与'接收方已读',未夸大。但发布者身份与 PyPI 实际状态无法静态核实,整体置信度低。
- 默认不强制每次发送前确认,且无信件上限,可能产生大量跨会话注入;需在宿主配置确认。
- ledger 明文保存 Claude Code inbox token,务必保持 0600 且勿提交或分享。
- 投递成功不等于对端已读或执行,勿据此推断任务完成。
- 投递仅在 macOS 测试,Linux/其他平台与特定 codex queue 版本兼容性未充分验证。
- 发布者身份未经 FollowAgents 验证,安装前应自行核对来源与 PyPI 包。
常见问题
需要付费吗?
两个代理可以不在同一台机器上吗?
"发送成功"是否意味着对方已经回复或采纳?
能不能防止代理滥用发送?
postbag_send 都做确认,需要在宿主机上配置逐次询问。内置的"请保持在人类授权范围内"只是模型提示,不构成安全边界。