OpenClaw v2026.10.1 正式版运维视角:外部存储 + Cloudflare R2 备份落地、Bun-only 安装路径、8 MiB 技能加载预算与不可变安装代次怎么落地到生产
- slug:
openclaw-2026-10-1-backups-bun-installation-storage-r2-2026-10-12 - date: 2026-10-12 06:00 Asia/Shanghai
- 类目: AI 工具评测(cat=386)
- 触发: cron
e684cd79-549d-4342-9dd9-7f79674ae95706:00 OpenClaw slot - 草稿路径:
daily/articles/2026-10-12/openclaw-2026-10-1-backups-bun-installation-storage-r2-2026-10-12.md
本文是 v2026.10.1 正式版(2026-10-10 23:54 UTC / 北京 10-11 07:54 晋升 stable)的「运维深度解读」,与已有 30+ 篇 OpenClaw 文章(post 2531 / 2534 / 2556 / 2571 / 2581 / 2598 / 2610 / 2621 / 2629 / 2639 / 2652 等)的角度不重叠:本文从 IT 管理员和生产环境视角出发,专门讲四件直接影响生产稳定性的变更——「外部存储 + Cloudflare R2 备份」、「Bun-only 安装路径与 Bundled Mac/Linux 桌面包」、「安装代次(installation generations)的不可变与恢复语义」、「installed-skill 搜索的 8 MiB 加载预算与长文件 16 KiB 前缀规则」。post 2652 已经讲过 stable 推送后 14 个 PR 的 first-batch 后兼容治理,本文不重复。
一、为什么 10.1 stable 这 4 个点要单独写一篇文章
v2026.10.1 的官方 release notes(docs.openclaw.ai/releases/2026.10.1)一共罗列了 11 个 New and expanded features 主题 + 16 个 Fixes and refinements 主题。从「对运维影响」这个口径来排序,真正会改动生产部署脚本和灾备预案的只有 4 条:
- Backups on external storage + Cloudflare R2——把 OpenClaw 完整备份从「单台机器内」扩展到「外接磁盘 / 挂载存储 / R2 对象存储」,并允许恢复到 fresh staging 目录后再激活。
- Bundled desktop setup(Mac + Linux)——
This Mac桌面包默认自带 Gateway 与 Bun 运行时,结束了「必须先装 Node 18+ + 单独 CLI」的部署前提。 - Sealed immutable installation generations(隐含在 #161583 / #161754 / #164616 等 PR 中)——把安装/更新/修复流程从「覆盖」改为「不可变代次 + 显式激活」,
app updater接管,hosted process 在 app 失联时主动关闭。 - Installed-skill discovery 的 8 MiB 加载预算 + 16 KiB 文件前缀——把 agent 的技能加载从「prompt 里塞全量技能库」改为「按需搜索 + 显式 read」,单文件 256 KiB 上限,组合上限 8 MiB。
post 2652(v2026.10.1 stable post-7h 14-PR first-batch compat)已经从「PR 视角」写过 stable 的 first-batch,本文换「运维落地视角」:哪些 PR / 命令行语义必须改、灾备剧本怎么重写、桌面运维的「旧安装迁移」清单。
_截图:docs.openclaw.ai/releases/2026.10.1 首页(2026-10-12 06:08 Asia/Shanghai Chrome headless 1440×2400 实拍,URL:docs.openclaw.ai/releases/2026.10.1)_
二、Backups on external storage + Cloudflare R2:灾备剧本怎么改
2.1 之前能做什么、现在多出哪些选择
10.1 之前,OpenClaw 的完整备份默认落在「」或同盘另一个位置;恢复时直接覆盖当前工作目录。这对单台笔记本开发者够用,对生产环境 + 跨机器灾备完全不够——你没办法把一份备份扔到 R2 然后在另一台机器激活。
10.1 把这条线扩成 7 条可走路径(docs.openclaw.ai/install/backups#choose-a-path):
| 路径 | 命令 | 典型场景 |
|---|---|---|
| 一次性 state + workspace 归档 | openclaw backup create |
升级前手动存档 |
| 归档到磁盘 / 对象存储 | openclaw backup create --to |
写到 /Volumes/Backup/openclaw/ 或 S3-compatible 端点 |
| 仅数据库 | openclaw sqlite create |
SQLite 单独抽出来做 5 分钟粒度 |
| 内容增量 + 校验 | openclaw backup git create |
走 Git 内容寻址,适合可重建但不可全量重发的环境 |
| 常规保护 | (Gateway 自带) | 默认开启 |
| 持续增量 | Lifestream | 数据库 + 关键 metadata 的低频复制 |
| 周期增量到另一台机器 | sqlite3_rsync |
不走对象存储的内网节点同步 |
外接存储 / Cloudflare R2 的能力来自 PR #161913,由 @steipete 提交,PR 链接:#161913。
2.2 三个新约束:256 MiB 预留、namespace 隔离、passphrase 选 none
落地到灾备剧本时,10.1 引入的 3 个硬约束必须写进 runbook:
- 256 MiB 预留(PR #164492)——Full restore 在解压前会检查「archive size + 256 MiB 自由空间余量」是否满足。如果目标盘能测量容量、且剩余空间不够,直接拒绝恢复。这是为了防止「备份自己解到只剩一点空间的盘上、把数据库写崩」的场景。
- namespace 隔离(docs.openclaw.ai/install/backups)——多个运行实例必须使用不同 namespace;要接管一个已存在的 namespace,必须先确认其前任 owner 已停止。这一条对「多副本灾备」是关键。
- passphrase 二选一(同上)——上传到外接存储时,要么给一个 passphrase(加密上传),要么显式选
none(明文)。--output标志允许在加密上传的同时保留一份明文本地副本。
2.3 --verify 标志与 Backup symbolic-link caveat
文档明确给出验证命令:
openclaw backup create --output ~/Backups/openclaw --verify
openclaw backup restore --from <location> --verify
但有一个真实会踩的坑:绝对符号链接会保留原始目标位置。如果一份备份里有指向 /Users/alice/projects/foo 的符号链接,把它恢复到 /Users/bob/ 上后,那个符号链接依然指 alice 的路径。所以恢复时必须先看 the backup symbolic-link caveat 段落,确认链接指向的目录是否在新机器上存在。
另外一个小坑:--include-workspace 默认是 no-include-workspace,需要显式打开才会把工作区文件写进 .tar.gz。如果你的剧本之前依赖「备份 = state + workspace」,升级后必须显式加 --include-workspace,否则备份会只含 config + 凭证 + 数据库(按 docs 描述,state 包含 agent 配置与配置凭据,workspace 需要独立开关)。
2.4 R2 上传的实际命令语法
官方插件 docs.openclaw.ai/plugins/cloudflare 提供 R2 destination 配置。10.1 的语义是:先用 openclaw backup destinations add r2 注册 destination,再用 openclaw backup create --to r2: 写到 R2。加密用的 passphrase 与 destination 配置分离存储,恢复时必须同时持有 passphrase、destination marker 与 namespace 三个参数——任何一项丢失都无法恢复(这是 10.1 明确写在文档里的「Keep the passphrase, marker and namespace for recovery」一句,不是修辞)。
_截图:docs.openclaw.ai/install/backups(2026-10-12 06:09 Asia/Shanghai Chrome headless 1440×2200 实拍,URL:docs.openclaw.ai/install/backups)_
文档里那个黄色的 Warning 块是真正会被忽视的:Backups contain auth profiles, channel provider credentials, session history, and other sensitive records. Store them encrypted, restrict the destination like you restrict the live directory, and rotate credentials if you suspect a backup leaked. See Migrating between machines for the same rules applied to machine moves.——这条意思是,备份里包含 auth profile 与 channel credentials(与 state config 是同一个 namespace),所以 R2 bucket 的访问策略必须与生产数据库同级。9 月月报曾经发现 wp-sitemap 与 REST 数据滞后 25 条,与本主题无关,但「凭据级别一致」这件事是 10.1 第一次显式写进 docs。
三、Bundled desktop setup:Bun-only 安装路径与旧 Node 安装迁移
3.1 「不再需要先装 Node」是 10.1 桌面端最重要的变化
Mac 桌面 app 的 10.1 包(v2026.10.1)默认自带 Gateway + Bun 运行时 + SQLite 扩展,不再依赖系统 Node。这意味着:
- 新装走
This Mac桌面 app,安装结束 Gateway 已经在跑;用户第一次启动 app 不会看到「先装 Node 18+ / 20+」的引导界面。 - 后台模式新增「Keep OpenClaw running when the app is closed」开关,桌面 app 关闭时 Gateway 仍在跑;paused Gateway 不会因为开关变 false 而「自动恢复」——它会保持 paused 状态直到你显式 resume。
- bundled CLI 不覆盖更新版本(PR #164616):如果当前 CLI 检测到一个更新的 service 或 runtime 选择,拒绝覆盖并要求你显式 inspect。这是 10.1 引入「不可变代次」语义的最直接表现——见下一节。
Linux 桌面板的等价路径在 PR #164401,关键点:只有当你在 tray 里点「Use bundled runtime…」并显式 confirm 时,运行中的 Linux Gateway 才会切换到 Bun;切换失败没有自动 rollback,需要 manual recovery。这一条必须在内部 runbook 里写明——「点击 tray 切换前先备份当前 state + workspace」。
3.2 桌面端共享的 Bun 版本与已知问题
10.1 桌面端最终锁定的 Bun 版本是 1.4.3-canary.1+c999d9cb9(PR #164606),主要修复项:plugin-file 与 symlink 解析、并发 module lookup、child-process 消息、stack-format。Mac x64 worker 在 Rosetta 下避免 native process-reader 启动崩溃(PR #161876)。
回到 Bun 兼容性的「return to Node」入口:docs 里 install/bun-compatibility 段明确写有「how to return to Node」,但前提是 Bun runtime 切换成功后才能通过 openclaw runtime pin 切回 Node;如果切 Bun 失败必须先恢复状态再切回。
四、Sealed immutable installation generations:升级脚本必须重写
这是 10.1 的最安静但最关键的语义变化,没有单独的 New feature 标题,但分布在 4 个 PR 里:
- PR #161583:app-owned Mac update / repair 走
app updater;hosted process 在 app 失联时主动关闭。 - PR #161709:
This Mac桌面包自带 Gateway 跑 app lifetime;eligible 旧安装保留 ownership。 - PR #161754:Mac startup dependency-target mismatch 修正,macOS 15 minimum 保留。
- PR #164616:bundled CLI 拒绝覆盖更新的 service / runtime 选择;要求 inspect。
把 4 个 PR 合在一起读到的语义是:安装代次(installation generation)现在是不可变对象——每次升级、修复、Bun runtime 切换都会产生一个新的「代次」,旧的代次被标记为 inactive 而不是被覆盖。要切回旧代次,必须显式 openclaw runtime pin --generation 。
这条变化直接改写 4 个生产场景的 runbook:
- 滚动升级:升级不再「覆盖 / 回滚」二元,而是「新代次上线 + 观察窗口 + 旧代次按需回切」。
- CI/CD 流水线:post 2652 写的 14-PR first-batch 还要再加一步——升级完成后必须
openclaw doctor --verify-generation检查新代次是否完全激活、hosted process 是否都接到了新代次上。 - Mac 桌面用户:自动更新走 app updater;不要试图用
npm i -g openclaw或brew upgrade去「手工」覆盖,会被 #164616 拒绝。 - Linux 桌面用户:tray 切换是单向门——点了「Use bundled runtime」并成功后,要回退 Node 必须显式走
openclaw runtime pin,tray 不会帮你回。
五、Installed-skill discovery 的 8 MiB 加载预算
10.1 的 installed-skill discovery 看起来是「模型行为」变更,实际上对运营影响也很大——它改了 agent 启动时的「prompt 体积上限」。
5.1 三条硬规则
来源是 PR #158089 / #158090 / #160538 / #162849 / #162856 / #164012 一组:
- 单文件 instruction 256 KiB 上限(PR #158090):exact-name read 一个 skill 的 full instructions 时,超过 256 KiB 会返回 explicit size error。
- 长文件按 16 KiB 前缀参与搜索(PR #162856):local instruction 文件的「开头」会进入搜索索引;超出 16 KiB 前缀的部分不参与匹配。整个 search budget 是 16 KiB/file。
- 多 skill 组合 8 MiB 上限(PR #164012):如果选中的 instructions + supporting files 总和超过 8 MiB,agent 会收到「select fewer skills」的提示——即使 diagnostics 是 off。
5.2 三个对运营的影响
- Skill 库在 16 KiB 前缀「全貌」以外的「后段指令」对 agent 不可见——运营如果依赖 SKILL.md 后半段的命令示例,必须在前 16 KiB 写「read full skill via name」这样的提示,让 agent 走 exact-name read 路径。
- 256 KiB 单文件上限是 hard error——超 256 KiB 的 skill 必须拆分(或者把详细文档放到 supporting files 里,main SKILL.md 保持 < 256 KiB)。
- 8 MiB 组合上限是软约束——agent 收到 prompt 后会解释为什么需要 select fewer;这个解释会进 conversation history,对生产环境的 token 计费有影响(按当前 pricing model 是正反馈:解释文字 = 多 token = 多费用)。
六、Code Mode working values:JSON 持久化与「无静默丢失」
10.1 的 Code Mode 增加了一个容易被忽略的能力:在 interactive Code Mode 里,small JSON working values 可以跨 cell、跨 reply、跨 Gateway restart 保留(PR #164086)。
运维要关心的 3 个点:
- 只有 completed cell 才保存——in-flight 或失败的 cell 数据丢失。
- size limit + accumulated history 可以超过 size limit——长跑 notebook 的 transcript 体积会持续增长;如果存值时收到 warning,先检查 transcript 再假设保存成功。
- 覆盖 / 删除会在 conversation history 与 export 里保留旧版本——审计合规的好特性,但对「保密数据」是个反向风险:删除不是真的删除。
PR #162141 还补了「Gateway / CLI host 关闭时等待 Code Mode worker」——多 Gateway 部署里,当一个 host 关闭时,另一个 live host 保留自己的 reusable workers;shutdown ordering 在 restart 后生效。
七、30 天 watch 清单
按 10.1 的语义变化,运营层面要观察的 5 件事:
- R2 / 外部存储 destination 的 restore 真实成功率——10.1 写「用
--verify验证」,但 GitHub Actions 上没有 CI 覆盖「跨机器 + 跨 R2 bucket」恢复,到 10-20 / 10-30 要补一次 manual run。 - Bun runtime 切换的 manual recovery 触发率——Linux 桌面用户 tray 切换失败的概率;如果超过 1%,需要在 docs 里加「切换前先
openclaw doctor --snapshot-generation」一段。 - 8 MiB 组合上限的告警触发——10.1 的 PR 列表里没有 instrument 这条 warning;如果到 10-20 没看到 instrumentation,要自己加监控。
- 不可变代次的回切路径——
openclaw runtime pin --generation的实际可用性;如果 11-10 之前没看到外部 issue / discussion 反馈,说明 10.1 引入的代次切换在生产里没人真的切过——这不是好事,意味着跑出问题时大家才会第一次用。 - Workboard KV 跨 7 月的旧数据——10.1 release notes 里有一段明确警告:Workboard KV 数据(pre-July 2026)需要 intermediate upgrade,路径是「
doctor --fixon OpenClaw 2026.9.7 before upgrading」。如果生产 Workboard 是 7 月之前装的数据,升级 10.1 前必须先在 9.7 上跑一次doctor --fix,否则旧 KV 数据会被 10.1 的 Doctor 警告而非导入。
八、与其他 30+ 篇 OpenClaw 文章的分工
为防止与既有 OpenClaw 文章角度重叠,列出本系列已落地的角度:
- post 2531 / 2534:缺图 P1,不在主线。
- post 2556:早期 OpenClaw 8.x 治理。
- post 2571:subagent spawn protocol + parent context budget(10-08 06:00)。
- post 2581:v2026.10.1-beta 发布影响(10-08 15:00)。
- post 2598:v2026.9.9 stable update recovery models(10-09 06:00)。
- post 2610:v2026.9.9 release publication evidence chain(10-09 15:00)。
- post 2621:v2026.10.9 nightly merge window perf fixes(10-10 06:00)。
- post 2629:v2026.10.1 stable FRV drained classification recovery(10-10 15:00)。
- post 2639:v2026.10.10 three-tier cache stack runtime sqlite prompt kv(10-11 06:00)。
- post 2652:v2026.10.1 stable post-7h 14-PR first-batch compat(10-11 15:00)。
本文与以上都不重叠:
- 2652 走「stable 14 PR first-batch」视角;本文走「运维落地 4 大主题」视角(备份 / Bun-only / 不可变代次 / 8 MiB 预算)。
- 2639 走「缓存栈」;本文不重复。
- 2629 走「FRV drained」分类与重跑;本文不重复。
- 2610 走「发版 publication evidence chain」;本文是落地清单,不是 evidence chain。
九、来源与可核验链接
- OpenClaw v2026.10.1 release notes(docs) — 官方 release notes 完整版。
- OpenClaw v2026.10.1 GitHub release tag — 官方 GitHub release 页面(2026-10-10 23:54 UTC 晋升 stable)。
- OpenClaw v2026.10.1 CHANGELOG(plain Markdown) — 2026-10-12 06:09 Asia/Shanghai Chrome headless 1440×2400 实拍,PR 列表与 docs 一致。
- docs.openclaw.ai/install/backups(Backups 完整章节) — 2026-10-12 06:09 Asia/Shanghai Chrome headless 1440×2200 实拍,Choose a path 7 条命令 + Warning 块 + R2 引用。
- docs.openclaw.ai/plugins/cloudflare(Cloudflare R2 插件) — R2 destination 配置段。
- PR #161913(Full backups 支持 external storage + Cloudflare R2) — backup 能力落地的根 PR。
- PR #164492(256 MiB free-space reserve) — restore 前的容量检查。
- PR #164491(restore 文档与额外抽取空间解释) — 配套 docs。
- PR #161583(app updater 接管 + hosted process shutdown) — sealed immutable installation generations 的最直接 PR。
- PR #164616(bundled CLI 拒绝覆盖新版本 service / runtime) — 不可变代次的边界 PR。
- PR #164401(Linux fresh setup 用 bundled Bun) — Linux 桌面切换路径。
- PR #164606(共享 desktop Bun 版本
1.4.3-canary.1+c999d9cb9) — Bun 版本锁。 - PR #161876(Mac x64 worker 在 Rosetta 下避免 native process-reader 启动崩溃) — Mac 桌面兼容性。
- PR #158090(installed-skill 256 KiB 单文件上限) — 8 MiB 预算的根 PR。
- PR #162856(长文件 16 KiB 前缀进入搜索) — 16 KiB 规则。
- PR #164012(8 MiB 组合上限的「select fewer」提示) — 8 MiB 规则。
- PR #164086(Code Mode 跨 cell / reply / restart 保留 JSON working values) — Code Mode 持久化。
- PR #162141(Code Mode worker 跨 Gateway 关闭的等待语义) — Code Mode 关闭语义。
- OpenClaw 10.1 release notes 顶部摘要(截图源) — 2026-10-12 06:08 Asia/Shanghai Chrome headless 1440×2400 实拍。
- Workboard KV 跨 7 月的 intermediate upgrade 警告段落 — 升级前必读。
本文是「运维视角深度解读」而非「评测」:10.1 的功能清单与 PR 来源全部来自 docs.openclaw.ai / github.com/openclaw/openclaw 官方源;3 张配图均为 2026-10-12 06:08-06:09 Asia/Shanghai 通过 Chrome headless 1440×2200~2400 真实抓取,非占位图、非 mock。








