Skills

Skills 工作坊

Status: proposal

Skill Workshop 是 OpenClaw 建立與更新工作區 Skills 的受控途徑。代理程式與操作人員絕不會透過此途徑直接寫入 SKILL.md,而是建立一份提案(包含內容、目標繫結、掃描器狀態、雜湊及回復中繼資料的待處理草稿);只有在套用後,提案才會成為正式啟用的 Skill。

Skill Workshop 僅寫入工作區 Skills。它絕不會觸及內建、外掛、ClawHub、額外根目錄、受管理、個人代理程式或系統 Skills。

運作方式

  • **提案優先:**產生的內容會儲存為 PROPOSAL.md,而不是 SKILL.md
  • **套用是唯一的正式寫入操作:**建立、更新與修訂絕不會變更 使用中的 Skills。
  • **限定於工作區:**建立操作以工作區的 skills/ 根目錄為目標;只有可寫入的工作區 Skills 才允許更新。
  • **不覆寫:**如果目標 Skill 已存在,建立操作會失敗。
  • **雜湊繫結:**更新提案會繫結至目前的目標雜湊;如果正式 Skill 在套用前發生變更, 提案會變成 stale
  • **掃描器把關:**套用會在寫入前重新執行安全性掃描器。
  • **可復原:**套用會在變更正式檔案前寫入回復中繼資料。
  • **介面一致:**聊天、命令列介面與閘道皆呼叫相同的服務。

生命週期

text
建立/更新 -> 待處理修訂       -> 待處理套用       -> 已套用拒絕       -> 已拒絕隔離       -> 已隔離目標變更   -> 已過期

只有 pending 提案可以修訂、套用、拒絕或隔離。

生命週期管理

閘道會在共用狀態資料庫中追蹤 Skills 的彙總使用情況。它每天會檢查一次由 Skill Workshop 建立並套用的 Skills。超過 30 天未使用的 Skills 會變成 stale;90 天後則會變成 archived,並且不再納入新代理程式的 Skill 快照。已封存 Skill 的檔案在磁碟上維持不變。手動編寫的 Skills 永遠不會受到管理;只有由 Skill Workshop 提案建立的 Skills 才會進入生命週期管理。

釘選的 Skills 會略過生命週期轉換。已過期的 Skill 在再次使用且下一次清理執行後,會回到 active。已封存的 Skills 只能透過明確的還原操作恢復:

生命週期轉換與還原會套用至新工作階段;執行中的工作階段會保留目前的 Skill 快照。

bash
openclaw skills curator statusopenclaw skills curator pin <skill>openclaw skills curator unpin <skill>openclaw skills curator restore <skill>

所有管理器命令都接受 --json。狀態也會回報可重現判定的重疊候選項,但僅作為建議;它絕不會合併 Skills 或呼叫模型。

聊天

向代理程式描述你想要的 Skill;它會呼叫 skill_workshop 並傳回提案 ID。

從近期工作中學習

使用 /learn,將目前對話或指定來源轉換成一份遵循標準指引的 Skill 提案:

text
/learn/learn docs/runbook.md 和 https://example.com/guide;著重於復原

未提供要求時,/learn 會要求代理程式從目前對話中提煉可重複使用的工作流程。提供要求時,代理程式會將路徑、URL、貼上的筆記及對話參照視為來源,同時遵守重點、範圍與命名要求。它會使用現有工具收集來源,然後以 action: "create" 呼叫 skill_workshop

產生的提案會維持 pending/learn 絕不會套用它。請透過一般核准流程或使用 openclaw skills workshop 來檢閱並套用提案。

建立:

text
建立一個名為 morning-catchup 的 Skill,用來執行我每週一的收件匣例行工作。

更新現有的工作區 Skill:

text
更新 trip-planning,讓它在預訂前也檢查座位圖。

反覆調整待處理提案:

text
顯示 morning-catchup 提案。修訂它,讓它也標示任何標記為緊急的項目。套用 morning-catchup 提案。

由代理程式發起的 applyrejectquarantine 預設會顯示核准提示。在受信任的環境中,將 skills.workshop.approvalPolicy 設為 "auto" 即可略過提示。

提示會識別提案 ID 與目標 Skill,並顯示提案說明、支援檔案數量及本文大小。核准要求會限制在代理程式工具監看程式逾時前完成。如果提示到期前未收到決定,生命週期操作就不會執行:提案會維持待處理且不變。你可以稍後在 Skill Workshop 使用者介面中決定,或執行 openclaw skills workshop apply|reject|quarantine <proposal-id>。代理程式不應以迴圈方式重試已到期的生命週期操作。

命令列介面

bash
# 建立openclaw skills workshop propose-create \  --name morning-catchup \  --description "每日收件匣追蹤:分類、封存、突顯、起草、規劃" \  --proposal ./PROPOSAL.md # 更新現有的工作區 Skillopenclaw skills workshop propose-update trip-planning --proposal ./PROPOSAL.md # 列出並檢查openclaw skills workshop listopenclaw skills workshop inspect <proposal-id> # 核准前修訂openclaw skills workshop revise <proposal-id> --proposal ./PROPOSAL.md # 結案openclaw skills workshop apply <proposal-id>openclaw skills workshop reject <proposal-id> --reason "重複"openclaw skills workshop quarantine <proposal-id> --reason "需要安全性審查"

每個子命令都接受 --agent <id>(目標工作區;預設先從目前工作目錄推斷,接著使用預設代理程式)與 --json(結構化輸出)。propose-createpropose-updaterevise 也接受 --goal <text>--evidence <text>,以便將提案脈絡與 --proposal 一併記錄。

提案內容

提案待處理期間會儲存為 PROPOSAL.md,並包含僅限提案使用的 frontmatter:

markdown
---name: "morning-catchup"description: "每日收件匣追蹤:分類、封存、突顯、起草、規劃"status: proposalversion: "v1"date: "2026-05-30T00:00:00.000Z"---

套用時,Skill Workshop 會寫入正式的 SKILL.md,並移除僅限提案使用的欄位:status、提案 version 與提案 date

支援檔案

當提議的 Skill 需要在 PROPOSAL.md 旁放置檔案時,請使用 --proposal-dir

bash
openclaw skills workshop propose-create \  --name weekly-update \  --description "週五總結:統計、重點、下週最重要的三件事" \  --proposal-dir ./weekly-update-proposal

該目錄必須包含 PROPOSAL.md。支援檔案必須位於 assets/examples/references/scripts/templates/ 之下。Skill Workshop 會掃描檔案、計算雜湊並與提案一同儲存,只有在套用時才會將它們寫入正式 SKILL.md 旁。

會遭拒絕的支援檔案路徑包括:絕對路徑、隱藏路徑區段、路徑周遊、重疊路徑、可執行檔、非 UTF-8 文字、空位元組,以及標準支援資料夾以外的路徑。

代理程式工具

模型使用 skill_workshop,並需要一個必要的 actioncreate | update | revise | list | inspect | apply | reject | quarantine。 其他參數依操作而定:

參數 使用操作 備註
name create, inspect, revise create 必填;否則依名稱解析待處理提案
description create, update, revise 上限 160 位元組
skill_name update 現有 Skill 名稱或索引鍵
proposal_content create, update, revise 儲存為 PROPOSAL.md;上限由 skills.workshop.maxSkillBytes 決定
support_files create, update, revise { path, content } 陣列
goal, evidence create, update, revise 自由文字脈絡
proposal_id inspect, revise, apply, reject, quarantine 目標提案
reason apply, reject, quarantine 選填
query, status, limit list 篩選/分頁;limit 上限 50,預設 20

代理程式必須使用 skill_workshop 處理產生的 Skill 工作。它們不得透過 writeeditexec、殼層命令或直接檔案系統操作建立或變更提案檔案。

建議的 Skills

OpenClaw 會在互動回合結束時偵測「下次」、「記得要」等持久性指示以及回應式修正,包括失敗的回合。在下一回合,代理程式會提議透過 skill_workshop 儲存最近偵測到的工作流程;是否建立提案由使用者決定。這項內建建議本身不會建立或變更 Skill。若要改為直接建立待處理提案,請啟用 skills.workshop.autonomous.enabled。在 Control UI 中,Workshop 分頁會在頁首提供相同的 Self-learning 切換開關,並在空白提案看板上提供啟用按鈕。

掃描過去的工作階段

Control UI 可以檢閱較早的工作,而不必啟用自主自我學習。 開啟 Plugins → Workshop,然後選取 Find skill ideas。掃描會從最新的合格工作階段開始,檢閱範圍有限且內容充實的工作。它會略過排程、心跳偵測、掛鉤、子代理程式、ACP、外掛擁有及內部審查工作階段,也會略過模型回合少於六次的對話。

檢閱器會使用所選代理程式設定的模型,並接收已遮蔽機密且限制大小的對話記錄組合。它採用與經驗檢閱相同的保守標準:具體的復原模式,或能減少未來至少兩次模型或工具呼叫的穩定程序。例行工作與一次性事實不應產生任何提案。

一次掃描最多可以建立或修訂三份待處理提案。它無法套用、拒絕、隔離提案或編輯正式 Skill。Workshop 會顯示累計涵蓋範圍,例如 已檢閱 20 個工作階段 · 6 月 18 日至今天 · 找到 2 個構想。選取 Scan earlier work,即可從已保存的最早工作階段游標繼續。用盡可用歷史記錄後,該操作會變成 Scan new work

歷史審查一律手動進行,即使 skills.workshop.autonomous.enabledfalse。每次點擊都會啟動一次模型執行, 因此適用供應商的定價與資料處理條款。游標與涵蓋範圍計數 會儲存在共用的 OpenClaw 狀態資料庫中;逐字稿內容不會複製 到掃描狀態中。

啟用自主擷取後,OpenClaw 也可以在成功完成大量工作,且整個代理程式系統 進入閒置狀態後,執行保守審查。該隔離審查最多可以建立或 修訂一項待處理提案。即使 approvalPolicy"auto",它也無法更新使用中的 Skill,或套用、拒絕、隔離 提案。

請參閱自我學習,瞭解啟用方式、資格條件、隱私權與費用詳情、 提案門檻及疑難排解。

核准與自主性

json5
{  skills: {    workshop: {      autonomous: {        enabled: false,      },      allowSymlinkTargetWrites: false,      approvalPolicy: "pending",      maxPending: 50,      maxSkillBytes: 40000,    },  },}
設定 預設值 效果
autonomous.enabled false 根據明確更正建立待處理提案;在閒置延遲後,也會根據已完成的大量工作建立提案,前提是其中包含可重複使用的復原方式或能顯著節省往返操作。
allowSymlinkTargetWrites false 允許套用操作透過工作區 Skill 符號連結寫入,前提是其實際目標列於 skills.load.allowSymlinkTargets
approvalPolicy "pending" "pending" 要求代理程式發起 applyrejectquarantine 前顯示核准提示。"auto" 會略過提示(代理程式仍須呼叫該動作)。
maxPending 50 限制每個工作區的待處理與已隔離提案數量(1-200)。
maxSkillBytes 40000 限制提案本文的位元組大小(1024-200000)。

自主擷取會辨識前瞻性規則(例如「從現在開始」)與回應式 更正(例如「這不是我要求的內容」)。它會依主題將新指示分組,每回合最多建立 三項提案,將詞彙相符項目路由至現有且可寫入的工作區 Skills,並在另一項更正指向相同 Skill 時 修訂自己的待處理提案。

對於未包含明確更正、但已成功完成的大量工作,所選 模型會在隔離執行中判斷已完成的軌跡是否達到保守的提案門檻。 前景模型不會在回覆前收到學習提示。背景審查程式會保留 前景執行作為提案來源依據,且無法存取一般代理程式工具,也無法做出生命週期 決策。只有當前景執行階段回報其確切解析後的模型,並確認 skill_workshop 確實可用時,審查才會開始。因此,限制性或未知的工具政策 會採取封閉失敗,不建立任何提案。

請參閱自我學習,瞭解完整的自主審查行為與安全 模型。

無論 maxSkillBytes 為何,提案描述一律限制為 160 位元組。

閘道方法

方法 範圍
skills.proposals.list operator.read
skills.proposals.inspect operator.read
skills.proposals.historyStatus operator.read
skills.proposals.historyScan operator.admin
skills.proposals.create operator.admin
skills.proposals.update operator.admin
skills.proposals.revise operator.admin
skills.proposals.requestRevision operator.admin
skills.proposals.apply operator.admin
skills.proposals.reject operator.admin
skills.proposals.quarantine operator.admin
skills.curator.status operator.read
skills.curator.pin operator.admin
skills.curator.unpin operator.admin
skills.curator.restore operator.admin

requestRevision 僅限閘道使用(命令列介面或代理程式工具沒有對應功能):它會 將自由文字修訂指示轉送至擁有者代理程式的聊天工作階段, 而非直接取代 PROPOSAL.md,適用於要求代理程式 進行修訂,而不是提交字面新內容的 UI。

historyStatushistoryScan 是控制 UI 的支援方法。historyScan 接受 direction: "older" | "newer";它一律將結果保留為待處理 提案。

儲存空間

text
&lt;OPENCLAW_STATE_DIR&gt;/skill-workshop/  proposals.json  proposals/<proposal-id>/    proposal.json    PROPOSAL.md    rollback.json    assets/    examples/    references/    scripts/    templates/

預設狀態目錄:~/.openclaw

  • proposal.json:標準提案記錄。
  • proposals.json:快速清單索引,可從提案資料夾重建。
  • PROPOSAL.md:待處理的 Skill 提案。
  • rollback.json:套用變更至使用中的檔案前寫入的復原中繼資料。

限制

限制
描述 160 位元組
提案本文 skills.workshop.maxSkillBytes(預設 40,000;硬性上限 1 MiB)
支援檔案 每項提案 64 個
支援檔案大小 每個 256 KiB,總計 2 MiB
待處理 + 已隔離提案 每個工作區 skills.workshop.maxPending(預設 50)

疑難排解

問題 解決方式
Skill proposal description is too large description 縮短至 160 位元組以下。
Skill proposal content is too large 縮短提案本文,或提高 skills.workshop.maxSkillBytes
Target skill changed after proposal creation 依據目前目標修訂提案,或建立新提案。
Proposal scan failed 檢查掃描器發現的問題,然後修訂或隔離提案。
untrusted symlink target 設定 skills.load.allowSymlinkTargets,且僅針對刻意共用的 Skill 根目錄啟用 skills.workshop.allowSymlinkTargetWrites
Support file paths must be under one of... 將支援檔案移至 assets/examples/references/scripts/templates/ 下。
提案未顯示於清單中 檢查所選的 --agent 工作區與 OPENCLAW_STATE_DIR
代理程式無法呼叫 skill_workshop 檢查使用中的工具政策與執行模式。coding 包含該工具;限制性的 tools.allow 政策必須明確列出它,而沙箱化執行必須使用一般主機端代理程式工作階段或命令列介面。

工具政策診斷

啟用自主擷取後,openclaw doctor 會針對預設代理程式執行 core/doctor/skill-workshop-tool-policy 檢查。如果政策 隱藏 skill_workshop,警告會指出第一個排除它的設定層, 以及應進行的確切 allowalsoAllow 變更。較舊的操作手冊可能仍使用 openclaw plugins inspect skill-workshop;該命令現在會說明 Skill Workshop 已內建,並在適用時顯示相同的政策提示。

相關內容

Was this useful?
On this page

On this page