OpenClaw Skills 設定指南:自訂 Agent 能力與環境變數
開發者在管理多個自動化腳本與工具時,經常會遇到設定檔散落各處、權限管理混亂,或是不同專案間依賴衝突的困擾。透過統一的配置方式來管理你的自動化工具,能大幅減少除錯時間,讓你更專注於核心邏輯的開發。
OpenClaw 的 skills 配置功能,讓你能夠輕鬆管理與安裝各類自動化技能。大部分的技能載入與安裝設定都位於 ~/.openclaw/openclaw.json 檔案中的 skills 區塊,而針對特定 Agent 的技能權限,則可以在 agents.defaults.skills 或 agents.list[].skills 中進行設定。
{ skills: { allowBundled: ["gemini", "peekaboo"], load: { extraDirs: ["~/Projects/agent-scripts/skills", "~/Projects/oss/some-skill-pack/skills"], watch: true, watchDebounceMs: 250, }, install: { preferBrew: true, nodeManager: "npm", // npm | pnpm | yarn | bun (Gateway runtime still Node; bun not recommended) }, entries: { "image-lab": { enabled: true, apiKey: { source: "env", provider: "default", id: "GEMINI_API_KEY" }, // or plaintext string env: { GEMINI_API_KEY: "GEMINI_KEY_HERE", }, }, peekaboo: { enabled: true }, sag: { enabled: false }, }, },}若你需要內建的圖像生成或編輯功能,建議優先使用 agents.defaults.imageGenerationModel 搭配核心的 image_generate 工具。skills.entries.* 僅適用於自訂或第三方技能的工作流程。
如果你選擇了特定的圖像供應商或模型,請記得同時設定該供應商的認證或 API 金鑰。常見的範例如 GEMINI_API_KEY 或 GOOGLE_API_KEY(適用於 google/*)、OPENAI_API_KEY(適用於 openai/*),以及 FAL_KEY(適用於 fal/*)。
範例:
- 原生 Nano Banana 風格設定:
agents.defaults.imageGenerationModel.primary: "google/gemini-3.1-flash-image-preview" - 原生 fal 設定:
agents.defaults.imageGenerationModel.primary: "fal/fal-ai/flux/dev"
Agent 技能白名單
Section titled “Agent 技能白名單”當你希望在同一台機器或工作區使用相同的技能根目錄,但又想為每個 Agent 設定不同的可見技能清單時,可以使用 Agent 配置。
{ agents: { defaults: { skills: ["github", "weather"], }, list: [ { id: "writer" }, // inherits defaults -> github, weather { id: "docs", skills: ["docs-search"] }, // replaces defaults { id: "locked-down", skills: [] }, // no skills ], },}規則:
agents.defaults.skills:為那些省略了agents.list[].skills的 Agent 提供共享的基礎白名單。- 若省略
agents.defaults.skills,則預設不限制任何技能。 agents.list[].skills:為該 Agent 設定明確的最終技能集;它不會與預設值合併。agents.list[].skills: []:表示該 Agent 不開放任何技能。
此處詳細說明各項配置欄位的功能與預設行為。
- 內建的技能根目錄始終包含
~/.openclaw/skills、~/.agents/skills、<workspace>/.agents/skills以及<workspace>/skills。 allowBundled:僅針對 bundled 技能的可選白名單。設定後,僅清單中的 bundled 技能有效(管理技能、Agent 技能與工作區技能不受影響)。load.extraDirs:額外掃描的技能目錄(優先級最低)。load.watch:監控技能資料夾並重新整理技能快照(預設:true)。load.watchDebounceMs:技能監控事件的防抖動時間,單位為毫秒(預設:250)。install.preferBrew:在可用時優先使用 brew 安裝程式(預設:true)。install.nodeManager:Node.js 安裝程式偏好(npm|pnpm|yarn|bun,預設:npm)。這僅影響 skill installs;Gateway 執行環境仍應使用 Node.js(不建議在 WhatsApp/Telegram 中使用 bun)。openclaw setup --node-manager的範圍較窄,目前接受npm、pnpm或bun。若你想使用 Yarn 來安裝技能,請手動設定skills.install.nodeManager: "yarn"。entries.<skillKey>:針對個別技能的覆寫設定。agents.defaults.skills:可選的預設技能白名單,由省略agents.list[].skills的 Agent 繼承。agents.list[].skills:可選的個別 Agent 最終技能白名單;明確的清單會取代繼承的預設值,而非進行合併。
個別技能欄位:
enabled:設為false可停用該技能,即使它是 bundled 或已安裝的。env:注入 Agent 執行時的環境變數(僅在尚未設定時生效)。apiKey:為宣告主要環境變數的技能提供的便利選項。支援純文字字串或 SecretRef 物件({ source, provider, id })。
了解載入順序與沙盒環境的差異,能幫助你更精準地除錯。
entries下的鍵預設對應技能名稱。如果技能定義了metadata.openclaw.skillKey,請改用該鍵。- 載入優先順序為
<workspace>/skills→<workspace>/.agents/skills→~/.agents/skills→~/.openclaw/openclaw.json→ bundled 技能 →skills.load.extraDirs。 - 當啟用監控功能時,技能的變更會在下一次 Agent 執行時生效。
沙盒技能與環境變數
Section titled “沙盒技能與環境變數”當工作階段處於 sandboxed 狀態時,技能處理程序會在設定的沙盒後端內執行。沙盒不會繼承主機的 process.env。
請使用下列方式之一:
- 針對 Docker 後端使用
agents.defaults.sandbox.docker.env(或個別 Agent 的agents.list[].sandbox.docker.env)。 - 將環境變數寫入你的自訂沙盒映像檔或遠端沙盒環境中。
全域的 env 與 skills.entries.<skill>.env/apiKey 僅適用於主機 (host) 執行。
若需要進一步協助,請參考 AI Setup Assistant。
OpenClaw Expert
還是卡住了?
如果這篇文件沒有解決你的情境,直接問 OpenClaw Expert,拿到可執行步驟。