💡 一句话理解:两台没有公网 IP 的电脑,两个 AI Agent,一个配对码,直接对话——端到端加密,人不用在旁边当传话筒。
你有没有过这种时刻——
你这边 Claude Code 写得正嗨,隔壁老王的 grok CLI 也跑得飞起。你想让两个 AI 交换点信息,结果发现:它们根本够不着对方。
你家没公网 IP,他家也没有。两个 AI 隔着一整个互联网,像两个社恐隔着玻璃比划——全靠你手抄 context 来回传。

累不累?累。
AgentHop 说:别抄了,让它们自己聊。
🎬 先看现场:Claude Code × grok CLI 的真实对话
这不是演示,是 README 里贴的真实对话记录(创建方视角):
15:35:02 local waiting 0064-fresh-genre-bunt-k7f3q2mbxz4a6tu5wnhjy2pc3d
15:38:00 peer connected
15:38:00 local hello 我是 Cooper 这边的 Claude Code。我们刚发了 agenthop v0.3.2…
15:38:24 peer confirm 对上了:我是 Cooper 机器上的 grok CLI,来帮忙验证 v0.3.2。
15:38:24 local ready
15:38:36 local say 第一个问题:你跑的 grok CLI 是哪个版本,什么模型?
15:39:12 peer say grok CLI 是 1.0.41,刚跑 grok --version 的输出。
15:39:13 peer say 这次会话的模型是 grok-4.7。
15:43:00 local bye
15:43:02 peer bye
两个不同厂商的 AI,跨机器、跨网络,自己把事聊完了。
人类干嘛去了?喝茶去了。🍵
🤔 它到底解决了什么?
传统玩法:人肉传话。
你的 AI → 复制 → 粘贴给你 → 你复制 → 粘贴给他的 AI
AgentHop 玩法:AI 直连。
你的 AI ←→ 加密隧道 ←→ 他的 AI
关键点:
✅ 不需要公网 IP ✅ 不需要端口转发 ✅ 不需要 Node.js(下载单文件就能跑) ✅ 端到端加密,中继服务器看不懂内容 ✅ 一个配对码搞定,复制粘贴就行
🎮 怎么玩?三步
第一步:装它
去 Releases 下对应系统的单文件,不用 clone 仓库:
agenthop-macos-arm64 | |
agenthop-macos-x64 | |
agenthop-linux-x64 | |
agenthop-windows-x64.exe |
macOS / Linux 一行搞定:
chmod +x agenthop-macos-arm64
./agenthop-macos-arm64 install --skill-dir
Windows 在 PowerShell 里:
.\agenthop-windows-x64.exe install --skill-dir
第二步:接进你的 AI
它能当 MCP 服务器跑,直接给 Agent 一套工具。
install 会自动打印注册命令,比如:
claude mcp add --scope user agenthop -- ~/.local/bin/agenthop mcp
grok mcp add --scope user agenthop ~/.local/bin/agenthop -- mcp
也可以让它帮你写配置:
agenthop install --mcp claude
支持:Claude Code、Codex、Cursor、Gemini CLI、grok。
第三步:开聊
一边创建房间:
agenthop "我们来核对一下 v0.3.2 的发布情况"
拿到配对码,另一边加入:
agenthop 0064-fresh-genre-bunt-k7f3q2mbxz4a6tu5wnhjy2pc3d
成了。两个 AI 开始自己聊。

🛠️ 给 Agent 的八件武器
接进 MCP 后,Agent 手上多了这些工具:
agenthop_create | |
agenthop_join | |
agenthop_say | |
agenthop_working | |
agenthop_wait | |
agenthop_send_file | |
agenthop_bye | |
agenthop_status |
注意:每次工具调用的结果就是对话本身,用户能在对话记录里直接看到。
👥 更狠的:存个联系人,下次直接喊名字
每次对话,双方会亮出身份:一个长期公钥,存在 ~/.agenthop/identity.json。
第二次找同一个人,配对码都不用传了:
第一次照常配对,聊完各自存个联系人 以后直接 agenthop_invite("alice", "聊啥事")alice 那边 agenthop_wait收到邀请,Agent 先问用户,同意了就agenthop_accept开始正常对话
agenthop_save_contact | |
agenthop_invite | |
agenthop_accept / ❌ agenthop_decline | |
agenthop_contacts / agenthop_forget_contact |

重要提醒:邀请只能到达此刻正在运行 agenthop 的 Agent。对方离线?直接告诉你,不排队、不叫醒。
🔐 安全性:中继看不懂,密钥在码里
配对码就是唯一的凭证,而且一次性。
它分两半:
前四段:房间地址,中继靠这个路由 最后一段:128 位随机密钥,永远不发给中继
所以托管中继转发的全是它读不懂的密文。
它能看到的只有:房间地址、消息数量、每条大小和时机。它能丢消息、能延迟消息——但它看不懂内容。
文件也一样加密,连文件名都加密。
联系人走 TOFU(首次使用即信任),存的是那次对话里出现的公钥,指纹可以另外核对。邀请是密封给收件人密钥的,中继连谁邀请谁都看不出来。
⚠️ 一个诚实的说明:没有前向保密。
😅 为什么配对码这么长?
以前是四个数字加三个单词,短到能念出来。
但房间地址是配对码的哈希,空间那么小,离线就能爆破——从这种码里推出来的密钥,等于没有密钥。
不过 agenthop 的码从来不用念:从一个 Agent 的终端复制,粘到另一个 Agent 那儿。变长几乎没成本。
前四段还是房间地址,末尾多出来的一段是随机 128 位密钥。
🏗️ 它怎么跑起来的
你的机器 中继 他的机器
agenthop ──WebSocket──▶ /host/
│ (只转发字节) │
└─ 本地 A2A 服务器 └─ 轮询房间新消息
创建方在自己机器上跑一个 A2A 服务器,和中继保持一条 WebSocket。对方发到 /r/ 的 HTTP 请求,顺着隧道下来到本地服务器。
中继只转发字节,不解析——而且想解析也解析不了,每条消息离开机器前就用配对码里的密钥封好了。
房间十分钟没流量就消失,所以配对码得在十分钟内用掉。
📦 包结构
@agenthop/cli | agenthop |
@agenthop/tunnel | |
@agenthop/relay-node | agenthop relay) |
@agenthop/relay-cf | |
@agenthop/agent |
🔧 想自己搭中继?
默认是 https://agenthop.imatrix.tech。换一个:
agenthop --relay https://example.test "背景信息"
自己跑:
agenthop relay --listen 127.0.0.1:8787 --pass secret
两边都传 --pass secret,或者设 AGENTHOP_PASS。
小技巧:命令行参数会在 ps 里露出来,环境变量不会。😉
🎨 我的读后感
这个项目最妙的地方,是它承认了一个现实:
AI Agent 越来越能干,但它们互相够不着。
你有 Claude,我有 grok,他有 Cursor——每个都是好手,但都在各自的孤岛上。
AgentHop 没想着"统一它们",而是给它们修了条加密小道。一个配对码,两个 AI 自己对接、自己确认任务、自己聊完、自己说再见。
人类终于可以从传话筒的岗位上退休了。 🎉
