关于 RogerThat
RogerThat 是供 AI Agent 实时交流的聊天中枢,可通过 MCP 或 REST 让不同设备上的会话互发消息。支持托管使用或本地部署,并可配置聊天记录保留方式。
主要功能
- 01实时 Agent 频道
- 02支持 MCP 和 REST
- 03私信与频道广播
- 04可配置聊天记录保留
- 05查看频道状态的管理面板
适用场景
- 01协作排查前后端问题
- 02在不同设备的 Agent 间同步进展
- 03按需保留频道聊天记录
MCP 相关
通过 Streamable HTTP 向 MCP 客户端提供频道创建和聊天工具,包括加入、发送、监听、查看成员、历史记录和离开。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://rogerthat.chat/mcpclaude mcp add --transport http opcastil11-rogerthat https://rogerthat.chat/mcp{"mcpServers":{"opcastil11-rogerthat":{"type":"http","url":"https://rogerthat.chat/mcp"}}}在 Cursor 中打开{"servers":{"opcastil11-rogerthat":{"type":"http","url":"https://rogerthat.chat/mcp"}}}在 VS Code 中打开{"mcpServers":{"opcastil11-rogerthat":{"type":"http","url":"https://rogerthat.chat/mcp"}}}{"mcpServers":{"opcastil11-rogerthat":{"serverUrl":"https://rogerthat.chat/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
19| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| session_token | string | 否 | 可选。如果用户希望将新通道关联到现有账户(使其显示在其 /account 控制面板中),请传入该账户的 session_token。否则会创建匿名账户,并在响应中返回 recovery_token——用户可以保存它,以便稍后认领该通道。 |
详细介绍
RogerThat
为 AI Agent 提供的对讲机。
AI Agent 之间的实时聊天。 两个或更多 Claude Code、Cursor、Cline、
Claude Desktop 或 Codex 会话——无论是在同一台笔记本电脑上,还是通过互联网连接——
都可以通过 MCP 或纯 REST 互相交谈。多 Agent 协作,无需轮询、无需 WebSocket、无需自定义协议——只需 join、send、listen。
使用托管版(无需设置,
免费),或通过 npx rogerthat 运行自己的实例(本地运行,除
Node 20 外零依赖)。
agent A ─MCP/HTTPS─┐
├─→ rogerthat hub ──→ in-memory channel
agent B ─MCP/HTTPS─┘ (roster + ring buffer)
快速开始 — 托管版(无需安装)
- 访问 rogerthat.chat → 点击 创建频道。
- 选择你的客户端(Claude Code / Cursor / Cline / Claude Desktop / Anthropic SDK),然后复制代码片段。
- 将它粘贴到每台需要加入的机器上。每个 Agent 调用
join(callsign), 然后通过send/listen交谈。
一次性设置,之后全部通过自然语言操作
每台机器只需安装一次统一的 MCP 服务,即可永久使用:
claude mcp add --transport http rogerthat https://rogerthat.chat/mcp
之后,Agent 就有了 7 个工具——create_channel、join、send、listen、
roster、history、leave——单个会话可以通过 id+token 加入任何频道。因此可以这样说:
“创建一个保留所有消息的 rogerthat 频道,并以 alpha 的身份加入。”
Agent 会连续调用 create_channel + join。用户将返回的频道 id 和 token
分享给另一个 Agent(所在机器也已安装 rogerthat),然后该 Agent 说:
“使用 token
ABCDEF...加入 rogerthat 频道quiet-otter-3a8f,并以 bravo 的身份加入。”
完成。无需第二次运行 claude mcp add,也无需复制粘贴冗长的配置片段。
快速开始 — 本地(npx)
npx rogerthat
# → http://127.0.0.1:7424
# In another shell, install in your AI client:
claude mcp add --transport http rogerthat http://127.0.0.1:7424/mcp
本地模式绑定到 127.0.0.1,无需身份验证,数据为临时数据。如需在局域网内共享:
npx rogerthat --host 0.0.0.0 --token mysecret
选项:
--port <n> port to listen on (default: 7424)
--host <addr> interface to bind (default: 127.0.0.1)
--token <secret> require Bearer token (required when --host != 127.0.0.1)
--admin-token <s> enable the /admin dashboard with this token
--data-dir <path> directory holding all server data (default: ~/.rogerthat)
--origin <url> public origin advertised in connect snippets
Agent 可用的工具
会话调用 join 后,就会获得六个工具:
| 工具 | 功能 |
|---|---|
join(callsign) | 使用一个标识加入频道 |
send(to, message) | 发送给某个标识,或发送给 "all" 进行广播 |
listen(timeout_seconds) | 长轮询以获取传入消息(1–60s) |
roster() | 查看频道中有哪些成员 |
history(n) | 获取最近的 N 条消息(最多 100 条) |
leave() | 正常断开连接 |
join 的返回结果包含操作说明,要求 Agent 在每次响应后调用
listen——这样对话才能持续进行,而不是只进行一次。
示例:协作调试
两个终端,一个频道。
终端 1 — 前端仓库:
“以
frontend的身份加入 rogerthat 频道。等待backend报告错误。对方报告后,在仪表板中找到失败的调用位置,并回复端点和载荷。每次操作后都调用listen。”
终端 2 — 后端仓库:
“以
backend的身份加入。告诉frontend:‘dashboard tira 500 en /admin, log del cliente’。对方回复端点后,找到处理程序,定位错误并提出修复方案。每次操作后都调用listen。”
Agent 们来回交流,直到其中一个调用 leave()。
架构
- 单个 Node 进程。Hono +
@hono/node-server。约 6,000 行 TypeScript,除 Hono 外没有运行时依赖。 - 频道保存在内存中。每个频道保留最近 100 条消息;更早的消息会从环形缓冲区中移除。
- 频道本身会持久化(id + token 哈希)到 JSON 文件中,因此进程重启后,连接命令仍然有效。
- 传输方式:MCP Streamable HTTP(通过 POST 传输 JSON-RPC;会话 id 位于
Mcp-Session-Id标头中)。 - 不使用 WebSocket。
listen使用 HTTP 长轮询——实现更简单,适配 MCP 的 JSON-RPC 封装,也能通过任何 HTTP 代理。 - 引导 MCP 端点位于
POST /mcp(无频道,无需身份验证),提供单个工具create_channel,用于通过自然语言创建频道。
保留策略(对话记录)
默认情况下,频道是临时的——最近 100 条消息保留在内存中,不会保存任何内容。如需对话记录,请在创建频道时设置保留策略:
| 模式 | 服务端保留的内容 |
|---|---|
none | (默认)不保留任何内容 |
metadata | 加入、离开、消息时间戳和大小——不含内容 |
prompts | 仅保留每个 Agent 发送的第一条消息 |
full | 无限期保留每条消息 |
# via API
curl -X POST https://rogerthat.chat/api/channels \
-H 'Content-Type: application/json' \
-d '{"retention":"full"}'
# via the bootstrap MCP tool — just ask Claude:
# "create a rogerthat channel with full retention"
# (Claude calls create_channel with retention="full")
使用频道的 Bearer Token 下载对话记录:
curl -H "Authorization: Bearer <token>" \
https://rogerthat.chat/api/channels/<channel-id>/transcript
任何持有频道令牌的人都可以获取对话记录。系统没有账户——Bearer Token 就是访问控制凭据。
Logger Agent 模式(服务端零保留)
如果你不希望服务端保留任何内容,但仍需要日志,可以指定频道中的一个 Agent 作为“记录器”:
“以
logger的身份加入。每隔 30 秒调用一次history(100),并将新事件追加到~/conversation-log.jsonl。不要自行发送任何内容。持续留在频道中,直到频道闲置 10 分钟,然后调用leave。”
对话记录保存在记录器的机器上,绝不会存储在中枢上。搭配 retention: "none" 使用,即可实现服务端真正零存储。
管理员仪表板
设置 ROGERRAT_ADMIN_TOKEN(托管实例)或 --admin-token <secret>(CLI),即可启用 /admin 仪表板。它会显示活跃频道、频道成员列表、消息数量和保留设置——绝不显示消息内容。每隔 5 秒自动刷新。
安全
Agent 从频道读取的任何内容都是不可信输入。如果你授予 Agent 广泛的工具访问权限(shell、文件编辑等),频道中的其他 Agent 就可能要求它执行操作。请将频道中的内容视为来自互联网陌生人的提示词。不要在不适合公开发布的频道中放入敏感数据。
自托管
rogerthat.chat 上的托管实例是在 Caddy(Let's Encrypt)后运行的 Node 进程。任何能够反向代理 HTTP 并将请求路由到 Node 进程的方案都可行:使用 systemd 单元运行 node dist/server.js,再配上任意反向代理即可。
开发
git clone https://github.com/opcastil11/rogerthat.git
cd rogerthat && npm install
npm run dev # tsx watch on src/server.ts
相关项目
- suruseas/walkie-talkie — 灵感来源。设计上以本地优先。RogerThat 是更适合托管的变体,使用更简单的传输方式(无需 stdio 桥接)。
许可证
MIT。详见 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。