Hermes Agent config.yaml 完全指南:模型、路由、故障转移
Hermes Agent 的全部行为由一个 YAML 配置文件控制——config.yaml。这篇文章用官方文档 + 真实配置,把模型配置、自定义提供商、故障转移、辅助模型等核心机制讲清楚,附带常见错误和标准写法。
一、配置文件位置
| 系统 | 路径 |
|---|---|
| Windows | C:\Users\<用户名>\AppData\Local\hermes\config.yaml |
| Linux / macOS | ~/.hermes/config.yaml |
配置文件由 hermes model 交互式向导生成,也可以直接编辑。每次修改后无需重启 Hermes,模型切换类配置立即生效。
二、模型配置(model 节)
model: 是配置文件的入口,决定默认使用哪个提供商和模型。
标准写法
model:
default: sensenova-6.7-flash-lite # 模型名称
provider: custom:sensenova # 提供商
base_url: https://token.sensenova.cn/v1 # API 地址关键字段说明
| 字段 | 作用 | 示例 |
|---|---|---|
default | 默认模型名称 | sensenova-6.7-flash-lite |
provider | 提供商标识 | custom:sensenova、openrouter、anthropic |
base_url | API 端点地址 | https://token.sensenova.cn/v1 |
context_length | 上下文窗口大小(tokens) | 131072 |
max_tokens | 单次响应最大输出 tokens | 4096 |
两个容易混淆的设置
context_length= 总上下文窗口,输入 + 输出的合计预算。Hermes 用它决定何时压缩历史。max_tokens= 单次响应的输出上限。与对话历史长度无关。
文档原文:context_length是总上下文窗口——输入和输出 token 的合计预算。model.max_tokens是输出上限——模型在单次响应中最多可生成的 token 数。
模型 ID 别名
default: 和 model: 作为键名效果完全相同:
model:
model: sensenova-6.7-flash-lite # 与 default 等价三、自定义提供商(custom_providers)
当提供商不在 Hermes 一等支持列表中(如 SenseNova、LongCat、Together AI),使用 custom_providers: 定义。
标准写法
custom_providers:
- name: SENSENOVA
base_url: https://token.sensenova.cn/v1
key_env: SENSENOVA_API_KEY
models:
sensenova-6.7-flash-lite:
context_length: 128000
deepseek-v4-flash:
context_length: 1000000字段说明
| 字段 | 作用 | 是否必须 |
|---|---|---|
name | 提供商名称(用于 provider: custom:<name> 引用) | 是 |
base_url | API 端点地址 | 是 |
key_env | API Key 对应的环境变量名 | 推荐 |
models | 按模型覆盖上下文长度等参数 | 可选 |
api_mode | API 协议类型 | 可选 |
extra_body | 每个请求附加的额外字段 | 可选 |
api_mode 可选值
| 值 | 适用场景 |
|---|---|
chat_completions | OpenAI 兼容 API(默认) |
anthropic_messages | Anthropic 兼容代理 |
命名自定义提供商的切换语法
配置多个自定义端点后,用三段式语法在会话中切换:
/model custom:local:qwen-2.5 # 使用 "local" 端点 + qwen-2.5 模型
/model custom:work:llama3-70b # 使用 "work" 端点 + llama3-70b 模型实战:Together AI 配置
custom_providers:
- name: together
base_url: https://api.together.xyz/v1
key_env: TOGETHER_API_KEY
model:
default: MiniMaxAI/MiniMax-M2.7
provider: custom:together对应 .env 文件:
TOGETHER_API_KEY=your-together-key实战:多个提供商组合
custom_providers:
- name: together
base_url: https://api.together.xyz/v1
key_env: TOGETHER_API_KEY
- name: groq
base_url: https://api.groq.com/openai/v1
key_env: GROQ_API_KEY
- name: perplexity
base_url: https://api.perplexity.ai
key_env: PERPLEXITY_API_KEY
model:
default: MiniMaxAI/MiniMax-M2.7
provider: custom:together四、一等提供商(无需 custom_providers)
一等提供商(First-class providers) 是 Hermes 内置原生支持的提供商,有专属的 provider ID。
核心特点:
- 不需要
custom_providers:— 直接写provider: deepseek即可 - Hermes 自动处理特殊行为 — 如 Anthropic 的 token 自动刷新、xAI 的 prompt 缓存、Z.AI 的端点自动检测等
- 专属 provider ID — 如
deepseek、anthropic、kimi-coding
非一等提供商(如 SenseNova、LongCat、Together AI)则需要通过 custom_providers: 自定义配置。
对比示例:
# ✅ DeepSeek 是一等提供商,直接写
model:
provider: deepseek
default: deepseek-chat
# ❌ 写成 custom 就多余了,失去了自动处理特殊行为的优势
custom_providers:
- name: deepseek
base_url: https://api.deepseek.com/v1
key_env: DEEPSEEK_API_KEY
model:
provider: custom:deepseek以下提供商内置支持,只需设置 API Key 环境变量,不需要 custom_providers::
| 提供商 | provider 值 | 环境变量 |
|---|---|---|
| OpenRouter | openrouter | OPENROUTER_API_KEY |
| Anthropic | anthropic | ANTHROPIC_API_KEY |
| DeepSeek | deepseek | DEEPSEEK_API_KEY |
| z.ai / GLM | zai | GLM_API_KEY |
| Kimi / Moonshot | kimi-coding | KIMI_API_KEY |
| Kimi 中国版 | kimi-coding-cn | KIMI_CN_API_KEY |
| MiniMax | minimax | MINIMAX_API_KEY |
| MiniMax 中国 | minimax-cn | MINIMAX_CN_API_KEY |
| 阿里 DashScope | alibaba | DASHSCOPE_API_KEY |
| 阿里 Coding Plan | alibaba-coding-plan | DASHSCOPE_API_KEY |
| 小米 MiMo | xiaomi | XIAOMI_API_KEY |
| 腾讯 TokenHub | tencent-tokenhub | TOKENHUB_API_KEY |
| NovitaAI | novita | NOVITA_API_KEY |
| xAI / Grok | xai | XAI_API_KEY |
| Hugging Face | huggingface | HF_TOKEN |
| Google Gemini | gemini | GOOGLE_API_KEY |
| NVIDIA | nvidia | NVIDIA_API_KEY |
| GMI Cloud | gmi | GMI_API_KEY |
| StepFun | stepfun | STEPFUN_API_KEY |
一等提供商的标准配置:
model:
provider: deepseek
default: deepseek-chat# .env
DEEPSEEK_API_KEY=sk-xxx五、故障转移(fallback_providers)
当主模型失败(速率限制、服务器错误、认证失败)时,Hermes 按顺序尝试备用提供商,不丢失对话。
标准写法
fallback_providers:
- provider: openrouter
model: anthropic/claude-sonnet-4
- provider: deepseek
model: deepseek-chat旧版兼容写法(仍可用)
fallback_model:
provider: openrouter
model: anthropic/claude-sonnet-4支持的故障转移提供商
openrouter、nous、anthropic、gemini、zai、kimi-coding、kimi-coding-cn、minimax、minimax-cn、deepseek、nvidia、xai、huggingface、alibaba、custom 等。
故障转移行为
- 链按条目逐一尝试
- 每个会话激活一次
- 中途切换模型和提供商,不丢失对话
- 仅通过
config.yaml或hermes fallback配置
六、辅助模型(auxiliary)
即使使用 Nous Portal、Codex 或自定义端点,某些工具(视觉、网页摘要、压缩等)仍使用单独的"辅助"模型。
默认行为
默认 provider: auto,Hermes 将辅助任务路由到主聊天模型。
自定义辅助模型
auxiliary:
vision:
provider: custom:sensenova
model: sensenova-6.7-flash-lite
timeout: 120
web_extract:
provider: auto
timeout: 360
compression:
provider: auto
timeout: 120辅助任务列表
| 任务 | 配置键 | 默认超时 |
|---|---|---|
| 视觉分析 | vision | 120s |
| 网页摘要 | web_extract | 360s |
| 上下文压缩 | compression | 120s |
| 技能中心 | skills_hub | 30s |
| 审批 | approval | 30s |
| MCP | mcp | 30s |
| 标题生成 | title_generation | 30s |
| TTS 音频标签 | tts_audio_tags | 30s |
| 分诊 | triage_specifier | 120s |
| Kanban 分解 | kanban_decomposer | 180s |
| 配置文件描述 | profile_describer | 60s |
| 策展人 | curator | 600s |
| 监控 | monitor | 60s |
| 后台审查 | background_review | 120s |
| MoA 参考 | moa_reference | 600s |
| MoA 聚合 | moa_aggregator | 600s |
七、上下文长度检测机制
Hermes 使用多源解析链检测上下文窗口:
- 配置覆盖 —
config.yaml中的model.context_length(最高优先级) - 自定义提供商按模型 —
custom_providers[].models.<id>.context_length - 持久缓存 — 之前发现的值(重启后保留)
- 端点 /models — 查询服务器 API
- OpenRouter API — 实时模型元数据
- models.dev — 社区维护的注册表
- 回退默认值 — 默认 128K
同一模型在不同服务商处可能有不同的上下文限制。例如 claude-opus-4.6 在 Anthropic 直连时为 1M,在 GitHub Copilot 上为 128K。八、常见错误与避坑
错误 1:provider 值写错
# ❌ 错误
provider: sensenova
# ✅ 正确(自定义提供商用 custom: 前缀)
provider: custom:sensenova错误 2:key_env 拼写错误
# ❌ 错误——.env 里找不到这个变量
key_env: SENSENOVA_API_KEYS
# ✅ 正确
key_env: SENSENOVA_API_KEY错误 3:context_length 设置过小
智能体使用至少需要 16k–32k 上下文。系统 prompt 加工具 schema 就可能占用 4k–8k tokens。
# ❌ 太小
context_length: 4096
# ✅ 推荐
context_length: 131072错误 4:一等提供商误用 custom_providers
DeepSeek、阿里 DashScope 等一等提供商不需要 custom_providers:,直接写 provider: 即可:
# ❌ 多余
custom_providers:
- name: deepseek
base_url: https://api.deepseek.com/v1
key_env: DEEPSEEK_API_KEY
model:
provider: custom:deepseek
# ✅ 正确
model:
provider: deepseek
default: deepseek-chat错误 5:base_url 末尾缺少 /v1
# ❌ 缺少 /v1
base_url: https://token.sensenova.cn
# ✅ 正确
base_url: https://token.sensenova.cn/v1九、hermes model 与 /model 的区别
| 命令 | 运行位置 | 功能 |
|---|---|---|
hermes model | 终端(任何会话之外) | 完整配置向导——添加提供商、OAuth、输入 API Key |
/model | Hermes 聊天会话内部 | 在已配置的提供商和模型之间快速切换 |
想切换到尚未配置的提供商,必须退出会话(Ctrl+C 或 /quit),运行 hermes model,完成配置后再开新会话。十、完整配置示例
一个典型的多提供商 + 故障转移 + 辅助模型配置:
model:
default: sensenova-6.7-flash-lite
provider: custom:sensenova
base_url: https://token.sensenova.cn/v1
custom_providers:
- name: SENSENOVA
base_url: https://token.sensenova.cn/v1
key_env: SENSENOVA_API_KEY
models:
sensenova-6.7-flash-lite:
context_length: 128000
deepseek-v4-flash:
context_length: 1000000
- name: LongCat
base_url: https://api.longcat.chat/openai
key_env: LONGCAT_API_KEY
models:
LongCat-2.0-Preview:
context_length: 1000000
max_output_tokens: 128000
fallback_providers:
- provider: custom:LongCat
model: LongCat-2.0-Preview
auxiliary:
vision:
provider: custom:sensenova
model: sensenova-6.7-flash-lite
timeout: 120
web_extract:
provider: auto
timeout: 360
compression:
provider: auto
timeout: 120对应 .env:
SENSENOVA_API_KEY=sk-xxx
LONGCAT_API_KEY=sk-xxx总结
| 配置项 | 核心要点 |
|---|---|
model: | 入口,指定默认提供商和模型 |
custom_providers: | 非一等提供商用此定义,支持多端点 |
fallback_providers: | 主模型失败时自动切换,不丢对话 |
auxiliary: | 辅助任务可单独指定更便宜的模型 |
context_length | 总上下文窗口,智能体至少 32k |
max_tokens | 单次输出上限,与上下文长度无关 |
配置文件是 Hermes 行为的核心。理解 model → custom_providers → fallback_providers → auxiliary 这四层结构,就能覆盖 99% 的使用场景。