Skills

Konfigurasi Skills

Sebagian besar konfigurasi Skills berada di bawah skills dalam ~/.openclaw/openclaw.json. Visibilitas khusus agen berada di bawah agents.defaults.skills dan agents.list[].skills.

json5
{  skills: {    allowBundled: ["gemini", "peekaboo"],    load: {      extraDirs: ["~/Projects/agent-scripts/skills"],      allowSymlinkTargets: ["~/Projects/manager/skills"],      watch: true,      watchDebounceMs: 250,    },    install: {      preferBrew: true,      nodeManager: "npm",      allowUploadedArchives: false,    },    workshop: {      autonomous: { enabled: false },      allowSymlinkTargetWrites: false,      approvalPolicy: "pending",      maxPending: 50,      maxSkillBytes: 40000,    },    entries: {      "image-lab": {        enabled: true,        apiKey: { source: "env", provider: "default", id: "GEMINI_API_KEY" },        env: { GEMINI_API_KEY: "GEMINI_KEY_HERE" },      },      peekaboo: { enabled: true },      sag: { enabled: false },    },  },}

Pemuatan (skills.load)

skills.load.extraDirsstring[]

Direktori skill tambahan untuk dipindai, dengan prioritas paling rendah (setelah skill bawaan dan Plugin). Path diperluas dengan dukungan ~.

skills.load.allowSymlinkTargetsstring[]

Direktori target asli tepercaya tempat folder skill berupa symlink dapat diarahkan, bahkan ketika symlink berada di luar root yang dikonfigurasi. Gunakan ini untuk tata letak sibling-repo yang disengaja seperti <workspace>/skills/manager -> ~/Projects/manager/skills. Jaga daftar ini tetap sempit — jangan arahkan ke root yang luas seperti ~ atau ~/Projects.

skills.load.watchbooleandefault: true

Pantau folder skill dan segarkan snapshot skill ketika file SKILL.md berubah. Mencakup file bersarang di bawah root skill yang dikelompokkan.

skills.load.watchDebounceMsnumberdefault: 250

Jendela debounce untuk peristiwa pemantau skill dalam milidetik.

Instalasi (skills.install)

skills.install.preferBrewbooleandefault: true

Utamakan penginstal Homebrew ketika brew tersedia.

skills.install.nodeManager"npm" | "pnpm" | "yarn" | "bun"default: "npm"

Preferensi pengelola paket Node untuk instalasi skill. Ini hanya memengaruhi instalasi skill — runtime Gateway tetap harus menggunakan Node (Bun tidak direkomendasikan untuk WhatsApp/Telegram). Gunakan openclaw setup --node-manager untuk npm, pnpm, atau bun; tetapkan "yarn" secara manual untuk instalasi skill berbasis Yarn.

skills.install.allowUploadedArchivesbooleandefault: false

Izinkan klien Gateway operator.admin tepercaya memasang arsip zip privat yang disiapkan melalui skills.upload.*. Instalasi ClawHub normal tidak memerlukan pengaturan ini.

Kebijakan Instalasi Operator (security.installPolicy)

Gunakan security.installPolicy ketika operator memerlukan perintah lokal tepercaya untuk menyetujui atau memblokir instalasi skill dan Plugin dengan kebijakan khusus host. Kebijakan berjalan setelah OpenClaw menyiapkan material sumber dan sebelum instalasi atau pembaruan berlanjut. Ini berlaku untuk skill ClawHub, skill yang diunggah, skill Git/lokal, penginstal dependensi skill, dan sumber instalasi/pembaruan Plugin.

json5
{  security: {    installPolicy: {      enabled: true,      // Omit targets to cover every supported target.      targets: ["skill", "plugin"],      exec: {        source: "exec",        command: "/usr/local/bin/openclaw-install-policy",        args: ["--json"],        timeoutMs: 10000,        noOutputTimeoutMs: 10000,        maxOutputBytes: 1048576,        passEnv: ["OPENCLAW_STATE_DIR", "PATH"],        env: { POLICY_MODE: "strict" },        trustedDirs: ["/usr/local/bin"],      },    },  },}
security.installPolicy.enabledbooleandefault: false

Mengaktifkan kebijakan instalasi milik operator. Ketika diaktifkan tanpa perintah exec yang valid, instalasi gagal tertutup.

security.installPolicy.targets("skill" | "plugin")[]

Filter target opsional. Ketika dihilangkan, kebijakan berlaku untuk setiap target yang didukung sehingga instalasi baru tidak tiba-tiba gagal terbuka.

security.installPolicy.exec.commandstring

Path absolut ke executable kebijakan tepercaya. OpenClaw menjalankannya tanpa shell dan memvalidasi path sebelum digunakan.

security.installPolicy.exec.argsstring[]

Argumen statis yang diteruskan setelah command.

security.installPolicy.exec.timeoutMsnumberdefault: 10000

Runtime wall-clock maksimum untuk satu keputusan kebijakan.

security.installPolicy.exec.noOutputTimeoutMsnumberdefault: timeoutMs

Waktu maksimum tanpa keluaran stdout atau stderr sebelum kebijakan gagal tertutup.

security.installPolicy.exec.maxOutputBytesnumberdefault: 1048576

Byte gabungan stdout dan stderr maksimum yang diterima dari proses kebijakan.

security.installPolicy.exec.env"Record<string,
security.installPolicy.exec.passEnvstring[]

Nama variabel lingkungan yang disalin dari proses OpenClaw ke proses kebijakan. Hanya variabel bernama yang diteruskan.

security.installPolicy.exec.trustedDirsstring[]

Daftar izin opsional untuk direktori yang boleh berisi executable kebijakan.

security.installPolicy.exec.allowInsecurePathbooleandefault: false

Melewati pemeriksaan kepemilikan dan izin path perintah. Gunakan hanya ketika path dilindungi oleh mekanisme lain.

security.installPolicy.exec.allowSymlinkCommandbooleandefault: false

Mengizinkan path perintah yang dikonfigurasi berupa symlink. Target yang diselesaikan tetap harus memenuhi pemeriksaan path lainnya. Argumen skrip interpreter harus berupa file reguler langsung, bukan symlink.

Kebijakan menerima satu objek JSON pada stdin dengan protocolVersion: 1, openclawVersion, targetType, targetName, sourcePath, sourcePathKind, source terstruktur opsional, origin terstruktur, dan request. Kebijakan harus menulis satu objek JSON pada stdout: { "protocolVersion": 1, "decision": "allow" } atau { "protocolVersion": 1, "decision": "block", "reason": "..." }. Exit bukan nol, timeout, JSON cacat, field hilang, atau versi protokol yang tidak didukung akan gagal tertutup.

OpenClaw tidak menjalankan kebijakan instalasi selama startup Gateway normal. Instalasi dan pembaruan gagal tertutup ketika kebijakan diaktifkan tetapi tidak tersedia. openclaw doctor melakukan validasi statis, dan openclaw doctor --deep menjalankan probe instalasi sintetis terhadap perintah yang dikonfigurasi.

Pembaruan massal menerapkan kebijakan per target: pembaruan skill atau Plugin yang diblokir menggagalkan target tersebut tanpa menonaktifkan kebijakan atau melewati target berikutnya dalam batch.

Contoh stdin:

json
{  "protocolVersion": 1,  "openclawVersion": "2026.6.1",  "targetType": "skill",  "targetName": "weather",  "sourcePath": "/var/folders/.../openclaw-skill-clawhub/root",  "sourcePathKind": "directory",  "source": {    "kind": "clawhub",    "authority": "openclaw",    "mutable": false,    "network": true  },  "origin": {    "type": "clawhub",    "registry": "https://clawhub.openclaw.ai",    "slug": "weather",    "version": "1.0.0"  },  "request": {    "kind": "skill-install",    "mode": "install",    "requestedSpecifier": "clawhub:weather@1.0.0"  },  "skill": {    "installId": "clawhub"  }}

Perintah kebijakan minimal:

js
#!/usr/bin/env node let input = "";process.stdin.setEncoding("utf8");process.stdin.on("data", (chunk) => {  input += chunk;});process.stdin.on("end", () => {  const request = JSON.parse(input);  if (request.targetType === "plugin" && request.source?.kind === "local-path") {    process.stdout.write(      JSON.stringify({        protocolVersion: 1,        decision: "block",        reason: "local plugin paths are not approved on this host",      }),    );    return;  }  process.stdout.write(JSON.stringify({ protocolVersion: 1, decision: "allow" }));});

Daftar izin skill bawaan

skills.allowBundledstring[]

Daftar izin opsional hanya untuk skill bawaan. Ketika ditetapkan, hanya skill bawaan dalam daftar yang memenuhi syarat. Skill terkelola, tingkat agen, dan workspace tidak terpengaruh.

Entri per skill (skills.entries)

Kunci di bawah entries cocok dengan name skill secara default. Jika sebuah skill mendefinisikan metadata.openclaw.skillKey, gunakan kunci tersebut sebagai gantinya. Kutip nama yang memakai tanda hubung (JSON5 mengizinkan kunci yang dikutip).

OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNraWxscy5lbnRyaWVzLjxrZXk .enabled" type="boolean"> false menonaktifkan skill bahkan ketika bawaan atau terpasang. Skill bawaan coding-agent bersifat ikut serta — tetapkan ke true dan pastikan salah satu dari claude, codex, opencode, atau CLI lain yang didukung sudah terpasang dan terautentikasi.

OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNraWxscy5lbnRyaWVzLjxrZXk .apiKey" type='string | { source, provider, id }'> Field praktis untuk skill yang mendeklarasikan metadata.openclaw.primaryEnv. Mendukung string plaintext atau SecretRef: { source: "env", provider: "default", id: "VAR_NAME" }.

"skills.entries.<key�����r�
"skills.entries.<key�w₫��ܩ

Daftar izin agen (agents)

Gunakan konfigurasi agen ketika Anda menginginkan root skill mesin/workspace yang sama tetapi set skill yang terlihat berbeda per agen.

json5
{  agents: {    defaults: {      skills: ["github", "weather"], // shared baseline    },    list: [      { id: "writer" }, // inherits github, weather      { id: "docs", skills: ["docs-search"] }, // replaces defaults entirely      { id: "locked-down", skills: [] }, // no skills    ],  },}
agents.defaults.skillsstring[]

Daftar izin baseline bersama yang diwarisi oleh agen yang menghilangkan agents.list[].skills. Hilangkan seluruhnya agar skill tidak dibatasi secara default.

agents.list[].skillsstring[]

Set skill final eksplisit untuk agen tersebut. Daftar eksplisit mengganti default yang diwarisi — daftar tersebut tidak digabungkan. Tetapkan ke [] untuk tidak mengekspos skill apa pun bagi agen tersebut.

Workshop (skills.workshop)

skills.workshop.autonomous.enabledbooleandefault: false

Ketika true, agen dapat membuat proposal tertunda dari sinyal percakapan tahan lama setelah giliran berhasil. Pembuatan skill yang dipicu pengguna selalu melalui Skill Workshop terlepas dari pengaturan ini.

skills.workshop.approvalPolicy"pending" | "auto"default: "pending"

pending memerlukan persetujuan operator sebelum apply, reject, atau quarantine yang diinisiasi agen. auto mengizinkan tindakan tersebut tanpa persetujuan.

skills.workshop.allowSymlinkTargetWritesbooleandefault: false

Izinkan penerapan Skill Workshop untuk menulis melalui symlink skill ruang kerja yang target aslinya sudah dipercaya oleh skills.load.allowSymlinkTargets. Biarkan ini dinonaktifkan kecuali penerapan proposal yang dihasilkan harus mengubah root skill bersama tersebut.

skills.workshop.maxPendingnumberdefault: 50

Jumlah maksimum proposal tertunda dan dikarantina yang disimpan per ruang kerja.

skills.workshop.maxSkillBytesnumberdefault: 40000

Ukuran maksimum isi proposal dalam byte. Deskripsi proposal dibatasi secara ketat pada 160 byte karena muncul dalam keluaran penemuan dan daftar.

Secara default, root skill ruang kerja, agen proyek, direktori tambahan, dan bawaan adalah batas kontainmen. Folder skill bersymlink di bawah <workspace>/skills yang terselesaikan ke luar root akan dilewati dengan pesan log.

Untuk mengizinkan tata letak symlink yang disengaja, deklarasikan target tepercaya:

json5
{  skills: {    load: {      extraDirs: ["~/Projects/manager/skills"],      allowSymlinkTargets: ["~/Projects/manager/skills"],    },  },}

Dengan konfigurasi ini, <workspace>/skills/manager -> ~/Projects/manager/skills diterima setelah resolusi realpath. extraDirs memindai repo saudara secara langsung; allowSymlinkTargets mempertahankan jalur bersymlink untuk tata letak yang sudah ada.

Penerapan Skill Workshop tidak menulis melalui symlink tersebut secara default. Untuk mengizinkan Workshop apply mengubah skills di bawah target symlink yang sudah dipercaya, ikut sertakan secara terpisah:

json5
{  skills: {    load: {      allowSymlinkTargets: ["~/Projects/manager/skills"],    },    workshop: {      allowSymlinkTargetWrites: true,    },  },}

Direktori ~/.openclaw/skills yang dikelola dan direktori personal ~/.agents/skills sudah menerima symlink direktori skill (kontainmen SKILL.md per-skill tetap berlaku).

Skills tersandbox dan variabel env

Teruskan secret ke sandbox Docker dengan:

json5
{  agents: {    defaults: {      sandbox: {        docker: {          env: { GEMINI_API_KEY: "your-key-here" },        },      },    },  },}

Pengingat urutan pemuatan

text
workspace/skills      (highest)workspace/.agents/skills~/.agents/skills~/.openclaw/skillsbundled skillsskills.load.extraDirs (lowest)

Perubahan pada skills dan konfigurasi berlaku pada sesi baru berikutnya saat watcher diaktifkan, atau pada giliran agen berikutnya saat watcher mendeteksi perubahan.

Terkait

Was this useful?
On this page

On this page