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

A2A 生态互操作:不同框架的 AI 也能互相打电话

Hermes 消息平台接入第41篇:A2A 开放协议如何打通各框架智能体。

A2A 生态互操作:从方言岛到普通话社区 好嘞,今天咱们来聊个特别带感的话题——让不同框架的 AI 互相打电话

想象一下:你电脑上的 Hermes 想查点资料,但它懒得自己动手,直接一个电话打给服务器上另一个 Hermes;或者你正在跟 ChatGPT 聊天,聊到一半想让 CrewAI 里的某个专家 Agent 插句话。这事儿搁以前,基本属于“跨服聊天”,想都别想。但现在,A2A 协议把这事儿变成了现实。

A2A 是啥?能吃吗?

A2A(Agent-to-Agent)是 Linux 基金会维护的一个开放协议,专门解决 AI 之间怎么互相通信的问题。你可以把它理解成 AI 界的“普通话”——不管对方是 Hermes、LangChain、CrewAI 还是 Google ADK,只要会说这口“普通话”,就能无障碍交流。

Hermes 的 A2A 插件是双向的:你的 Hermes 能调用别的 A2A Agent,别人也能通过 HTTP 往你的 Hermes 派活儿。

什么时候用 A2A?

  • 跨机器的 Hermes 互传任务:台式机上的 Hermes 把活儿丢给服务器上的 Hermes,各干各的,互不干扰。
  • 找专家帮忙:对方 Agent 在“名片”上写了会 web_searchresearch 这些技能,你聊天聊到一半就能直接喊它来干活。
  • 把自己变成“可呼叫服务”:让别的框架的 Agent 能直接给你派任务。

不过注意:如果只是同一台机器上多个 Agent 协作,用 delegation 或 kanban 更轻量。A2A 是给“跨进程、跨机器、跨框架”这种大场面用的。

怎么开启?

一条命令搞定:

hermes gateway setup      # 选 A2A

或者手动改配置:

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        # 让打进来的 A2A 任务还能再打给别人(套娃)

往外打:调用别的 Agent

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

工具 干啥的
a2a_discover(url) 看看对方“名片”,了解它有什么技能
a2a_call(agent, message, context_id?) 派任务、拿回复,支持多轮对话
a2a_list() 查看已配置的伙伴、历史对话
a2a_history(context_id) 翻旧账,找回之前的对话
a2a_orchestrate(capability, message, mode?) 群发!把所有会某项技能的 Agent 都喊一遍

config.yaml 里配置好“通讯录”:

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

然后直接说:“让 researcher 帮我总结今天的 arXiv 论文”,它就屁颠屁颠去打电话了。

接电话:让别人调用你

开启了入站平台后,你的 Hermes 会提供:

  • Agent 名片GET /.well-known/agent-card.json,介绍你是谁、会啥技能。
  • JSON-RPC 2.0 接口POST /,支持 SendMessageSendStreamingMessageGetTask 等标准方法。
  • SSE 流式响应:长任务可以流式返回结果。
  • Webhook 推送通知:任务跑完了主动告诉你,带 HMAC 签名。

打进来的任务会直接注入你正在运行的 gateway 会话——同一个 Agent、同一套记忆和工具,干完活把结果回给调用方。多轮对话靠 contextId 保持,对方可以跟你来回聊。

安全:默认锁死,想开得自己拧钥匙

  • 没设 token? 那只能本机访问,绑定 127.0.0.1
  • 想远程访问? 必须设 bearer token 并且显式设置 A2A_HOST
  • 每个伙伴一个专属 tokenA2A_PEER_TOKENS="alice:tok1,bob:tok2",谁是谁清清楚楚。
  • 防注入:打进来的文本会被过滤,远程 Agent 没法调用你的斜杠命令。
  • 防套娃:每个对话最多来回 5 轮(可配),防止两个 Agent 无限互相 ping-pong。
  • 审计日志:所有交流都记在 ~/.hermes/a2a_audit.jsonl

快速测试

# 从另一台机器试试:
curl http://your-host

能看到 Agent 名片就说明通了。

长任务超时了咋办?

如果对方 Agent 干活慢,回复等超时了,把 A2A_REPLY_TIMEOUT(默认 300 秒)调大就行。放心,那个负责清理“孤儿任务”的后台扫描会跟着这个值走——只要还在等回复,它就不会把任务判死;就算回复姗姗来迟,也会被存下来而不是丢掉。当然,也可以让调用方注册一个 webhook 推送通知,然后轮询 GetTask 拿结果。


一句话总结:A2A 让 AI 之间互相打电话成了标配,Hermes 这边电话线已经拉好,就等你拨号了。

📖 官方文档

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