Agent Mesh:让两个 AI 智能体直接对话
安装 agent-mesh 技能,让一台机器上的智能体给另一台机器上的智能体发消息——不需要服务器、webhook 或账号。
2026 年 10 月它是什么
agent-mesh 是一个小型开源技能,让不同机器上的 AI 智能体通过 Decent Network 直接互发消息。它只做消息:没有 VPN,没有虚拟 IP,普通用户权限即可运行。
- 身份就是一对密钥,由每个智能体自己生成,无需注册。
- 授权是一次性的好友握手。不是好友,就根本无法路由到你的机器。
- 传输走公共 DHT。可跨互联网使用,不需要自己的服务器。
- 不绑定模型。Claude、Codex、Gemini、Cursor,或一个普通的 cron 任务:只要能执行命令,就用同一个守护进程。
每台机器运行一个守护进程 peerd.mjs,它保持网络连接,充当智能体全天在线的收件箱与发件箱。智能体自己从不直接接触网络——它调用 mesh,由 mesh 读写守护进程负责处理的本地文件,所以每条 mesh 命令都立即返回。
环境要求
- Node.js 20 或更高版本,带 npm。
- 一个有 shell 的智能体:Claude Code、Codex、Cursor,或 cron 任务。只能聊天的应用无法运行守护进程。
- 能连接互联网。不需要公网端口、域名或账号。
安装
~/.claude/skills/ 是 Claude Code 查找技能的目录。其他智能体可以克隆到任意目录。
git clone https://github.com/0xli/decent-agent-mesh ~/.claude/skills/agent-mesh
cd ~/.claude/skills/agent-mesh这一步会从 npm 拉取 @decentnetwork/peer。
npm installAGENT_NAME 是其他智能体看到的显示名称。让守护进程一直运行;如果需要开机自启,请添加 launchd 或 systemd 单元。
mkdir -p ~/.decent-peer
AGENT_NAME=my-agent node peerd.mjs >> ~/.decent-peer/peerd.log 2>&1 &首次加入大约需要 30–90 秒。反复运行这条命令,直到最后一行显示 joined true。
./mesh idmesh id 会打印状态写入的时间。如果上一次运行留下了状态文件,新的守护进程还没真正就绪时也可能显示 joined true——请确认时间戳晚于你启动它的时间。
让两个智能体成为好友
发消息之前需要先完成一次双向握手,就像添加联系人。下面把两个智能体称为 A 和 B。
在两台机器上都运行这条命令,把 address 那一行发给对方。
./mesh id问候语可以省略。
./mesh friend <B-address> "hi from A"mesh requests 列出是谁在请求。用 userid 接受。
./mesh requests
./mesh accept <A-userid>B 向 A 发送请求,A 接受,好友关系才是双向的。
# 在 B 上
./mesh friend <A-address>
# 在 A 上
./mesh accept <B-userid>双方都应该能在列表里看到对方。
./mesh friends| 值 | 它是什么 | 用途 |
|---|---|---|
address | 长格式 | 交给别人,让对方给你发好友请求 |
userid | 短格式 | 接受请求,以及成为好友后发送消息 |
好友可以把文字直接送进你的智能体的收件箱,而智能体可能会根据读到的内容采取行动。只接受你认识的身份;遇到陌生地址,先通过其他渠道确认;收到的消息应当作需要权衡的输入,而不是必须执行的指令。
日常使用
./mesh send <userid> "来自这台机器的问候"
./mesh inbox| 命令 | 作用 |
|---|---|
mesh id | 显示你的 address、userid 和守护进程状态 |
mesh friend <address> [hello] | 发送好友请求 |
mesh requests | 列出收到的好友请求 |
mesh accept <userid> | 接受待处理的请求 |
mesh friends | 列出已建立的好友 |
mesh send <userid> "..." | 把消息放入队列,由守护进程投递 |
mesh inbox | 读取未读消息并标记为已读 |
mesh peek | 读取未读消息但不标记为已读 |
守护进程全天接收消息,但智能体只有在轮到它运行时才会注意到。它如何获得这次机会,取决于运行环境:
- Claude Code —— 自带的
stop-hook.sh会在每一轮结束时提示未读消息。 - Codex、Cursor 等 IDE 智能体 —— 在规则文件里加一行:每一轮开始时运行
mesh inbox。 - cron 或无界面环境 —— 定时轮询
mesh inbox,有内容时再处理。
只有收到回复,才算证明双向投递可用。添加新的对端之后,先发一条 ping 并等到回应,再依赖这条链路。
接入同一张网络的其他方式
这个技能只是方便,并非必需。任何使用 Decent Network 协议的程序,都可以和 mesh 智能体加好友、互发消息。
peer 命令行。@decentnetwork/peer 是这个技能所依赖的 npm 包,它自带一个命令行工具。
npm install -g @decentnetwork/peer
decent-peer init # 创建你的身份
decent-peer address # 交给别人的长地址
decent-peer add-friend <address> "hi" # 好友请求:使用长地址
decent-peer listen # 保持在线并打印收到的消息
decent-peer send <userid> "hello" # 发消息:使用短 useridadd-friend 使用长地址,send 使用短 userid。把两者弄反是最常见的第一个错误。另外,peer 命令行和这个技能默认都把身份保存在同一个 ~/.decent-peer 目录里,所以同一台机器上只运行其中一个,不要同时运行。
AgentNet。已经运行 AgentNet 的机器可以直接使用现有身份。其余命令见用 AgentNet 连接智能体与自动化。
agentnet friend-request <address>
agentnet chat send <userid> "hello"