月度归档: 2026 年 5 月

Hermes 命令一跑就卡死:install.sh 重跑后为什么把 CLI 入口改成了自我调用Hermes 命令一跑就卡死:install.sh 重跑后为什么把 CLI 入口改成了自我调用

重跑 Hermes install.sh 后,hermes doctor 没报错也没输出,只是一直卡住?本文复盘 #21454:旧版 ~/.local/bin/hermes symlink 被新版 cat > wrapper 穿透覆盖,导致 venv/bin/hermes 变成自我 exec 的无限循环。

Docker 重新 build 突然 invalid file request:Hermes 的 runtime data 为什么混进了构建上下文Docker 重新 build 突然 invalid file request:Hermes 的 runtime data 为什么混进了构建上下文

Hermes Docker compose 第一次 build 成功,容器运行后下一次却报 invalid file request?根因可能是 bind-mounted ./data 作为 /opt/data 写入 runtime symlink,而 .dockerignore 没排除 data/。本文复盘 #13925。

Discord 明明发了代码,Hermes 却像没看见:message.txt 附件被静默吞掉的原因Discord 明明发了代码,Hermes 却像没看见:message.txt 附件被静默吞掉的原因

Discord 会把长代码自动转成 message.txt 附件,Hermes 旧版在读取这类文本附件时可能因 Brotli br 解码失败而静默忽略内容。本文复盘 #12511:为什么 PDF 和图片能过,txt/py/html 却进不了 Agent 上下文。

自动安装最怕半路要密码:Hermes 在 Playwright 步骤卡住 sudo 的半成品安装坑自动安装最怕半路要密码:Hermes 在 Playwright 步骤卡住 sudo 的半成品安装坑

Hermes 安装器在非 sudo 服务用户下运行 Playwright Chromium --with-deps 时会卡在 sudo 密码提示,且发生在 setup_path 之前,导致 hermes 命令和 hermes doctor 都没创建。本文复盘 #25816:为什么可选浏览器步骤不应阻断核心安装。

安全过滤器把注释也当命令了:Hermes 终端误杀 setsid / nohup 的坑安全过滤器把注释也当命令了:Hermes 终端误杀 setsid / nohup 的坑

Hermes terminal safety filter 曾用简单正则扫描 nohup/disown/setsid,导致 git commit message、PR body、Python -c 代码和 echo 文本里的关键词也被当作真实后台命令拦截。本文复盘 #20064:为什么安全过滤不能只靠关键词扫描。

只有思考没有正文,Hermes 流式输出也会崩:Gemini reasoning-only delta 的 .content 空洞只有思考没有正文,Hermes 流式输出也会崩:Gemini reasoning-only delta 的 .content 空洞

Gemini Code Assist streaming 中 reasoning-only delta 先于正文到达,Hermes 旧版 _make_stream_chunk 没有补 content=None,导致 downstream 访问 delta.content 时报 AttributeError。本文复盘 #24974:为什么流式 chunk schema 必须稳定。

模型需要 max_completion_tokens,Hermes 却按网址猜参数:自定义 OpenAI 兼容端点的 400 坑模型需要 max_completion_tokens,Hermes 却按网址猜参数:自定义 OpenAI 兼容端点的 400 坑

Hermes 在自定义 OpenAI-compatible endpoint 上只按 URL host 判断 max_tokens / max_completion_tokens,导致 gpt-4o、gpt-4.1、gpt-5、o-series 模型返回 unsupported_parameter 400。本文复盘 #13901,并说明 DeepAI API 中转站场景该如何排查。

少了一个 api_mode,模型目录就串台:Hermes 自定义 Provider 为什么把 Anthropic 当 OpenAI 校验少了一个 api_mode,模型目录就串台:Hermes 自定义 Provider 为什么把 Anthropic 当 OpenAI 校验

Hermes 自定义 provider 明明配置了 api_mode: anthropic_messages,/model 校验却丢掉 api_mode,导致按 OpenAI catalog 探测并提示 gpt-5-pro 等相似模型。本文复盘 #9146:为什么协议模式必须贯穿 validate_requested_model、probe_api_models 与 fetch_api_models。

模型明明能用,菜单里却没有:Hermes Copilot /model 选择器为什么藏起新模型模型明明能用,菜单里却没有:Hermes Copilot /model 选择器为什么藏起新模型

Hermes Copilot /model 选择器只查 COPILOT_GITHUB_TOKEN / GH_TOKEN / GITHUB_TOKEN,没 fallback 到 auth.json 里的 OAuth access_token,导致 claude-opus-4.7、gpt-5.5 等模型能直接输入使用,却不出现在菜单里。本文复盘 #16708。

钥匙明明在 .env,Hermes 却说找不到:credential_pool 只摸口袋不看保险箱钥匙明明在 .env,Hermes 却说找不到:credential_pool 只摸口袋不看保险箱

Hermes 把 API key 放在 ~/.hermes/.env 里却仍报 No API key found?本文复盘 #15932:credential_pool._seed_from_env 只看 os.environ,auth 解析也没有 fallback 到 credential pool,导致 OpenAI-compatible provider 的认证链路断掉。

9000 轮配置,为什么跑着跑着又变成 90?Hermes Gateway 被旧 .env 反杀的配置优先级坑9000 轮配置,为什么跑着跑着又变成 90?Hermes Gateway 被旧 .env 反杀的配置优先级坑

Hermes Gateway 中 agent.max_turns 写成 9000,却在长任务心跳里显示 iteration X/90。本文复盘 #19158:为什么旧 .env 里的 HERMES_MAX_ITERATIONS=90 会通过 dotenv reload 覆盖 config.yaml,以及如何排查配置优先级。

你以为传进 Docker 的变量,其实从没上车:Hermes docker_env 配置为何失效你以为传进 Docker 的变量,其实从没上车:Hermes docker_env 配置为何失效

Hermes 的 terminal.docker_env 写在 config.yaml 里却没有进入 Docker 容器,根因是 env_mappings 缺少 docker_env 到 TERMINAL_DOCKER_ENV 的映射。本文复盘 #20537:为什么配置看似存在,运行时却只拿到默认空 dict。