Appearance
发布策略
OpenClaw 有三个公开发布通道:
- stable:正式版 tag,发布到 npm
latest - beta:预发布 tag,发布到 npm
beta - dev:
main分支的最新代码
版本命名
- 稳定版版本号:
YYYY.M.D- Git tag:
vYYYY.M.D
- Git tag:
- 稳定修正版版本号:
YYYY.M.D-N- Git tag:
vYYYY.M.D-N
- Git tag:
- Beta 预发布版版本号:
YYYY.M.D-beta.N- Git tag:
vYYYY.M.D-beta.N
- Git tag:
- 月份和日期不补零
latest指当前稳定的 npm 发布版beta指当前预发布的 npm 版本- 稳定修正版同样发布到 npm
latest - 每次 OpenClaw 发布都同时包含 npm 包和 macOS 应用
发布节奏
- 发布遵循 beta 优先的流程
- 只有最新的 beta 版本验证通过后,stable 才会跟进
- 详细的发布流程、审批、凭据和恢复说明仅限维护者查看
发布前置检查
- 在运行
pnpm release:check之前先执行pnpm build,确保预期的dist/*发布产物已存在,用于打包验证步骤 - 每次带 tag 的发布之前必须运行
pnpm release:check - 审批前运行
RELEASE_TAG=vYYYY.M.D node --import tsx scripts/openclaw-npm-release-check.ts(或对应的 beta/修正 tag) - npm 发布后,运行
node --import tsx scripts/openclaw-npm-postpublish-verify.ts YYYY.M.D(或对应的 beta/修正版本)在新的临时前缀中验证已发布的注册表安装路径 - 对于
YYYY.M.D-N格式的稳定修正版,发布后验证器还会检查从YYYY.M.D到YYYY.M.D-N的同一临时前缀升级路径,确保修正版不会悄悄让旧的全局安装保留原有的稳定版负载 - npm 发布前置检查如果 tarball 中不同时包含
dist/control-ui/index.html和非空的dist/control-ui/assets/负载,则发布失败——防止再次发布空浏览器仪表盘 - macOS 稳定版发布就绪还包含更新程序界面的检查:
- GitHub release 必须最终包含打包的
.zip、.dmg和.dSYM.zip - 发布后
main分支上的appcast.xml必须指向新的稳定版 zip - 打包后的应用必须保持非 debug bundle id、非空的 Sparkle feed URL,以及该发布版本对应 Sparkle 构建下限以上的
CFBundleVersion
- GitHub release 必须最终包含打包的
公开参考资源
.github/workflows/openclaw-npm-release.ymlscripts/openclaw-npm-release-check.tsscripts/package-mac-dist.shscripts/make_appcast.sh
维护者使用私有发布文档 openclaw/maintainers/release/README.md 执行实际的发布流程。