ARTICLE · 1267771
OpenClaw 2026.10.8 更新了什么:162 个 PR,功能只写了一行
本文关键词:OpenClaw 2026.10.8 更新内容、OpenClaw 要不要升级、OpenClaw 安装失败 EBADENGINE、OpenClaw 需要哪个 Node 版本、Node 24.22.1 为什么必须、extended-stable 和 latest 怎么选、OpenClaw 升级后怎么检查、OpenClaw 安全更新

〇、先给结论
这版没有新玩法,它修的是「跑着跑着不动了」。 162 个 PR 里没有一条是让你多一个功能入口,全部集中在四类你只在出问题才会注意到的地方:升级能不能走完、Gateway 会不会被一条消息卡住、会话能不能继续收消息、执行权限的边界有没有漏。
唯一的可见变化只对新装的人有用。 首次配置 OpenAI 时模型选择器不再只有一个模型——如果你已经在跑,这条与你无关。
升级前要先解决的不是 OpenClaw,是 Node。 门槛在 2026.10.6 就抬到 24.22.1 了,本版没再抬,但它把「为什么必须这两条线」的原因补全了:eMudhra 密钥事件。
一句话带走:这是一版可以照着文末顺序升、升完照着三条命令查的维护版;真正需要你决策的是 Node 版本,不是要不要装它。
一、先定位版本:同一天有三个「新版本」
2026-10-27 那天,GitHub 上的 release 页出现了三个:
| latest |
npm 侧的 dist-tags 当天就是这三个值:latest=2026.10.8、extended-stable=2026.9.35、beta=2026.10.10-beta.4。
所以「OpenClaw 发布了新版本」这句话本身没有信息量,你必须先说清是哪条线。三条线在 10 月的节奏是:latest 线 10-10 起连发 10.1/10.2/10.3/10.4/10.5/10.6/10.7/10.8,extended-stable 线同期出 9.33/9.34/9.35,beta 线出到 10.10-beta.4。
还有一个只能从发布页读出来的时间差:9.35 的正文第一句写着「本发布时最新的 OpenClaw 是 2026.10.7」,而它发布 9 小时半之后 10.8 就来了。extended-stable 是「月底快照 + 只补洞」,它的自述永远比 latest 慢一步——这不是错,是它的机制。但你要知道它慢,别拿 LTS 的正文当全局最新。
一句话结论:判断自己在哪条线上,看 npm 的 dist-tags,别看版本号大小;2026.9.35 比 2026.10.8 号大,但它属于 LTS 线。
二、162 个 PR 和 1 行功能:官方自己怎么标的
先把可核对性做出来,再讲内容。这三件事你一分钟就能自己复核:
一,数 PR。 release 正文末尾有个 Complete contribution record 小节,声明:
This audited record covers the complete v2026.10.7..fdd5997b8fa1c0b69159adcadd1d6ca191416e09 history: 162 in-range PRs + 0 retained seed-only PRs = 162 unique PRs.
它下面逐行列出 PR #<编号>。我拿正则把那一节的编号去重数了一遍:162 个,和声明一致。上一版 2026.10.7 同法是 70 个,两版清单交集为 0——也就是说这 162 条不是把上次的重抄一遍。
二,对哈希。 发布页写着 integrity: sha512-fWOIOOyddIBq…(完整串在页底),npm view openclaw@2026.10.8 dist.integrity 返回的是同一串。你在装之前就能确认自己拿到的是发布页描述的那个包,而不是「同名近邻」。
三,看体量。 解包体积 2026.10.7 → 2026.10.8 是 249,687,029 → 249,953,248 字节,+266,219 B(+0.11%);而 2026.10.10-beta.4 是 271,473,250 字节,比 latest 大 8.6%。补丁级的增量和新功能的增量,在这三个数字上是能一眼分开的。
然后才是内容:Highlights 7 条、Changes 1 条、Fixes 20 条。28 条分组说明包含了 162 个 PR。
一句话结论:这一版「看不见的内容」比「看得见的」多一个数量级——这才是维护版该有的样子;但也意味着你不能只读 Highlights 就以为自己知道了全部。

三、先解决 Node:这条门槛不是这版抬的,但原因是这版补全的
engines 字段写的是 >=24.22.1 <25 || >=26.12.1。注意 2026.10.7 的 engines 和 10.8 一模一样——门槛不是这次抬的,是 2026.10.6 抬的。
但这一版把「为什么是这两个号」讲透了。官方安装文档的原句:
OpenClaw requires Node 24.22.1+ or Node 26.12.1+ with a WAL-reset-safe linked SQLite library.
These releases reject the keys compromised in the October 2026 eMudhra incident.
Node 22, 23, 25, Node 24 before 24.22.1, and Node 26 before 26.12.1 are unsupported.
中间那句是关键:eMudhra。2026 年 10 月那起证书机构密钥被攻破的事件,Node 侧在 10-20 发的 24.22.1、10-21 发的 26.12.1 里做了拒绝。而 2026.10.8 的安全加固条目里,正好有一条「secret egress proxy 拒绝不受信任的 eMudhra 链」(#179249)。两件事是同一条链上的两端:运行时先拒证书,OpenClaw 再拒自己出网代理里的不受信任链。
顺带两条同样在文档里的实用信息:官方推荐 Node 26,理由是「Gateway 启动明显更快、内存占用比 Node 24 低」;Node 27 也接受,包括 v27.0.0-head 这类开发标签。
那么门槛不满足会怎样?我在本机做了实测(细节看第七节)。npm 不会立刻拒绝你——它先只给一条 EBADENGINE warning,把 292 个依赖包全部下载解包,最后才由包自带的 preinstall 脚本判定:npm error code 1,报的是「this OpenClaw release requires Node >=24.22.1 <25 || >=26.12.1 / detected Node 24.20.0」。你的体感会是「装了很久然后失败」,而不是「一秒报错」。
一句话结论:先把 node -v 调到 24.22.1+ 或 26.12.1+,再谈升级;这是本版对绝大多数人真正的阻塞点,而且它有安全理由,不是刁难。

四、那 162 个 PR 修的是哪些「你已经遇到过但没上报」的事
按读者场景挑,不按官方分组顺序复述。
最该看一眼的是「Gateway 被一条消息卡住」。 Fixes 里有 Gateway stability and streaming 一条,提到:超长的 HTML/JSX 回答、精心构造的 Teams HTML、长得像工具调用的回复,都不再卡住 Gateway。LTS 那条线的措辞更直白——「no longer stall the Gateway event loop for seconds at a time」。它对应的 PR(#183438、#183252)同时出现在 2026.9.35 里。
为什么值得你在意:这类问题的攻击面不在你自己的 agent 上,而在任何能给你发消息的通道上。你的 agent 只是那条消息的第一读者。
第二类是升级本身。Updates that finish and recover:一次普通的 post-update Doctor 失败现在会重启 Gateway 而不是把它留在停止状态;一个孤儿的 maintenance worker 不再阻塞所有 CLI 命令和 Gateway 启动;更新不再在 ACL 文件系统、Windows 上 pnpm 的可选依赖链接、pnpm 10 全局安装等场景中止。
第三类是 Windows。 本版和 Windows 直接相关的条目有 5 处,其中两条只有真在受管环境里跑过才会写出来:agent exec 要在装有 Store PowerShell 的 S4U 计划任务下能工作(#182898),以及启用 Endpoint DLP 的机器上要能加载原生插件(#179949)。加上 Windows 安装器走 iex、托管更新不再被 TEMP 别名自锁。
第四类是「会话不再卡住收消息」。 killed run 释放它的 restart-recovery 栅栏、被打断的子会话在 Gateway 重启后能恢复、回程发布失败时入站消息不再无限重试。
第六类才是安全加固的其余 5 条(连同上一节那条共 6 条,逐条给号,方便你回原文搜):allowlist 模式下 test -v 的操作数需要审批(#180880)、generic node invoke 拒收浏览器代理命令(#179880)、沙箱内派生的子进程不能再起宿主 CLI 后端(#178742)、Fish Audio 与 Gradium 的报错不再泄露 API key(#178877)、深层嵌套的 Tlon 内容不再卡死通道(#177536)。注意本版的 Security hardening 条目没有给 CVE 编号,谁要是告诉你这版修了某个 CVE,那是别人家的。
第一条尤其值得复现一次:如果你在用 exec 白名单模式,test -v 这类操作数以前是不需要批准就能过白名单的,现在需要。这不是新功能,是把你以前的一条绕行路径关掉了。如果你以前的自动化脚本恰好依赖它,你会在这一版之后突然看到审批弹窗——那不是回归,是修复生效了。

五、你在 LTS 线上,该不该动
这是本版最实用的一张对照表。
extended-stable 的 2026.9.35 与 latest 的 2026.10.8 同日发布。我把 10.8 的逐条 PR 清单(162 个)拿去和 9.35 正文里出现的编号对:43 个交集。
9.35 自己给了它的口径:这轮维护审计覆盖 main 上 3,595 个提交(从 2026-10-21 的 beaee570a5d4 起),最后应用或改写 78 个修复;其余归为「不受影响 / 已被覆盖 / 带原因排除」。
3,595 个提交进、78 个修复出。这是 LTS 的代价,也是它的价值。所以别用版本号大小判断「我是不是最新版」,要用 PR 号判断「我关心的那条修有没有落到我的线上」。 方法很笨但可靠:把你要的那条修对应的 PR 号,拿 grep 去搜另一条线的 release 正文。搜到了,你就知道你什么时候能拿到;搜不到,你就知道还得等多久、或者要不要换线。
一句话结论:LTS 用户不必为 10.8 换线;但如果 10.8 里某条修正是你现在的问题,先去 9.35 正文里搜它的 PR 号——43 条已经在里面了。
六、升不升:三种人的判据
你在 2026.10.7:直接升。这版 engines 没变、包只涨 261KB,属于纯补丁;10.7 的 70 个 PR 与本版 162 个零重叠,没有「重复升级」的浪费。
你在 extended-stable 9.3x:留在原线,按第五节去核对那个 PR 号。
你低于 Node 门槛:先升 Node,选 26.12.1+(官方推荐,理由是 Gateway 起得快、省内存)。别硬升 OpenClaw——npm 会先给 warning、把包下完,再由包的生命周期脚本拦你,你会白等一次下载。
升完之后,官方 troubleshooting 页给的自查顺序(逐字):
openclaw status --allopenclaw update status --jsonopenclaw gateway status --deepopenclaw doctor --fixopenclaw gateway restart
想换线或先看一眼,命令也在文档里:openclaw update --channel extended-stable、openclaw update --dry-run、openclaw update cleanup --dry-run。
还有一处只有翻发布页才看见的漏口:本版 release 页的校验区块自己写着 Android APK: skipped,理由写得很具体——apps/android/version.json 是 2026.8.2,而 release train 是 2026.10.8,要在下次打 tag 前跑一次版本 pin。同页 npm Telegram beta E2E: not supplied。也就是说:Gateway 和 CLI 跟上了,Android 伴侣应用这次没跟着发版。 手机端跟版要单独确认,别假设「我升了 OpenClaw」就等于所有端都升了。

七、我拿自己的机器复现了这道门槛
为了确认「门槛不足时到底是什么表现」,我把 2026.10.8 装进一个隔离目录(不碰全局安装),用 PATH 上那个 Node——v24.20.0,差 0.2.1 不满足。
npm 先给出的不是错误,是警告:
npm warn EBADENGINE package: 'openclaw@2026.10.8',npm warn EBADENGINE required: { node: '>=24.22.1 <25 || >=26.12.1' },npm warn EBADENGINE current: { node: 'v24.20.0', npm: '11.19.0' }
然后它照常把 292 个依赖包下载、解包完成——注意这里已经花掉你几分钟——最后才轮到包的 preinstall 脚本判定:
npm error code 1npm error command C:\Windows\system32\cmd.exe /d /s /c node scripts/preinstall-package-manager-warning.mjsnpm error [openclaw] error: this OpenClaw release requires Node >=24.22.1 <25 || >=26.12.1.npm error [openclaw] detected Node 24.20.0 (exec: C:\Program Files\nodejs\node.exe).npm error [openclaw] upgrade Node, then retry the OpenClaw update.
三条信息值得记住。第一,拒绝你的是包自带的脚本,不是 npm——所以 --engine-strict=false、加 --force 这类「让 npm 闭嘴」的常见反应对它无效。第二,它明确告诉你用的是哪个 node.exe(这里是我的全局安装路径),意味着机器上装了多个 Node 时,它认的是它自己解析到的那一个。第三,失败后 npm 的清理会留一地 EPERM: operation not permitted, rmdir——Windows 上解包到一半被拒,残留目录得手工删。
由此得到两个可复用的判据:装之前先 node -v 对一遍 npm view openclaw@2026.10.8 engines --json,一行命令就能确认,不用真下载 250MB;如果已经失败,先确认你交互式 shell 里的 node -v 和报错里那个 exec 路径是不是同一个 Node——很多时候你「已经升过了」,升的是另一个。
(本次实测全程写在独立前缀目录,未改动系统 Node、未启动 Gateway。)

八、三个小办法,比读十条 Highlights 有用
① 一分钟判断自己在哪条线。 只看 npm 的标签,别看装了什么:
npm view openclaw dist-tags --json
返回三个值,你手上的版本落在哪个 key 里,你就在哪条线上。
② 装之前先证明包没被换。 发布页的 integrity 串和 npm view openclaw@<版本> dist.integrity 应当逐字相等。这版我核过,相等。
③ 用 PR 号跨线搜修。 你在意的那条修,从 release 正文里抄出它的 #编号,去另一条线的正文搜。这比读总结靠得住,因为总结会分组、会省略,编号不会。
九、收尾
2026.10.8 是那种你不会在朋友圈看到讨论的版本:162 个 PR、1 行功能、28 条说明、6 项安全加固、1 个跳过的 Android 产物。 它的价值不在你多能得到什么,而在你少会遇到什么——少遇到一次升级把 Gateway 留在停止状态、少遇到一条外部消息卡住事件循环、少遇到一次白名单绕行。
而它真正需要你做的决定只有一个:把 Node 挪到 24.22.1+ 或 26.12.1+。 那两条线之所以是这两条,是因为一家证书机构在 10 月被人拿到了密钥。
参考资料
•OpenClaw 官方 release 页 v2026.10.8 / v2026.9.35 / v2026.10.10-beta.4;
•OpenClaw 文档 install/node、cli/update、gateway/troubleshooting/updates-and-rollbacks;
•npm registry 包元数据与下载量接口;
•nodejs.org 发布索引。
如果觉得文章对你有帮助,记得点赞、在看、转发支持一下~ 欢迎扫码关注本公众号解锁更多AI编程与AI办公技能点。















































































