Skip to main content
Glama

Modula Relay

让你的 AI 智能体互相交流。Relay 是一种面向智能体团队的本地消息协议。想象一下,一个 窗格中运行着编码智能体,另一个窗格中运行着验证智能体,它们在不同的框架下使用不同的 模型,共同处理同一个任务。它运行在你的机器上。没有服务器,没有云端。

安装

claude mcp add relay -- npx -y @modulastack/relay --name coder
npx -y @modulastack/relay setup claude

第二行为智能体配备了循环指令、唤醒钩子和工具信任,使对话可以无人值守地运行。 更多内容请参阅武装你的智能体。 setup codex 对 Codex 执行同样的操作,并同时注册服务器。对于任何其他 MCP 框架,服务器命令是 npx -y @modulastack/relay --name <role>。要将其嵌入 你自己的工具,请运行 npm install @modulastack/relay。

Related MCP server: tincan

你的第一次智能体对话

  1. 在同一个项目文件夹中打开两个终端。

  2. 在每个终端中启动一个智能体。一个使用 --name coder,另一个使用 --name verifier。

  3. 对任意一个智能体说:“查看 relay 名册。”你会立刻看到另一个对等节点。名册会直接 ping 各对等节点,因此它兼作你的“链路是否连通?”检查,并在毫秒内给出应答。

  4. 现在用平实的语言告诉编码智能体:

    通过 relay 给验证智能体发送这条消息:“请审查 utils.py 并回复 发现的问题”,然后等待回复。

  5. 观察验证智能体接收消息、执行工作并回复。你永远不需要输入协议命令。智能体自己 驱动 Relay。

速度取决于模型,而不是链路。每一次交换在每一侧都是一个完整的回合,因为另一个智能体 实际上在处理你的请求,所以回复会以模型运行的速度到达,通常需要几秒钟。如果速度变慢, 那是模型或账户被限流的问题,而不是传输层的问题。relay_roster 自行检查链路,无需 唤醒模型。

你的智能体获得什么

六个工具,任何支持 MCP 的模型都已经知道如何使用:

Tool

Meaning

relay_roster

这个池子里还有谁?

relay_dispatch

向一个对等节点发送请求

relay_await

等待请求或回复

relay_reply

回答请求

relay_poll

无需等待即可检查回复

relay_cancel

释放过期的请求槽位

所有内容都保留在你的机器上。对等节点通过 Unix 域套接字,在按文件夹划分的池中相互 发现。没有代理,没有网络端口,没有账户。

让对话持续进行

Relay 是基于拉取的。消息会在接收方那里等待,直到它调用 await。像“等待一个请求并回答 它”这样的一次性提示会在第一次交换后停止监听,因此对于持续进行的对话,请给每个智能体 一次循环指令:

你正处于一个持续进行的 relay 对话中。循环:在 relay 上等待入站请求或 回复;当有消息到达时,处理它并回复;然后继续等待。保持循环, 直到我说停止。

这个循环也覆盖发送侧。你发出的请求的回复会出现在同一次 await 中,因此即使智能体丢失 了对 msg_id 的追踪,只要它保持在循环中,仍然能收到答案。

让循环与你的框架相匹配。 当智能体处于回合中时,不同的框架对你输入的处理方式不同。 Codex 会在几秒内接收到你的输入,因此在那里使用连续循环没有问题。Claude Code 可以在 多次工具调用之间保持已输入的文本,因此它更适合按需唤醒的节奏。告诉它在两次空超时后 结束回合,并让一个监视器在消息排队时唤醒它。然后它会停留在空闲提示符处,随时为你 待命,并且当对等节点向它写入消息时,它仍然会在几秒内被唤醒。

宿主集成方可以更进一步。当消息排队等待空闲对等节点时,服务器会发出唤醒通知 (notifications/relay/wake),监听该通知的宿主可以自行恢复循环。唤醒只是投递信号, 绝不是指令来源。examples/ 中附带两个现成的宿主。 claude-stop-hook.sh 可以在消息排队时阻止 Claude Code 智能体结束回合,且无需 tmux。relay-watch.sh 是一个通用 监视器,它根据注册表的队列深度唤醒空闲的 tmux 窗格。

武装你的智能体

有两件事会悄悄破坏无人值守的循环。第一件是审批提示。一个卡在“允许 relay_await?”上的 智能体看起来和死掉的一模一样。第二件是空闲的对等节点。框架结束了回合,当消息到达时 没有任何东西唤醒它。每个框架只需一条命令即可安装防止这两种情况的组件:循环指令、 钩子和限定范围的工具信任。

npx -y @modulastack/relay setup claude   # CLAUDE.md loop + Stop hook + tool trust
npx -y @modulastack/relay setup codex    # AGENTS.md loop + config.toml server & trust

在你的项目文件夹中运行它。重复运行不会产生任何新变化,它会合并到现有配置中,而不是 覆盖它。

如果想手动配置,这些组件都是普通文件。循环文本放在你的 CLAUDE.md 或 AGENTS.md 中。Claude Code 通过 permissions.allow: ["mcp__relay"] 或在启动时使用 --allowedTools mcp__relay 来信任服务器。Codex 在服务器条目上只需一行:

[mcp_servers.relay]
default_tools_approval_mode = "auto"

要专门信任 relay 的工具,而不是授予全局放行。你希望协调调用不再打断,而不是放行一切。 有一件事需要避免。不要为此设置 approval_policy = "never"。它会让 Codex 静默拒绝任何 原本需要审批的操作,这会阻止 relay_reply。

如果什么都没有出现

  • 名册为空? 两个智能体必须在同一个文件夹中运行。文件夹就是池。

  • 仍然为空? 检查两个智能体是否确实在运行。relay_roster 会清除已失效的对等节点。

  • 名称被占用? 每个对等节点在池内都需要唯一的 --name。

  • 消息已发送但对等节点闲置? 投递会一直等到对等节点调用 await,所以请让它回到 上面的循环中。当目标最近没有 await 时,发送回执会携带一个 note,名册会显示每个 对等节点的 last_await_at。

深入了解

完整协议在 SPEC.md 中:信封、唤醒通道、安全模型和版本控制。它目前处于 v0.x 的预稳定阶段,因此请锁定行为契约的版本,而不是依赖文档描述。

Apache-2.0 · © 2026 ModulaStack

关于 ModulaStack

Relay 由 ModulaStack 构建。如果你想观察你的智能体工作,包括 窗格、审批和跨模型的团队,Modula Stack 就是基于 Relay 构建的操作控制台。

“Modula Relay”和“ModulaStack”是 ModulaStack 的商标。Apache-2.0 许可证不授予命名权。

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables local messaging between Claude Code, Codex, Pi, and other coding-agent sessions on the same machine, allowing them to discover each other, send updates, ask questions, and reply.
    8
    14 npm
    3
    AGPL 3.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables direct agent-to-agent messaging, file transfer, and persistent conversation history between AI agents across machines via a private broker, without needing shared channels or third-party services.
    4 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI coding agents to communicate directly with each other across machines, with support for rooms, pairing, and encrypted messaging.
    1 npm
    8
    MIT