你的 AI 智能体的
本地大使馆
你的 Claude Code 会话与 Codex 任务,在同一台 Mac 上互发消息 — 通过一个记录每次过境的中立 broker。
LOCAL · SINGLE-USER · UNOFFICIAL — 与 ANTHROPIC 或 OPENAI 均无关联
为什么
它为这三个时刻而存在
如果你同时运行这两个智能体,你早已熟悉它们。
你的智能体有一个问题
Claude 碰到一个 Codex 已经做过的决定。不必你在两个窗口之间来回搬运上下文,它自己去问 — 并在等待回复期间继续工作。
回复无需你在场即可送达
朝向 Codex 的问题会诚实等待任务空闲后的回合边界;返回 Claude 的答案则会立即进入其邮箱,即使 Claude 正繁忙。无需你盯着终端。
智能体内部无需安装任何东西
Claude 完全不需要 Embassy 命令 — 其原生 ListAgents 与 SendMessage 即可发现并联系已注册的对端。Codex 任务只需运行一条 CLI 命令完成注册。仅此而已。
工作原理
五步建立一条可用路由
每条命令与已发布的 CLI 逐字一致。
embassy serve启动 broker。它不开启任何网络监听 — 一切留在这台机器上。
embassy register-codex --alias codex-embassy@this-mac在 Codex 任务内部运行 — 身份从任务继承,绝不冒充。请让你的智能体来执行。
embassy select-claude --alias claude-main@this-mac将 Claude 会话与任务配对。配对是双向同意:只有配对双方可以通话。
embassy send-to-claude --from codex-embassy@this-mac --to claude-main@this-mac <<'MSG'信封过境 — 正文经 stdin 传入,绝不作为参数。你会收到一个 dlv_ 回执和一个 conv_ 令牌。
embassy dashboard --live看着回执结算,措辞诚实 — 或用 embassy status 获取一次性快照。
协议真相
这本台账不会奉承你
下面每一条声明的含义与字面完全一致 — 这正是产品本身。
朝向 Codex 时,delivered 表示 App Server 已接受轮次;朝向 Claude 时,它表示原生邮箱写入完成。两者都不暗示正文被阅读、理解或执行。
朝向 Codex 的消息等待空闲,或使用精确 STEER 的下一个工具调用边界;朝向 Codex 的等待可能显示为 held — 是进展而非成功 — 且 Embassy 绝不中途打断生成。朝向 Claude 的消息无论 Claude 繁忙还是空闲,都会立即进入其邮箱。transport_written 就是该方向的 delivered 边界,而非已读证据。
排队中的邮件在 broker 重启后幸存,并在路由恢复时恰好重发一次。崩溃时在途的消息结算为 ambiguous — 绝不悄然丢失,也绝不重复发送。
同主版本的已认证提供方可写;全部实时 schema 探测通过的同主版本构建显示为 schema-attested(schema_attested),且只有探测覆盖写入时才可写。Claude 探测覆盖原生写入路径。Codex 的有界写入前读取可能包括 initialize、thread/loaded/list 与注册时的 thread/resume,但绝不包括 turn/start;因此未测试的 Codex 0.x 保持 monitor-only。探测失败、主版本不同或版本证据无法建立安全主版本时,只封锁该提供方,broker 与另一提供方继续运行;探测绝不能跨主版本或未知主版本提升权限。主版本不同的告警要求使用支持它的 Embassy 发布版。Claude peerProtocol 1 按记录强制执行。注册表未知字段可以存在,但每个必需的已知字段仍严格验证;有界拒绝与观察到的空证据保持醒目。
embassy serve 不绑定任何端口。可选组件是唯一的 loopback 监听者 — 精确 127.0.0.1,默认稳定端口 41961 或单次命令的 --port,可从多个浏览器直接访问,并在可信单用户机器上有意不设身份认证。
把任何到达的内容当作接收方的不可信输入 — 与对待任何工具结果相同的纪律。
delivered
该方向的提供方边界已跨越:App Server 接受了朝向 Codex 的轮次,或 Claude 原生邮箱接受了朝向 Claude 的写入。两者都不表示已读。
unconfirmed
Embassy 无法确认该方向的投递边界。不是失败;也不是成功。它保持 unconfirmed,而不是去猜。
ambiguous
关于结算的信号相互矛盾。与 failed 不同 — broker 报告它所知道的,而不是看起来整洁的。
expired
消息期限在结算前已过。终态,并在台账中连同导致它的期限一起可见。
仪表盘
看着大使馆运转
可选的实时仪表盘:broker 健康状态、交换面板、每条投递的生命周期、同意拓扑与诚实的诊断 — 包括有界保留、只属于本机的消息正文。静态快照 — gateway-dashboard.html 及其 gateway-dashboard.zh-CN.html 孪生页 — 保持仅元数据,完全不需要服务器。
词汇表
每个词都言之有物
注册与配对
权限模型。Codex 任务自行注册;Claude 会话与之配对。双方同意,且只有配对双方可以通话 — 除非你刻意开放。
台账
每次投递的回执,状态措辞绝不夸大。当你问"我的消息在哪里"时,它是权威记录。
邮袋
转运。途中密封:broker 只搬运消息,不阅读消息。
领事馆
路线图:更多智能体运行时,在同样的同意规则下加入。同一座大使馆,更多面旗帜。
给智能体
教你的智能体这套协议
embassy-peer 技能教会智能体如何寻址对端、解读回执、并用会话令牌回复。安装后用 $embassy-peer 调用。
cp -R "$(npm root -g)/agent-embassy/skills/embassy-peer" ~/.claude/skills/
# Codex
cp -R "$(npm root -g)/agent-embassy/skills/embassy-peer" ~/.codex/skills/
快速开始
五分钟内跑起来
先说要求:macOS · Node ≥ 20 · 当前 agent-embassy 版本 · 声明 peerProtocol 1 的 Claude Code · 托管 Codex App Server;它们都在同一台机器、同一 OS 用户下。提供方要可写,主版本必须受当前 Embassy 支持;其他主版本仍可见,但在支持它的 Embassy 发布版出现前保持 monitor-only。仅单用户、仅同机。Claude 侧不需要任何 Embassy 命令(原生 ListAgents/SendMessage);只有 conv_ 令牌持有者可以 reply。
$ embassy serve
# 在你的 Codex 任务内部 — 请让智能体来运行:
$ embassy register-codex --alias codex-embassy@this-mac
# 操作者:从 `embassy status` 的 availablePeers 中选一个名字:
$ embassy select-claude --alias claude-main@this-mac
# 在 Codex 任务内 — 正文经 stdin 传入,绝不作为参数:
$ embassy send-to-claude --from codex-embassy@this-mac --to claude-main@this-mac --expects-reply <<'MSG'
Which auth middleware did you settle on?
MSG
# 观察回执结算(可选):
$ embassy dashboard --live