A2A 多轮对话:AI 之间的聊天记录是怎么接上的
Hermes 消息平台接入第39篇:A2A contextId 多轮对话机制与演进修复。
好嘞,今天咱们来聊聊一个特别有意思的话题:AI 之间是怎么“打电话”聊天的。
你可能已经习惯了跟 ChatGPT、Claude 这些 AI 一对一聊天,但你想过没有——如果让一个 AI 去问另一个 AI 问题,它们俩的对话记录是怎么接上的?这就引出了今天的主角:A2A 协议(Agent-to-Agent)。
啥是 A2A?简单说就是 AI 界的“普通话”
A2A 是 Linux 基金会维护的一个开放协议(v1.0),专门让不同的 AI 智能体互相通信。注意,是“不同”——不管你是 Hermes、LangChain、CrewAI 还是 Google ADK 的智能体,只要会说 A2A 这门外语,就能互相聊天。
Hermes 的 A2A 插件是双向的:你的智能体能去调用别人,别人也能通过 HTTP 把任务丢给你。
什么时候用 A2A?
- 跨机器的 Hermes 互聊:你电脑上的 Hermes 让服务器上的 Hermes 干活,各有各的记忆和工具。
- 找专家帮忙:对方在它的“名片”(Agent Card)上写着会
web_search、research,你聊着聊着就能直接喊它。 - 把自己变成服务:让别的框架的智能体也能给你派活。
不过注意:如果只是同一台机器上的多个智能体,用 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 # 聊天平台用
hermes tools enable a2a --platform a2a # 让进来的任务也能再呼别人(智能体套娃)
外呼:怎么让 Hermes 去问别的 AI?
开了工具后,你的智能体就多了几个“超能力”:
| 工具 | 干啥的 |
|---|---|
a2a_discover(url) |
看看对方名片上写了啥本事 |
a2a_call(agent, message, context_id?) |
发任务、拿回复;带 context_id 就能多轮聊 |
a2a_list() |
查看已配置的伙伴、聊天记录、指标 |
a2a_history(context_id) |
翻旧账,找回之前的对话 |
a2a_orchestrate(capability, message, mode?) |
把任务群发给所有会某技能的智能体(all/first/best) |
在 config.yaml 里配好熟人:
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(老路径agent.json也能用),写着你的名字、技能、认证要求。 - JSON-RPC 2.0:在
POST /上,支持标准方法(SendMessage、GetTask、CancelTask等)。 - SSE 流式:
SendStreamingMessage支持流式输出。 - Webhook 推送:长任务干完了主动通知,HMAC-SHA256 签名。
进来的任务会注入到一个活的网关会话里——跟你其他渠道用的是同一个智能体、同一份记忆。对话靠 contextId 关联,所以对方能跟你多轮聊。
安全:默认锁门,钥匙自己配
Hermes 的安全模型是“默认安全,每开一道门都要你点头”:
- 没 token?只能本机访问。服务器绑在
127.0.0.1,想远程访问必须设 token 和A2A_HOST。 - 每个伙伴一个 token:
A2A_PEER_TOKENS="alice:tok1,bob:tok2",谁是谁清清楚楚。 - 防提示注入:外部文本会被过滤,远程伙伴不能调用你的斜杠命令。
- 防套娃死循环:每个对话有轮次上限,俩 AI 不会无限 ping-pong。
快速测试
从另一台机器:
curl http://your-host
能看到 Agent Card 就说明通了。
一句话总结:A2A 就是给 AI 装上了“电话线”,让它们能跨机器、跨框架地聊天、派活、记上下文。Hermes 这边开箱即用,安全默认拉满,想玩多轮对话?配好 token 就能开聊。
顺带提一句:如果对方任务跑得久、回复超时了,别急着以为消息丢了——把 A2A_REPLY_TIMEOUT 调大就行,孤儿任务清理会跟着这个值走,晚到的回复照样会存下来,不会被丢掉。
📖 官方文档
本文根据 Hermes Agent 官方文档编写,原文见:官方文档 › user-guide/messaging/a2a