一、技能概述
该技能是 OpenClaw 发布流程的最终质量门控验证层,在每次 Beta/Stable 发布完成后使用。它通过一系列跨维度、不可变的证据检查,确认一个发布版本在 GitHub Release、npm registry、插件 npm 包、ClawHub 插件仓库、本地包冒烟测试以及 Live Gateway 代理调用等所有维度上均已成功发布且可正常工作。
核心理念:验证而非发布——该技能只读不写,不执行版本 bump、npm publish、GitHub release 或任何变更操作。所有结论必须基于实时证据,不信任本地 checkout 状态、旧有的 release notes 或过时的记忆。
二、核心功能
1. GitHub Release 验证
-
使用
gh release view获取 release 的完整元数据(tag、名称、发布时间、是否草稿/预发布、target commit、URL、body、assets) -
确认稳定版(stable)不是 draft 或 prerelease
-
确认 release body 包含 npm、CI、plugin npm、ClawHub、mac/appcast 等预期的证据链接
-
确认 stable mac 发布包含预期的 assets:zip、dmg、dSYM、依赖证据、不可变的 full-validation manifest、postpublish evidence 和 stable-main closeout manifest
-
校验证据完整性:下载每个不可变证据 asset 及其
.sha256校验文件,验证 checksum
2. Root npm 包验证
-
使用
npm view openclaw@获取 version、dist-tags.latest、dist.tarball、dist.integrity、time 等元数据 -
确认
latestdist-tag 等于当前验证的稳定版本 -
记录 tarball、integrity 和 publish time
-
确认 release postpublish evidence 中记录
npmRegistrySignaturesVerified: true和npmProvenanceAttestationMatched: true
3. 插件发布集验证
-
从 GitHub 获取精确的 tag 元数据(不信任 dirty checkout),下载 tag tarball 到
/tmp进行独立验证 -
统计
extensions/*/package.json中openclaw.release.publishToNpm === true和publishToClawHub === true的插件数量 -
对比预期数量与 workflow job 实际数量:
gh api repos/openclaw/openclaw/actions/runs/<run-id>/jobs --paginate -
确认每个预期 npm 插件都有对应的版本,且
dist-tags.latest等于当前发布版本
4. ClawHub 插件仓库验证
-
检查 Plugin ClawHub Release workflow 的结论和 publish job 数量
-
使用 OpenClaw 自身进行 live registry proof:
openclaw plugins search <version> --json -
在隔离的 HOME 环境中安装一个官方插件进行验证:
openclaw plugins install clawhub:@openclaw/matrix --pin
5. 发布工作流验证
-
验证 release notes 中引用的所有工作流结论:Full Release Validation、OpenClaw Release Checks、OpenClaw NPM Release、Plugin NPM Release、Plugin ClawHub Release、mac preflight/validation/publish
-
对于 stable 版本,验证 OpenClaw Stable Main Closeout 成功完成,且其 manifest 记录了匹配的 release tag、rollback drill、stable soak 和 blocking 性能证据
-
仅摘要相关的成功/失败 job,忽略 routine 跳过的可选 lanes(除非 release body 承诺了它们)
6. 已发布包冒烟测试
-
在
/tmp隔离环境中,使用npm exec --yes --package openclaw@<version> -- openclaw --version验证 CLI 可执行 -
运行至少一个无害命令触及已发布的 CLI 表面,例如
plugins --help或gateway --help
7. Live Gateway 代理调用验证
-
使用临时 HOME/workspace(不使用用户的正常状态):
HOME=/tmp/openclaw-release-smoke/home OPENCLAW_WORKSPACE=/tmp/openclaw-release-smoke/work pnpm openclaw --dev gateway run --auth none --force --verbose -
通过 CLI 进行健康检查:
openclaw --dev gateway health --json -
使用继承的
OPENAI_API_KEY、短提示词、显式 session key、JSON 输出和已知可用模型,执行一次 Gateway 支持的代理调用 -
降级处理:如果配置的默认模型不可用,记录该 caveat 并重试最新的已知可用 OpenAI 模型,不因此宣布 release 失败
-
停止 gateway 并验证端口已释放
三、主要用途
-
发布完整性验证
在每次 Beta/Stable 发布完成后,回答“这个版本是否已完全发布?”——确认 GitHub Release、npm、插件、ClawHub 等所有维度均已成功上线。 -
发布冒烟测试
在隔离环境中执行已发布包的 CLI 冒烟测试,确保包可安装、可执行、基本命令可工作。 -
Live Gateway 端到端验证
通过真实的 Gateway 代理调用,验证发布版本在实际运行环境中能够正常处理 LLM 请求。 -
发布后证据归档确认
确认所有不可变证据 asset(manifest、postpublish evidence、closeout manifest)已正确上传且 checksum 匹配。 -
发布状态报告
输出yes/no结论、证据 bullets、caveats 和 cleanup 建议,供维护者决策参考。
四、核心规则
| 规则 | 说明 |
|---|---|
| 解析版本号 | 将 .27 等短后缀解析为具体的 CalVer 版本(从当前日期/上下文推断),并明确说出解析后的版本 |
| 验证实时状态 | 不信任本地 checkout 状态、release notes 或旧记忆作为当前真相 |
| Dirty checkout 处理 | 如果 checkout 是 dirty 或 divergent,仅将其用于 scripts/reference;版本元数据从 GitHub release/tag 或 /tmp 下的 tag tarball 获取 |
| 绝不打印 secrets | 仅将继承的 live keys 用于限定范围的 smoke 命令 |
| 输出风格 | 保持最终输出简洁:yes/no、证据 bullets、caveats、cleanup |
五、需报告的 Caveats
| Caveat | 说明 |
|---|---|
| Dist-tag caveat | stable/latest 是 release truth;如果可选的 beta 镜像仍指向 beta 版本,报告为 caveat 而非 stable-release blocker(除非用户明确要求验证 beta promotion) |
| Divergent checkout caveat | 说明本地 source SHA 与 release tag 或 origin 不同,以及实际使用了哪些 live sources |
| Smoke caveat | 区分 Gateway-backed agent 成功与本地 embedded fallback。有效的 Gateway smoke 应包含 health OK 以及 gateway log/run id for the agent call |
六、与其他技能的协作
| 技能 | 协作方式 |
|---|---|
release-openclaw-maintainer |
本技能是验证层,maintainer 技能是执行层——本技能在发布完成后验证,不执行任何发布操作 |
release-openclaw-ci |
CI 技能负责发布前的验证;本技能负责发布后的完整性验证 |
七、总结
Verify Release 是一个只读的发布完整性验证技能,通过 GitHub Release 证据校验、npm registry 确认、插件发布集统计、ClawHub live proof、包冒烟测试和 Live Gateway 代理调用等六维检查清单,以证据驱动的方式回答“某个 OpenClaw 版本是否已完全发布”的问题。它不执行任何发布操作,所有结论基于实时证据而非本地缓存或记忆,适用于 OpenClaw 项目维护者在每次 Beta/Stable 发布后确认发布完整性和可用性的场景。