字节笔记本
2026年6月21日
hermes教程-程序化集成
协议概览
Hermes 提供了三种协议,用于从外部程序驱动智能体——IDE 插件、自定义 UI、CI 流水线、嵌入式子智能体。请根据你的传输层和消费者选择最合适的协议。
| 协议 | 传输层 | 最佳适用场景 | 定义位置 |
|---|---|---|---|
| ACP | 基于 stdio 的 JSON-RPC | 已支持 Agent Client Protocol 的 IDE 客户端(VS Code、Zed、JetBrains) | acp_adapter/ |
| TUI 网关 | 基于 stdio(或 WebSocket)的 JSON-RPC | 需要精细控制会话、斜杠命令、审批和流式事件的自定义宿主 | tui_gateway/server.py |
| API 服务器 | HTTP + Server-Sent Events | 兼容 OpenAI 的前端(Open WebUI、LobeChat、LibreChat…)以及语言无关的 Web 客户端 | gateway/platforms/api_server.py |
三种协议都驱动同一个 AIAgent 核心。它们仅在传输格式和暴露的功能集上有所不同。
ACP (Agent Client Protocol)
hermes acp 启动一个基于 stdio 的 JSON-RPC 服务器,使用 ACP 协议。已在 VS Code(Zed Industries 的 ACP 扩展)、Zed 以及任何安装了 ACP 插件的 JetBrains IDE 中投入生产使用。
暴露的能力:会话创建、提示提交、流式智能体消息块、工具调用事件、权限请求、会话分支、取消和认证。工具输出被渲染为 IDE 能理解的 ACP Diff/ToolCall 内容块。
完整的生命周期、事件桥接和审批流程:ACP 内部机制。
hermes acp # 在 stdio 上提供 ACP 服务
hermes acp --bootstrap # 打印适用于支持 ACP 的 IDE 的安装片段TUI 网关 JSON-RPC
tui_gateway/server.py 是 Ink TUI(hermes --tui)和嵌入式仪表板 PTY 桥接所通信的协议。任何外部宿主都可以通过 stdio(或通过 tui_gateway/ws.py 的 WebSocket)使用相同的协议。
方法目录(部分)
prompt.submit prompt.background session.steer
session.create session.list session.active_list
session.activate session.close session.interrupt
session.history session.compress session.branch
session.title session.usage session.status
clarify.respond sudo.respond secret.respond
approval.respond config.set / config.get commands.catalog
command.resolve command.dispatch cli.exec
reload.mcp reload.env process.stop
delegation.status subagent.interrupt spawn_tree.save / list / load
terminal.resize clipboard.paste image.attachsession.active_list、session.activate 和 session.close 是 TUI 会话切换器使用的进程内实时会话控制方法。使用 session.list / /resume 来发现已保存的对话记录;仅对 TUI 网关进程中当前打开的会话使用实时会话方法。
流式返回的事件
message.delta、message.complete、tool.start、tool.progress、tool.complete、approval.request、clarify.request、sudo.request、secret.request、gateway.ready,以及会话生命周期和错误事件。
Pi 风格的 RPC 映射
Pi-mono RPC 规范(issue #360)中的每个命令都有对应的 TUI 网关方法:
| Pi 命令 | Hermes 对应方法 |
|---|---|
prompt | prompt.submit(或 ACP 的 session/prompt) |
steer | session.steer |
follow_up | 在当前轮次之后排队的 prompt.submit |
abort | session.interrupt |
set_model | 用于 /model <provider:model> 的 command.dispatch(会话中持久化) |
compact | session.compress |
get_state | session.status |
get_messages | session.history |
switch_session | session.resume |
fork | session.branch |
ui_request / ui_response | clarify.respond / sudo.respond / secret.respond / approval.respond |
兼容 OpenAI 的 API 服务器
gateway/platforms/api_server.py 通过 HTTP 暴露 Hermes,适用于任何已支持 OpenAI 格式的客户端。当你需要 Web 前端、基于 curl 的 CI 运行器或非 Python 消费者时非常有用。
端点:
POST /v1/chat/completions OpenAI 聊天补全(通过 SSE 流式传输)
POST /v1/responses OpenAI 响应 API(有状态)
POST /v1/runs 启动一个运行,返回 run_id(202)
GET /v1/runs/{id} 运行状态
GET /v1/runs/{id}/events SSE 流式生命周期事件
POST /v1/runs/{id}/approval 解决待处理的审批
POST /v1/runs/{id}/stop 中断运行
GET /v1/capabilities 机器可读的功能标志
GET /v1/models 列出 hermes-agent
GET /health, /health/detailed设置、头部(X-Hermes-Session-Id、X-Hermes-Session-Key)和前端连接:API 服务器。
我应该使用哪个?
- 你在编写 IDE 插件,且 IDE 已支持 ACP → 使用 ACP。IDE 端无需任何协议工作。
- 你在编写自定义桌面/Web/TUI 宿主,并希望使用所有 Hermes 功能(斜杠命令、审批、澄清、多智能体、会话分支)→ 使用 TUI 网关 JSON-RPC。
- 你想要任何兼容 OpenAI 的前端、语言无关的 HTTP 客户端或基于 curl 的自动化 → 使用 API 服务器。
- 你想要在 Python 进程中嵌入,无需子进程 → 直接导入
run_agent.AIAgent。参见 智能体循环。
模型热切换
会话中的模型切换在所有界面上都可用——底层是 /model 斜杠命令。
- CLI / TUI:
/model claude-sonnet-4或/model openrouter:anthropic/claude-sonnet-4.6 - TUI 网关 RPC:
command.dispatch,参数为{"command": "/model claude-sonnet-4"} - ACP: IDE 将斜杠命令作为提示发送;智能体进行分发
- API 服务器: 在请求体中包含
model字段,或设置X-Hermes-Model
内置了提供商感知的解析(相同的模型名称会根据你使用的提供商自动选择正确的格式)。参见 hermes_cli/model_switch.py。
关于 --mode rpc 的说明
Hermes 没有 --mode rpc 标志。上述三种协议已经覆盖了所有用例——ACP 用于 IDE 协议客户端,TUI 网关用于 stdio JSON-RPC 宿主,API 服务器用于 HTTP。如果你发现它们都无法满足的实际缺口,请提交一个 issue,说明你正在构建的具体消费者。