v0.21.5 又是“没有发布说明”的补丁版:5 分钟查清你的安装到底得到了什么

早上刷到一条 “Hermes Agent v0.21.5 released”,你点进去,正文只有一小段:这是一个补丁 tag,把窗口里的改动收敛成稳定版本给 Docker 镜像和托管部署用,完整整理的发版说明推迟到 v0.22.0。你跑完了 hermes update,终端说升级成功。然后呢?你其实并不知道这次到底给自己带来了什么,也不知道该不该现在就升级。这不是你多疑,是补丁 tag 这种发布方式天生就会让人这么想。这篇就解决这一个问题:不靠发布说明,自己确认。
为什么补丁 tag 经常不写发布说明
先把这个“别扭”解释清楚,后面你就不用在每次补丁发布时重新困惑一遍。
Hermes 的发布有两种 tag。一种是语义版本的正经发布,比如 v0.20.0、v0.21.0,那种会配一份很长的发布说明:亮点、功能分区、贡献者名单。另一种是日期式 tag,比如这次的 v2026.9.24,它的作用是“把从上一个 tag 到现在的所有改动打成一个可以拉取的稳定版本”。
为什么需要它?因为 Docker 镜像、Hermes Cloud 和各类托管部署都从最新的 release tag 构建,而不是从 main 构建。你在 main 上修好的东西,云上的用户不会自动拿到——必须先进一个 tag。所以每次积累到一定量,官方就打一个补丁 tag 把窗口封起来。
代价是:这个 tag 里的东西没有被逐个整理和命名。这次的窗口是 v0.21.4 之后的 460 个已合并 PR、1,610 个非合并提交、4,828 个改动文件(+164,132 / −149,440)、475 个已关闭 issue,测量于提交 f97608f178d1ffeca59860195ab7da295f7c8e5f。官方在正文里明说:这些内容一件都不会漏,只是整理到 v0.22.0 一起写,那一版会从 v0.21.0 开始补全。
换句话说,“没有发布说明”不等于“没有东西”。你的升级包是真材实料的,只是清单还没写出来。
第一步:确认你手上是哪个版本
别凭感觉。跑一条命令:
hermes --version
你会看到类似 Hermes Agent v0.21.5 (2026.9.24) · upstream <提交> 的输出。注意这里两个版本号的关系:
| 你看到的 | 含义 |
|---|---|
v2026.9.24 |
日期式 tag,就是 GitHub release 页上的那个名字 |
v0.21.5 |
语义版本,产物名、镜像名、你的 config.yaml 里引用的都是它 |
它们是同一个发布,不是两个版本。看到 GitHub 上写 v2026.9.24 而本机写 v0.21.5 是正常的,别去“修正”它。
如果你是 git 安装,还可以顺手看看自己落在哪个提交上:
cd ~/.hermes/hermes-agent && git log --oneline -1
Docker 用户看镜像标签:nousresearch/hermes-agent:v2026.9.24 就是这一版。这次还多了一层变体,:latest-desktop / :main-desktop / :v*-desktop 带上了 Xvnc/Xfce 和 Playwright 的有头 Chromium,给的是 Bot Screen——托管镜像运行时装不了这些包(非特权用户、没有 sudo、/opt/hermes 是密封的),所以只能靠镜像层交。
第二步:别读 460 个 PR,读对比链接
官方的“完整变更对比”链接是唯一权威的清单入口:
https://github.com/NousResearch/hermes-agent/compare/v2026.9.21...v2026.9.24
它很长,但你可以只看三样东西:新文件(尤其是 website/docs/ 下新增的文档页,说明有新功能落地)、config_defaults.py 的 diff(说明有新配置项)、hermes_cli/ 的 diff(说明有新命令或新参数)。这三处扫一遍,比从头读 PR 标题快得多。
第三步:窗口里已经能用、但别处还没写过的 8 件事
下面这些是我把 tag 的内容逐个核对过、并且确认确实在这个 tag 里的变化。每一条都给出你实际要敲的东西。
1. 桌面端补齐法语、德语、西班牙语目录
桌面端现在有三套完整界面目录,在 Settings → Appearance → Language 里选。display.language: fr|de|es、以及 fr-CA、de-AT、es-419 这类地区别名都会解析到对应目录,而不是回落英文。产品名和标识符(Hermes、MCP、API、OAuth、模型 ID)保持原文。
2. 文字方向设置:Auto / RTL / LTR
同一页往下有 Chat display → Text direction。以前每个聊天正文块按“第一个强方向字符”猜方向,遇到“以拉丁人名开头的阿拉伯语段落”必然猜错。现在你可以直接指定:Auto 还是老行为,RTL/LTR 会给正文和两个输入框统一加 dir。代码块永远 LTR,界面外壳不翻转,也不会往文本里塞双向控制字符。这是界面上的阅读偏好,不是 config.yaml 的键。
3. Webhook 投递可以镜像进会话:你能直接回复那条告警了
以前 webhook 发完就走,你在那个聊天里追问,agent 只会问“你指的是谁?”。现在路由可以开 mirror_to_session: true:
hermes webhook subscribe ci-alerts \
--prompt "构建 {route} 失败了:{payload}" \
--deliver telegram \
--mirror-to-session
订阅成功后输出里会多一行提示,告诉你每次投递都会镜像进目标会话的上下文。默认关闭,只有真正的布尔 true 才开启。正文里会细讲边界(见下方链接)。
4. 每个模型选择器都能按 slug 加模型
模型菜单底部多了一行 Add custom model…,点了之后搜索框变成 slug 输入,边打边按已配置的 provider 给提示;加过的 slug 会作为普通条目留在列表里,带一个移除 ×。切换模型对话框、Settings → Model、编辑模型列表都能用。
5. 本地语音不再每喊一次就重新加载
新配置项 tts.keep_warm_seconds,默认 60:
hermes config get tts.keep_warm_seconds # 60
hermes config set tts.keep_warm_seconds 0 # 立刻卸载
最后一个持有点释放后,卸载会等这么久再执行;窗口内重新开启会取消卸载、复用已加载的模型。对“唤醒词式”语音尤其重要——那种对话在 ~2 秒预热后就结束,原来语音会在加载完几毫秒后被驱逐。
6. 桌面端语音循环开始读你的配置
朗读不再念 code block omitted、link 这类英文占位词,也不再默默丢表格:代码块和 URL 静默,表格改念表头行。口头停止读 voice.stop_phrases(默认 ["stop"])——以前只认写死的英文列表,所以按提示说 отбой 的俄语用户会把这句话当 prompt 发出去。打断播放阈值改用 voice.barge_in_threshold_multiplier(默认 3.0),旧的硬编码值高于蓝牙 HFP 耳机播放时的说话电平,导致对着回复说话永远打断不了。
7. 功能键语音快捷键可以重新绑定
一键口述变成未绑定的 composer.dictate 键盘动作,和语音对话分开,复用桌面端已有的 F 键 / Caps Lock / Delete / Space 捕获路径;被指派给渲染进程的 F12 能收到按键,没指派的 F12 保留 DevTools 行为。同一个窗口里,macOS 的功能键也修好了:TUI 解析器保留 F1–F12 序列,实时工作坞多了 Ctrl+R 作为 F7 的备选。
8. 一批只在本地化 Windows 上出现的故障被修掉
- 德语 / 西语 / 法语版 Windows 上,
%Z会在strftime内部抛UnicodeEncodeError,因为时区名以 ANSI 代码页字节到达、被解码成孤立代理字符。现在由hermes_time.safe_strftime()兜住,健康 locale 下输出与原来逐字节一致(前缀缓存的不变式因此成立)。 - 中文 Windows 上滚屏的
[gateway-crash] ... UnicodeDecodeError: 'gbk' codec can't decode修掉了:子进程输出现在固定按 UTF-8 解。 C:\...\report.html和 UNC 路径\\server\share\...现在能被识别成路径,也能正确预览,不会再被拼到工作目录后面变成/repo/C:\...。- Windows 冷启动时,后端事件循环会因为导入 gateway 模块而停住 12–28 秒,启动探针固定 10 秒就放弃,把一次正常冷启动判成启动失败。现在由本应用拉起的后端只要进程活着就会继续等,上限 90 秒。
五分钟自查清单
升级完想确认自己确实拿到了东西,敲这几条(在 v0.21.5 或更新的安装上):
hermes --version # 应该是 v0.21.5 (2026.9.24)
hermes config get tts.keep_warm_seconds # 60
hermes config get voice.stop_phrases # - stop
hermes config get voice.barge_in_threshold_multiplier # 3.0
hermes webhook list # 看目标路由有没有开启镜像
什么时候该等 v0.22.0
不需要。补丁 tag 里的东西就是已经跑在你机器上的代码,你的升级不需要等任何一份文档。真正需要等的是两类人:做下游分发的人(打包镜像、给团队发内部版本)和要给这次窗口写教程的人——他们的清单会好看一些。
如果你只是自己用 Hermes,判断标准应该只有一个:你现在遇到的某个具体问题,是不是已经被修掉了。这次的窗口里能对号入座的问题不少,上面那 8 组随便挑一条去试就行。
小结
- 补丁 tag 不写发布说明是机制,不是敷衍:它存在的理由是让 Docker 镜像和托管部署能拿到
main上的修复。 - 版本号有两个形状,
v2026.9.24和v0.21.5是同一个发布。 - 想看清单,
compare链接里只看新增文档、config_defaults.py的 diff、hermes_cli/的 diff 三处最省时间。 - 这个窗口里已经有 8 组变化可以直接用,从桌面端多语言目录到 Windows 的四个本地化崩溃修复。
如果你想要这个窗口的更完整记录,站内的 v0.21.5 发版页 按功能分区把它整理好了;想对比上一次的补丁窗口,可以看 v0.21.4 的窗口导览;webhook 镜像的用法细节在 Webhook 投递镜像指南 里;语音那一组变化看 本地语音的保活与逐句朗读。新装机器的话,安装指南 里有从零开始的步骤。