Technical Guide

03. 配置和模型:config.yaml、.env、provider 怎么配

看懂 Hermes 的配置入口:模型、密钥、工具、Gateway、Memory 和 terminal backend 分别放在哪里。

这篇解决什么问题

Hermes 的很多问题看起来像源码问题,实际是配置问题。

比如:模型调不通、工具没出现、Gateway 收不到消息、TTS 没声音、browser 不可用。这些大多先看配置,不要直接改代码。

关键路径

默认情况下,Hermes 的主要配置在:

~/.hermes/config.yaml
~/.hermes/.env
~/.hermes/auth.json
~/.hermes/skills/
~/.hermes/cron/jobs.json
~/.hermes/state.db
~/.hermes/logs/

如果用了 profile,则会在:

~/.hermes/profiles/<name>/

每个 profile 有自己的配置、skills、memory、cron 和会话状态。

config.yaml 放什么

config.yaml 放结构化配置,例如:

model.default
model.provider
model.base_url
agent.max_turns
terminal.backend
gateway 配置
memory 配置
compression 配置
tools 配置

你可以用命令查看和修改:

hermes config
hermes config edit
hermes config set model.provider openrouter
hermes config path

.env 放什么

.env 放密钥和环境变量。

比如:

OPENROUTER_API_KEY
ANTHROPIC_API_KEY
GOOGLE_API_KEY
DEEPSEEK_API_KEY
XAI_API_KEY

原则很简单:

  • 配置项放 config.yaml
  • 密钥放 .envauth.json
  • 不要把密钥写进技能、文档或代码仓库。

provider 和 model

Hermes 是 provider-agnostic 的。

也就是说,同一个 Agent loop 可以切换不同模型后端。你可以通过:

hermes model

交互式选择 provider 和 model。

也可以在单次命令里指定:

hermes chat -q "hello" --provider openrouter -m anthropic/claude-sonnet-4

auth.json 做什么

auth.json 用于保存 OAuth 或 credential pool 一类的认证信息。

例如 Nous Portal、OpenAI Codex、Qwen OAuth、Copilot 这类不只是简单 API key 的 provider,会通过 hermes auth 管理。

常用命令:

hermes auth
hermes auth list
hermes auth add <provider>
hermes auth remove <provider>

工具配置为什么重要

Hermes 不会在每次会话都暴露所有工具。

工具出现取决于:

toolsets.py 定义了哪些工具集
工具自身 check_fn 是否通过
当前平台或 profile 是否启用
会话是否限制 enabled_toolsets

所以“模型为什么不能调用某个工具”,不要只看模型。先看:

hermes tools list
hermes tools

配置影响源码哪里

后面读源码时,可以先记住这条关系:

config.yaml / .env / auth.json
→ agent 初始化
→ provider/model/client 构建
→ prompt 和 tools 构建
→ run_conversation 执行

配置不是旁路,它直接决定一次会话里模型、工具、记忆、压缩、Gateway 的行为。

下一篇看什么

下一篇看项目结构。

先知道目录怎么分,再进入 CLI 入口和 Agent 主循环。