Skills

Konfiguracja Skills

Większość konfiguracji Skills znajduje się w skills w ~/.openclaw/openclaw.json. Widoczność właściwa dla agenta znajduje się w agents.defaults.skills i 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: "auto",      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 },    },  },}

Ładowanie (skills.load)

skills.load.extraDirsstring[]

Dodatkowe katalogi Skills do przeskanowania, o najniższym priorytecie (poniżej wbudowanych Skills i Skills Pluginów). Ścieżki są rozwijane z obsługą ~.

skills.load.allowSymlinkTargetsstring[]

Zaufane rzeczywiste katalogi docelowe, do których mogą prowadzić dowiązania symboliczne folderów Skills, nawet jeśli dowiązanie znajduje się poza skonfigurowanym katalogiem głównym. Należy używać tej opcji w celowych układach sąsiednich repozytoriów, takich jak <workspace>/skills/manager -> ~/Projects/manager/skills. Lista powinna być ograniczona — nie należy wskazywać szerokich katalogów głównych, takich jak ~ lub ~/Projects.

skills.load.watchbooleandefault: true

Obserwuje foldery Skills i odświeża migawkę Skills po zmianie plików SKILL.md. Obejmuje zagnieżdżone pliki w zgrupowanych katalogach głównych Skills.

skills.load.watchDebounceMsnumberdefault: 250

Okno eliminacji drgań dla zdarzeń obserwatora Skills, w milisekundach.

Instalacja (skills.install)

skills.install.preferBrewbooleandefault: true

Preferuje instalatory Homebrew, gdy dostępne jest brew.

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

Preferowany menedżer pakietów Node do instalowania Skills. Wpływa to tylko na instalacje Skills — CLI OpenClaw i środowisko wykonawcze Gateway wymagają Node, ponieważ kanoniczny magazyn stanu używa node:sqlite. openclaw setup --node-manager i openclaw onboard --node-manager akceptują npm, pnpm lub bun; dla instalacji Skills opartych na Yarn należy ustawić bezpośrednio "yarn" w konfiguracji.

skills.install.allowUploadedArchivesbooleandefault: false

Zezwala zaufanym klientom Gateway operator.admin na instalowanie prywatnych archiwów zip przygotowanych za pośrednictwem skills.upload.*. Zwykłe instalacje ClawHub nie wymagają tego ustawienia.

Zasady instalacji operatora (security.installPolicy)

Należy używać security.installPolicy, gdy operatorzy potrzebują zaufanego polecenia lokalnego do zatwierdzania lub blokowania instalacji Skills i Pluginów zgodnie z zasadami właściwymi dla hosta. Zasady są uruchamiane po przygotowaniu materiału źródłowego przez OpenClaw, a przed kontynuowaniem instalacji lub aktualizacji. Dotyczą Skills z ClawHub, przesłanych Skills, Skills z Git/lokalnych, instalatorów zależności Skills oraz źródeł instalacji i aktualizacji Pluginów.

json5
{  security: {    installPolicy: {      enabled: true,      // Pomiń targets, aby objąć wszystkie obsługiwane cele.      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

Włącza zasady instalacji należące do operatora. Po włączeniu bez prawidłowego polecenia exec instalacje są bezpiecznie blokowane.

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

Opcjonalny filtr celów. Jeśli zostanie pominięty, zasady dotyczą każdego obsługiwanego celu, dzięki czemu nowe instalacje nie zostaną nieoczekiwanie dopuszczone.

security.installPolicy.exec.commandstring

Bezwzględna ścieżka do zaufanego pliku wykonywalnego zasad. OpenClaw uruchamia go bez powłoki i weryfikuje ścieżkę przed użyciem.

security.installPolicy.exec.argsstring[]

Statyczne argumenty przekazywane po command.

security.installPolicy.exec.timeoutMsnumberdefault: 10000

Maksymalny rzeczywisty czas wykonywania jednej decyzji zasad.

security.installPolicy.exec.noOutputTimeoutMsnumberdefault: timeoutMs

Maksymalny czas bez danych wyjściowych stdout lub stderr, po którym zasady bezpiecznie blokują operację.

security.installPolicy.exec.maxOutputBytesnumberdefault: 1048576

Maksymalna łączna liczba bajtów stdout i stderr akceptowana od procesu zasad.

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

Nazwy zmiennych środowiskowych kopiowanych z procesu OpenClaw do procesu zasad. Przekazywane są tylko wymienione zmienne.

security.installPolicy.exec.trustedDirsstring[]

Opcjonalna lista dozwolonych katalogów, które mogą zawierać plik wykonywalny zasad.

security.installPolicy.exec.allowInsecurePathbooleandefault: false

Pomija kontrole własności i uprawnień ścieżki polecenia. Należy używać tylko wtedy, gdy ścieżka jest chroniona przez inny mechanizm.

security.installPolicy.exec.allowSymlinkCommandbooleandefault: false

Zezwala, aby skonfigurowana ścieżka polecenia była dowiązaniem symbolicznym. Rozwiązany cel nadal musi spełniać pozostałe kontrole ścieżki. Argumenty skryptu interpretera muszą być bezpośrednimi zwykłymi plikami, a nie dowiązaniami symbolicznymi.

Zasady otrzymują na stdin jeden obiekt JSON zawierający protocolVersion: 1, openclawVersion, targetType, targetName, sourcePath, sourcePathKind, opcjonalne ustrukturyzowane source, ustrukturyzowane origin oraz request. Muszą zapisać na stdout jeden obiekt JSON: { "protocolVersion": 1, "decision": "allow" } lub { "protocolVersion": 1, "decision": "block", "reason": "..." }. Niezerowy kod wyjścia, przekroczenie limitu czasu, nieprawidłowy JSON, brakujące pola lub nieobsługiwane wersje protokołu powodują bezpieczne zablokowanie operacji.

OpenClaw nie wykonuje zasad instalacji podczas zwykłego uruchamiania Gateway. Instalacje i aktualizacje są bezpiecznie blokowane, gdy zasady są włączone, ale niedostępne. openclaw doctor wykonuje walidację statyczną; openclaw doctor --deep wykonuje syntetyczną próbę instalacji przy użyciu skonfigurowanego polecenia.

Aktualizacje zbiorcze stosują zasady osobno dla każdego celu: zablokowana aktualizacja Skill lub Pluginu kończy się niepowodzeniem dla tego celu, bez wyłączania zasad ani pomijania kolejnych celów w partii.

Przykładowe dane 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"  }}

Minimalne polecenie zasad:

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: "lokalne ścieżki Pluginów nie są zatwierdzone na tym hoście",      }),    );    return;  }  process.stdout.write(JSON.stringify({ protocolVersion: 1, decision: "allow" }));});

Lista dozwolonych wbudowanych Skills

skills.allowBundledstring[]

Opcjonalna lista dozwolonych wyłącznie dla wbudowanych Skills. Po jej ustawieniu kwalifikują się tylko wbudowane Skills znajdujące się na liście. Nie wpływa to na zarządzane Skills ani Skills na poziomie agenta i obszaru roboczego.

Wpisy poszczególnych Skills (skills.entries)

Klucze w entries domyślnie odpowiadają name Skill. Jeśli Skill definiuje metadata.openclaw.skillKey, należy użyć tego klucza. Nazwy z łącznikami należy ująć w cudzysłowy (JSON5 zezwala na klucze w cudzysłowach).

OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNraWxscy5lbnRyaWVzLjxrZXk .enabled" type="boolean"> false wyłącza Skill, nawet jeśli jest wbudowany lub zainstalowany. Wbudowany Skill coding-agent wymaga jawnego włączenia — należy ustawić go na true i upewnić się, że claude, codex, opencode lub inny obsługiwany CLI jest zainstalowany i uwierzytelniony.

OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNraWxscy5lbnRyaWVzLjxrZXk .apiKey" type='string | { source, provider, id }'> Pole pomocnicze dla Skills deklarujących metadata.openclaw.primaryEnv. Obsługuje ciąg tekstowy w postaci jawnej lub SecretRef: { source: "env", provider: "default", id: "VAR_NAME" }.

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

Listy dozwolonych Skills agentów (agents)

Konfiguracji agenta należy używać, gdy mają obowiązywać te same katalogi główne Skills maszyny lub obszaru roboczego, ale inny zestaw widocznych Skills dla każdego agenta.

json5
{  agents: {    defaults: {      skills: ["github", "weather"], // wspólna wartość bazowa    },    list: [      { id: "writer" }, // dziedziczy github, weather      { id: "docs", skills: ["docs-search"] }, // całkowicie zastępuje wartości domyślne      { id: "locked-down", skills: [] }, // bez Skills    ],  },}
agents.defaults.skillsstring[]

Wspólna bazowa lista dozwolonych dziedziczona przez agentów, którzy pomijają agents.list[].skills. Aby domyślnie nie ograniczać Skills, należy całkowicie pominąć to pole.

agents.list[].skillsstring[]

Jawny końcowy zestaw Skills dla danego agenta. Jawne listy zastępują odziedziczone wartości domyślne — nie są z nimi scalane. Ustawienie [] powoduje, że żadne Skills nie są udostępniane temu agentowi.

Warsztat (skills.workshop)

skills.workshop.autonomous.enabledbooleandefault: false

Gdy true, OpenClaw może tworzyć oczekujące propozycje na podstawie trwałych korekt oraz przeglądać pomyślnie ukończone, znaczące zadania po przejściu systemu w stan bezczynności. Może to spowodować uruchomienie modelu w tle po kwalifikujących się turach. Inicjowane przez użytkownika tworzenie umiejętności oraz /learn nadal działają, gdy ustawienie ma wartość false.

Informacje o kryteriach kwalifikacji, prywatności, kosztach, uprawnieniach ograniczonych do propozycji i rozwiązywaniu problemów zawiera sekcja Samouczenie.

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

auto zezwala na inicjowane przez agenta zastosowanie, odrzucenie lub poddanie kwarantannie bez dodatkowego monitu o zatwierdzenie. pending wymaga zatwierdzenia przez operatora.

skills.workshop.allowSymlinkTargetWritesbooleandefault: false

Zezwala funkcji Skill Workshop na zapisywanie za pośrednictwem dowiązań symbolicznych umiejętności w obszarze roboczym, których rzeczywisty cel jest już zaufany zgodnie z skills.load.allowSymlinkTargets. To ustawienie należy pozostawić wyłączone, chyba że zastosowanie wygenerowanych propozycji ma modyfikować ten współdzielony katalog główny umiejętności.

skills.workshop.maxPendingnumberdefault: 50

Maksymalna liczba oczekujących i poddanych kwarantannie propozycji przechowywanych w każdym obszarze roboczym (dozwolony zakres: 1-200).

skills.workshop.maxSkillBytesnumberdefault: 40000

Maksymalny rozmiar treści propozycji w bajtach (dozwolony zakres: 1024-200000). Opisy propozycji mają osobny bezwzględny limit 160 bajtów, ponieważ pojawiają się w danych wyjściowych wykrywania i listowania.

Informacje o cyklu życia propozycji, poleceniach CLI, parametrach narzędzi agenta i metodach Gateway kontrolowanych przez tę konfigurację zawiera sekcja Skill Workshop.

Katalogi główne umiejętności z dowiązaniami symbolicznymi

Domyślnie katalogi główne umiejętności obszaru roboczego, agenta projektu, dodatkowych katalogów i umiejętności wbudowanych stanowią granice zawierania. Folder umiejętności z dowiązaniem symbolicznym w <workspace>/skills, który wskazuje poza katalog główny, jest pomijany, a informacja o tym trafia do dziennika.

Aby zezwolić na celowy układ dowiązań symbolicznych, należy zadeklarować zaufany cel:

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

Przy tej konfiguracji <workspace>/skills/manager -> ~/Projects/manager/skills jest akceptowane po rozwiązaniu ścieżki rzeczywistej. extraDirs skanuje bezpośrednio sąsiednie repozytorium; allowSymlinkTargets zachowuje ścieżkę z dowiązaniem symbolicznym dla istniejących układów.

Domyślnie zastosowanie propozycji przez Skill Workshop nie zapisuje za pośrednictwem tych dowiązań symbolicznych. Aby umożliwić funkcji Workshop modyfikowanie umiejętności w już zaufanych celach dowiązań symbolicznych, należy włączyć tę opcję osobno:

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

Zarządzane katalogi ~/.openclaw/skills i osobiste katalogi ~/.agents/skills już bezwarunkowo akceptują dowiązania symboliczne katalogów umiejętności (nadal obowiązuje zawieranie SKILL.md dla każdej umiejętności) — allowSymlinkTargets jest potrzebne tylko dla katalogów głównych obszaru roboczego, dodatkowych katalogów i agenta projektu (<workspace>/.agents/skills).

Umiejętności w piaskownicy i zmienne środowiskowe

Sekrety można przekazać do piaskownicy Docker za pomocą:

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

Przypomnienie o kolejności ładowania

text
workspace/skills      (najwyższy priorytet)workspace/.agents/skills~/.agents/skills~/.openclaw/skillswbudowane umiejętnościskills.load.extraDirs (najniższy priorytet)

Zmiany umiejętności i konfiguracji zaczynają obowiązywać w następnej nowej sesji, gdy obserwator jest włączony, lub w następnej turze agenta, gdy obserwator wykryje zmianę.

Powiązane

Was this useful?
On this page

On this page