跳轉到主要內容
OpenClaw 使用與 AgentSkills 相容的 skill 資料夾來教導 agent 如何使用工具。每個 skill 都是一個目錄, 其中包含帶有 YAML frontmatter 和指示的 SKILL.md。OpenClaw 會載入內建 skills 加上選用的本機覆寫,並在載入時根據 環境、設定和二進位檔是否存在來篩選它們。

位置與優先順序

OpenClaw 會從這些來源載入 skills,優先順序由高到低
#來源路徑
1Workspace skills<workspace>/skills
2專案 agent skills<workspace>/.agents/skills
3個人 agent skills~/.agents/skills
4受管理/本機 skills~/.openclaw/skills
5內建 skills隨安裝提供
6額外 skill 資料夾skills.load.extraDirs (config)
如果 skill 名稱衝突,最高來源會勝出。 Codex CLI 原生的 $CODEX_HOME/skills 目錄不是 OpenClaw 的 skill 根目錄之一。在 Codex harness 模式中,本機 app-server 啟動會使用隔離的 個別 agent Codex homes,因此個人 Codex CLI skills 不會被隱含載入。 使用 openclaw migrate codex --dry-run 來清點它們,並使用 openclaw migrate codex 透過互動式核取方塊提示選擇 skill 目錄, 再將它們複製到目前的 OpenClaw agent workspace。 對於非互動式執行,請重複 --skill <name> 以指定要複製的精確 skills。

個別 agent 與共用 skills

多 agent 設定中,每個 agent 都有自己的 workspace:
範圍路徑可見對象
個別 agent<workspace>/skills僅該 agent
專案 agent<workspace>/.agents/skills僅該 workspace 的 agent
個人 agent~/.agents/skills該機器上的所有 agents
共用受管理/本機~/.openclaw/skills該機器上的所有 agents
共用額外目錄skills.load.extraDirs (最低優先順序)該機器上的所有 agents
相同名稱出現在多個位置 → 最高來源勝出。Workspace 優先於 專案 agent,優先於個人 agent,優先於受管理/本機,優先於內建, 優先於額外目錄。

Agent skill allowlists

Skill 位置和 skill 可見性是不同的控制。 位置/優先順序決定同名 skill 的哪份副本勝出;agent allowlists 決定 agent 實際可以使用哪些 skills。
{
  agents: {
    defaults: {
      skills: ["github", "weather"],
    },
    list: [
      { id: "writer" }, // inherits github, weather
      { id: "docs", skills: ["docs-search"] }, // replaces defaults
      { id: "locked-down", skills: [] }, // no skills
    ],
  },
}
  • 省略 agents.defaults.skills,預設即可不限制 skills。
  • 省略 agents.list[].skills 以繼承 agents.defaults.skills
  • 設定 agents.list[].skills: [] 以停用所有 skills。
  • 非空的 agents.list[].skills 清單是該 agent 的最終集合 - 它不會與預設值合併。
  • 有效的 allowlist 會套用於 prompt 建構、skill slash-command discovery、sandbox sync,以及 skill snapshots。

Plugins 與 skills

Plugins 可以在 openclaw.plugin.json 中列出 skills 目錄來隨附自己的 skills (路徑相對於 Plugin 根目錄)。Plugin skills 會在 Plugin 啟用時載入。 這是放置工具專用操作指南的正確位置,這些指南對工具描述來說太長, 但應該在安裝 Plugin 時可用 - 例如,browser Plugin 隨附 browser-automation skill,用於多步驟瀏覽器控制。 Plugin skill 目錄會合併到與 skills.load.extraDirs 相同的低優先順序路徑, 因此同名的內建、受管理、agent 或 workspace skill 會覆寫它們。 你可以透過 Plugin 設定項目上的 metadata.openclaw.requires.config 來設置門檻。 請參閱 Plugins 了解探索/設定,並參閱 工具 了解這些 skills 教導的工具介面。

Skill Workshop

選用的實驗性 Skill Workshop Plugin 可以根據 agent 工作期間觀察到的可重用程序, 建立或更新 workspace skills。它預設停用,必須透過 plugins.entries.skill-workshop 明確啟用。 Skill Workshop 只會寫入 <workspace>/skills,掃描產生的內容, 支援待核准或自動安全寫入,隔離不安全的提案,並在成功寫入後 重新整理 skill snapshot,讓新的 skills 無需重新啟動 Gateway 即可使用。 用它來處理像是 「下次,請驗證 GIF 歸屬」 這類更正, 或像媒體 QA 檢查清單這類得來不易的工作流程。先從待核准開始; 只有在受信任的 workspaces 中審查其提案後,才使用自動寫入。 完整指南:Skill Workshop Plugin

ClawHub(安裝與同步)

ClawHub 是 OpenClaw 的公開 skills registry。 使用原生 openclaw skills 命令來探索/安裝/更新,或使用獨立的 clawhub CLI 進行發布/同步工作流程。完整指南: ClawHub
動作命令
將 skill 安裝到 workspaceopenclaw skills install <skill-slug>
更新所有已安裝的 skillsopenclaw skills update --all
同步(掃描 + 發布更新)clawhub sync --all
原生 openclaw skills install 會安裝到作用中 workspace 的 skills/ 目錄。獨立的 clawhub CLI 也會安裝到目前工作目錄下的 ./skills(或退回到已設定的 OpenClaw workspace)。OpenClaw 會在下一個 session 將其識別為 <workspace>/skills。 已設定的 skill roots 也支援一層分組,例如 skills/<group>/<skill>/SKILL.md,因此相關的第三方 skills 可以保留在 共用資料夾下,而不需要廣泛遞迴掃描。 需要私有、非 ClawHub 傳遞的 Gateway clients 可以使用 skills.upload.beginskills.upload.chunkskills.upload.commit 暫存 zip skill 封存,然後使用 skills.install({ source: "upload", uploadId, slug, force?, sha256? }) 安裝已提交的上傳。這是供受信任 clients 使用的明確管理員上傳路徑, 不是一般的 openclaw skills install <slug> 或 ClawHub 安裝流程。 它預設關閉,且只有在 openclaw.json 中設定 skills.install.allowUploadedArchives: true 時才會運作。上傳模式仍會安裝到 預設 agent workspace 的 skills/<slug> 目錄;封存內部的資料夾名稱會被忽略, 不會用於最終安裝目標。 ClawHub skill 頁面會在安裝前顯示最新的安全掃描狀態, 並提供 VirusTotal、ClawScan 和靜態分析的 scanner 詳細資料頁。 openclaw skills install <slug> 仍然只是安裝路徑;發布者可透過 ClawHub 儀表板或 clawhub skill rescan <slug> 處理誤判。

安全性

將第三方 skills 視為不受信任的程式碼。啟用前請先閱讀。 對不受信任的輸入和高風險工具,優先使用 sandboxed runs。請參閱 Sandboxing 了解 agent 端控制。
  • Workspace 和 extra-dir skill discovery 只接受其解析後 realpath 仍位於已設定根目錄內的 skill roots 和 SKILL.md 檔案。
  • Gateway private archive installs 預設關閉。明確啟用時, 它們需要包含 SKILL.md 的已提交 zip upload,並重用與 ClawHub skill installs 相同的封存解壓縮、路徑穿越、符號連結、force 和 rollback 保護。 它們由 skills.install.allowUploadedArchives 控制;一般 ClawHub installs 不需要 該設定。
  • Gateway-backed skill dependency installs(skills.install、onboarding,以及 Skills settings UI)會在執行 installer metadata 前先執行內建 dangerous-code scanner。除非呼叫端明確設定 dangerous override,否則 critical findings 預設會阻擋;suspicious findings 仍只會警告。
  • openclaw skills install <slug> 不同 - 它會將 ClawHub skill 資料夾下載到 workspace,且不使用上述 installer-metadata 路徑。
  • skills.entries.*.envskills.entries.*.apiKey 會將 secrets 注入該 agent turn 的 host process(不是 sandbox)。請避免將 secrets 放入 prompts 和 logs。
若需更廣泛的 threat model 和 checklists,請參閱 安全性

SKILL.md 格式

SKILL.md 至少必須包含:
---
name: image-lab
description: Generate or edit images via a provider-backed image workflow
---
OpenClaw 遵循 AgentSkills spec 的版面/意圖。嵌入式 agent 使用的 parser 僅支援單行 frontmatter keys; metadata 應為單行 JSON 物件。在指示中使用 {baseDir} 來參照 skill 資料夾路徑。

選用 frontmatter keys

homepage
string
在 macOS Skills UI 中顯示為「網站」的 URL。也支援透過 metadata.openclaw.homepage 設定。
user-invocable
boolean
預設值:"true"
當為 true 時,skill 會公開為使用者 slash command。
disable-model-invocation
boolean
預設值:"false"
當為 true 時,OpenClaw 會將 skill 的指示排除在 agent 的一般 prompt 之外。skill 仍會安裝,且當 user-invocable 也是 true 時, 仍可作為 slash command 明確執行。
command-dispatch
"tool"
設為 tool 時,slash command 會繞過模型並直接分派到工具。
command-tool
string
設定 command-dispatch: tool 時要叫用的工具名稱。
command-arg-mode
"raw"
預設值:"raw"
對於工具分派,會將原始 args 字串轉交給工具(不進行核心解析)。工具會以 { command: "<raw args>", commandName: "<slash command>", skillName: "<skill name>" } 叫用。

Gating(載入時篩選器)

OpenClaw 會在載入時使用 metadata(單行 JSON)篩選 skills:
---
name: image-lab
description: Generate or edit images via a provider-backed image workflow
metadata:
  {
    "openclaw":
      {
        "requires": { "bins": ["uv"], "env": ["GEMINI_API_KEY"], "config": ["browser.enabled"] },
        "primaryEnv": "GEMINI_API_KEY",
      },
  }
---
metadata.openclaw 底下的欄位:
always
boolean
當為 true 時,一律包含該 skill(略過其他閘門)。
emoji
string
macOS Skills UI 使用的選用 emoji。
homepage
string
在 macOS Skills UI 中顯示為「網站」的選用 URL。
os
"darwin" | "linux" | "win32"
選用平台清單。如果設定,該 skill 只會在這些作業系統上符合資格。
requires.bins
string[]
每一項都必須存在於 PATH
requires.anyBins
string[]
至少一項必須存在於 PATH
requires.env
string[]
環境變數必須存在,或在設定中提供。
requires.config
string[]
必須為 truthy 的 openclaw.json 路徑清單。
primaryEnv
string
skills.entries.<name>.apiKey 相關聯的環境變數名稱。
install
object[]
macOS Skills UI 使用的選用安裝程式規格(brew/node/go/uv/download)。
如果沒有 metadata.openclaw,該 skill 一律符合資格(除非 在設定中停用,或對 bundled skills 被 skills.allowBundled 封鎖)。
metadata.openclaw 不存在時,舊版 metadata.clawdbot 區塊仍會被接受, 因此較舊的已安裝 skills 會保留其 相依性閘門和安裝程式提示。新的和更新後的 skills 應使用 metadata.openclaw

沙箱注意事項

  • requires.bins 會在 skill 載入時於主機上檢查。
  • 如果 agent 在沙箱中,該二進位檔也必須存在於容器內。請透過 agents.defaults.sandbox.docker.setupCommand(或自訂映像檔)安裝它。setupCommand 會在容器建立後執行一次。套件安裝也需要網路出口、可寫入的根檔案系統,以及沙箱中的 root 使用者。
  • 範例:summarize skill(skills/summarize/SKILL.md)需要沙箱容器中有 summarize CLI,才能在那裡執行。

安裝程式規格

---
name: gemini
description: Use Gemini CLI for coding assistance and Google search lookups.
metadata:
  {
    "openclaw":
      {
        "emoji": "♊️",
        "requires": { "bins": ["gemini"] },
        "install":
          [
            {
              "id": "brew",
              "kind": "brew",
              "formula": "gemini-cli",
              "bins": ["gemini"],
              "label": "Install Gemini CLI (brew)",
            },
          ],
      },
  }
---
  • 如果列出多個安裝程式,gateway 會選取單一偏好的選項(可用時使用 brew,否則使用 node)。
  • 如果所有安裝程式都是 download,OpenClaw 會列出每個項目,讓你可以查看可用的成品。
  • 安裝程式規格可以包含 os: ["darwin"|"linux"|"win32"],以依平台篩選選項。
  • Node 安裝會遵循 openclaw.json 中的 skills.install.nodeManager(預設:npm;選項:npm/pnpm/yarn/bun)。這只會影響 skill 安裝;Gateway 執行階段仍應是 Node - WhatsApp/Telegram 不建議使用 Bun。
  • Gateway 後援的安裝程式選擇由偏好驅動:當安裝規格混合多種 kind 時,OpenClaw 會在 skills.install.preferBrew 啟用且 brew 存在時偏好 Homebrew,接著是 uv,接著是設定的 node 管理器,接著是其他備援如 godownload
  • 如果每個安裝規格都是 download,OpenClaw 會顯示所有下載選項,而不是摺疊成一個偏好的安裝程式。
  • **Go 安裝:**如果缺少 gobrew 可用,gateway 會先透過 Homebrew 安裝 Go,並在可能時將 GOBIN 設為 Homebrew 的 bin
  • 下載安裝:url(必要)、archivetar.gz | tar.bz2 | zip)、extract(預設:偵測到封存檔時自動)、stripComponentstargetDir(預設:~/.openclaw/tools/<skillKey>)。

設定覆寫

Bundled 和受管理的 skills 可以在 ~/.openclaw/openclaw.jsonskills.entries 下切換,並提供 env 值:
{
  skills: {
    entries: {
      "image-lab": {
        enabled: true,
        apiKey: { source: "env", provider: "default", id: "GEMINI_API_KEY" }, // or plaintext string
        env: {
          GEMINI_API_KEY: "GEMINI_KEY_HERE",
        },
        config: {
          endpoint: "https://example.invalid",
          model: "nano-pro",
        },
      },
      peekaboo: { enabled: true },
      sag: { enabled: false },
    },
  },
}
enabled
boolean
false 會停用該 skill,即使它是 bundled 或已安裝。 bundled coding-agent skill 需要選擇加入:先設定 skills.entries.coding-agent.enabled: true,再將其公開給 agents, 然後確認 claudecodexopencodepi 其中之一已安裝且 已為其自己的 CLI 完成驗證。
apiKey
string | { source, provider, id }
供宣告 metadata.openclaw.primaryEnv 的 skills 使用的便利項。支援純文字或 SecretRef。
env
Record<string, string>
只有在變數尚未於程序中設定時才注入。
config
object
自訂每個 skill 欄位的選用容器。自訂鍵必須放在這裡。
allowBundled
string[]
僅供 bundled skills 使用的選用允許清單。如果設定,只有清單中的 bundled skills 符合資格(受管理/工作區 skills 不受影響)。
如果 skill 名稱包含連字號,請引用該鍵(JSON5 允許引用鍵)。 設定鍵預設會符合 skill 名稱 - 如果某個 skill 定義了 metadata.openclaw.skillKey,請在 skills.entries 下使用該鍵。
若要在 OpenClaw 內進行庫存圖片生成/編輯,請使用核心 image_generate tool 搭配 agents.defaults.imageGenerationModel, 而不是 bundled skill。這裡的 skill 範例適用於自訂或第三方 工作流程。若要進行原生圖片分析,請使用 image tool 搭配 agents.defaults.imageModel。如果你選擇 openai/*google/*fal/* 或其他供應商特定的圖片模型,也請加入該供應商的 驗證/API 金鑰。

環境注入

當 agent 執行開始時,OpenClaw 會:
  1. 讀取 skill metadata。
  2. skills.entries.<key>.envskills.entries.<key>.apiKey 套用至 process.env
  3. 使用符合資格的 skills 建構系統提示。
  4. 在執行結束後還原原始環境。
環境注入限定於 agent 執行,不是全域 shell 環境。 對於 bundled claude-cli 後端,OpenClaw 也會將相同的 符合資格快照實體化為暫時的 Claude Code plugin,並透過 --plugin-dir 傳遞。Claude Code 接著可以使用其原生 skill resolver, 而 OpenClaw 仍掌握優先順序、每個 agent 的允許清單、gating,以及 skills.entries.* env/API key 注入。其他 CLI 後端只使用 提示目錄。

快照與重新整理

OpenClaw 會在工作階段開始時快照符合資格的 skills,並在同一工作階段的後續回合中 重複使用該清單。skills 或設定的變更會在下一個新工作階段生效。 Skills 可以在兩種情況下於工作階段中途重新整理:
  • Skills watcher 已啟用。
  • 新的符合資格遠端節點出現。
可將此視為熱重新載入:重新整理的清單會在下一個 agent 回合採用。如果該工作階段的有效 agent skill 允許清單變更, OpenClaw 會重新整理快照,讓可見 skills 與目前的 agent 保持一致。

Skills watcher

預設情況下,OpenClaw 會監看 skill 資料夾,並在 SKILL.md 檔案變更時遞增 skills 快照。 在 skills.load 下設定:
{
  skills: {
    load: {
      extraDirs: ["~/Projects/agent-scripts/skills"],
      allowSymlinkTargets: ["~/Projects/manager/skills"],
      watch: true,
      watchDebounceMs: 250,
    },
  },
}
對於內建 skill 根目錄包含符號連結的有意 sibling-repo 版面配置, 請使用 allowSymlinkTargets,例如 ~/.agents/skills/manager -> ~/Projects/manager/skills。目標清單會在 realpath 解析後 進行比對,且應保持狹窄。

遠端 macOS 節點(Linux gateway)

如果 Gateway 在 Linux 上執行,但有一個macOS 節點已連線且 允許 system.run(Exec approvals 安全性未設為 deny), 當必要的二進位檔存在於該節點上時,OpenClaw 可以將僅限 macOS 的 skills 視為符合資格。 agent 應透過 exec tool 搭配 host=node 執行這些 skills。 這仰賴節點回報其命令支援,以及透過 system.whichsystem.run 進行 bin probe。 離線節點不會讓僅限遠端的 skills 可見。如果已連線節點停止回應 bin probes,OpenClaw 會清除其快取的 bin 符合項,讓 agents 不再看見 目前無法在該處執行的 skills。

Token 影響

當 skills 符合資格時,OpenClaw 會將可用 skills 的精簡 XML 清單注入系統提示(透過 pi-coding-agent 中的 formatSkillsForPrompt)。成本是確定性的:
  • 基礎開銷(僅在 ≥1 個 skill 時):195 個字元。
  • **每個 skill:**97 個字元 + XML 逸出後的 <name><description><location> 值長度。
公式(字元):
total = 195 + Σ (97 + len(name_escaped) + len(description_escaped) + len(location_escaped))
XML 逸出會將 & < > " ' 展開成實體(&amp;&lt; 等), 使長度增加。Token 數會依模型 tokenizer 而異。粗略的 OpenAI 風格估算約為 ~4 chars/token,因此每個 skill 97 個字元 ≈ 24 tokens,外加你的實際欄位長度。

受管理 skills 生命週期

OpenClaw 會隨安裝(npm 套件或 OpenClaw.app)提供一組基準 skills 作為 bundled skills~/.openclaw/skills 用於 本機覆寫 - 例如,在不變更 bundled 副本的情況下釘選或修補某個 skill。 Workspace skills 由使用者擁有,且會在名稱衝突時覆寫兩者。

想尋找更多 skills?

瀏覽 https://clawhub.ai。完整設定 schema:Skills 設定

相關