
我给 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
result: CLAUDE_PRO_OK
model: claude-sonnet-5
status: success
响应时间: 约 2.8 秒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 检查子任务结果。代码必须运行测试或构建,方案必须覆盖用户约束。
- 用户只看到整合后的最终结果。
核心调用方式如下:
# Claude:编码
claude -p "<自包含编码任务>" \
--model sonnet \
--max-turns 20 \
--no-session-persistence
# GPT:业务分析和技术方案
hermes -z "<自包含分析任务>" \
--provider openai-codex \
-m gpt-5.6-terra
# DeepSeek:快速任务
hermes -z "<自包含快速任务>" \
--provider deepseek \
-m deepseek-v4-flash子任务 Prompt 必须自包含,写清用户目标、项目路径、必要上下文、约束和输出格式,但不能传递 API Key、Token、生产连接串或真实个人信息。
路由规则不是关键词匹配
只看关键词很容易选错模型。例如:
“帮我讨论一下这段代码应该怎么重构,先不要修改文件。”
虽然出现了“代码”和“重构”,最终交付物仍然是分析方案,所以应该交给 GPT。
另一个例子:
“根据这份技术方案完成代码,并运行测试。”
这里最终要修改项目,应该交给 Claude。Skill 的优先级是:
最终产出包含代码或文件修改 → Claude
最终产出是分析、方案或设计文档 → GPT
任务简单、明确且能快速完成 → DeepSeek
任务横跨多个阶段 → 拆分后分别路由
三模型如何协作
复杂需求不必强迫一个模型包办所有工作。我通常按下面的顺序拆分:
GPT-5.6 Terra
└─ 分析业务、拆解需求、确定方案和验收标准
↓
Claude Sonnet 5
└─ 按方案修改代码、补测试、执行构建
↓
DeepSeek V4 Flash
└─ 整理变更清单、转换格式、处理机械复核
↓
Hermes 主 Agent
└─ 检查冲突、验证真实结果、统一交付如果几个子任务互不依赖,可以并行执行;存在依赖时则保持顺序。三模型协作只用于确实横跨多个领域的任务,简单请求仍然只调用一个模型,避免增加延迟和消耗。
这套方案带来的好处
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 位于:
~/.hermes/skills/hermes/model-router/SKILL.md
---
name: model-router
description: "每个任务开始时自动路由模型并协调三模型:代码、调试、代码审查交给 Claude;头脑风暴、业务分析和技术方案交给 GPT;快速、简单、重复性任务与方法查询交给 DeepSeek。"
version: 2.1.0
author: Hermes Agent
license: MIT
metadata:
hermes:
tags: [model-routing, claude, gpt, deepseek, multi-agent]
related_skills: [hermes-agent]
---
# 三模型自动路由与协作
## 目标
每次收到用户任务后,先判断主任务类型,再选择最合适的模型。不要让用户手动指定模型。Hermes 不支持由 Skill 在同一轮中热切换当前会话模型,因此当当前模型不符合路由结果时,通过独立 `hermes -z` 子任务调用目标模型;当前 Agent 负责传递必要上下文、检查结果并向用户交付。
## 路由表
| 主任务 | 模型与 Provider | 典型任务 |
|---|---|---|
| 编码 | Claude Code CLI(`sonnet`,当前解析到最新 Sonnet) | 写代码、修改文件、重构、调试、测试、SQL、API 实现、PR/代码审查 |
| 思考与方案 | `gpt-5.6-terra` + `openai-codex` | 头脑风暴、业务分析、需求拆解、技术方案、架构权衡 |
| 快速任务 | `deepseek-v4-flash` + `deepseek` | 简单问答、方法查询、整理、格式转换、重复操作、明确且快速的执行 |
## 优先级
1. 最终交付物包含代码或需要修改代码:Claude。
2. 最终交付物是业务分析、技术方案、设计文档或开放式讨论:GPT。
3. 能快速完成且无需复杂推理:DeepSeek。
4. 混合任务先拆分;各子任务分别路由,不用单一模型包办。
## 执行流程
1. **分类**:在调用工具前确定主路由;完成标准是明确选出 Claude、GPT 或 DeepSeek。
2. **直接执行或委派**:
- 当前会话模型已经是目标模型:直接完成任务。
- 当前模型不是目标模型:使用下面的命令启动目标模型。Prompt 必须自包含,包含用户目标、必要上下文、路径、约束和输出格式;禁止包含密钥或敏感数据。
3. **验证**:代码结果必须由当前 Agent 在真实工作目录运行测试、构建或静态检查;分析结果必须检查是否回答全部需求。
4. **交付**:只向用户交付整合后的结果,不暴露无意义的模型间中间对话。
## 精确调用命令
``bash
# Claude:编码、调试、代码审查(使用 Claude Code 已登录账号)
claude -p "<自包含任务>" --model sonnet --max-turns 20 --no-session-persistence
# GPT:头脑风暴、业务分析、技术方案(默认性价比档)
hermes -z "<自包含任务>" --provider openai-codex -m gpt-5.6-terra
# DeepSeek:快速、简单、重复性任务(低成本档)
hermes -z "<自包含任务>" --provider deepseek -m deepseek-v4-flash
``
Claude 编码任务必须设置正确的项目工作目录。Claude Pro/Max 订阅只能通过 Claude Code 的 `claude -p` OAuth 登录通道使用,不能作为 Hermes `anthropic` Provider 的 API 额度。若 `claude auth status` 中 `subscriptionType` 为空,或返回余额不足,执行 `claude auth logout` 后重新运行 `claude auth login`,并在浏览器中登录拥有 Pro/Max 订阅的同一账号。确认环境中没有 `ANTHROPIC_API_KEY`,否则 Claude Code 会优先走按量 API 计费而非订阅额度。
只有 `claude -p` 命令真实成功才可把结果视为 Claude 输出。子任务需要操作项目文件时,在项目工作目录执行命令,并明确要求其完成后运行验证。禁止子 Agent 再次委派模型,避免递归路由。
## 质量升级条件
- GPT Terra 无法解决、涉及高风险架构决策或需要最深推理时,升级到 `gpt-5.6-sol`;不要默认使用 Sol。
- Claude Sonnet 在核心资金逻辑、安全关键变更或两次修复仍失败时,升级到 `opus`,并设置预算上限;普通编码不要使用 Opus。
- DeepSeek V4 Flash 输出不满足格式或任务明显需要深度推理时,升级到 `deepseek-v4-pro`;不要为机械任务使用 Pro。
## 三模型协作
仅当任务确实横跨多个领域时启用,避免为简单任务增加延迟和费用:
1. GPT:拆解需求、分析业务、给出方案与验收标准。
2. Claude:根据已确认方案实现或审查代码,并运行相关测试。
3. DeepSeek:处理机械整理、清单、格式转换或快速复核。
4. 当前 Agent:汇总三方结果、解决冲突,并对最终产物做真实验证。
相互独立的子任务可并行执行;存在依赖时必须按 GPT → Claude → DeepSeek/当前 Agent 验证的顺序执行。
## 边界与降级
- Skill 不能直接改变正在运行的当前模型;不要声称已经热切换。
- 目标 Provider 未配置、模型不可用或调用失败时,先报告真实错误,再由当前模型继续完成;禁止伪造目标模型输出。
- 不要只因出现“代码”一词就路由 Claude;如果用户只是讨论代码策略且交付物是方案,路由 GPT。
- 不要把复杂技术方案误判为“快速任务”。
- 不要在子任务 Prompt 中传递 API Key、Token、生产连接串或真实 PII。
## 验证清单
- [ ] 每个请求开始时已选择一个主路由
- [ ] 混合任务已按产出物拆分
- [ ] 非当前模型任务通过对应 Provider 和模型真实执行
- [ ] 没有递归委派或泄露敏感信息
- [ ] 代码已测试,方案已覆盖约束,最终结果已由当前 Agent核验
为了让每个新会话都强制加载该 Skill,我还在 ~/.hermes/SOUL.md 中增加了加载要求。修改 Skill 后,可以执行:
/reload-skills
/resetGateway 环境需要重启:
hermes gateway restart使用前需要准备什么
Claude
安装并登录 Claude Code:
claude auth login
claude auth statusClaude Pro/Max 会员要走 claude.ai OAuth。不要设置 ANTHROPIC_API_KEY,否则 Claude Code 会优先使用按量付费 API,而不是会员额度。
OpenAI Codex
通过 Hermes 添加 OpenAI Codex OAuth:
hermes auth add openai-codexDeepSeek
在 Hermes 的凭证配置中添加 DEEPSEEK_API_KEY,不要把 Key 写进 Skill、项目文件或代码仓库。
最后检查:
hermes auth list
hermes skills list
hermes config check必须接受的边界
这套路由不是免费的魔法。它有几个明确限制:
- Skill 本身不能热切换当前会话模型,只能直接执行或创建指定模型的子任务。
- 子任务需要足够的上下文,但上下文越多,调用成本越高。
- Claude Pro、Codex 和 DeepSeek 各自有独立的额度、认证和故障模式。
- 模型返回“成功”不代表工作真的完成。代码仍需测试,方案仍需人工或主 Agent 审查。
- 三模型协作会增加调用次数,只应该用于值得拆分的复杂任务。
我更看重这套方案的可控性。每个模型做什么、什么时候升级、结果如何验证,都写在同一个 Skill 里。模型可以更新,Provider 可以替换,但分工和验收规则不会随着某个聊天窗口消失。