Hermes Agent v0.21.4
Overview
v0.21.4 — The One-Gateway Patch。 2026 年 9 月 21 日发布。自 v0.21.3 以来:5,071 个非合并提交 · 5,169 个改动文件(+312,961 / −62,855)· 1,812 个已合并 PR · 2,116 个已关闭 issue,统计于提交 4b8a8134009a8727a289bcabeb0019fedd353128。
这个 tag 是为下游消费者切的:Docker 镜像、Hermes Cloud、托管部署都从最新的 release tag 构建,所以这个窗口里的修复必须先滚进一个稳定版本,云端用户才拿得到。官方在 release body 里明确写了,完整策展说明留给 v0.22.0——那一版会从 v0.21.0 起把全部内容补齐,包括亮点、功能分区与贡献者名单。本页记录的是这个 tag 的定位,以及窗口里那些“已经在你机器上生效、但还没被写进任何 release notes”的变化。
Highlights
1. 网关拓扑收敛:一台机器只有一个宿主网关
这是本窗口最大的架构变化。每个 OS 用户、每台机器只有一个 hermes gateway run 进程,它服务所有 profile;次级 profile 的 gateway run 会附着到宿主进程(打印宿主 PID 与被服务的 profile 集合,退出码 0),而不是启动第二个。gateway start --all / restart --all 现在指的是那一个宿主多路复用器,不会再扫掉别人正在跑的网关。
老开关 gateway.multiplex_profiles: false 已退役:它仍然能被解析,但不再能钉住独立网关进程,行为等同于未设置并打一行警告。命名 profile 不能再新建自己的 gateway unit(除非 --force);--standalone 被删除。从旧拓扑升级的路径是 hermes gateway migrate --multiplex --dry-run 先看计划,再 hermes gateway migrate --multiplex 执行——收敛由拓扑定义而非配置开关,所以重跑这条命令就是中断后的恢复手段。相关 PR:#118273、#118097、#118433。
2. 连接器:在对话里把应用连上
用户直接在对话里说“把 Notion 连上”,后端负责完成整次连接:收集字段、给出登录链接,同一个回合里就能调用新工具。桌面端、hermes --tui 与经典 CLI 看到的是同一个设置步骤。仓库自带 65 个已审核 MCP 服务器目录,其中 55 个使用 OAuth(#111008)。
3. CLI 与 Agent 表面:结构化输出、钉住的技能、存储日志模式
hermes chat -q "..." --format stream-json:stdout 输出 JSONL 事件(init / text / tool_use / tool_result / result),最终信封带 token 统计与退出码,方便 CI 在不抓屏的前提下消费运行结果(#90411)。skills.auto_load:在config.yaml里列出的技能会在每个新会话开始时被完整加载,CLI / TUI / 网关 / cron / API agent 全覆盖;注入按“每个 agent 解析一次”实现,渲染字节稳定,不破坏 prompt 缓存(#92048)。hermes sessions set-journal-mode delete|wal:把state.db(或--db指定的其他存储)在 WAL 与 DELETE 之间离线转换;有进程持有文件时拒绝执行并逐个列出持有者,转换后回读文件头验证(#117684)。
4. Profile 隔离:一批 P1 级修复
“一个后端服务多个 profile”会放大定域错误,本窗口收掉了一批:#118275 让所有 REST 路由尊重请求里点名的 profile——此前 POST /api/memory/reset?profile=worker_beta 会删掉启动 profile 的 MEMORY.md,现在破坏性路由在多元 profile 主机上收到不带 profile 的请求时直接返回 400;#118373 让命名 profile 重新解析根 profile 的 OAuth 登录,修掉升级后 No Codex credentials stored 那类故障;#118246 让桌面端附着到宿主后端,不再为每个 profile 各起一个 hermes serve。
Improvements
mcp.discovery_concurrency:MCP 启动阶段的并发连接受该键约束(默认 4,0为不限),8 个 stdio 服务器的实测峰值从 8 降到 4,避免开机瞬间的进程风暴(#117956)。- 未授权私聊三态:
gateway.unauthorized_dm_behavior增加decline,可用unauthorized_dm_decline_message自定义话术,也可按平台覆盖。 session_search时间窗:新增after/before边界(ISO 日期或7d/24h/2w这类相对时长),严格匹配失败时放宽为 OR 条件重试一次。- 桌面端:聊天/界面字体选择(#111226)、最小化到托盘(#118441)、修饰键轻点唤起 HUD(#118446)、每个会话独立的状态栈抽屉(#118407)、插件卸载与本地引擎一键更新。
- 一次更新只重启一次网关:
hermes -p X update与hermes -p Y update合计只重启一次宿主网关,重启通知送达每个被服务的 profile(#118108)。 - 目录更新:FAL 视频族新增 LTX 2.5 与 Kling O3 Standard;插件目录新增一批社区插件,并为每个插件与作者提供独立页面(README 钉在已审核提交上)。
Fixes
- 托管网关返回 429 时,
image_generate与 FAL 视频会被识别为限流并重试一次,而不是提示“模型可能未启用”(#118311)。 - 更新后发给某个始终未连接平台的通知,不再每 2 秒重试到永久(#118312)。
- 自建单槽本地模型上,自动起标题不再与回合回复争抢同一个槽位(#117494)。
- 图片被提供方拒绝时,只清理本次请求的副本,不再把整个会话标记为不支持视觉(#118316)。
- 压缩 worker 的
TimeoutError不再被误判为轮询超时(#118319);会话维护任务移到自己的线程池,不再饿死回合正文(#118318);ASCII 编解码恢复过程中会话历史保持完整(#118313)。 - Windows 上清理只读 git 对象(检查点、插件、MCP 目录、profile 分发)不再失败(#117609)。
Upgrade
hermes update # git 安装
# Docker / Hermes Cloud:从本 tag 构建的镜像
docker pull nousresearch/hermes-agent:v2026.9.21
跑多个 profile 的机器,升级后建议先 hermes gateway status,再看一次 hermes gateway migrate --multiplex --dry-run。