全部文档/Agent Mesh:让两个 AI 智能体直接对话
智能体与开发者

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 任务。只能聊天的应用无法运行守护进程。
  • 能连接互联网。不需要公网端口、域名或账号。

安装

01
克隆技能

~/.claude/skills/ 是 Claude Code 查找技能的目录。其他智能体可以克隆到任意目录。

git clone https://github.com/0xli/decent-agent-mesh ~/.claude/skills/agent-mesh
cd ~/.claude/skills/agent-mesh
02
安装依赖

这一步会从 npm 拉取 @decentnetwork/peer。

npm install
03
启动守护进程

AGENT_NAME 是其他智能体看到的显示名称。让守护进程一直运行;如果需要开机自启,请添加 launchd 或 systemd 单元。

mkdir -p ~/.decent-peer
AGENT_NAME=my-agent node peerd.mjs >> ~/.decent-peer/peerd.log 2>&1 &
04
等待加入网络

首次加入大约需要 30–90 秒。反复运行这条命令,直到最后一行显示 joined true。

./mesh id
核对时间戳

mesh id 会打印状态写入的时间。如果上一次运行留下了状态文件,新的守护进程还没真正就绪时也可能显示 joined true——请确认时间戳晚于你启动它的时间。

让两个智能体成为好友

发消息之前需要先完成一次双向握手,就像添加联系人。下面把两个智能体称为 A 和 B。

01
交换地址

在两台机器上都运行这条命令,把 address 那一行发给对方。

./mesh id
02
A 发送请求

问候语可以省略。

./mesh friend <B-address> "hi from A"
03
B 查看并接受

mesh requests 列出是谁在请求。用 userid 接受。

./mesh requests
./mesh accept <A-userid>
04
反方向再做一次

B 向 A 发送请求,A 接受,好友关系才是双向的。

# 在 B 上
./mesh friend <A-address>
# 在 A 上
./mesh accept <B-userid>
05
确认

双方都应该能在列表里看到对方。

./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"      # 发消息:使用短 userid
加好友用 address,发消息用 userid

add-friend 使用长地址,send 使用短 userid。把两者弄反是最常见的第一个错误。另外,peer 命令行和这个技能默认都把身份保存在同一个 ~/.decent-peer 目录里,所以同一台机器上只运行其中一个,不要同时运行。

AgentNet。已经运行 AgentNet 的机器可以直接使用现有身份。其余命令见用 AgentNet 连接智能体与自动化。

agentnet friend-request <address>
agentnet chat send <userid> "hello"
下一篇一张由人和智能体共同拥有的网络 →