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

A2A 双机实战:让两台电脑上的 Hermes 互相派活

Hermes 消息平台接入第40篇:A2A 跨机器部署步骤与真实踩坑教训。

A2A 双机实战:跨机器协作图 好嘞,今天咱们来点硬核又好玩的东西——让两台电脑上的 Hermes 互相派活

想象一下:你手头的台式机忙着跑本地任务,服务器上还蹲着一个 Hermes 待命。以前你得手动两头跑,现在有了 A2A(Agent-to-Agent)协议,两台机器上的智能体可以直接对话、互相甩任务,就像给它们装了对讲机。

A2A 是啥?一句话版

A2A 是 Linux 基金会维护的开放协议(v1.0),专门让不同 AI 智能体之间互相通信。Hermes 的 A2A 插件是双向的:

  • 出站:你的 Hermes 可以把别的 A2A 智能体当工具来调用
  • 入站:别的智能体也能通过 HTTP 给你的 Hermes 派活

而且它不挑食——对方可以是另一个 Hermes、LangChain、CrewAI、Google ADK,只要是遵守 A2A 协议的都行。

什么时候用 A2A?

  • 跨机器协作:台式机 ↔ 服务器,各自有独立的记忆、工具和凭证
  • 找专家帮忙:对方在 Agent Card 上声明了 web_searchresearch 之类的技能,你的 Hermes 能发现并现场调用
  • 当个可调用的服务:让其他框架的智能体也能给你派任务

注意:如果多个智能体在同一台机器上,优先用 delegation(进程内子代理)或 kanban board(持久化多配置队列)。A2A 是给跨进程、跨机器、跨框架用的。

第一步:开启 A2A

hermes gateway setup      # 选 A2A

或者在 ~/.hermes/config.yaml 里手动配置:

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

出站工具默认关闭,得手动开启:

hermes tools enable a2a --platform cli        # CLI/TUI 会话
hermes tools enable a2a --platform telegram   # 或任意消息平台
hermes tools enable a2a --platform a2a        # 让入站任务也能调用其他智能体(链式调用)

出站:呼叫其他智能体

开启后,你的 Hermes 就多了几个新工具:

工具 干啥的
a2a_discover(url) 查看对方的 Agent Card(技能、认证要求)
a2a_call(agent, message, 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 CardGET /.well-known/agent-card.json,展示你的名字、技能(从已启用的工具集自动生成)和认证要求
  • JSON-RPC 2.0POST /,支持标准方法(SendMessageGetTaskCancelTask 等)
  • SSE 流式响应:支持 SendStreamingMessage
  • 推送通知:长任务完成时通过 webhook 通知,HMAC-SHA256 签名

入站任务会注入到实时网关会话里——和你的其他渠道共用同一个智能体、记忆和工具。对话按 contextId 区分,对方可以跟你多轮聊天。

安全模型:默认安全,逐步放开

  • 没 token 就只能本机访问(绑定 127.0.0.1)。远程访问需要 bearer token 显式设置 A2A_HOST
  • 每个智能体独立 tokenA2A_PEER_TOKENS="alice:tok1,bob:tok2",认证身份决定限流和审计
  • 防提示注入:入站文本被过滤并标记为“不可信输入”,远程智能体不能调用你的斜杠命令
  • 出站脱敏:API 密钥、JWT 等凭证形状的字符串会被自动打码
  • 审计日志:所有交互追加到 ~/.hermes/a2a_audit.jsonl
  • 防死循环:每个上下文有轮次上限,防止两个智能体无限互 ping

快速测试

# 从另一台机器测试:
curl http://your-host/.well-known/agent-card.json

看到 JSON 返回就说明 A2A 跑起来了!现在你可以让两台电脑上的 Hermes 互相派活了——试试让服务器上的 Hermes 帮你查资料,或者让台式机的 Hermes 把任务甩给服务器处理,爽不爽?

小提示:如果对方任务跑得久、回复超时了,把 A2A_REPLY_TIMEOUT 调大就行。孤儿任务清理会跟着这个超时走——晚到的回复会被存下来,不会直接丢掉。

📖 官方文档

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