Hermes Agent 的问题,不能只看“模型有没有回复”。
它不是普通聊天客户端。它有主对话、后台 review agent、标题生成、上下文压缩、终端后端、消息网关、API Server,还有各种 provider 和 Custom Endpoint。一个地方配置对了,不代表所有子系统都跟着对。
我翻了 NousResearch/hermes-agent 的 GitHub Issues,挑了几类对接 DeepAI、OpenAI Compatible API、自托管模型和消息网关用户最有参考价值的问题。
这篇不是安装教程,也不是泛泛的“常见报错大全”。它更像一份 issue 复盘:真实用户在哪里踩坑、为什么会踩、你遇到类似问题时应该先查哪一层。
GitHub 仓库:
https://github.com/NousResearch/hermes-agent
DeepAI API 中转站:
https://api.deepai.wang/
先给判断逻辑:Hermes 报错要分清“谁在请求”
Hermes 里一次报错,可能来自不同请求者。
| 出错位置 | 典型表现 | 优先检查 |
| 主对话模型 | 你发消息后直接失败 | provider、base_url、API Key、model |
| 后台 review agent | 正常聊天中突然刷 403/429 | 子 agent 是否继承 base_url 和 api_key |
| 辅助模型 | 标题生成、压缩、搜索失败 | auxiliary client、代理、localhost |
| 终端后端 | 明明设置 local 却进 Docker | terminal.backend 和残留 Docker 配置 |
| 消息网关 | CLI 正常,Discord/Feishu 异常 | gateway 平台实现、消息格式、工作目录 |
| API Server | Open WebUI/LobeChat 连不上 | API_SERVER_KEY、Bearer、CORS、端口 |
所以看到 Hermes 报错,不要只问“DeepAI Key 对不对”。
你要先判断:这次请求到底是主 agent 发的,还是 Hermes 的某个后台组件发的。
Issue 1:Custom Endpoint 明明 curl 能通,Hermes Gateway 却 403
相关 issue:
https://github.com/NousResearch/hermes-agent/issues/3717
这个 issue 的现象很典型:用户使用 OpenAI-compatible custom endpoint,直接 curl 能成功,OpenClaw 也能成功,但 Hermes Gateway 返回:
403 - invalid api-key
issue 里给出的关键信息是:
- curl 带
Authorization: Bearer ...可以调用成功; - Hermes 配置了
provider: openai、base_url、api_key; - 但 Gateway 侧仍然报 403;
- 用户怀疑 Hermes 内部使用的 LiteLLM 没有正确发送 Bearer token,或者没有按 custom base_url 走正确鉴权方式。
这类问题对 DeepAI 用户很有参考价值。
如果你把 Hermes 接到 DeepAI:
https://api.deepai.wang/v1
然后出现“curl 正常、Hermes 报 403/401”,不要第一时间重置 Key。
先做这个对照:
curl https://api.deepai.wang/v1/chat/completions \
-H "Authorization: Bearer YOUR_DEEPAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "YOUR_MODEL_ID",
"messages": [{"role": "user", "content": "回复 ok"}]
}'
如果 curl 正常,说明至少这三件事没错:
- DeepAI Key 可用;
- Base URL 可达;
- 模型 ID 基本正确。
接下来查 Hermes:
~/.hermes/config.yaml里 provider 是否真的是 custom/openai-compatible 路径;- API Key 是否实际写进
~/.hermes/.env; - Gateway 是否和 CLI 读取同一个 profile;
hermes model重新配置后是否仍然复现;~/.hermes/logs/里是否能看到真正请求的 endpoint。
这个 issue 的价值在于提醒你:**curl 成功但 Hermes 失败,问题可能在 Hermes 的 provider 适配层,而不是 DeepAI。**
Issue 2:后台 review agent 没继承 base_url,导致 403
相关 issue:
https://github.com/NousResearch/hermes-agent/issues/3233
这个问题比普通 403 更隐蔽。
用户配置了一个带自定义 endpoint 的 provider。主 agent 使用时可以正常工作,但后台 review agent 触发时,开始报 403。
issue 里的根因分析是:后台 review agent 创建时只传了 model、provider,没有显式传 base_url 和 api_key。于是子 agent 按 provider registry 里的默认 endpoint 去解析,结果请求打到了错误地址,返回 403。
这个问题给我们的排查启发是:
Hermes 不是只有一个模型客户端。
它可能有:
- 主对话 client;
- memory review client;
- skill review client;
- title generator;
- context compression client;
- session search summarizer。
如果主对话正常,但后台任务报错,重点不是“换模型”,而是看后台任务是否继承了同一套 endpoint 和 key。
对 DeepAI 用户来说,类似现象可能表现为:
主聊天可以回复,但过一会儿日志里出现 403/401/404
这时建议:
- 先确认错误是不是发生在主回复路径;
- 看
~/.hermes/logs/errors.log; - 搜索日志里的 endpoint;
- 如果 endpoint 不是
https://api.deepai.wang/v1,说明后台组件可能走了另一套配置; - 临时关闭或简化相关后台功能,先保证主对话稳定。
这类问题不能靠反复重填 API Key 解决。
Issue 3:Windows 系统代理导致 localhost 辅助请求 502
相关 issue:
https://github.com/NousResearch/hermes-agent/issues/25319
这个 issue 很适合自托管模型和本地网关用户看。
现象是:Windows 设置了系统代理,Hermes 主对话正常,但 auxiliary client 相关任务失败,比如:
- 标题生成;
- 上下文压缩;
- session search;
- 其他后台辅助 LLM 调用。
报错是:
Error code: 502
issue 里的根因是:OpenAI Python SDK 内部使用 httpx,默认 trust_env=True,会读取系统代理。结果连 localhost 或 127.0.0.1 这种本地地址时也走代理,代理无法正确处理本地请求,于是返回 502。
这个问题对 DeepAI 用户的直接影响不大,因为 DeepAI 是公网地址:
https://api.deepai.wang/v1
但如果你在 DeepAI 前面又套了一层本地 LiteLLM、one-api、new-api、Ollama proxy,就很重要。
排查建议:
- 主聊天正常,但标题生成/压缩失败,要查 auxiliary client;
- 如果 base_url 是
http://localhost:xxxx/v1,先怀疑代理; - Windows 用户检查系统代理设置;
- 尝试换成局域网 IP 或关闭系统代理测试;
- 看 Hermes 是否已有新版修复 auxiliary client 的
trust_env行为。
不要看到 502 就直接说“模型服务挂了”。
Issue 4:terminal.backend 设置成 local,却还在 Docker 里执行
相关 issue:
https://github.com/NousResearch/hermes-agent/issues/25402
这个问题和模型无关,但对 Hermes 使用体验影响很大。
用户在 Windows + Discord gateway 环境里,把:
terminal:
backend: local
设成了 local。配置界面也显示 local。
但实际让 Hermes 执行终端命令时,命令仍然落在 Docker/Linux 环境里。后来发现,需要把 config.yaml 里残留的 Docker 相关配置也删掉,重启 gateway 后才真正回到 Windows local/MSYS 环境。
这说明:Hermes 的终端后端配置不是只看一个字段。
如果你遇到:
- CLI 看起来是本地;
- Discord/Telegram 网关执行命令像在 Docker;
pwd变成/root;- 出现
/.dockerenv; - Windows 下却返回 Linux 路径;
就不要查 DeepAI。先查 ~/.hermes/config.yaml 里的 terminal 块。
建议做一次诊断:
pwd
whoami
uname -a
command -v hermes
ls /.dockerenv
如果你确实想用 local,就把 Docker 专属字段清理掉,只保留 local 需要的配置,然后重启 gateway。
这个问题也提醒我们:Hermes 的“模型接入成功”和“工具执行环境正确”是两回事。
Issue 5:Feishu 里 Markdown 表格显示成源码
相关 issue:
https://github.com/NousResearch/hermes-agent/issues/25452
这个 issue 不是模型错误,但很适合做消息网关排错。
现象是:Hermes 接入飞书后,AI 回复里如果有 Markdown 表格,飞书客户端不渲染成表格,而是显示成:
| col1 | col2 |
| --- | --- |
issue 里的原因是:飞书 post message 的 md 标签不支持标准 Markdown 表格。已有 workaround 是检测到表格后退回 text 消息,避免空消息,但用户看到的就是 Markdown 源码。
这类问题的关键是:
**不是模型不会写表格,也不是 DeepAI 输出错了,而是消息平台不支持这种渲染方式。**
如果你用 Hermes 接 Feishu、Discord、Slack、Telegram、WhatsApp,类似问题都可能出现:
- 表格不渲染;
- 代码块格式异常;
- 图片/文件不显示;
- 消息太长被截断;
- Markdown 在不同平台表现不一致。
解决思路不是换模型,而是改输出格式:
- 飞书里尽量让 Hermes 用列表代替表格;
- 在 prompt 或 SOUL 里写明“飞书不要输出 Markdown 表格”;
- 对平台消息格式做单独适配;
- 等 Hermes 对该平台支持 interactive cards 或更好的 formatter。
如果你用 DeepAI 做底层模型,平台渲染问题仍然是 Hermes Gateway/平台 API 的问题,不是 DeepAI API 的问题。
Issue 6:为什么很多聚合 API 都想变成 Hermes 内置 Provider
相关 issue:
https://github.com/NousResearch/hermes-agent/issues/6187
这个 issue 是 feature request:希望给 AI/ML API 增加一等 provider 支持。
里面有个点很有意思:用户说 Custom Endpoint technically works,但体验不如内置 provider,因为:
- 不会出现在
hermes model的标准 provider 列表里; - 没有专属环境变量自动识别;
- doctor/status 等诊断命令不够顺;
- 模型命名、base_url、key 都要手动配置。
这正好解释了为什么 DeepAI 接 Hermes 目前也应该写成:
通过 Custom Endpoint 接入
而不是宣传成“Hermes 官方内置支持 DeepAI Provider”。
正确说法是:
Hermes 支持 Custom Endpoint / OpenAI-compatible API;DeepAI 可以作为这种兼容接口来源之一接入。
这句话很重要,不能夸大。
DeepAI 用户怎么利用这些 issues 排错
如果你用 DeepAI 接 Hermes,建议按下面顺序查。
A. 先确认 DeepAI 本身可用
curl https://api.deepai.wang/v1/chat/completions \
-H "Authorization: Bearer YOUR_DEEPAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "YOUR_MODEL_ID",
"messages": [{"role": "user", "content": "回复 ok"}]
}'
curl 不通,先别碰 Hermes。
B. 再确认 Hermes 主模型配置
看:
~/.hermes/config.yaml
~/.hermes/.env
重点确认:
base_url = https://api.deepai.wang/v1
api key = DeepAI Key
model = DeepAI 控制台可用模型 ID
C. 如果 CLI 正常、gateway 异常
查:
- gateway 是否读取同一套配置;
- gateway 日志;
- 平台消息格式限制;
- working directory;
- allowlist 和 token。
D. 如果主聊天正常、后台报错
查:
- errors.log;
- title generator;
- context compression;
- review agent;
- 日志里的 endpoint 是否还是 DeepAI。
E. 如果工具执行位置不对
查 terminal:
- backend 是 local、docker 还是 ssh;
- 是否有残留 Docker 配置;
- gateway 是否重启;
pwd、whoami、uname -a的结果。
一个更稳的 Hermes + DeepAI 配置习惯
不要把所有能力一次打开。
更稳的顺序是:
1. curl 测 DeepAI
2. hermes model 配 Custom Endpoint
3. hermes CLI 跑普通聊天
4. 测一个低风险工具任务
5. 看 errors.log 是否安静
6. 再开 gateway
7. 再开 API Server / cron / skills
8. 最后才做长期自动化
这个顺序看起来慢,但可以让你知道每个错误发生在哪一层。
如果第一天就同时接 DeepAI、Discord、API Server、Docker 后端、自动 review、cron,出了问题根本不好定位。
相关资料
Hermes GitHub Issues:
https://github.com/NousResearch/hermes-agent/issues
Hermes 接入 DeepAI 的基础教程:
Hermes Agent 接入 DeepAI 教程:用 Custom Endpoint 配 OpenAI Compatible API
DeepAI curl / Python 测试教程:
从 curl 到 Python:如何确认 DeepAI OpenAI 兼容接口真的能用
OpenAI Compatible API 基础解释:
OpenAI Compatible API 是什么?Base URL、API Key、Model ID 与 DeepAI 接入教程
结论
Hermes 的 GitHub Issues 里最有价值的信号是:很多问题不是“模型不行”,而是“请求路径不一样”。
主 agent、后台 review agent、auxiliary client、gateway、terminal backend,它们可能各自踩不同的坑。
所以 Hermes 接 DeepAI 后如果出错,别只盯着 Key。
先问:
是谁在请求?请求去了哪里?有没有带正确 Authorization?是不是同一个 base_url?是不是同一个运行环境?
这几个问题问清楚,很多 403、502、Docker 后端、消息格式问题都会变得好查很多。