v0.21.7 之后 `hermes update` 只跟正式 tag 走了:先搞清你的安装在哪条通道


你敲完 hermes update,终端刷了一屏,最后那句“更新完成”让你有点没底——这次装上的到底是昨天刚合的某个提交,还是三天前那个正式版本?如果你是在一台长期跑着的机器上管 Hermes,这个问题很实际:你既不想落后于修复,也不想在某天早上发现自己跟着 main 跑到一个还没被人踩过的状态上。

v0.21.7 改的正是这件事。它不是一堆新功能,而是一次策略调整:源码安装的更新对象从“main 上每一个提交”变成了“最新发布的正式版本”。这篇不讲发布流程八卦,只讲清楚两件事——你现在在哪条通道上、以及怎么确认手上的版本。

这次真正变的是“你去哪里拿更新”

以前用 git 安装 Hermes,hermes update 的语义是“把工作树拉到 main 最新”。好处是修复来得快,代价是你始终站在滚动的地板上:main 每天都在动,某个合并到一半的状态可能只活了几个小时,而你的机器正好在那个时候更新了。

v0.21.7 之后,默认行为变成:只升到最新的 vX.Y.Z 正式 tag。具体规则值得逐条看清楚,因为它对“我是不是落后了”的直觉有影响:

  • 你比最新 tag 旧 → 更新到那个 tag。
  • 你已经在最新 tag 之上(比如之前跟过 main)→ 什么都不动,原地等下一个正式版本。不会有任何回退动作。
  • fork 和镜像 → 仍然跟 main,不受影响。
  • Microsoft Store、MSIX、桌面端自带安装包 → 这次包装方式没变,跟着各自的包走。

最后一条最容易被误读成“更新坏了”。它其实是刻意设计的:把你从 main 往 tag 上“拽回去”会让一次普通更新变成一次降级,官方明确不做这件事。

通道 A:Stable releases(新的默认)

什么都不用配,源码安装默认就在这条通道上。更新时拿到的是最新正式 tag——就这次而言是 v0.21.7。

适合谁:想要“有人替你先踩过”的人。正式 tag 是从窗口里收敛出来的稳定点,它不会半夜变成另一个东西。

通道 B:Every commit(显式切过去)

想继续跟 main 的每个提交,一条命令:

hermes update --set-channel main

切过去之后,行为回到你熟悉的旧模式。切回来也一样是一条命令:

hermes update --set-channel stable

如果你手上的版本比较老、还不认识这两个参数,先跑一次普通的 hermes update 拿到支持通道切换的版本,再切。

两条通道是互斥的持续状态,不是“这次更新的一次性开关”——设一次,之后的每次更新都按它走。所以别在脚本里随手加,跑完自己忘了。

桌面端在哪里切

桌面端的开关在 Settings ▸ About ▸ Updates,里面有一个 Update channel 选项(Stable releases / Every commit)。它只对源码安装有意义:Store、MSIX 和自带安装包的安装方式和你选择哪条通道无关。

顺带一提,更新对话框现在会显示你当前在哪条通道上。如果你以前是靠“我记得我设过”来回答这个问题,现在可以让界面替你回答。

顺手修掉的两件日常打断

发版正文里另外两条内容,是那种“不遇到就不觉得重要、遇到就卡住半天”的修复:

推理在 resume 之后不再丢失。 用 Anthropic 或 Bedrock Converse 的推理模型时,带签名的思考内容现在会在 hermes chat --resume 之后、以及网关的下一轮里正确重放;Bedrock Converse 的推理模型也不再在恢复的会话上被拒绝。这里的具体机制(哪些路线读哪些字段、被 4xx 拒绝后怎么记下来)值得单独展开,我们另写了一篇讲透:见 推理重放指南。

企业防火墙后面的更新不再失败。 之前 main 通道的更新会去取一条 release 记录,某些地区性防火墙会对这个请求回 403,更新就直接失败。现在这条检查会用你的 GitHub token(设了 GITHUB_TOKEN 或 gh auth login 就用),并且会把 GitHub 的限流如实报成限流,而不是一个含义不明的失败。

这个窗口里还有多少东西

发布的规模数据来自官方正文,测量于提交 1fd18277267152893a8a24792b79213e7ca3f899:

指标 数值
非合并提交 740
改动文件 4,156(+86,775 / −26,980)
已合并 PR 204
已关闭 issue 69

和 v0.21.6 一样,官方把完整整理的发版说明推迟到 v0.22.0,那一版会从 v0.21.0 开始补齐亮点、功能分区和贡献者名单。v0.21.7 的正文里也顺带列了一批“故意不在这里细说”的东西:插件可以跑应用内置动作、插件 SDK 的宠物气泡、插件在会话中途装好后无需重建提示词即可生效、订阅者的图片默认通道换成 Krea 2 Medium Turbo(带 FAL 兜底)、桌面更新更快、只检出一个 pin 的安装方式、压缩标记上报到 Relay,以及一批新的社区插件。这些我们会在接下来的文章里逐个讲,其中插件与应用动作那一篇已经发出来了:桌面插件动作与宠物气泡。

怎么确认你手上是哪个版本

三条命令,按你的安装方式挑:

# 版本号(git 安装会额外带领先 tag 的距离与短提交)
hermes version

# 当前通道与更新来源(源码安装)
hermes update --help

# Windows 上通过安装器/Store 安装的
hermes doctor

如果你怀疑更新“说成功但没动”,先看 hermes version 里 tag 有没有变,再看 hermes update --verbose 的输出。关于通道机制的更完整背景,可以回看我们之前那篇 稳定通道指南;想了解 v0.21.6 那套发布流水线,见 v0.21.6 发布解读。

升级

# CLI
hermes update

# 桌面端:自动更新;Microsoft Store:走 Store

# Docker / Hermes Cloud
docker pull nousresearch/hermes-agent:stable

升级完建议做一次自检,确认通道和版本都是你预期的:

hermes version
hermes config get agent.max_turns      # 顺手确认配置没被更新流程改动

一句话总结:v0.21.7 把“更新”从一件需要你盯着 main 的事,变成了一件可以放手的事——代价是你得先明确自己在哪条通道上。设好之后,剩下的交给下一个 tag。