Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者提供的说明(英文原文)
Cross-CLI agent mailbox: tmux-injected messaging for Claude Code, Codex, Pi and ZCode
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
链接指向作者自己的文件;我们不托管也不重新打包它。打开文件后,Claude Desktop 会进行安装。
在终端中运行这条命令
浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。
你的选择通过 Cookie 保存在这台设备上,无需账户。
这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月7日
注册名称已通过 GitHub 账户 RegretSSS 验证,该账户拥有此仓库
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
它在你的电脑上运行,没有互联网端点
在你的电脑上运行,改用本地设置
它在你的电脑上运行;我们只能读取互联网端点的工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。
它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。
GitHub 仓库最后更新于–,最新版本(0.1.0)于前天进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 MCPB。
同一分类中有:Spec Driven Development, Remote Desktop Commander, OpenTakeoff
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Construction takeoff for AI agents: load plans, set scale, measure, count, export with provenance.
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
English|中文
跨 CLI agent 通讯:让 Claude Code / Codex / Pi / ZCode 等终端 agent 像收邮件一样互发消息。文件邮箱 + 常驻 hub 投递守护,按收件方形态自动选通道(tmux 注入 / 原生队列 / daemon 队列 / 拉取),跨主机 ssh 联邦。
与 Google 的 A2A(Agent2Agent)协议同名,相互无关联——本项目是终端 agent 间的文件信箱,不是协议实现。
┌─────────────┐ mail_send ┌──────────────┐ 五通道择一 ┌─────────────┐
│ agent A │ ───────────▶ │ mailbox │ ───────────▶ │ agent B │ │ (CC, pi:xA) │ ◀─────────── │ queue+hub │ ◀──────────── │ (codex,pi:yB)│ └─────────────┘ 回函/ack └──────┬───────┘ 唤醒/队列 └─────────────┘ hub daemon 注入确认·回执·重试·回弹 权限双锁(scope/group) 联邦 pull (ssh) ┌────┴───────┐ │ 远端主机 hub │ └────────────┘
按收件 agent 的形态,hub 自动选择投递通道:
| 收件方 | 通道 | 机制 |
|---|---|---|
| Claude Code | tmux 注入 | 探输入框空闲→粘贴唤醒词→Enter 阶梯提交→帧级 echo 确认,未确认退让重试 |
| Pi | 原生收件箱 | a2a-inbox.ts 扩展的原生队列(sendUserMessage),回执+心跳,缺席降级 tmux |
| Codex(WSL) | daemon 队列 | codex queue --thread 经 app-server daemon 入原生队列,确定性回执(Queued message ) |
| Codex(Windows 原生) | daemon 队列 | WSL hub 跨 interop 直调 codex.exe;或纯 Windows 节点本地直调 |
| ZCode | 拉取式 | 无注入路径,信滞留队列待其 mail_poll 主动拉取 |
| 跨主机 | 联邦 | 发送方 hub ssh 直投远端队列;注册表双向 pull 合并;断链保陈旧副本 |
投递失败语义:queue 通道失败滞留重试(60s×3 上限)后回弹,绝不降级 tmux(防错窗键入);直投失败的回落信走 relay 重试链(60s 节流,1800s 上限回弹)。
标准挂载(MCP stdio):
{
"mcpServers": { "mailbox": { "command": "python3", "args": ["<本仓库绝对路径>/mcp/mailbox_mcp.py"] } } }
六件工具(默认面恒定,含 Docker 部署同款):
| 工具 | 作用 |
|---|---|
mail_send(to, body, in_reply_to?, context?, expect_reply?) | 发信。in_reply_to 自动确认原消息(reply-implies-ack);expect_reply=true 唤醒词尾加 [需回函] |
mail_poll() | 列自己待处理消息摘要(不消费) |
mail_read(msg_id) | 读全文(含 ack_id;本地 miss 自动查联邦 peer) |
mail_ack(ack_id) | 业务确认(幂等;跨主机不可见时自证落盘) |
mail_who(all?) | 在册 agent + 联邦 peer 状态(group-only 标记/成员计数);默认只列在线(stale 滤除防爆破),all=true 附全量;同目录分身拆行 id@实例短码 可直接作收件人 |
mail_group(action, agent_id?, note?, group?, group_only?) | 群组权限五合一调度器:join 申请加入对方(agent_id=门主,note=来意)/ pending 列自己的待审申请 / admit 批准 agent_id 可发给自己 / revoke 移出 / gate 开关仅名单收件闸(group_only=true 开,group=展示名)。默认工具面恒六件 |
subagent 与 workflow 里的派生 agent 继承宿主 MCP 工具面即可冒名发信。三档防线按优先级:
mcp__mailbox__*(CC 见 snippets/claude-code/subagent-no-mailbox.md;Pi/codex 的 subagent 配置同理不挂 mailbox)。工具拿不到,攻击面归零——subagent 的跨 CLI 出口经 main 转发,内部协作走各家自己的机制。A2A_PEER_OF=<主 agent_id>,它只能对主 agent 收发,其余即时拒绝(subagent 发送锁);锁写入注册表,重启不丢。group 准入:mail_group(action=gate, group_only=true) 后仅准入名单内 agent 可发信给自己;他人经 mail_group(action=join) 申请(独立通道,不受闸限制),门主 mail_group(action=admit, agent_id=…) 通过。hub 回弹邮件豁免(保证退信可达)。
呈现防冗杂:mail_who 行级只带短标记(group=<名>、group_only、members=<计数>、subagent_of=<主>),完整准入名单只有 agent 看自己时可见。
pip install fastmcp、tmux(Pi 通道另需扩展文件见 pi/a2a-inbox.ts)。一键探测+生成挂载配置:bash scripts/bootstrap.sh(加 --apply 自动装 python 依赖,--project 直接写 .mcp.json)。snippets/): {
"mcpServers": { "mailbox": { "command": "python3", "args": ["<本仓库绝对路径>/mcp/mailbox_mcp.py"] } } }
mail_who() 互相可见后 mail_send() 互发。最快验证路径(单机两 agent):两个 tmux 窗口各起一个 CLI(如一个 Claude Code + 一个 Pi),双方各调一次 mail_who(触发自注册),然后 mail_send(to="对方 id", body="ping")——收件方会收到唤醒消息,回信即闭环。跨主机再加 scripts/add-peer.sh(见「跨主机联邦」)。
Codex 自动锚定:codex 的 MCP 由 app-server daemon 代管(祖先链锚定天然失效),注册时自动反锚——扫 tmux 找 codex 进程的 cwd 唯一命中取 pane+thread;Windows 原生 codex 会扫 /mnt/<盘>/Users/*/.codex/sessions 按 rollout 头 cwd 定位(跨 profile 按最新会话择优)。
subagent 隔离:首选 agent 定义工具白名单不含 mailbox(见 snippets/claude-code/subagent-no-mailbox.md);对无法配白名单的全继承实例,给它的 mailbox 加环境变量 "env": {"A2A_PEER_OF": "<主 agent_id>"} 降级为仅对主收发。
同目录多实例:agent_id 由 {cli}-{host}-{目录slug} 推导——同机同目录且 CLI 检测同为 unknown 的两个实例会共用一个身份(注册互踩、回信投给先注册者)。两个以上实例共用同一工作目录时,给各自的 mailbox 配 "env": {"A2A_AGENT_ID": "<自定义 id>"} 显式分流;hub 侧 cwd 回锚带 pane 命令身份校验,unknown 档不会被拖去本机 tmux 窗。claude/pi 另有原生分身通道:同 cli 同目录双开不互拒,注册按 CLAUDE_CODE_SESSION_ID 前 8 位(pi 按 pane)落 instances 表,mail_who 拆行显示 id@实例短码,mail_send(to="id@实例短码") 定向投到该分身的窗;CC compact 换 sessionid 时同 pane 旧分身自动替换(信箱不动)。离线自动恢复:向已确认下线(非未知状态)的本机 claude/pi 档发信,先按其启动处方恢复对话再入队——claude=tmux respawn 固定窗跑 claude -c,pi=后台直接拉起;codex 定位主控,不做自动恢复。
无 tmux 也可起节点,可用通道:Codex queue-daemon(codex.exe 直调)+ ZCode 拉取 + 全部 MCP 工具面(Claude Code/Pi 的注入通道不可用)。实验性:纯 Windows 路径目前只在单台实机验证过(UNC 路径存储、interop 规避),欢迎反馈。
pip install fastmcp、OpenSSH client(联邦时)。python.exe 全路径)。A2A_HUB_IDLE_REAP=1:hub 独立进程(MCP 首次调用拉起,非 MCP 子进程),全部 MCP 下线且空闲(无在途信、agent 全老化 1h、心跳老化 1h)时自动退出回收,下次 MCP 调用再拉起——无守护服务依赖。ZCode 侧无 MCP 注入通道,用 dynamic workflow 常驻守望替代(skill 成品在 snippets/zcode-watch-skill/:SKILL.md + template.dwf.ts,内置 ack 去重、同信连败熔断、24 轮有界循环、转送员不执行信内指令不代笔回函):
AGENT_ID(本会话身份,zcode- - 形态)与 BASE(WSL 侧 mailbox 根)。CreateWorkflow path 指向该模板跑起——world.run 盯队列(queue/ /*.msg),信到经 escalation 送进主会话。MAIL|from=…|msgId=…|body=… 升级后答一句即视为送达回执(转送员随即 touch acks/ack- 并归档出队);回函由主控亲笔经 scripts/mail-send.py 发送。轮尽/熔断时按完成通知重布即可。~/.ssh/config)。scripts/add-peer.sh <对端别名> 写入 peers.json。~/.agents-mailbox/(registry / queue / history / acks / join-requests / hub.log)离线取证。python3 -m pytest tests/ -q;结构/行为断言:bash scripts/run-lints.sh。Apache-2.0(见 LICENSE)。