Hermes Agent 三模型自动路由的本地实践

我给 Hermes 装了一个三模型路由:Claude 写代码,GPT 做方案,DeepSeek 跑快活
我平时用 AI 做的事情差别很大:有时要改一整个代码模块,有时只是讨论一个业务方案,还有不少任务只是整理文件、转换格式或执行明确的命令。如果所有请求都交给最强、最贵的模型,质量未必提高多少,等待时间和成本却会明显增加。
我的做法是在 Hermes Agent 里增加一个本地 model-router Skill。它先判断任务的最终交付物,再把工作交给合适的模型:
- Claude 负责写代码、调试、重构、测试和代码审查。
- GPT 负责头脑风暴、业务分析、需求拆解和技术方案。
- DeepSeek 负责快速问答、整理、格式转换和重复操作。
这套分工已经在我的 macOS + Hermes Desktop 环境中实际运行,不是只写在文档里的模型选择建议。
我本地使用的三个模型
| 分工 | 默认模型 | 本地接入方式 | 适用任务 |
|---|---|---|---|
| 编码 | Claude Sonnet 5 | Claude Code CLI + Claude Pro OAuth | 写代码、修 Bug、重构、测试、Code Review |
| 分析与方案 | GPT-5.6 Terra | Hermes openai-codex Provider | 业务分析、技术方案、架构权衡、头脑风暴 |
| 快速任务 | DeepSeek V4 Flash | Hermes deepseek Provider | 简单问答、整理、批处理、格式转换、明确的小任务 |
我还保留了按需升级规则:
- Sonnet 两次处理仍失败,或涉及资金安全、核心权限等高风险代码时,再考虑 Claude Opus。
- Terra 无法覆盖复杂推理或高风险架构决策时,升级到 GPT-5.6 Sol。
- DeepSeek V4 Flash 无法严格满足输出格式,或任务需要更深推理时,升级到 DeepSeek V4 Pro。
默认模型追求性价比,升级模型处理少数真正困难的任务。这样比所有请求都固定使用旗舰模型更实用。
为什么选择这三个默认模型
Claude Sonnet 5:把编码交给真正能操作项目的模型
Claude 通过 Claude Code CLI 接入,而不是把 Claude Pro 会员当作 Anthropic API Key 使用。我的实际链路是:
Hermes → model-router → claude -p → Claude Pro OAuth → Claude Sonnet 5 |
本地测试结果:
subscriptionType: pro |
Claude Code 能读取项目文件、修改代码并运行测试。对于编码任务,这比让普通对话模型只返回一段代码更有价值,因为最终交付物应该是经过真实验证的项目改动。
GPT-5.6 Terra:方案质量与响应速度更平衡
我用同一道支付幂等架构题测试了 GPT-5.6 系列,要求模型同时考虑 PostgreSQL、Redis、每秒 10,000 请求、外部 IO 超时、上下文传播和无数据库外键等约束。
| 模型 | 实测耗时 | 观察 |
|---|---|---|
| GPT-5.6 Sol | 66.86 秒 | 内容最完整,但输出更长、等待更久 |
| GPT-5.6 Terra | 42.14 秒 | 关键约束覆盖完整,结构和速度更均衡 |
| GPT-5.6 Luna | 26.26 秒 | 最快,但风险分析和细节有所压缩 |
Terra 比 Sol 快约 37%,同时保留了架构建议、风险、灰度步骤和监控指标。因此我把 Terra 设为技术方案与业务分析的默认模型,把 Sol 留给少量高难度任务。
DeepSeek V4 Flash:低成本处理高频小任务
快速任务不需要动用 Claude 或 GPT 的深度推理。我测试了数据筛选、排序和统计任务:
| 模型 | 实测耗时 | 结果 |
|---|---|---|
| DeepSeek V4 Flash | 6.01 秒 | 正确 |
| DeepSeek V4 Pro | 5.74 秒 | 正确,格式遵循更严格 |
| DeepSeek Chat | 3.20 秒 | 正确,但额外包了一层 Markdown 代码块 |
DeepSeek 官方价格中,V4 Flash 的非缓存输入价格是每百万 Token 0.14 美元,输出是 0.28 美元;V4 Pro 分别是 0.435 和 0.87 美元。Pro 约为 Flash 的 3.11 倍。对整理、转换和机械操作来说,Flash 更划算。
自动路由是怎么工作的
Skill 不会在同一轮对话中偷偷替换当前模型。Hermes 重视会话级 Prompt Cache,运行中热切换会破坏缓存,也容易让上下文变得不可控。
我的路由采用下面的方式:
- Hermes 收到请求后加载
model-router。 - Skill 根据最终交付物选择 Claude、GPT 或 DeepSeek。
- 如果当前模型正好匹配,就直接执行。
- 如果不匹配,Hermes 启动一个带明确模型参数的独立子任务。
- 主 Agent 检查子任务结果。代码必须运行测试或构建,方案必须覆盖用户约束。
- 用户只看到整合后的最终结果。
核心调用方式如下:
|
子任务 Prompt 必须自包含,写清用户目标、项目路径、必要上下文、约束和输出格式,但不能传递 API Key、Token、生产连接串或真实个人信息。
路由规则不是关键词匹配
只看关键词很容易选错模型。例如:
“帮我讨论一下这段代码应该怎么重构,先不要修改文件。”
虽然出现了“代码”和“重构”,最终交付物仍然是分析方案,所以应该交给 GPT。
另一个例子:
“根据这份技术方案完成代码,并运行测试。”
这里最终要修改项目,应该交给 Claude。Skill 的优先级是:
|
三模型如何协作
复杂需求不必强迫一个模型包办所有工作。我通常按下面的顺序拆分:
GPT-5.6 Terra |
如果几个子任务互不依赖,可以并行执行;存在依赖时则保持顺序。三模型协作只用于确实横跨多个领域的任务,简单请求仍然只调用一个模型,避免增加延迟和消耗。
这套方案带来的好处
1. 钱花在真正困难的地方
机械任务交给 DeepSeek V4 Flash,普通方案交给 GPT-5.6 Terra。Claude Opus、GPT-5.6 Sol 和 DeepSeek V4 Pro 只在默认模型失败或任务风险较高时启用。
模型能力不再是越强越好,而是够用就好,必要时再升级。
2. 编码任务从“生成代码”变成“交付改动”
Claude Code 可以直接进入项目工作目录,读取上下文、修改文件并运行测试。Hermes 仍负责最终核验,不会因为 Claude 说“已经完成”就直接相信。
3. 技术方案不会被编码偏好带跑
GPT 先从业务目标、约束、风险和上线策略出发,再把确定后的任务交给 Claude。这样能减少“模型急着写代码,却没有先把问题想清楚”的情况。
4. 高频小任务响应更轻
文件整理、格式转换、清单生成等请求交给 DeepSeek,减少等待时间,也避免消耗 Claude Pro 和 Codex 的高价值额度。
5. 路由策略可以持续调整
模型更新后,只需修改 Skill 中的模型名称和升级规则,不需要改业务项目。路由逻辑集中在一个文件里,也更容易审查和导出。
本地文件位置
我的 Skill 位于:
|
为了让每个新会话都强制加载该 Skill,我还在 ~/.hermes/SOUL.md 中增加了加载要求。修改 Skill 后,可以执行:
/reload-skills |
Gateway 环境需要重启:
hermes gateway restart |
使用前需要准备什么
Claude
安装并登录 Claude Code:
claude auth login |
Claude Pro/Max 会员要走 claude.ai OAuth。不要设置 ANTHROPIC_API_KEY,否则 Claude Code 会优先使用按量付费 API,而不是会员额度。
OpenAI Codex
通过 Hermes 添加 OpenAI Codex OAuth:
hermes auth add openai-codex |
DeepSeek
在 Hermes 的凭证配置中添加 DEEPSEEK_API_KEY,不要把 Key 写进 Skill、项目文件或代码仓库。
最后检查:
hermes auth list |
必须接受的边界
这套路由不是免费的魔法。它有几个明确限制:
- Skill 本身不能热切换当前会话模型,只能直接执行或创建指定模型的子任务。
- 子任务需要足够的上下文,但上下文越多,调用成本越高。
- Claude Pro、Codex 和 DeepSeek 各自有独立的额度、认证和故障模式。
- 模型返回“成功”不代表工作真的完成。代码仍需测试,方案仍需人工或主 Agent 审查。
- 三模型协作会增加调用次数,只应该用于值得拆分的复杂任务。
我更看重这套方案的可控性。每个模型做什么、什么时候升级、结果如何验证,都写在同一个 Skill 里。模型可以更新,Provider 可以替换,但分工和验收规则不会随着某个聊天窗口消失。



