Hermes爆改实战:打造多模型调度主Agent系统

为什么要改造Hermes?
Hermes作为一款AI Agent框架,在日常使用中确实能显著提升工作效率。AI Agent框架是一类允许大语言模型(LLM)自主执行多步骤任务的软件架构——与传统的单轮问答不同,Agent能够感知环境、制定计划、调用工具并根据反馈迭代行动。Hermes提供了TUI(终端用户界面)交互方式,让开发者在命令行环境中即可驱动AI完成代码生成、文件操作、信息检索等复杂工作流。但在深度使用和复杂场景下,仍存在一些体验痛点:频繁切换窗口、多模型调用不便、任务状态难以追踪等。
本文将分享一位开发者如何将Hermes的默认Agent改造成一个"主入口",实现无缝调度Sub-Agent、Claude、Gemini与Codex,打造真正的多Agent协同工作流。
核心改造:主Agent统一调度架构
设计思路
改造的核心理念是减少上下文切换,提高专注度。将Hermes的默认Agent定位为主入口,在这个Agent内可以直接与其他所有Agent对话——包括Hermes自身的Sub-Agent,也包括Claude、Codex和Gemini三大外部模型。
这里的Sub-Agent是主Agent派生出的子任务执行单元,每个Sub-Agent通常专注于特定领域(如代码审查、文档生成、数据分析等)。多Agent协同(Multi-Agent Orchestration)是当前AI工程领域的热门范式,其核心思想是将复杂任务分解后分派给最擅长的Agent处理,再由主Agent汇总结果。这种架构类似于微服务中的编排模式(Orchestration Pattern),主Agent扮演指挥者角色,而非让单一模型承担所有工作。
主Agent具备以下能力:
- 识别所有子Agent,了解它们各自的专长
- 面对复杂任务时,自动将相关子任务分派给最合适的Sub-Agent
- 了解Claude、Codex、Gemini各自的优势领域,通过Delegate Task精准路由
不同Agent的回复都加了名称标识,交互逻辑接近常规聊天软件,使用体验非常直观。
多模型接入的技术实现
很多人使用Claude、ChatGPT和Gemini是通过订阅套餐,但订阅套餐通常没有API Key,无法直接接入Hermes。

虽然Hermes支持通过Google AI Studio登录使用Gemini,也可以通过Codex App Server使用Codex,但高强度使用时额度很快耗尽。因此,开发者选择了通过CLI整合各模型的方案。
具体实现采用了类似IDE插件的形式:
- Claude:通过Stream JSON实现ACP模式通信。ACP(Agent Communication Protocol)是一种为AI Agent间通信设计的协议规范,旨在标准化Agent之间的消息传递、任务委派和结果回传。Stream JSON则是一种流式JSON传输方式,允许数据以增量方式逐块发送,而非等待完整响应后一次性返回——这对于大模型推理场景尤为重要,模型生成token的速度远慢于网络传输速度,流式传输能让用户实时看到生成过程,大幅改善交互体验。
- Codex:复用官方Codex App Server
- Gemini:由于CLI暂不支持ACP模式,仍采用零启动方式,但通过传递Conversation ID保持对话连续。Conversation ID是维持多轮对话上下文的关键标识符——大语言模型本身是无状态的,每次调用都是独立的推理过程,对话连续性依赖于将历史消息作为上下文一并传入。Conversation ID的作用是在客户端或服务端关联同一对话的所有消息记录,确保后续请求能携带完整的对话历史。
通信协议统一使用TCP + JSON RPC。JSON-RPC是一种轻量级的远程过程调用协议,使用JSON作为数据编码格式,定义了请求(包含方法名和参数)和响应(包含结果或错误)的标准结构,非常适合Agent间的工具调用场景。将其运行在TCP传输层之上,相比HTTP有更低的开销和更持久的连接特性。Hermes运行期间尽量只维护一个CLI实例,既保证会话连续性,又避免每次对话都冷启动。
Agent间通信机制详解
Gateway API方案
Hermes的Agent之间默认是相互隔离的,不能直接对话。但每个Agent都有自己的Gateway,内部包含API Server。Gateway在微服务架构中是一个常见的设计模式,充当所有外部请求的统一入口点,负责路由、认证和负载均衡。Hermes中每个Agent内置的Gateway API Server遵循类似理念——它为每个Agent提供了一个HTTP接口层,使得外部(包括其他Agent)可以通过标准HTTP请求与之交互。Agent间默认隔离是一种安全设计,防止Agent之间的状态污染和权限越界。主Agent通过发送HTTP请求,将Prompt传给其他Agent,既保持了隔离性带来的安全优势,又实现了受控的跨Agent协作。
插件注册机制
为了让主Agent知道有哪些可通信的Agent以及通信方式,开发者编写了一个Hermes Plugin:

插件初始化时会检索本地配置,注册Sub-Agent和CLI的信息及使用方法。调用层通过工具类读取配置、封装信息,然后调用Gateway接口或对应的Scale完成通信。
经过一段时间的对话积累,主Agent会逐渐"记住"各Agent的专长,面对复杂多模态任务时能自主判断最优路由。这种能力的形成依赖于大模型的上下文学习(In-Context Learning)特性——随着交互历史的积累,模型能够从过往的任务分派结果中总结出哪个Agent在哪类任务上表现更优,从而在后续决策中做出更精准的路由选择。
任务监控与状态追踪
Status Line任务计数器
在TUI的Status Line上添加了看板任务计数器,统计当前所有正在看板中运行的任务数量。任务全部完成后计数器归零,一目了然。
Events面板
计数器无法识别任务进入Block状态的情况,因此额外添加了Events面板。输入Events命令即可查看:
- 看板任务的最终状态
- Cron Job的执行结果
Cron Job源自Unix系统的定时任务调度器(cron daemon),用于按预设时间表自动执行脚本或命令。在AI Agent场景中,Cron Job被赋予了新的含义——它可以定期触发Agent执行特定任务,如每日新闻摘要生成、定时代码仓库检查、周期性数据报告等。这种机制将AI Agent从被动响应转变为主动执行,是构建自动化工作流的基础设施。
Cron Job的监控实现也很简单:周期性读取.hermes/jobs.json配置文件中记录的最后一次运行状态,将失败记录写入本地数据库。
Job结果展示:搭建轻量级Web站点
Hermes中通过终端CLI或TUI执行的Job,由于没有服务端,结果无法直接投递出来。虽然可以投递到聊天渠道,但在手机端渲染效果很差。

解决方案是搭建一个轻量级Web站点:
- 服务端自动定期扫描Job的持久化输出并序列化
- 前端根据数据类型选择合适的渲染组件(Markdown、Chart图表等)
- 配合内网穿透或云端部署,随时随地查看结果
内网穿透(如frp、ngrok、Cloudflare Tunnel等工具)是将本地服务暴露到公网的技术方案。由于Hermes运行在本地终端,其产生的Job结果默认只能在本机访问。通过内网穿透建立一条从公网到本地服务的安全隧道,用户即可在手机或其他设备上通过浏览器访问Job结果页面,实现真正的跨终端可达。
搜索抓取:三档降级策略
在生产力场景中,大模型的联网搜索和抓取能力直接影响AI工作结果的质量。开发者为Hermes配置了一个搜索抓取专用Agent,采用三档优先级策略:
- 第一档:云端API或大模型自带的Web Search(效率最高)
- 第二档:动态无头浏览器(使用Camoufox,内置反检测)
- 第三档:CDP托管日常浏览器(成功率最高)

关于第二档方案,无头浏览器(Headless Browser)是没有图形界面的浏览器实例,常用于自动化测试和网页抓取。然而,许多网站部署了反自动化检测机制(如检测WebDriver属性、Canvas指纹异常、缺失的浏览器插件特征等),能够识别并拦截无头浏览器的访问。Camoufox是基于Firefox的反检测无头浏览器,它通过修改浏览器底层指纹特征(包括User-Agent、屏幕分辨率、WebGL渲染器、时区等数十个维度)来模拟真实用户环境,使自动化访问难以被网站区分。
关于第三档方案,CDP(Chrome DevTools Protocol)是Chrome浏览器暴露的调试协议,允许外部程序通过WebSocket连接控制浏览器的几乎所有行为——包括页面导航、DOM操作、网络拦截、JavaScript执行等。与Selenium等传统自动化工具不同,CDP直接与浏览器引擎通信,不需要注入额外的WebDriver,因此更难被检测。使用CDP控制日常浏览器可以复用现有的Session、Cookie和指纹特征,基本能绕开大多数检测。开发者推荐了开源工具Web Access,它能根据场景动态选择抓取策略,按域名固化操作经验,跨Session复用,且通过后台Tab抓取不影响当前使用。
这种三档降级策略的设计遵循了"优雅降级"(Graceful Degradation)的工程原则:优先使用成本最低、速度最快的方案,当高优先级方案失败时自动切换到下一档,确保任务最终能够完成。
总结与展望
这套改造方案的核心价值在于:
- 统一入口:减少窗口切换,提升专注度
- 智能路由:主Agent自主判断任务分派
- 状态可观测:计数器+Events面板实时掌控
- 结果可达:Web站点跨终端查看
受限于TUI和终端本身,能修改的地方有限。如果追求更极致的多Agent协同体验,下一步可能需要脱离CLI,单独开发本地GUI客户端。由于部分改动涉及Hermes源码,且官方后续也会逐步优化这些体验,本文主要分享思路和实现方式供参考。
相关推荐

AI产品发布新范式:团队心血与用户社区的双向奔赴
探析AI产品发布中情感叙事与社区驱动增长的新趋势。从一条引发行业关注的推文出发,解读AI团队如何通过真诚投入、开放试用和社区建设,实现产品与用户的双向奔赴,构筑长期竞争壁垒。

Muse使用量超预期10倍:AI产品爆发式增长意味着什么
AI产品Muse上线后实际使用量达到测试组的10倍,远超团队预期。本文深入分析超预期增长背后的产品逻辑、AI行业需求信号,以及这一现象对AI创业者的启示。

Muse:专为说服身边人相信AI有用而生的工具
Muse是一款以「说服家人朋友相信AI真的有用」为定位的AI工具,主打易用性与即时价值。本文深入分析Muse的产品哲学、面向非技术用户的设计思路,以及它对AI应用日常化趋势的行业启示。