Skills

Configurazione delle Skills

La maggior parte della configurazione delle skill si trova in skills in ~/.openclaw/openclaw.json. La visibilità specifica per agente si trova in agents.defaults.skills e 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 },    },  },}

Caricamento (skills.load)

skills.load.extraDirsstring[]

Directory aggiuntive delle skill da analizzare, con la priorità più bassa (dopo le skill incluse e dei Plugin). I percorsi vengono espansi con il supporto di ~.

skills.load.allowSymlinkTargetsstring[]

Directory di destinazione reali attendibili in cui possono risolversi le cartelle delle skill collegate simbolicamente, anche quando il collegamento simbolico si trova all'esterno della radice configurata. Usalo per strutture intenzionali con repository adiacenti, come <workspace>/skills/manager -> ~/Projects/manager/skills. Mantieni questo elenco ristretto: non indicare radici generiche come ~ o ~/Projects.

skills.load.watchbooleandefault: true

Monitora le cartelle delle skill e aggiorna l'istantanea delle skill quando cambiano i file SKILL.md. Include i file annidati nelle radici raggruppate delle skill.

skills.load.watchDebounceMsnumberdefault: 250

Finestra di debounce in millisecondi per gli eventi del monitoraggio delle skill.

Installazione (skills.install)

skills.install.preferBrewbooleandefault: true

Preferisce i programmi di installazione Homebrew quando brew è disponibile.

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

Preferenza del gestore di pacchetti Node per le installazioni delle skill. Ciò influisce solo sulle installazioni delle skill: il runtime del Gateway deve continuare a usare Node (Bun non è consigliato per WhatsApp/Telegram). openclaw setup --node-manager e openclaw onboard --node-manager accettano npm, pnpm o bun; imposta "yarn" direttamente nella configurazione per installazioni delle skill basate su Yarn.

skills.install.allowUploadedArchivesbooleandefault: false

Consente ai client Gateway operator.admin attendibili di installare archivi zip privati predisposti tramite skills.upload.*. Le normali installazioni da ClawHub non richiedono questa impostazione.

Criteri di installazione dell'operatore (security.installPolicy)

Usa security.installPolicy quando gli operatori necessitano di un comando locale attendibile per approvare o bloccare le installazioni di skill e Plugin in base a criteri specifici dell'host. Il criterio viene eseguito dopo che OpenClaw ha predisposto il materiale sorgente e prima che l'installazione o l'aggiornamento prosegua. Si applica alle skill di ClawHub, alle skill caricate, alle skill Git/locali, ai programmi di installazione delle dipendenze delle skill e alle sorgenti di installazione/aggiornamento dei 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

Abilita il criterio di installazione gestito dall'operatore. Quando è abilitato senza un comando exec valido, le installazioni vengono bloccate per impostazione predefinita.

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

Filtro facoltativo delle destinazioni. Se omesso, il criterio si applica a tutte le destinazioni supportate, affinché le nuove installazioni non vengano inaspettatamente consentite per impostazione predefinita.

security.installPolicy.exec.commandstring

Percorso assoluto dell'eseguibile attendibile del criterio. OpenClaw lo esegue senza una shell e convalida il percorso prima dell'uso.

security.installPolicy.exec.argsstring[]

Argomenti statici passati dopo command.

security.installPolicy.exec.timeoutMsnumberdefault: 10000

Durata massima effettiva per una singola decisione del criterio.

security.installPolicy.exec.noOutputTimeoutMsnumberdefault: timeoutMs

Tempo massimo senza output su stdout o stderr prima che il criterio blocchi l'operazione per impostazione predefinita.

security.installPolicy.exec.maxOutputBytesnumberdefault: 1048576

Numero massimo complessivo di byte di stdout e stderr accettati dal processo del criterio.

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

Nomi delle variabili d'ambiente copiati dal processo OpenClaw nel processo del criterio. Vengono passate solo le variabili indicate.

security.installPolicy.exec.trustedDirsstring[]

Elenco consentito facoltativo delle directory che possono contenere l'eseguibile del criterio.

security.installPolicy.exec.allowInsecurePathbooleandefault: false

Ignora i controlli sulla proprietà e sui permessi del percorso del comando. Usalo solo quando il percorso è protetto da un altro meccanismo.

security.installPolicy.exec.allowSymlinkCommandbooleandefault: false

Consente che il percorso del comando configurato sia un collegamento simbolico. La destinazione risolta deve comunque soddisfare gli altri controlli sul percorso. Gli argomenti degli script dell'interprete devono essere file regolari diretti, non collegamenti simbolici.

Il criterio riceve su stdin un oggetto JSON con protocolVersion: 1, openclawVersion, targetType, targetName, sourcePath, sourcePathKind, i campi strutturati facoltativi source e origin, e request. Deve scrivere su stdout un oggetto JSON: { "protocolVersion": 1, "decision": "allow" } oppure { "protocolVersion": 1, "decision": "block", "reason": "..." }. Un codice di uscita diverso da zero, un timeout, JSON non valido, campi mancanti o versioni del protocollo non supportate comportano il blocco per impostazione predefinita.

OpenClaw non esegue il criterio di installazione durante il normale avvio del Gateway. Le installazioni e gli aggiornamenti vengono bloccati per impostazione predefinita quando il criterio è abilitato ma non disponibile. openclaw doctor esegue la convalida statica; openclaw doctor --deep esegue una verifica di installazione simulata sul comando configurato.

Gli aggiornamenti in blocco applicano il criterio a ogni destinazione: l'aggiornamento bloccato di una skill o di un Plugin non riesce per quella destinazione, senza disabilitare il criterio né saltare le destinazioni successive del gruppo.

Esempio di 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"  }}

Comando minimo del criterio:

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" }));});

Elenco consentito delle skill incluse

skills.allowBundledstring[]

Elenco consentito facoltativo esclusivamente per le skill incluse. Quando è impostato, sono idonee solo le skill incluse presenti nell'elenco. Le skill gestite, a livello di agente e dell'area di lavoro non sono interessate.

Voci per singola skill (skills.entries)

Per impostazione predefinita, le chiavi in entries corrispondono al name della skill. Se una skill definisce metadata.openclaw.skillKey, usa invece tale chiave. Racchiudi tra virgolette i nomi con trattini (JSON5 consente chiavi tra virgolette).

OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNraWxscy5lbnRyaWVzLjxrZXk .enabled" type="boolean"> false disabilita la skill anche se inclusa o installata. La skill inclusa coding-agent richiede l'abilitazione esplicita: impostala su true e assicurati che claude, codex, opencode o un'altra CLI supportata sia installata e autenticata.

OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNraWxscy5lbnRyaWVzLjxrZXk .apiKey" type='string | { source, provider, id }'> Campo di praticità per le skill che dichiarano metadata.openclaw.primaryEnv. Supporta una stringa in testo non crittografato o un SecretRef: { source: "env", provider: "default", id: "VAR_NAME" }.

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

Elenchi consentiti degli agenti (agents)

Usa la configurazione dell'agente quando vuoi mantenere le stesse radici delle skill della macchina/area di lavoro, ma un insieme di skill visibili diverso per ogni agente.

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[]

Elenco consentito di base condiviso, ereditato dagli agenti che omettono agents.list[].skills. Omettilo completamente per lasciare le skill senza restrizioni per impostazione predefinita.

agents.list[].skillsstring[]

Insieme finale esplicito delle skill per tale agente. Gli elenchi espliciti sostituiscono completamente i valori predefiniti ereditati, senza unirsi a essi. Imposta [] per non esporre alcuna skill a tale agente.

Workshop (skills.workshop)

skills.workshop.autonomous.enabledbooleandefault: false

Quando è true, gli agenti possono creare proposte in sospeso a partire da segnali persistenti delle conversazioni dopo turni completati con successo. La creazione di skill richiesta dall'utente passa sempre attraverso Skill Workshop, indipendentemente da questa impostazione.

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

pending richiede l'approvazione dell'operatore prima che l'agente avvii l'applicazione, il rifiuto o la quarantena. auto consente queste azioni senza approvazione.

skills.workshop.allowSymlinkTargetWritesbooleandefault: false

Consente all'applicazione tramite Skill Workshop di scrivere attraverso i collegamenti simbolici alle skill dell'area di lavoro la cui destinazione reale è già considerata attendibile da skills.load.allowSymlinkTargets. Mantieni questa opzione disabilitata, a meno che l'applicazione delle proposte generate non debba modificare la radice condivisa delle skill.

skills.workshop.maxPendingnumberdefault: 50

Numero massimo di proposte in sospeso e in quarantena conservate per area di lavoro (intervallo consentito: 1-200).

skills.workshop.maxSkillBytesnumberdefault: 40000

Dimensione massima del corpo della proposta in byte (intervallo consentito: 1024-200000). Le descrizioni delle proposte hanno separatamente un limite rigido di 160 byte, perché compaiono nell'output di individuazione ed elenco.

Consulta Skill Workshop per il ciclo di vita delle proposte, i comandi CLI, i parametri degli strumenti degli agenti e i metodi Gateway controllati da questa configurazione.

Radici delle skill con collegamenti simbolici

Per impostazione predefinita, le radici delle skill dell'area di lavoro, dell'agente di progetto, delle directory aggiuntive e delle skill incluse costituiscono limiti di contenimento. Una cartella di skill con collegamento simbolico in <workspace>/skills che viene risolta all'esterno della radice viene ignorata e viene registrato un messaggio nel log.

Per consentire intenzionalmente una struttura con collegamenti simbolici, dichiara la destinazione attendibile:

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

Con questa configurazione, <workspace>/skills/manager -> ~/Projects/manager/skills viene accettato dopo la risoluzione del percorso reale. extraDirs analizza direttamente il repository adiacente; allowSymlinkTargets mantiene il percorso con collegamento simbolico per le strutture esistenti.

Per impostazione predefinita, l'applicazione tramite Skill Workshop non scrive attraverso questi collegamenti simbolici. Per consentire all'applicazione tramite Workshop di modificare le skill nelle destinazioni di collegamenti simbolici già considerate attendibili, abilita separatamente questa opzione:

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

Le directory gestite ~/.openclaw/skills e personali ~/.agents/skills accettano già senza condizioni i collegamenti simbolici alle directory delle skill (il contenimento di SKILL.md per ogni skill continua ad applicarsi): allowSymlinkTargets è necessario solo per le radici dell'area di lavoro, delle directory aggiuntive e dell'agente di progetto (<workspace>/.agents/skills).

Skill in ambiente isolato e variabili di ambiente

Passa i segreti a un ambiente isolato Docker con:

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

Promemoria sull'ordine di caricamento

text
workspace/skills      (priorità massima)workspace/.agents/skills~/.agents/skills~/.openclaw/skillsskill incluseskills.load.extraDirs (priorità minima)

Le modifiche alle skill e alla configurazione diventano effettive nella nuova sessione successiva quando il monitoraggio è abilitato, oppure nel turno successivo dell'agente quando il monitoraggio rileva una modifica.

Contenuti correlati

Was this useful?
On this page

On this page