🤖HermesBlog
Hermes 消息平台接入 · 第13篇2026/8/9· Easy Understand Hermes Agent

A2A 协议——AI 与 AI 之间的对话

Hermes 消息平台接入第13篇:A2A。Agent 之间互相通信的开放协议。

A2A 协议:AI 与 AI 之间的“电话” 好嘞,今天咱们来聊聊一个特别酷的话题——AI 和 AI 怎么“打电话”

你可能已经习惯了跟 ChatGPT、Claude 这些 AI 聊天,但你想过没有:AI 之间能不能自己互相聊天、互相派活儿? 比如让你电脑上的 AI 助手,去调用服务器上另一个 AI 帮你查资料,完事儿再把结果带回来。

这就是今天的主角:A2A 协议(Agent-to-Agent)。简单说,它就是 AI 界的“普通话”,让不同的 AI 智能体(Agent)能互相听懂、互相协作。这个协议已经到 v1.0 了,由 Linux 基金会托管,是个开放标准。

什么时候需要 A2A?

  • 跨机器的 Hermes 互喊:你桌面上的 Hermes 可以把活儿派给服务器上的另一个 Hermes,两边各有各的记忆和工具。
  • 找“专家”帮忙:某个 AI 在它的“名片”(Agent Card)上写着“我会网页搜索”,你就可以在对话中直接喊它干活。
  • 把自己“挂出去”:让你的 Hermes 变成一个可以被其他框架(比如 LangChain、CrewAI)调用的服务。

注意哈,如果只是同一台机器上的多个 AI,用 Hermes 自带的 delegation(子代理)或者 kanban 看板就行,A2A 是专门用来跨进程、跨机器、跨框架的。

怎么开启?

超级简单,一条命令:

hermes gateway setup      # 选 A2A 就行

或者手动改配置 ~/.hermes/config.yaml

gateway:
  platforms:
    a2a:
      enabled: true
      extra:
        port: 9900

不过有个小坑:外呼工具默认是关的,你得手动打开:

hermes tools enable a2a --platform cli        # 在命令行里用
hermes tools enable a2a --platform telegram   # 在 Telegram 里用
hermes tools enable a2a --platform a2a        # 允许接进来的 A2A 任务再呼别人(AI 套娃)

顺带一提,这套工具在 CLI、TUI、gateway、cron 里都能用,不用非得先把入站平台打开。

往外打:呼叫别的 AI

开了工具集之后,你的 Hermes 就多了几个“电话本”工具:

工具 干嘛的
a2a_discover(url) 看看对方 AI 的“名片”,了解它会啥
a2a_call(agent, message, context_id?) 给对方派任务,拿回结果;带上 context_id 就能多轮聊
a2a_list() 查看已配置的伙伴和聊天记录
a2a_history(context_id) 翻出之前存过的某段 A2A 对话
a2a_orchestrate(capability, message, mode?) 群发!把任务同时发给所有会某技能的 AI(all / first / best 三种模式)

在配置文件里先存好“通讯录”:

a2a_agents:
  researcher:
    url: "http://research-box.local:9900"
    auth: { type: bearer, token: "..." }
    timeout: 120
    capabilities: [web_search, research]

然后你就可以直接说:“让 researcher 帮我总结一下今天的 arXiv 论文。” 它就会自己去打电话了。直接丢一个 URL 也行,a2a_call 接受任何 A2A 端点。

接进来:让别人呼你

开了入站平台后,你的 Hermes 会提供一个标准的“服务窗口”:

  • Agent Card:在 /.well-known/agent-card.json,相当于你的 AI 名片,写着你会啥技能(老的 agent.json 路径也还能用)。
  • JSON-RPC 2.0:标准的 A2A 方法(SendMessageGetTaskListTasksCancelTask 等)都支持,旧版的路径式写法(message/send 之类)也兼容。
  • SSE 流式传输:支持流式回复,像打字机一样往外蹦字。
  • 推送通知:跑长任务时,干完了可以主动“敲”对方一下,带 HMAC-SHA256 签名。

最关键的是:接进来的任务会直接注入你正在运行的 Hermes 会话里——同一个大脑、同一套记忆和工具,干完活儿再把结果原路返回。对话按 A2A 的 contextId 归类,所以对方可以跟你来回聊好几轮。

安全吗?放心,默认很严

  • 没设令牌 = 只能本机访问。想对外暴露,必须设 token 和 A2A_HOST
  • 每个伙伴一个专属令牌,谁是谁清清楚楚,还能限速。
  • 防注入:外面传进来的文本会被标记为“不可信”,远程 AI 没法调用你的斜杠命令。
  • 往外发也擦一遍:回复里长得像密钥、JWT、token 的字符串会被抹掉。
  • 留痕:每次往来都会记到 ~/.hermes/a2a_audit.jsonl
  • 防套娃:两个 AI 互相 ping-pong 没完没了?有回合数上限,默认 5 轮,最多 20 轮。

快速测试

配好之后,从另一台机器试试:

curl http://your-host:9900/.well-known/agent-card.json

能看到 Agent Card 就说明通了!

卡住了?几个常见坑

  • 对方访问不到名片地址:名片广播的是你的绑定地址,把 A2A_PUBLIC_URL 设成外面能访问的地址就行(走反向代理或 k8s 的话尤其要注意)。
  • 401 未授权:令牌对不上,检查服务端的 A2A_PEER_TOKENS / A2A_BEARER_TOKEN 和对方的 auth: 配置。
  • 服务起不到非本机地址:这是故意的,先设好 bearer token,再设 A2A_HOST=0.0.0.0
  • 长任务回复超时:把 A2A_REPLY_TIMEOUT 调大就行——那个清理“孤儿任务”的机制会跟着这个值走,不会提前把任务判死,晚到的回复也会被存下来而不是丢掉;或者让调用方注册推送通知,然后轮询 GetTask

A2A 让 AI 从“单打独斗”变成了“团队作战”。现在就去试试,让你的 Hermes 交个 AI 朋友吧!

📖 官方文档

本文根据 Hermes Agent 官方文档编写,原文见:官方文档 › user-guide/messaging/a2a