OpenClaw 有三個公開發布通道:Documentation Index
Fetch the complete documentation index at: https://docs2.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
- stable:帶標籤的發布版本,預設發布到 npm
beta,或在明確要求時發布到 npmlatest - beta:發布到 npm
beta的預發布標籤 - dev:
main的移動最新提交
版本命名
- Stable 發布版本:
YYYY.M.D- Git 標籤:
vYYYY.M.D
- Git 標籤:
- Stable 修正發布版本:
YYYY.M.D-N- Git 標籤:
vYYYY.M.D-N
- Git 標籤:
- Beta 預發布版本:
YYYY.M.D-beta.N- Git 標籤:
vYYYY.M.D-beta.N
- Git 標籤:
- 月份或日期不要補零
latest表示目前已推廣的 stable npm 發布版本beta表示目前的 beta 安裝目標- Stable 和 stable 修正發布版本預設發布到 npm
beta;發布操作員可以明確指定latest,或稍後推廣已審核的 beta 建置 - 每個 stable OpenClaw 發布版本都會一起發布 npm 套件和 macOS App; beta 發布版本通常會先驗證並發布 npm/套件路徑,而 mac App 建置/簽署/公證則保留給 stable,除非明確要求
發布節奏
- 發布採 beta 優先
- Stable 只會在最新 beta 完成驗證後跟進
- 維護者通常會從目前
main建立的release/YYYY.M.D分支切出發布版本, 讓發布驗證和修正不會阻塞main上的新開發 - 如果 beta 標籤已推送或發布後需要修正,維護者會切出下一個
-beta.N標籤,而不是刪除或重新建立舊的 beta 標籤 - 詳細發布流程、核准、憑證和復原備註僅限維護者使用
發布操作員檢查清單
這份檢查清單是發布流程的公開形式。私人憑證、 簽署、公證、dist-tag 復原和緊急回復細節會保留在 僅限維護者使用的發布操作手冊中。- 從目前
main開始:拉取最新內容,確認目標提交已推送, 並確認目前mainCI 足夠綠燈,可以從它建立分支。 - 使用
/changelog從真實提交歷史重寫頂部的CHANGELOG.md區段, 保持條目面向使用者,提交它、推送它,並在建立分支前再次 rebase/pull。 - 檢閱
src/plugins/compat/registry.ts和src/commands/doctor/shared/deprecation-compat.ts中的發布相容性記錄。只有在升級路徑仍受涵蓋時才移除過期相容性,或記錄為何刻意保留。 - 從目前
main建立release/YYYY.M.D;不要直接在main上進行一般發布工作。 - 為預期標籤更新所有必要版本位置,然後執行
pnpm release:prep。它會依正確順序重新整理 Plugin 版本、Plugin 清單、設定 schema、內建通道設定中繼資料、設定文件基準、Plugin SDK 匯出,以及 Plugin SDK API 基準。在加標籤前提交任何產生的漂移。然後執行本機 deterministic 預檢:pnpm check:test-types、pnpm check:architecture、pnpm build && pnpm ui:build和pnpm release:check。 - 使用
preflight_only=true執行OpenClaw NPM Release。在標籤存在前, 可以使用完整 40 字元的發布分支 SHA 進行僅驗證的預檢。保存成功的preflight_run_id。 - 使用
Full Release Validation為發布分支、標籤或完整提交 SHA 啟動所有預發布測試。這是四個大型發布測試盒子的唯一手動入口點:Vitest、Docker、QA Lab 和 Package。 - 如果驗證失敗,請在發布分支上修正,並重新執行能證明修正的最小失敗檔案、通道、workflow job、套件 profile、provider 或 model 允許清單。只有在變更的表面讓先前證據過期時,才重新執行完整 umbrella。
- 對於 beta,標記
vYYYY.M.D-beta.N,然後從相符的release/YYYY.M.D分支執行OpenClaw Release Publish。它會驗證pnpm plugins:sync:check, 將所有可發布的 Plugin 套件平行派送到 npm 和相同集合到 ClawHub,然後在 Plugin npm 發布成功後,立即使用相符的 dist-tag 推廣已準備好的 OpenClaw npm 預檢 artifact。 在 OpenClaw npm 發布子項成功後,它會從完整相符的CHANGELOG.md區段建立或更新相符的 GitHub 發布/預發布頁面。發布到 npmlatest的 stable 發布版本會成為 GitHub 最新發布;保留在 npmbeta上的 stable 維護發布版本會以 GitHublatest=false建立。 ClawHub 發布在 OpenClaw npm 發布時可能仍在執行,但發布 workflow 會立即列印子 run ID。預設情況下,它在派送 ClawHub 後不會等待 ClawHub,因此 OpenClaw npm 可用性不會被較慢的 ClawHub 核准或 registry 工作阻塞;當 ClawHub 必須阻塞 workflow 完成時,請設定wait_for_clawhub=true。ClawHub 路徑會重試暫時性的 CLI 相依套件安裝失敗,即使某個預覽 cell 偶發失敗也會發布通過預覽的 Plugin,並以每個預期 Plugin 版本的 registry 驗證作結,讓部分發布保持可見且可重試。發布後,執行pnpm release:verify-beta -- YYYY.M.D-beta.N --openclaw-npm-run <run-id> --plugin-npm-run <run-id> --plugin-clawhub-run <run-id>以透過單一命令驗證 GitHub 預發布、npmbetadist-tag、npm integrity、 已發布安裝路徑、ClawHub 精確版本、ClawHub artifact 和子 workflow 結論。當 ClawHub sidecar 只在可重試 job 中失敗且應就地重新執行時,加入--rerun-failed-clawhub。 然後針對已發布的openclaw@YYYY.M.D-beta.N或openclaw@beta套件執行發布後套件驗收。如果已推送或已發布的預發布需要修正, 請切出下一個相符的預發布編號;不要刪除或重寫舊的預發布。 - 對於 stable,只有在已審核的 beta 或發布候選具備所需驗證證據後才繼續。
Stable npm 發布也會透過
OpenClaw Release Publish,使用preflight_run_id重用成功的預檢 artifact;stable macOS 發布就緒也需要 打包好的.zip、.dmg、.dSYM.zip和main上已更新的appcast.xml。 私有 macOS 發布 workflow 會在發布資產通過驗證後,自動將簽署的 appcast 發布到公開main;如果分支保護阻擋直接推送,它會開啟或更新 appcast PR。 - 發布後,執行 npm 發布後驗證器、在需要發布後通道證據時執行選用的獨立 已發布 npm Telegram E2E、視需要進行 dist-tag 推廣、驗證產生的 GitHub 發布頁面, 並執行發布公告步驟。
發布預檢
- 在發行前預檢前執行
pnpm check:test-types,讓測試 TypeScript 在較快的本機pnpm check閘門之外仍維持涵蓋 - 在發行前預檢前執行
pnpm check:architecture,讓更廣泛的匯入循環與架構邊界檢查在較快的本機閘門之外保持綠燈 - 在
pnpm release:check前執行pnpm build && pnpm ui:build,讓預期的dist/*發行成品與 Control UI 套件包存在,以供套件驗證步驟使用 - 在根版本提升後、標記前執行
pnpm release:prep。它會執行每個在版本、設定或 API 變更後常見漂移的確定性發行產生器:Plugin 版本、Plugin 清單、基礎設定結構描述、內建通道設定中繼資料、設定文件基準、Plugin SDK 匯出,以及 Plugin SDK API 基準。pnpm release:check會以檢查模式重新執行這些防護,並在執行套件發行檢查前,一次回報它找到的所有已產生漂移失敗。 - 在發行核准前執行手動
Full Release Validation工作流程,從單一進入點啟動所有發行前測試箱。它接受分支、標籤或完整提交 SHA,派發手動CI,並派發OpenClaw Release Checks,用於安裝冒煙、套件驗收、跨 OS 套件檢查、QA Lab 同等性、Matrix,以及 Telegram 路線。穩定版/預設執行會將完整即時/E2E 與 Docker 發行路徑浸泡測試保留在run_release_soak=true之後;release_profile=full會強制開啟浸泡測試。使用release_profile=full與rerun_group=all時,它也會針對來自發行檢查的release-package-under-test成品執行套件 Telegram E2E。在發布 beta 後提供release_package_spec,即可在發行檢查、Package Acceptance 與套件 Telegram E2E 中重用已出貨的 npm 套件,而不需重新建置發行 tarball。只有在 Telegram 應使用與其餘發行驗證不同的已發布套件時,才提供npm_telegram_package_spec。當 Package Acceptance 應使用與發行套件規格不同的已發布套件時,提供package_acceptance_package_spec。當私有證據報告應證明驗證符合已發布 npm 套件,但不強制執行 Telegram E2E 時,提供evidence_package_spec。 範例:gh workflow run full-release-validation.yml --ref main -f ref=release/YYYY.M.D - 當你想在發行工作繼續進行時,為套件候選版本取得旁路證明,請執行手動
Package Acceptance工作流程。對openclaw@beta、openclaw@latest或精確發行版本使用source=npm;使用source=ref以目前的workflow_ref測試框架封裝受信任的package_ref分支/標籤/SHA;對需要 SHA-256 的 HTTPS tarball 使用source=url;或對另一個 GitHub Actions 執行上傳的 tarball 使用source=artifact。該工作流程會將候選項解析為package-under-test,針對該 tarball 重用 Docker E2E 發行排程器,並可使用telegram_mode=mock-openai或telegram_mode=live-frontier針對同一個 tarball 執行 Telegram QA。當選取的 Docker 路線包含published-upgrade-survivor時,套件成品就是候選項,而published_upgrade_survivor_baseline會選取已發布的基準。update-restart-auth會將候選套件同時作為已安裝 CLI 與 package-under-test,因此會測試候選更新命令的受管理重新啟動路徑。 範例:gh workflow run package-acceptance.yml --ref main -f workflow_ref=main -f source=npm -f package_spec=openclaw@beta -f suite_profile=product -f published_upgrade_survivor_baseline=openclaw@2026.4.26 -f telegram_mode=mock-openai常用設定檔:smoke:安裝/通道/代理、Gateway 網路,以及設定重新載入路線package:成品原生套件/更新/重新啟動/Plugin 路線,不含 OpenWebUI 或即時 ClawHubproduct:套件設定檔加上 MCP 通道、cron/子代理清理、OpenAI 網頁搜尋,以及 OpenWebUIfull:含 OpenWebUI 的 Docker 發行路徑區塊custom:針對聚焦重新執行的精確docker_lanes選取
- 當你只需要發行候選版本的完整一般 CI 涵蓋時,直接執行手動
CI工作流程。手動 CI 派發會略過變更範圍判定,並強制執行 Linux Node 分片、內建 Plugin 分片、通道合約、Node 22 相容性、check、check-additional、建置冒煙、文件檢查、Python Skills、Windows、macOS、Android,以及 Control UI i18n 路線。 範例:gh workflow run ci.yml --ref release/YYYY.M.D - 驗證發行遙測時執行
pnpm qa:otel:smoke。它會透過本機 OTLP/HTTP 接收器測試 QA-lab,並驗證匯出的追蹤 span 名稱、有界屬性,以及內容/識別碼遮蔽,不需要 Opik、Langfuse 或其他外部收集器。 - 每次標記發行前執行
pnpm release:check - 在標籤存在後,執行
OpenClaw Release Publish以進行會變更狀態的發布序列。從release/YYYY.M.D派發它(或在發布可從main觸及的標籤時從main派發),傳入發行標籤與成功的 OpenClaw npmpreflight_run_id,並保留預設 Plugin 發布範圍all-publishable,除非你刻意執行聚焦修復。該工作流程會序列化 Plugin npm 發布、Plugin ClawHub 發布與 OpenClaw npm 發布,讓核心套件不會在其外部化 Plugin 前發布。 - 發行檢查現在在獨立的手動工作流程中執行:
OpenClaw Release Checks OpenClaw Release Checks也會在發行核准前執行 QA Lab 模擬同等性路線,加上快速即時 Matrix 設定檔與 Telegram QA 路線。即時路線使用qa-live-shared環境;Telegram 也使用 Convex CI 憑證租約。當你想要並行取得完整 Matrix 傳輸、媒體與 E2EE 清單時,使用matrix_profile=all與matrix_shards=true執行手動QA-Lab - All Lanes工作流程。- 跨 OS 安裝與升級執行階段驗證是公開
OpenClaw Release Checks與Full Release Validation的一部分,兩者會直接呼叫可重用工作流程.github/workflows/openclaw-cross-os-release-checks-reusable.yml - 這個拆分是刻意的:讓真正的 npm 發行路徑保持短小、確定且聚焦於成品,同時讓較慢的即時檢查留在自己的路線中,避免拖慢或阻擋發布
- 帶有秘密的發行檢查應透過
Full Release Validation派發,或從main/發行工作流程 ref 派發,讓工作流程邏輯與秘密維持受控 OpenClaw Release Checks接受分支、標籤或完整提交 SHA,只要解析出的提交可從 OpenClaw 分支或發行標籤觸及即可OpenClaw NPM Release僅驗證前置預檢也接受目前完整 40 字元的工作流程分支提交 SHA,不需要已推送的標籤- 該 SHA 路徑僅供驗證,不能提升為真正發布
- 在 SHA 模式中,工作流程只會為套件中繼資料檢查合成
v<package.json version>;真正發布仍需要真正的發行標籤 - 兩個工作流程都將真正發布與提升路徑保留在 GitHub 託管 runner 上,而不變更狀態的驗證路徑可以使用較大的 Blacksmith Linux runner
- 該工作流程會使用
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_CACHE_TEST=1 pnpm test:live:cache,並同時使用OPENAI_API_KEY與ANTHROPIC_API_KEY工作流程秘密 - npm 發行前置預檢不再等待獨立的發行檢查路線
- 在本機標記發行候選版本前,執行
RELEASE_TAG=vYYYY.M.D-beta.N pnpm release:fast-pretag-check。該輔助程式會依照可在 GitHub 發布工作流程開始前捕捉常見核准阻擋錯誤的順序,執行快速發行防護、Plugin npm/ClawHub 發行檢查、建置、UI 建置,以及release:openclaw:npm:check。 - 在核准前執行
RELEASE_TAG=vYYYY.M.D node --import tsx scripts/openclaw-npm-release-check.ts(或相符的 beta/修正版標籤) - npm 發布後,執行
node --import tsx scripts/openclaw-npm-postpublish-verify.ts YYYY.M.D(或相符的 beta/修正版版本),以在全新的暫存前綴中驗證已發布 registry 安裝路徑 - beta 發布後,執行
OPENCLAW_NPM_TELEGRAM_PACKAGE_SPEC=openclaw@YYYY.M.D-beta.N OPENCLAW_NPM_TELEGRAM_CREDENTIAL_SOURCE=convex OPENCLAW_NPM_TELEGRAM_CREDENTIAL_ROLE=ci pnpm test:docker:npm-telegram-live,使用共享的租用 Telegram 憑證池,針對已發布的 npm 套件驗證已安裝套件 onboarding、Telegram 設定,以及真實 Telegram E2E。本機維護者一次性執行可省略 Convex 變數,並直接傳入三個OPENCLAW_QA_TELEGRAM_*環境憑證。 - 若要從維護者機器執行完整發布後 beta 冒煙測試,使用
pnpm release:beta-smoke -- --beta betaN。該輔助程式會執行 Parallels npm 更新/全新目標驗證、派發NPM Telegram Beta E2E、輪詢精確工作流程執行、下載成品,並列印 Telegram 報告。 - 維護者也可以透過手動
NPM Telegram Beta E2E工作流程,從 GitHub Actions 執行相同的發布後檢查。它刻意僅限手動,不會在每次合併時執行。 - 維護者發行自動化現在使用先預檢再提升:
- 真正的 npm 發布必須通過成功的 npm
preflight_run_id - 真正的 npm 發布必須從與成功預檢執行相同的
main或release/YYYY.M.D分支派發 - 穩定版 npm 發行預設為
beta - 穩定版 npm 發布可透過工作流程輸入明確目標為
latest - 基於 token 的 npm dist-tag 變更現在位於
openclaw/releases-private/.github/workflows/openclaw-npm-dist-tags.yml以提高安全性,因為npm dist-tag add仍需要NPM_TOKEN,而公開 repo 維持僅 OIDC 發布 - 公開
macOS Release僅供驗證;當標籤只存在於發行分支但工作流程從main派發時,設定public_release_branch=release/YYYY.M.D - 真正的私有 mac 發布必須通過成功的私有 mac
preflight_run_id與validate_run_id - 真正發布路徑會提升已準備好的成品,而不是再次重建它們
- 真正的 npm 發布必須通過成功的 npm
- 對於像
YYYY.M.D-N這樣的穩定版修正發行,發布後驗證器也會檢查從YYYY.M.D到YYYY.M.D-N的相同暫存前綴升級路徑,讓發行修正不會默默地讓較舊的全域安裝停留在基礎穩定版 payload - 除非 tarball 同時包含
dist/control-ui/index.html與非空的dist/control-ui/assets/payload,否則 npm 發行前置預檢會封閉失敗,避免我們再次出貨空的瀏覽器儀表板 - 發布後驗證也會檢查已發布 Plugin 進入點與套件中繼資料是否存在於已安裝的 registry 配置中。若發行缺少 Plugin 執行階段 payload,會導致 postpublish 驗證器失敗,且不能提升為
latest。 pnpm test:install:smoke也會在候選更新 tarball 上強制執行 npm packunpackedSize預算,因此安裝器 e2e 會在發行發布路徑前捕捉意外的封裝膨脹- 如果發行工作觸及 CI 規劃、extension 時序資訊清單或 extension 測試矩陣,請在核准前重新產生並審查
.github/workflows/plugin-prerelease.yml中由規劃器擁有的plugin-prerelease-extension-shard矩陣輸出,讓發行說明不會描述過期的 CI 版面 - 穩定版 macOS 發行就緒性也包含更新器表面:
- GitHub 發行最終必須包含封裝好的
.zip、.dmg與.dSYM.zip - 發布後,
main上的appcast.xml必須指向新的穩定版 zip;私有 macOS 發布工作流程會自動提交它,或在直接推送受阻時開啟 appcast PR - 封裝後的 App 必須保留非除錯 bundle id、非空的 Sparkle feed URL,以及高於或等於該發行版本正式 Sparkle 建置下限的
CFBundleVersion
- GitHub 發行最終必須包含封裝好的
發行測試環境
Full Release Validation 是操作人員從單一進入點啟動所有預發行測試的方式。若要在快速變動的分支上取得固定 commit 的證明,請使用這個 helper,讓每個子 workflow 都從固定在目標 SHA 的暫存分支執行:
release-ci/<sha>-...,從該分支以 ref=<sha> 分派 Full Release Validation,驗證每個子 workflow 的 headSha 都符合目標,然後刪除暫存分支。這可避免意外證明較新的 main 子執行。
若要驗證發行分支或標籤,請從受信任的 main workflow ref 執行,並將發行分支或標籤作為 ref 傳入:
target_ref=<release-ref> 分派手動 CI,分派 OpenClaw Release Checks,為面向套件的檢查準備父層 release-package-under-test artifact,並在 release_profile=full 且 rerun_group=all,或設定了 release_package_spec 或 npm_telegram_package_spec 時,分派獨立套件 Telegram E2E。接著 OpenClaw Release Checks 會展開安裝 smoke、跨 OS 發行檢查、啟用 soak 時的 live/E2E Docker 發行路徑涵蓋、Package Acceptance 搭配 Telegram 套件 QA、QA Lab parity、live Matrix,以及 live Telegram。只有當 Full Release Validation 摘要顯示 normal_ci 和 release_checks 成功時,完整執行才可接受。在 full/all 模式下,npm_telegram 子項也必須成功;在 full/all 之外,除非提供了已發布的 release_package_spec 或 npm_telegram_package_spec,否則會跳過。最終 verifier 摘要包含每個子執行的最慢 job 表格,因此發行管理員不用下載 logs 就能看到目前的關鍵路徑。
請參閱完整發行驗證,了解完整階段矩陣、精確的 workflow job 名稱、stable 與 full profile 差異、artifacts,以及聚焦 rerun handles。
子 workflow 會從執行 Full Release Validation 的受信任 ref 分派,通常是 --ref main,即使目標 ref 指向較舊的發行分支或標籤也是如此。沒有獨立的 Full Release Validation workflow-ref 輸入;請透過選擇 workflow run ref 來選擇受信任的 harness。
不要使用 --ref main -f ref=<sha> 在移動中的 main 上做精確 commit 證明;原始 commit SHA 不能作為 workflow dispatch ref,因此請使用 pnpm ci:full-release --sha <sha> 建立固定的暫存分支。
使用 release_profile 選擇 live/provider 廣度:
minimum:最快的發行關鍵 OpenAI/core live 與 Docker 路徑stable:minimum 加上用於發行核准的穩定 provider/backend 涵蓋full:stable 加上廣泛的 advisory provider/media 涵蓋
stable 使用 run_release_soak=true。該 sweep 涵蓋最新四個 stable 套件,加上固定的 2026.4.23 和 2026.5.2 baselines,以及較舊的 2026.4.15 涵蓋,並移除重複 baselines,且每個 baseline 都 sharding 到自己的 Docker runner job。full 會隱含 run_release_soak=true。
OpenClaw Release Checks 使用受信任的 workflow ref 將目標 ref 解析一次為 release-package-under-test,並在 soak 執行時,於跨 OS、Package Acceptance 和發行路徑 Docker 檢查中重用該 artifact。這能讓所有面向套件的 boxes 使用相同 bytes,並避免重複建置套件。
Beta 已經在 npm 上後,請設定 release_package_spec=openclaw@YYYY.M.D-beta.N,讓發行檢查下載一次已發布套件,從 dist/build-info.json 擷取其建置來源 SHA,並將該 artifact 重用於跨 OS、Package Acceptance、發行路徑 Docker,以及套件 Telegram lanes。
跨 OS OpenAI 安裝 smoke 會在設定 repo/org 變數時使用 OPENCLAW_CROSS_OS_OPENAI_MODEL,否則使用 openai/gpt-5.4,因為此 lane 是在證明套件安裝、onboarding、Gateway 啟動,以及一次 live agent turn,而不是 benchmark 最慢的預設模型。較廣泛的 live provider 矩陣仍是模型特定涵蓋的所在位置。
請依照發行階段使用這些變體:
Verify full validation 父 job。
若要進行有界限的復原,請將 rerun_group 傳給 umbrella。all 是真正的發行候選執行,ci 只執行一般 CI 子項,plugin-prerelease 只執行發行專用 Plugin 子項,release-checks 執行每個發行 box,而較窄的發行 groups 則是 install-smoke、cross-os、live-e2e、package、qa、qa-parity、qa-live 和 npm-telegram。
聚焦的 npm-telegram reruns 需要 release_package_spec 或 npm_telegram_package_spec;搭配 release_profile=full 的 full/all 執行會使用 release-checks 套件 artifact。聚焦的跨 OS reruns 可加入 cross_os_suite_filter=windows/packaged-upgrade 或另一個 OS/suite filter。QA release-check 失敗屬於 advisory;僅 QA 失敗不會阻塞發行驗證。
Vitest
Vitest box 是手動CI 子 workflow。手動 CI 會刻意略過 changed scoping,並強制執行發行候選的一般測試圖:Linux Node shards、bundled-plugin shards、channel contracts、Node 22 相容性、check、check-additional、build smoke、docs checks、Python Skills、Windows、macOS、Android,以及 Control UI i18n。
使用此 box 回答「原始碼樹是否通過完整一般測試套件?」
它不同於發行路徑產品驗證。需要保留的證據:
- 顯示已分派
CIrun URL 的Full Release Validation摘要 CIrun 在精確目標 SHA 上為綠燈- 調查 regressions 時,來自 CI jobs 的失敗或緩慢 shard 名稱
- 當執行需要效能分析時,Vitest timing artifacts,例如
.artifacts/vitest-shard-timings.json
Docker
Docker box 位於OpenClaw Release Checks 中,透過 openclaw-live-and-e2e-checks-reusable.yml,再加上 release-mode install-smoke workflow。它會透過已封裝的 Docker environments 驗證發行候選,而不只是 source-level tests。
發行 Docker 涵蓋包括:
- 啟用慢速 Bun global install smoke 的完整安裝 smoke
- 依目標 SHA 準備/重用 root Dockerfile smoke image,且 QR、root/gateway,以及 installer/Bun smoke jobs 作為獨立 install-smoke shards 執行
- repository E2E lanes
- 發行路徑 Docker chunks:
core、package-update-openai、package-update-anthropic、package-update-core、plugins-runtime-plugins、plugins-runtime-services、plugins-runtime-install-a、plugins-runtime-install-b、plugins-runtime-install-c、plugins-runtime-install-d、plugins-runtime-install-e、plugins-runtime-install-f、plugins-runtime-install-g和plugins-runtime-install-h - 請求時在
plugins-runtime-serviceschunk 內執行 OpenWebUI 涵蓋 - 拆分的 bundled Plugin install/uninstall lanes,從
bundled-plugin-install-uninstall-0到bundled-plugin-install-uninstall-23 - 當發行檢查包含 live suites 時,live/E2E provider suites 和 Docker live model 涵蓋
.artifacts/docker-tests/,其中包含 lane logs、summary.json、failures.json、phase timings、scheduler plan JSON,以及 rerun commands。若要聚焦復原,請在 reusable live/E2E workflow 上使用 docker_lanes=<lane[,lane]>,而不是 rerun 所有發行 chunks。產生的 rerun commands 會在可用時包含先前的 package_artifact_run_id 和已準備的 Docker image inputs,因此失敗 lane 可以重用相同 tarball 和 GHCR images。
QA Lab
QA Lab box 也是OpenClaw Release Checks 的一部分。它是 agentic 行為和 channel-level 的發行 gate,與 Vitest 和 Docker 套件機制分開。
發行 QA Lab 涵蓋包括:
- mock parity lane,使用 agentic parity pack,比較 OpenAI candidate lane 與 Opus 4.6 baseline
- 使用
qa-live-sharedenvironment 的快速 live Matrix QA profile - 使用 Convex CI credential leases 的 live Telegram QA lane
- 當發行 telemetry 需要明確本機證明時執行
pnpm qa:otel:smoke
套件
套件 box 是可安裝產品 gate。它由Package Acceptance 和 resolver scripts/resolve-openclaw-package-candidate.mjs 支援。resolver 會將 candidate 正規化為 Docker E2E 使用的 package-under-test tarball,驗證套件 inventory,記錄套件版本和 SHA-256,並保持 workflow harness ref 與套件來源 ref 分離。
支援的 candidate sources:
source=npm:openclaw@beta、openclaw@latest,或精確的 OpenClaw 發行版本source=ref:使用選定的workflow_refharness 打包受信任的package_ref分支、標籤,或完整 commit SHAsource=url:下載需要package_sha256的 HTTPS.tgzsource=artifact:重用另一個 GitHub Actions run 上傳的.tgz
OpenClaw Release Checks 會以 source=artifact、已準備好的發行套件成品、suite_profile=custom、
docker_lanes=doctor-switch update-channel-switch skill-install update-corrupt-plugin upgrade-survivor published-upgrade-survivor update-restart-auth plugins-offline plugin-update、
telegram_mode=mock-openai 執行 Package Acceptance。Package Acceptance 會針對同一個已解析的
tarball 保持遷移、更新、已設定驗證的更新重啟、即時 ClawHub skill 安裝、過期 Plugin 相依清理、離線 Plugin
fixtures、Plugin 更新,以及 Telegram 套件 QA。阻擋式發行檢查會使用預設的最新已發布套件基準;
run_release_soak=true 或
release_profile=full 會擴展到從 2026.4.23 到 latest 的每個穩定 npm 已發布基準,
再加上已回報問題的 fixtures。對於已出貨的候選版本,請使用
source=npm 的 Package Acceptance;對於發布前由 SHA 支援的本機 npm tarball,請使用
source=ref/source=artifact。這是大部分過去需要
Parallels 的套件/更新涵蓋範圍在 GitHub 原生環境中的替代方案。跨 OS 發行檢查對於 OS 特定的初始設定、
安裝程式與平台行為仍然重要,但套件/更新產品驗證應優先使用 Package Acceptance。
更新與 Plugin 驗證的權威檢查清單是
測試更新與 Plugin。在判斷哪個本機、Docker、Package Acceptance
或發行檢查 lane 能證明 Plugin 安裝/更新、doctor 清理或已發布套件遷移變更時,請使用它。
從每個穩定 2026.4.23+ 套件進行的完整已發布更新遷移,是獨立的手動 Update Migration
workflow,不屬於 Full Release CI。
舊版 package-acceptance 寬容度刻意有時間限制。直到 2026.4.25 的套件,對已發布到 npm 的中繼資料缺口可使用相容性路徑:
tarball 中缺少私有 QA inventory 項目、缺少
gateway install --wrapper、tarball 衍生 git
fixture 中缺少修補檔、缺少已持久化的 update.channel、舊版 Plugin 安裝記錄位置、缺少 marketplace
安裝記錄持久化,以及 plugins update 期間的設定中繼資料遷移。已發布的 2026.4.26
套件可能會針對已出貨的本機建置中繼資料 stamp 檔發出警告。之後的套件必須符合現代套件合約;
相同缺口會使發行驗證失敗。
當發行問題關於實際可安裝套件時,請使用更廣的 Package Acceptance profile:
smoke:快速套件安裝/channel/agent、Gateway 網路與設定重新載入 lanespackage:安裝/更新/重啟/Plugin 套件合約,加上即時 ClawHub skill 安裝證明;這是發行檢查預設值product:package加上 MCP channels、cron/subagent 清理、OpenAI 網頁搜尋與 OpenWebUIfull:包含 OpenWebUI 的 Docker 發行路徑區塊custom:用於聚焦重新執行的精確docker_lanes清單
telegram_mode=mock-openai 或
telegram_mode=live-frontier。workflow 會把已解析的
package-under-test tarball 傳入 Telegram lane;獨立 Telegram workflow 仍接受已發布的 npm spec
用於發布後檢查。
發行發布自動化
OpenClaw Release Publish 是一般的變更性發布進入點。它會依照發行需求的順序協調 trusted-publisher workflow:
- 簽出發行標籤並解析其 commit SHA。
- 驗證該標籤可從
main或release/*抵達。 - 執行
pnpm plugins:sync:check。 - 以
publish_scope=all-publishable和ref=<release-sha>派送Plugin NPM Release。 - 使用相同 scope 與 SHA 派送
Plugin ClawHub Release。 - 使用發行標籤、npm dist-tag 與已儲存的
preflight_run_id派送OpenClaw NPM Release。
latest 必須明確指定:
Plugin NPM Release 和 Plugin ClawHub Release workflow。
對於指定的 Plugin 修復,請將
plugin_publish_scope=selected 和 plugins=@openclaw/name 傳給
OpenClaw Release Publish;或在不得發布 OpenClaw 套件時,直接派送子 workflow。
NPM workflow 輸入
OpenClaw NPM Release 接受以下由操作者控制的輸入:
tag:必要發行標籤,例如v2026.4.2、v2026.4.2-1或v2026.4.2-beta.1;當preflight_only=true時,它也可以是目前完整 40 字元 workflow 分支 commit SHA, 用於僅驗證的 preflightpreflight_only:true表示僅驗證/建置/打包,false表示真正的發布路徑preflight_run_id:真正發布路徑上必要,讓 workflow 重用成功 preflight 執行產生的已準備 tarballnpm_dist_tag:發布路徑的 npm 目標 tag;預設為beta
OpenClaw Release Publish 接受以下由操作者控制的輸入:
tag:必要發行標籤;必須已存在preflight_run_id:成功的OpenClaw NPM Releasepreflight run id; 當publish_openclaw_npm=true時為必要npm_dist_tag:OpenClaw 套件的 npm 目標 tagplugin_publish_scope:預設為all-publishable;只有聚焦修復工作才使用selectedplugins:當plugin_publish_scope=selected時,為逗號分隔的@openclaw/*套件名稱publish_openclaw_npm:預設為true;只有把 workflow 作為僅 Plugin 修復協調器使用時,才設為falsewait_for_clawhub:預設為false,因此 npm 可用性不會被 ClawHub sidecar 阻擋; 只有當 workflow 完成必須包含 ClawHub 完成時,才設為true
OpenClaw Release Checks 接受以下由操作者控制的輸入:
ref:要驗證的分支、標籤或完整 commit SHA。帶有 secret 的檢查要求已解析 commit 可從 OpenClaw 分支或發行標籤抵達。run_release_soak:在穩定版/預設發行檢查中選擇啟用完整 live/E2E、Docker 發行路徑,以及 all-since upgrade-survivor soak。它會由release_profile=full強制啟用。
- 穩定版與修正版標籤可以發布到
beta或latest - Beta prerelease 標籤只能發布到
beta - 對於
OpenClaw NPM Release,只有當preflight_only=true時才允許完整 commit SHA 輸入 OpenClaw Release Checks和Full Release Validation一律僅用於驗證- 真正的發布路徑必須使用 preflight 期間使用的同一個
npm_dist_tag; workflow 會在發布繼續前驗證該中繼資料
穩定 npm 發行順序
建立穩定 npm 發行時:- 以
preflight_only=true執行OpenClaw NPM Release- 在標籤存在前,你可以使用目前完整 workflow 分支 commit SHA,對 preflight workflow 執行僅驗證的 dry run
- 一般 beta-first 流程選擇
npm_dist_tag=beta;只有在你刻意要直接發布穩定版時,才選擇latest - 當你想從單一手動 workflow 取得一般 CI 加上 live prompt cache、Docker、QA Lab、Matrix 與 Telegram 涵蓋範圍時,
請在發行分支、發行標籤或完整 commit SHA 上執行
Full Release Validation - 如果你刻意只需要確定性的正常測試圖,請改在發行 ref 上執行手動
CIworkflow - 儲存成功的
preflight_run_id - 使用相同
tag、相同npm_dist_tag與已儲存的preflight_run_id執行OpenClaw Release Publish;它會先將外部化 Plugin 發布到 npm 和 ClawHub,再提升 OpenClaw npm 套件 - 如果發行落在
beta,請使用私有openclaw/releases-private/.github/workflows/openclaw-npm-dist-tags.ymlworkflow,將該穩定版本從beta提升到latest - 如果發行是刻意直接發布到
latest,且beta應立即跟隨同一個穩定建置,請使用同一個私有 workflow,將兩個 dist-tags 都指向該穩定版本;或讓其排程自我修復同步稍後移動beta
NPM_TOKEN,
而 public repo 則維持僅 OIDC 發布。
這能讓直接發布路徑與 beta-first 提升路徑都保有文件化,並對操作者可見。
如果維護者必須退回使用本機 npm 驗證,請只在專用 tmux session 內執行任何 1Password
CLI (op) 命令。不要從主要 agent shell 直接呼叫 op;將它保留在 tmux 內可讓提示、
警示與 OTP 處理可觀測,並防止重複的主機警示。
公開參考資料
.github/workflows/full-release-validation.yml.github/workflows/package-acceptance.yml.github/workflows/openclaw-npm-release.yml.github/workflows/openclaw-release-checks.yml.github/workflows/openclaw-cross-os-release-checks-reusable.ymlscripts/resolve-openclaw-package-candidate.mjsscripts/openclaw-npm-release-check.tsscripts/package-mac-dist.shscripts/make_appcast.sh
openclaw/maintainers/release/README.md
中的私有發行文件作為實際 runbook。