DeepAI Paper Hermes Agent 教程,Hermes 终端、Docker 与安装 Hermes Agent 常见问题排查:从 GitHub Issues 看 403、502、Docker 后端和自定义接口坑

Hermes Agent 常见问题排查:从 GitHub Issues 看 403、502、Docker 后端和自定义接口坑

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 却进 Dockerterminal.backend 和残留 Docker 配置
消息网关CLI 正常,Discord/Feishu 异常gateway 平台实现、消息格式、工作目录
API ServerOpen 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: openaibase_urlapi_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_urlapi_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,会读取系统代理。结果连 localhost127.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 是否重启;
  • pwdwhoamiuname -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 后端、消息格式问题都会变得好查很多。

Related Post

你明明发过,session_search 却说没见过:Hermes 记忆检索少了哪一块你明明发过,session_search 却说没见过:Hermes 记忆检索少了哪一块

Hermes session_search 能搜到 messages.content,却搜不到 tool_calls 和 tool_name。本文复盘 #16751:为什么工具参数、函数名和工具轨迹明明存进数据库,却在 FTS 检索里消失,以及该如何修复索引结构。

长任务最怕的不是中断,而是压缩时悄悄失忆长任务最怕的不是中断,而是压缩时悄悄失忆

Hermes 长任务遇到 incomplete chunked read 时,context compression 可能插入 static fallback marker 并移除中间 turns,却没有生成真实摘要。本文复盘 #18458:为什么压缩摘要失败比普通中断更危险,以及 retry/fallback 应该如何设计。

Kimi for Coding 报 invalid temperature?Hermes Agent 接入固定参数模型的排错指南Kimi for Coding 报 invalid temperature?Hermes Agent 接入固定参数模型的排错指南

Hermes Agent 接入 Kimi for Coding 报 HTTP 400 invalid temperature: only 0.6 is allowed?这通常不是 API Key 错,而是模型固定参数契约没有覆盖主聊天、summary、memory flush、auxiliary client 等所有调用路径。本文总结 Kimi temperature 0.6 的正确排查方式。