2026 年 10 月 14 日北京时间凌晨,OpenClaw 的下载页出现了一个新版本:v2026.10.3。它在 GitHub 上的正式发布时间是 2026-10-13 21:49(北京时间,UTC 13:49:25),距上一个稳定版 v2026.10.2 只有 1 天 8 小时 14 分。
如果你只用一句话概括这个版本,那会是:「它把升级失败这件事本身当成 bug 修了,而且修得很彻底」——但更值得注意、也更容易被忽略的事实是:在这个版本 52 条修复说明里,有 9 条明确写着「必须先装上修复过的更新器,这个修复才生效」。
这句话看起来像一条不起眼的免责说明,但它其实划出了一条真实的分界线,把 OpenClaw 的用户分成了「已经能升级的人」和「正因为升级不了才需要这个版本的人」。本文就从这条分界线开始。
(本文全部版本号、发布时间、PR 编号、贡献者统计均取自 OpenClaw 官方 GitHub Releases API 与仓库 CHANGELOG 原始文件,抓取时间 2026-10-14 06:00-06:10 北京时间。)
一、先看版本规模:90 commits、79 PR、99 位贡献者
v2026.10.3 的发布页头部写着 90 commits · 79 pull requests · 99 contributors。而仓库里的 CHANGELOG 文件在正文开头写的是 79 pull requests, 8 direct commits, and 97 contributors。
这个差异值得说明一下,而不是简单当成矛盾:90 commits 与 8 direct commits + 79 PR 在「直接提交 vs 走 PR 合并」的拆法上并不等价,contributor 99 与 97 的差通常来自是否把 release 自动化账号计入。GitHub 发布页统计的是最终落到 commit 图上的全部作者,CHANGELOG 是发布脚本按自己口径写的。两个数字都没有写错,只是口径不同——本文引用时一律标注来源,不做合并。
我们实际解析 CHANGELOG 文件得到的是:52 条修复条目、10 个分类小节、62 个唯一 PR 链接。这 52 条按官方分类落在这 10 个桶里:
| 分类小节 | 说明 |
|---|---|
| Updates and Maintenance | 升级与维护,本版本最大的一块 |
| Models and Providers | 模型与供应商接入 |
| Plugins and Integrations | 插件与集成 |
| Native Apps | macOS 原生应用 |
| Messaging | 消息通道 |
| Security and Privacy | 安全与隐私 |
| Memory | 记忆文件 |
| Automations and Scheduling | 自动化与调度 |
| Quality-of-Life Improvements | 体验优化 |
| Other Bug Fixes | 其他修复 |
52 条里,Updates and Maintenance 一个小节就占了 23 条,接近全版本的一半。这说明这一版的工程重心非常明确:不在加功能,而在把「升级/修复/恢复」这条链路本身修通。



二、核心发现:9 条修复卡在「自举门」上
这是本文最想讲清楚的一点。
我们逐条扫描了 52 条修复说明的原始英文文本,筛出所有带有这类措辞的条目——「requires the fixed updater to be installed before it starts the upgrade」(必须先装上修复过的更新器,升级才会开始)、「must already contain this fix」(更新器必须已包含此修复)、「older updaters need the manual installation or recovery first step」(旧更新器需要先走手动安装或恢复步骤)。
结果是 9 条。占全版本 52 条的 17.3%。它们分别是:
| # | 修复条目 | PR | 门控措辞 |
|---|---|---|---|
| 1 | Blocked updates(被阻塞的升级) | #168388、#169038 | 已被阻塞的旧更新器需先手动恢复 |
| 2 | FreeBSD package recovery | #168775 | 由修复后的更新器生成的恢复助手才生效 |
| 3 | Candidate checks with older updaters | #170195 | 面向「旧更新器 + 新候选版本」场景 |
| 4 | Windows update and recovery paths | #169292、#169397 | 需修复过的更新器先装好 |
| 5 | pnpm 12 launchers | #170131 | 更新器须已含此修复,否则需手动修复 |
| 6 | Busy state databases | #168210、#169283 | 驱动侧改进,须由修复后的更新器启动升级 |
| 7 | Unrelated dependency copying | #168927、#169551 | 启动升级的更新器必须已含此修复 |
| 8 | Configured update memory limits | #168889 | 须在升级开始前装上修复版 |
| 9 | Plugin package repairs | #170339 | 同上,修复包保存依赖修复版 |
把这份表反过来读,含义就清楚了:修复「升级器」的 bug,本身需要先有一个已经修好的升级器。
这是一个自指问题,工程上叫自举(bootstrapping)门。它不是疏漏,而是有意的安全设计——因为更新器要替换自己、要在替换过程中保留恢复记录、要在替换失败时可靠回滚,任何一处写错都可能让用户彻底无法启动。所以面对一个已经卡住、根本跑不起来的安装环境,最稳妥的做法不是让新代码远程自愈,而是拒绝冒险,明确告诉用户「请走手动这一步」。
官方为此在文档里开了一整块专门的分区。在 docs.openclaw.ai/install/updating 页面右侧的目录里,你可以直接看到这几个条目:
- Recommended: openclaw update —— 推荐路径
- Recover an unfinished publication after a new release —— 新版本发布后如何恢复一次未完成的发布
- Recover a completed receipt with an older updater —— 用旧更新器恢复一条已完成的回执
- Unfinished publication and rollback —— 未完成发布与回滚
- Updating from chat —— 从聊天里发起升级
- Inspect FreeBSD service discovery —— 检查 FreeBSD 服务发现
注意第三条 Recover a completed receipt with an older updater:它在描述的正是自举门背后那类用户的处境——「回执(receipt)已经完成、记录已经写好了,但你的更新器版本太老,认不出这条记录,于是拒绝继续」。官方给出的解法不是让老更新器变得聪明,而是提供一个独立的恢复助手:用它保留那条已完成记录,再让原本被卡住的更新器解锁。这是把问题隔离,而不是把复杂度塞进老代码。
三、被门控的 9 条,各自修的是什么
为了让「9/52」这个数字不至于变成一个干巴巴的统计,下面逐条说明它们实际对应的故障场景。
3.1 被阻塞的升级(#168388 + 169038)
这是整个版本的核心。PR #168388 叫「recover blocked updates after completed receipt identity drift」(完成回执身份漂移后恢复被阻塞的升级),改动了 5 个文件,+172/-23 行;PR #169038 叫「unblock updates after lost leases and completed recovery」(租约丢失且恢复已完成时解除升级阻塞),改了 18 个文件,+599/-533 行——是本版本改动量最大的修复之一。
「回执身份漂移」指的是:回执本身的记录还在,但它标识的那个升级对象已经不再是当初那个了(身份发生漂移)。在这种情况下,老更新器会认为「我要恢复的这次升级,我已经记不清它对应的是谁」,于是出于安全拒绝继续——这在设计上是保守正确的,但对用户就是「我卡住了,而且我不知道该干嘛」。修复的方向是让系统能在这种漂移下仍然安全地判定出「这次可以恢复」。
3.2 FreeBSD 包恢复(#168775)
修复后更新器生成的恢复助手,才能修复或退役 FreeBSD 上被中断的 npm 包更新;老助手仍然只能查状态。官方明确划了一条边界:包恢复与「重启 Gateway」或「验证 Gateway」是分开的,恢复完不代表 Gateway 自动就好了。这是把「包」和「服务」两件事解耦,避免用户以为跑完恢复就万事大吉。
3.3 旧更新器下的候选检查(#170195)
一个非常务实的判断:以前只要「Doctor 会去更新版本、setup 或迁移相关的记账信息」,新候选版本就会被拒绝——哪怕这次拒绝并不涉及任何真实的设置修复或实质迁移。修复之后,新候选不会再仅因为「Doctor 顺带要改点记账」就被否掉。#170195 改了 10 个文件,+185/-13 行。
这类修复的价值在于:它砍掉的是大量「莫名其妙被拒」的假阳性拦截,而不是修某个具体功能。
3.4 Windows 路径与恢复(#169292 + 169397)
Windows 8.3 短名、大小写差异、恢复快照「拒绝自己的临时目录」——这些都是只有 Windows 用户才会撞上的怪问题。官方在说明里写得很直白:路径修正需要修复过的更新器在升级开始之前就装好。也就是说,Windows 用户如果正被短名问题卡住,光等 10.3 发布是没用的。
3.5 pnpm 12 启动器(#170131)
原生 pnpm 更新在暂存清理之后会让 openclaw 命令失效,符号链接的全局 bin 目录也受影响。这个 PR 改了 +215/-28 行,属于中等体量。官方给了明确的补救路径:已经坏掉的命令需要手动修复,或在备份后用同一账号、同一全局目录做一次同版本 pnpm 重装。
3.6 状态数据库繁忙(#168210 + 169283)
这一组揭示了升级失败的一个常见误报来源:可选的进度日志仅仅因为数据库短暂繁忙就中止整个升级。修复后,这类可选日志不再有中止权;必选的恢复写入仍然保持强制。同时 update-history 写入阻塞 Gateway 工作的时间也缩短了——也就是说,之前一次升级会连带让 Gateway 的 cron 和清理任务一起卡住。
3.7 无关依赖复制(#168927 + 169551)
升级时会把「不相关的外层安装」的依赖也复制进来,还会扫描 npm-global 里毫不相关的工具包。修复后更新器只保留 OpenClaw 自己的依赖。两个 PR 分别是 +93/-1 和 +72/-22 行。
3.8 内存上限继承(#168889)
使用捕获到的服务设置运行的升级命令,现在会保留配置好的 Node 内存上限,包括你在 shell 里临时改的 memory-only 覆盖值。+116/-12 行。
3.9 插件包修复(#170339)
这是体量最大的一条:+516/-82 行。修复后,替换包可以在数据迁移未完成时先保存下来,让 Doctor 能继续往下走。但官方同时挂了一个非常明确的前提警告:在重启或重新加载替换包之前,必须先跑完 openclaw doctor --fix。这是一个典型的「不能跳步」说明。
四、另一个容易被忽略的点:谁能合并进来
我们统计了 CHANGELOG 里全部 51 次致谢提及,分布非常集中:
| 贡献者 | 被提及次数 | 大致角色(据 PR 标题) |
|---|---|---|
| @steipete | 26 | 修复(update/doctor) 主力,几乎覆盖全部 9 条自举门相关条目 |
| @RomneyDa | 8 | Doctor / 插件 / 更新交接 |
| @obviyus | 4 | 模型与供应商侧(OpenAI、Claude CLI、插件目录) |
其余贡献者多数只出现 1 次。也就是说:9 条自举门相关的修复里,绝大部分由同一位维护者主导。这既是效率也是风险信号——读者应当意识到,这个「自举门」不是某个广泛讨论后的架构决定,而是一个人主导的强工程判断。它是否会在后续版本继续演进,目前只能保持观察,不能下结论。
五、发布时间线:这次 prerelease 跑在了 stable 前面
把最近四个版本的发布时间按 UTC 排开,能看到一个此前没有出现过的顺序反转:
| 版本 | 类型 | UTC 发布时间 | 北京时间 |
|---|---|---|---|
| v2026.10.5-beta.2 | 预发布 | 2026-10-12 12:10:48 | 10-12 20:10 |
| v2026.10.2 | 稳定 | 2026-10-12 05:34:44 | 10-12 13:34 |
| v2026.10.5-beta.3 | 预发布 | 2026-10-13 10:00:37 | 10-13 18:00 |
| v2026.10.3 | 稳定 | 2026-10-13 13:49:25 | 10-13 21:49 |
三个可以量化的节奏信号:
- stable → stable 间隔 1 天 8 小时 14 分:v2026.10.2 → v2026.10.3。这是 OpenClaw 近期出现过的最短稳定版间隔之一。
- beta → beta 间隔 21 小时 49 分:10.5-beta.2 → 10.5-beta.3。预发布链从「一周一档」压到了「一天一档」。
- beta.3 比 10.3 stable 早 3 小时 48 分发布:这一次预发布跑在了稳定版前面。此前是 stable 先、beta 后。版本号上 10.5 大于 10.3,实际发布顺序却相反。
另外值得注意的是版本号本身:没有 v2026.10.4。10.3 之后直接跳到 10.5 预发布线,说明 10.4 这个号大概率已被预发布链占用或被跳过,不是一个遗漏。
六、发布资产与完整性证据
v2026.10.3 的资产清单完整度是这次发布的硬证据。GitHub Releases API 返回 19 个附件,加上自动生成的两个源码包(Source code zip / tar.gz),网页上显示 21 个 Assets。覆盖平台包括:
- macOS:
OpenClaw-2026.10.3-arm64.dmg(233 MB)、-arm64.zip(302 MB)、-arm64.dSYM.zip(38 MB 调试符号) - Windows:
-amd64.AppImage(167 MB)、-amd64.deb(47 MB) - Extended-Stable 通道:
2026.10.3-ibm_64.dmg(239 MB)、-ibm_64.dmg.zip、-ibm_64.zip - 证据链:
openclaw-2026.10.3-dependency-evidence.zip(294 KB)、-postpublish-evidence.json及对应 .sha256、-release-manifest.json及对应 .sha256 - 各资产均附带 sha256 校验和,发布页可见
完整性链同样完整:release SHA 为 59cb44796b0f1f0daa0e37af8b1495abb45d9bc1;npm 包 integrity 为 sha512-ncl6LntMlf76K39LFhVrDXQTbaGNAG5j52f7PL5P8vIn0knWmCrvfAe9DHMslFq+47HeOWBH2CBYQH8zEb+UAA==;并挂出了 release publish、npm preflight、full release validation、plugin npm publish、plugin ClawHub submission、OpenClaw npm publish 等六条 GitHub Actions 运行链接,以及一份完整的 release evidence 报告。
作为对照,v2026.10.5-beta.3(10-13 18:00 北京)只有 5 个附件,release SHA 为 1808b57b75f056fe4ae247d6cbc1ba68f1717858,其 CI 报告链接同样齐全。资产数量差异正好印证了「稳定版 / 预发布」的通道分层。
七、如果你正在用 OpenClaw,这个版本该怎么判断
基于上面的证据,给出三类读者的具体动作建议。
第一类:升级一直正常的人。可以放心升到 10.3。这一版的主要收益在稳态场景下不明显(修的都是边缘路径),但「Busy state databases」和「Unrelated dependency copying」这两条会让你在长期运行的 Gateway 上少一些莫名其妙的中断,值得拿。
第二类:已经卡在「被阻塞的升级」上的人。这是自举门最扎心的一类——你恰恰最需要 #168388 / #169038,却拿不到它们。官方给的正路是文档里的 Recover a completed receipt with an older updater:用独立恢复助手保留那条已完成回执,再让原更新器解锁。请务必保留 recovery journal(恢复日志)及其权限,不要为了图省事删掉。
第三类:Windows 短名路径 / pnpm 启动器失效 / Busy 数据库导致升级中止的人。这三类同样在 9 条自举门之内,光等版本发布没有用。Windows 路径问题需要先装好修复版更新器;pnpm 12 启动器按官方说明走手动修复或同版本重装(务必先备份);Busy 数据库则要确认你的更新器已经是修复版再重试。
关于 v2026.10.4 是否会补发、10.5 何时转正——目前没有官方时间表,本文不做预测。
八、可信度声明
本文严格区分「已核验事实」与「未核验项」,不混淆两者:
已核验(直接来自官方源,2026-10-14 06:00-06:10 北京时间抓取): v2026.10.3 与 v2026.10.5-beta.3 的版本号、pre-release 标记、UTC 发布时间;v2026.10.3 的 release SHA、npm integrity、19 个附件、21 个页面资产、6 条 Actions 链接;CHANGELOG 原文的 52 条条目 / 10 个分类 / 62 个唯一 PR 链接 / 51 次致谢提及及贡献者分布;12 个 PR 的标题与增删行数(GitHub API 逐个查询);官方文档 docs.openclaw.ai/install/updating 右侧目录的实际条目。
已观察到的口径差异(不做合并): 发布页 90 commits / 99 contributors 与 CHANGELOG 8 direct commits / 97 contributors 的差异,本文如实并列标注。
未核验 / UNKNOWN(本文不做断言): v2026.10.4 是否存在及原因;10.5 预发布线转正时间;9 条自举门修复在真实故障机器上的实际成功率;自举门设计是否会成为长期模式;本文未在任何真实 Windows / FreeBSD / pnpm 12 环境中执行过升级测试,所有场景描述均来自官方文档与 PR 标题,非实测。
未做的事: 未在任何环境执行 openclaw update 或 doctor;未修改任何 OpenClaw 配置;未访问任何认证端点。
九、来源与可核验链接
本文全部链接均为官方源,可直接复核:
- OpenClaw v2026.10.3 官方发布页(发布日期 / 90 commits·79 PR·99 contributors / release SHA / integrity / 21 个 Assets / 6 条 Actions)
- CHANGELOG/2026.10.3.md 仓库原文(52 条修复说明 / 10 个分类 / 62 个唯一 PR 链接 / 51 次致谢)
- docs.openclaw.ai 格式化发布说明
- docs.openclaw.ai/install/updating 官方升级文档(自举门对应的三个恢复小节)
- docs.openclaw.ai/cli/update/repair-and-recovery 修复与恢复指南
- docs.openclaw.ai/cli/update 更新排障
- docs.openclaw.ai 更新方式(npm / pnpm / bun 手工替代路径)
- docs.openclaw.ai 更新执行机制
- docs.openclaw.ai Doctor 状态与会话恢复
- docs.openclaw.ai Doctor 工作区与记忆文件修复
- docs.openclaw.ai macOS 内置 Gateway 指南
- PR #168388 recover blocked updates after completed receipt identity drift(+172/-23,5 files)
- PR #169038 unblock updates after lost leases and completed recovery(+599/-533,18 files)
- PR #170195 avoid bookkeeping-only repair refusals(+185/-13,10 files)
- PR #170170 reclaim retained runtimes blocking npm recovery(+105/-59,11 files)
- PR #170218 stop chat updates rolling back during cleanup(+30/-20,2 files)
- PR #170339 plugins: unblock repairs while data migrations are pending(+516/-82)
- PR #170131 keep pnpm 12 launchers working after native updates(+215/-28)
- PR #168210 ride out state database contention instead of failing the update(+492/-78)
- PR #169283 update history writes stall Gateway cron and cleanup(+74/-7)
- PR #168927 avoid copying unrelated dependencies during updates(+93/-1)
- PR #169551 npm-global updates retain unrelated global packages(+72/-22)
- PR #168889 preserve service heap limits in update processes(+116/-12)
- PR #169292 keep updater workers on the retained runtime under Windows short names(+59/-9)
- PR #169397 Windows update and recovery paths
- PR #168775 FreeBSD package recovery refuses repair and retire(+81/-17)
- PR #169436 doctor: recovery copies miss Canvas and Memory Core files(+185/-4)
- PR #170256 doctor: preserve OAuth profiles when legacy auth is unreadable(+290/-211)
- PR #169403 macos: authenticate app-hosted first run and speed up setup(+576/-7)
- 完整 release CI 证据报告(2026.10.3)
- OpenClaw v2026.10.5-beta.3 官方发布页(10-13 18:00 北京 / 5 个附件 / release SHA 1808b57b…)
- npm 包 openclaw@2026.10.3
- GitHub Releases API 原始数据(v2026.10.3)
本文由 AI 基于官方公开资料整理,所有技术结论均可按上方链接逐条复核。我们未在任何真实环境执行升级测试,涉及具体机器的行为描述请以你本地环境为准。








