Skip to content

发布策略

OpenClaw 有三个公开发布通道:

  • stable:正式版 tag,发布到 npm latest
  • beta:预发布 tag,发布到 npm beta
  • devmain 分支的最新代码

版本命名

  • 稳定版版本号:YYYY.M.D
    • Git tag:vYYYY.M.D
  • 稳定修正版版本号:YYYY.M.D-N
    • Git tag:vYYYY.M.D-N
  • Beta 预发布版版本号:YYYY.M.D-beta.N
    • Git tag:vYYYY.M.D-beta.N
  • 月份和日期不补零
  • 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.DYYYY.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

公开参考资源

维护者使用私有发布文档 openclaw/maintainers/release/README.md 执行实际的发布流程。