Community程式設計與開發github.com

labs-graduation

將功能從 Control UI Labs 中遷出,可選擇預設開啟或關閉。當要求推廣、畢業或發布 Labs 功能時使用。

labs-graduation 是什麼?

這個技能(或稱任務、規範)提供了一套嚴謹的流程,將一個仍處於「實驗室(Labs)」階段的功能正式「畢業」,使其成為控制面 UI 的標準功能。它強烈建議在開始之前,先由功能負責人決定兩個獨立事項:是否要完全移除 Labs 的開關(即「離開 Labs」),以及預設狀態是開啟還是關閉。這項技能特別強調必須根據真實的生產環境數據來評估風險(例如成本或 tokens 消耗),而非模擬數據。它也詳細說明了在多個平台上(如 Claude Code、Cursor、Codex)的具體操作步驟,包括修改預設值、刪除 Labs 註冊表項、更新文件、修正用詞、重新生成相關檔案,並在 Pull Request 中提供截圖與端到端的測試證明。最後,它還提醒在合併後,舊版 build 仍會顯示 Labs 開關,需要明確告知用戶。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/clawdbot/clawdbot/tree/main/.agents/skills/labs-graduation

Installed? Explore more 程式設計與開發 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

畢業一個 Labs 功能

畢業儀式會移除功能的 Labs 開關,使其成為一個正常功能。在開始任何程式碼之前,由功能負責人做出兩個獨立的決定:

  1. 離開 Labs: 功能獲得一個永久家園(自己的設定或外掛頁面),並移除 Labs 相關字眼。
  2. 預設: 預設開啟,或預設仍關閉。

這兩個決定是獨立的。#197029 最初嘗試兩者皆做,但最終只發布了第一個:Advisor 離開了 Labs,但預設保持關閉。請詢問需要哪一個;不要假設「畢業」就等於「預設開啟」。

先例:Swarm 預設開啟 (#136514)、Tool Search 預設開啟 (#154068)、原生外掛 UI 無需 Labs 選擇加入 (de50262a1f96)、Labs 功能移至設定 (#145460)、Advisor 離開 Labs 但仍關 (#197029)。

PR 之前

  • 在真實路徑上衡量成本或風險,如果功能會花費金錢或 tokens,或改變從未選擇加入的用戶的行為。來自模擬或單元測試的今日數據不是證明。#197074 合併了一個來自模擬的快取成本主張,但被實際提供者駁回,並在 #197175 中被還原。請使用功能自己的 PR 已建立的實際測量方法,並將數據放在 PR 正文中。
  • 先解決已知的缺陷。 Advisor 的畢業等待其 fork 快取修復 (#197203, #197223, #197224, #197226),因為預設開啟會讓每個用戶都承擔未快取的成本。
  • 找到仍存在的啟用路徑。 在 Labs 行消失後,用戶必須仍能從 UI 打開該功能。一個捆綁的外掛使用 設定 → 外掛 → <名稱> → 啟用;一個核心功能需要其設定頁面。只有在沒有開關時才添加一個。

變更

  1. 預設。 只有在負責人選擇預設開啟時才更改:捆綁外掛的 openclaw.plugin.json 中的 enabledByDefault,或核心配置預設值。任何現有的明確 false(或功能的選擇退出值)必須繼續運作,且現有的 true 必須保持開啟。永遠不要添加一個會改寫已儲存配置以改變某人選擇的遷移。
  2. Labs。 從 ui/src/pages/labs/labs-registry.ts 中移除該條目,以及所有只有它使用的東西:labs-page.tsx 行或插槽、labs-feature-state.ts 條目、字串和測試。
  3. 文件。 將文件片段從 docs/concepts/experimental-features.md 移至其自己的參考頁面。在該處留下一段帶有舊錨點的說明,表示它已畢業、其預設值以及在哪裡開啟它。更新「Labs 包含...」列表和「目前有紀錄的標誌」表格。
  4. 用詞。 從 manifest 描述、套件描述、README、外掛摘要,以及任何面向用戶或模型的文字(如提示前綴)中移除「Experimental」和「OpenClaw Labs」。
  5. 產生的檔案。 重新產生,永遠不要手動合併:pnpm config:docs:gen、pnpm plugins:inventory:gen。根據 ui/AGENTS.md,Control UI 在地化產出物(*.meta.json、*.tm.jsonl、catalog-fallbacks.json)不應包含在 PR 中;在地化更新工作流程會處理它們。pnpm ui:i18n:verify 必須通過。
  6. 升級驗證。 僅針對預設變更:證明在真實升級過程中,沒有已儲存的條目獲得新預設值,明確的關閉保持關閉,明確的開啟保持開啟。如果預設值保持不變,則不需要升級案例;#197029 放棄了它為預設開啟建立的那個案例。

PR 中的證明

  • Control UI 截圖,上傳前檢查是否含有私人數據:Labs 的前後對比,以及在真實 Gateway 上運作的啟用路徑。使用 gh pr comment <n> --attach '<file>#<alt text>' 附加它們。
  • 啟用路徑已進行端到端測試:開關儲存了預期的配置,且無需重啟即可生效。
  • 該功能的測試和 Labs 頁面測試通過;測試行數不增加。
  • 文件的主張與程式碼相符。ClawSweeper 捕捉到了 Advisor 的「每個 everyMinutes 最多一次審查」,這在啟用 everyToolCalls 時是不正確的。

合併之後

新位置僅出現在包含該合併的 build 中。告訴用戶確切的路徑,以及舊版 build 仍會顯示 Labs 開關。

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

1password

Set up and use 1Password CLI for sign-in, desktop integration, and reading or injecting secrets.

acp-router

Route plain-language requests for Claude Code, Cursor, Copilot, OpenClaw ACP, OpenCode, Gemini CLI, Grok Build, Qwen, Kiro, Kimi, iFlow, Factory Droid, Kilocode, or explicit ACP harness work into either OpenClaw ACP runtime sessions or direct acpx-driven sessions ("telephone game" flow). For coding-agent thread requests, read this skill first, then use only `sessions_spawn` for thread creation. Codex chat binding defaults to the native Codex app-server plugin unless ACP is explicit or background spawn needs ACP.

add-model-provider

Add and live-prove a model provider with non-interactive config one-liners, without exposing credentials.

agent-transcript

Requested GitHub PR/issue agent transcripts: redact, trim, preview, and insert safely.

apple-notes

Create, view, edit, delete, search, move, or export Apple Notes via the memo CLI on macOS.

apple-reminders

List, add, edit, complete, or delete Apple Reminders and reminder lists via remindctl.

auto-qa

Run OpenClaw-wide autonomous QA and live/stress campaigns across independent subsystem lanes, with verified fixes and a resumable evidence report.

autoreview

Structured code review through the shared OpenClaw agent-skills installation.

bear-notes

Create, search, and manage Bear notes via grizzly CLI.

blacksmith-testbox

Run Blacksmith Testbox for CI-parity checks, secrets, hosted services, migrations, or builds local cannot reproduce.

block-kit

Use proactively for structured or interactive Slack replies, and when asked to author or validate native Slack Block Kit JSON.

blogwatcher

Monitor blogs and RSS/Atom feeds for updates using the blogwatcher CLI.

blucli

BluOS CLI (blu) for discovery, playback, grouping, and volume.

bluebubbles

Send and manage iMessages via BlueBubbles, including attachments, tapbacks, edits, replies, and groups.

browser-automation

Use when controlling web pages with the OpenClaw browser tool, especially multi-step flows, login checks, tab management, or recovery from stale refs/timeouts.

camsnap

Capture frames or clips from RTSP/ONVIF cameras and local webcams, including USB pan/tilt/zoom control.

canvas

Present HTML on connected OpenClaw node canvases, navigate/eval/snapshot, and debug canvas host URLs.

channel-message-flows

Use when running QA Lab channel message flow evidence.

clawdtributor

Clawtributor PRs here, last week or another window: discover conversation refs, recheck GitHub, rank by impact.

clawhub

Search ClawHub for plugins by default, or skills and agent Templates when requested; add Templates; install, verify, update, uninstall, publish, or sync skills.

相關技能