Appearance
本页介绍 OpenClaw 的发布策略,适合想了解版本更新节奏或自建部署的用户。OpenClaw 采用 beta-first 发布节奏:所有版本先发布到 npm beta 通道,验证通过后才晋升到 latest。版本格式为 YYYY.M.D(月日不补零),npm 和 macOS 应用同步发布。
OpenClaw 发布策略
OpenClaw 有三个公开发布通道:
- stable:带标签的发布版,默认发布到 npm
beta,或经请求发布到 npmlatest - beta:预发布标签,发布到 npm
beta - dev:
main分支的最新快照
版本命名
| 版本类型 | 格式 | Git 标签 |
|---|---|---|
| 正式版 | YYYY.M.D | vYYYY.M.D |
| 正式修正版 | YYYY.M.D-N | vYYYY.M.D-N |
| Beta 预发布版 | YYYY.M.D-beta.N | vYYYY.M.D-beta.N |
- 月和日不补零(例如
2026.4.2,而非2026.04.02) latest:当前晋升的正式 npm 版本beta:当前 beta 安装目标- 正式版和修正版默认发布到 npm
beta;维护者可显式指定latest或后续从 beta 晋升 - 每个 OpenClaw 版本同时发布 npm 包和 macOS 应用
发布节奏
- 版本先走 beta,验证通过后才发布 stable
- 稳定版跟随最新 beta 验证后才发布
macOS 稳定版发布就绪检查
macOS 稳定版发布还需要验证更新分发入口:
- GitHub Release 必须包含打包好的
.zip、.dmg和.dSYM.zip - 发布后
main分支的appcast.xml必须指向新版本的稳定 zip - 打包的应用必须满足:
- 非 debug 的 Bundle ID
- 非空的 Sparkle feed URL
CFBundleVersion达到或超过该版本的 Sparkle 构建地板值
发布前置检查
发布前需依次完成:
bash
# 1. 先构建,确保 dist/* 工件和 Control UI bundle 存在
pnpm build && pnpm ui:build
# 2. 运行发布检查
pnpm release:check
# 3. 运行 live 缓存回归测试(main 分支 npm 预发布也会运行)
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_CACHE_TEST=1 pnpm test:live:cache
# 4. 打发布标签前验证
RELEASE_TAG=vYYYY.M.D node --import tsx scripts/openclaw-npm-release-check.ts
# 5. npm publish 后验证
node --import tsx scripts/openclaw-npm-postpublish-verify.ts YYYY.M.D修正版升级路径验证:对于
YYYY.M.D-N修正版,post-publish 验证器会额外检查从YYYY.M.D到YYYY.M.D-N的临时前缀升级路径,确保修正版不会让旧的全局安装静默留在旧基础上。
npm 发布前置检查在以下情况会失败并中止:tarball 缺少 dist/control-ui/index.html 或 dist/control-ui/assets/ 为空(防止再次发布空浏览器控制台)。
如果发布工作影响了 CI 规划、扩展时序 manifest 或快速测试矩阵,需要在审批前从 .github/workflows/ci.yml 重新生成并审查 checks-fast-extensions 工作流矩阵输出,避免发版说明描述过时的 CI 布局。
npm 工作流输入
OpenClaw NPM Release 工作流接受以下参数:
| 参数 | 说明 |
|---|---|
tag | 必填,如 v2026.4.2、v2026.4.2-1、v2026.4.2-beta.1 |
preflight_only | true 仅验证/构建/打包;false 真正发布 |
preflight_run_id | 真正发布时必填,复用成功 preflight 的已准备 tarball |
npm_dist_tag | 发布目标标签,默认 beta |
promote_beta_to_latest | true 跳过发布,将已发布的 stable beta 版本晋升到 latest |
规则:
- 正式版和修正版可发布到
beta或latest - Beta 预发布版只能发布到
beta - 真正发布路径必须使用与 preflight 相同的
npm_dist_tag - 晋升模式需要正式版/修正版标签、
preflight_only=false、空preflight_run_id、npm_dist_tag=beta
正式版 npm 发布步骤
- 运行
OpenClaw NPM Release,preflight_only=true,选择npm_dist_tag=beta(beta-first 流程) - 保存成功的
preflight_run_id - 再次运行
OpenClaw NPM Release,preflight_only=false,使用相同的tag、npm_dist_tag、preflight_run_id - 如果发布到了
beta,之后想晋升到latest:运行OpenClaw NPM Release,相同 stable tag、promote_beta_to_latest=true、preflight_only=false、preflight_run_id留空、npm_dist_tag=beta
晋升模式仍需要 npm-release 环境审批和有效的 NPM_TOKEN。
公开参考文件
.github/workflows/openclaw-npm-release.ymlscripts/openclaw-npm-release-check.tsscripts/package-mac-dist.shscripts/make_appcast.sh
常见问题
Q: 我应该安装 beta 版本还是 latest 版本?
A: 对于日常使用,beta 通道(npm install -g openclaw@beta)通常包含最新功能和修复,大多数用户安全可用。latest 是经过更充分验证的版本,适合生产环境或对稳定性有较高要求的场景。
Q: 版本号为什么用日期格式而不是 semver?
A: OpenClaw 用 YYYY.M.D 格式可以直接从版本号判断发布时间,便于用户了解软件的更新频率和当前版本的新旧程度,不需要额外查阅 Changelog。
Q: beta-first 节奏意味着什么,我的龙虾会自动升级吗?
A: 不会自动升级。beta-first 只是发布顺序的策略,意味着每个版本先在 beta 通道验证,通过后才推到 latest。你需要手动运行 npm install -g openclaw@latest(或 @beta)来更新。