45-ACP协议-编辑器集成与远程控制
45 · ACP协议——编辑器集成与远程控制
“我能在VS Code里直接调用Hermes吗?”
“我想让Claude Code调用Hermes的工具能力,反过来Hermes也能调用Claude Code的代码能力,能不能做到?”
这些问题的答案都指向同一个协议:ACP(Agent Communication Protocol)。它是Hermes从v0.17开始引入的一个关键能力,让不同的Agent和工具之间能够"说同一种语言"。
这篇文章带你全面了解ACP协议,以及如何用它在编辑器、命令行、各种工具之间搭建自动化协作网络。
一、ACP协议概念
什么是ACP?
ACP(Agent Communication Protocol)是Hermes Agent定义的一种标准化通信协议,专为Agent之间的互操作而设计。简单来说,它定义了:
- 如何发现:一个Agent如何发现网络中其他Agent的存在
- 如何请求:如何向另一个Agent发出任务请求
- 如何响应:如何接收和解析其他Agent的响应结果
- 如何协商:Agent之间如何协商能力和权限
类比一下:如果说HTTP是"浏览器和服务器之间的语言",那么ACP就是"Agent和Agent之间的语言"。
ACP的核心设计理念
ACP的设计遵循三个原则:
- 语言无关:不管Agent是用Python、JavaScript还是Rust写的,都能通过ACP沟通
- 传输无关:ACP不绑定特定传输层协议——可以通过HTTP、WebSocket、Unix Socket甚至stdin/stdout通信
- 能力自描述:每个Agent通过ACP发布自己的"能力清单",其他Agent自动知道它能做什么
ACP与MCP的关系
你之前可能听过MCP(Model Context Protocol),它用于模型和工具之间的通信。而ACP是Agent和Agent之间的通信协议。
- MCP:Model ↔ Tool(模型调用工具)
- ACP:Agent ↔ Agent(Agent之间协作)
两者互补而非冲突。一个典型的场景是:Agent A通过ACP调用Agent B,而Agent B内部通过MCP调用各种工具完成子任务。
二、配置ACP
启动ACP服务
从v0.17开始,Hermes内置了ACP服务端。启动方式很简单:
hermes acp start默认会在localhost:8321上监听ACP连接。如果你需要自定义端口或绑定到非本地地址:
hermes acp start--port8321--host0.0.0.0在配置文件中也可以预设: