Hermes Doctor
v1.1.0诊断与抢救 Hermes Agent (NousResearch) 故障 — 401/Authentication Fails、provider 切换后 key 没注入、credential_pool 缺条目、HERMES_HOME 被环境变量重定向、gateway lock、stale config、备份恢复。...
Hermes Doctor — 故障诊断与抢救流程
何时触发本 skill
任一信号即触发:
HTTP 401: Authentication Fails(尤其是your api key: ****xxx is invalid)Authorization: Bearer no-key-required之类字面占位符出现在请求 header(用 request_dump 看)hermes setup不弹 API key 输入步骤,只显示绿色 ✓/model切换 provider 后立刻 401/404hermes doctor报红/黄gateway already running启动失败- WAL 文件 > 100MB
不要等用户描述清楚 — 看到上面任一症状立即载入 references/auth-troubleshooting.md。
第一原则:先确认 HERMES_HOME 在哪
Windows 上最容易踩的坑:HERMES_HOME 可能被 HKCU\Environment 重定向到非默认位置(比如 C:\Users\<u>\AppData\Local\hermes),而不是 ~/.hermes。诊断和修复必须先确认真路径,否则你改的是无效文件:
echo "$HERMES_HOME" # shell 当前值
reg query "HKCU\Environment" /v HERMES_HOME # 持久化值
hermes dump --redact | head -20 # hermes 自己认的路径
三处不一致就以 hermes dump 输出的为准。Windows 上的常见场景:U-Hermes 等打包发行版会把 HERMES_HOME 写到 %LOCALAPPDATA%\hermes(即 C:\Users\<USER>\AppData\Local\hermes),让默认的 ~/.hermes 变成空壳。如果你只改 ~/.hermes 下的文件而 hermes 没反应,八成就是这种情况。
黄金 5 步排查
详见 templates/triage-checklist.md。摘要:
- 定位真 HERMES_HOME(上一节)
- 跑
hermes dump --redact— 看运行时 provider/key/active_profile/请求 URL/Authorization 的真实样子。这一步常常一眼定位问题。 - 看最新 request_dump —
<HERMES_HOME>/sessions/request_dump_*.json里的request.headers.Authorization和request.url是不是符合预期。如果 Authorization 是Bearer no-key-required或Bearer <字面单词>,说明 key 注入失败,不是 key 本身的问题。 - 排查 4 处残留点(顺序很重要,从隐蔽到显眼):
- HKCU\Environment 的
HERMES_HOME、*_API_KEY(reg query "HKCU\Environment") - shell 进程环境(
echo "$DEEPSEEK_API_KEY"等) <HERMES_HOME>/auth.json的credential_pool.<provider>数组(最容易缺)<HERMES_HOME>/.env和<HERMES_HOME>/config.yaml(顶层 model.api_key + model_profiles.*.api_key)
- HKCU\Environment 的
- 备份后修复(详见 references/auth-troubleshooting.md):
- 永远先
cp <file> <file>.broken-$(date +%Y%m%d-%H%M%S) - 修完跑
hermes doctor验证,启动 hermes 发 ping
- 永远先
常见症状速查表
| 症状 | 大概率根因 | 跳到 |
|---|---|---|
your api key: ****ired is invalid | key 是字面 expired 或 no-key-required 占位符,没注入到 header | references/auth-troubleshooting.md |
Authorization: Bearer no-key-required | credential_pool 缺该 provider 条目 | references/auth-troubleshooting.md §"占位符注入" |
hermes setup 不弹 key 输入 | issue #16394:.env 里有该 KEY 行就静默跳过 | references/auth-troubleshooting.md §"setup 静默跳过" |
/model 切完 404 | issue #3685:api_mode 残留 | references/provider-switch.md |
gateway already running | lock 文件残留 | references/doctor-and-dump.md §gateway |
| WAL 巨大 | response_store/state 数据库未 checkpoint | hermes doctor --fix |
| 跨机迁移后全报错 | API key 没在新机重新填,base_url 错 | references/backup-and-migrate.md |
危险动作清单(执行前必须明确得到用户授权)
只要你打算做下面任一操作,先把动作和影响告诉用户、等他点头,再做:
- 删
<HERMES_HOME>/.env任一行 - 改
<HERMES_HOME>/auth.json的 credential_pool(可能会让另一些 provider 失联) - 删 HKCU\Environment 的环境变量(影响所有应用,不只 hermes)
- 跑
hermes doctor --fix(会自动改 config 和 symlink) - 删 sessions/ 或 state.db(无法恢复历史)
- 重新装 hermes-agent(venv 重建)
何时升级到人工
hermes dump 显示运行时 key 与 4 处残留点都对不上 → venv 损坏的可能性 > 90%,建议:
- 备份整个 HERMES_HOME 到 zip
- 卸载并重装 hermes-agent (
pipx reinstall hermes-agent或对应安装方式) - 重新跑
hermes setup - 把备份的 sessions/ memories/ skills/ 复制回新 HERMES_HOME
排查时优先翻这些地方
- 真 HERMES_HOME(用
hermes dump --redact或reg query "HKCU\Environment" /v HERMES_HOME确认) - Hermes Python 源码 — 诊断时直接读最准:
- 标准 pip 安装:
<venv>/Lib/site-packages/hermes_cli/(Win)或<venv>/lib/python*/site-packages/hermes_cli/ - 打包发行版(如 U-Hermes):
<install-root>/hermes-agent/hermes_cli/ - 关键文件:
auth.py(provider 解析、PROVIDER_REGISTRY、_resolve_api_key_provider_secret)、doctor.py(run_doctor)、setup.py(setup wizard)、env_loader.py、runtime_provider.py
- 标准 pip 安装:
- Hermes CLI 二进制:venv 的
Scripts/hermes.exe(Win)或bin/hermes(Mac/Linux)
修复手段优先级
故障定位后,优先用安全程度高的手段:
hermes auth子命令(v2026.4.3+,推荐) —hermes auth add/remove/list/reset,见 references/credential-pool-and-rotation.md。先hermes auth --help看你装的版本支不支持hermes doctor --fix— 修 stale config / WAL / symlink,不动 key- 手工 edit
.env+auth.json—hermes auth不可用或版本太旧时(参 references/auth-troubleshooting.md)。关键:目前主流版本(0.10.x 及之前)的_resolve_api_key_provider_secret()只读 env,不读 credential_pool(issue #15914),所以 .env 和 auth.json 通常需要双写才稳定 hermes setup— 重跑全量 wizard,但 issue #16394 让它在 .env 已有 KEY 行时静默跳过,所以先删 .env 那行再跑- 重装 venv — 升级到人工
详细资料
references/auth-troubleshooting.md— 401/key 注入失败/setup 静默跳过的全套排查references/credential-pool-and-rotation.md—hermes auth子命令、4 种 rotation 策略、池子坑(#15914/#5561/#6907/#7863)references/fallback-and-rate-limit.md— fallback_providers 链、429 cooldown、模型路由解析链(#15914/#16677)references/doctor-and-dump.md—hermes doctor检查项 +hermes dump用法references/config-and-paths.md— HERMES_HOME 解析、<home>/下每个文件作用references/provider-switch.md—/model切换、api_mode 陷阱、profile 配置references/backup-and-migrate.md— 备份恢复 HERMES_HOME,跨机迁移templates/triage-checklist.md— 出问题时按这张表逐条排assets/known-issues.json— 16 条已知 GitHub issues 结构化清单 + 6 个相关 release 摘要
Version tags
authcredential-pooldoctorhermeslatestopstroubleshoot
