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.
{ 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: trueObserwuje 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: 250Okno eliminacji drgań dla zdarzeń obserwatora Skills, w milisekundach.
Instalacja (skills.install)
skills.install.preferBrewbooleandefault: truePreferuje 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: falseZezwala 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.
{ 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: falseWłą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.commandstringBezwzglę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: 10000Maksymalny rzeczywisty czas wykonywania jednej decyzji zasad.
security.installPolicy.exec.noOutputTimeoutMsnumberdefault: timeoutMsMaksymalny czas bez danych wyjściowych stdout lub stderr, po którym zasady bezpiecznie blokują operację.
security.installPolicy.exec.maxOutputBytesnumberdefault: 1048576Maksymalna łą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: falsePomija 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: falseZezwala, 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:
{ "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:
#!/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.
{ 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: falseGdy 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: falseZezwala 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: 50Maksymalna liczba oczekujących i poddanych kwarantannie propozycji przechowywanych w każdym obszarze roboczym (dozwolony zakres: 1-200).
skills.workshop.maxSkillBytesnumberdefault: 40000Maksymalny 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:
{ 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:
{ 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ą:
{ agents: { defaults: { sandbox: { docker: { env: { GEMINI_API_KEY: "your-key-here" }, }, }, }, },}Przypomnienie o kolejności ładowania
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
Czym są umiejętności, kolejność ładowania, kontrola dostępu i format SKILL.md.
Tworzenie niestandardowych umiejętności obszaru roboczego.
Kolejka propozycji umiejętności opracowanych przez agenta.
Zachowawcze, opcjonalne propozycje na podstawie ukończonych zadań.
Natywny katalog poleceń z ukośnikiem i dyrektywy czatu.