Skills
Konfiguracja Skills
Większość konfiguracji Skills znajduje się w sekcji skills w
~/.openclaw/openclaw.json. Widoczność specyficzna dla agenta znajduje się w
agents.defaults.skills oraz 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: "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 }, }, },}Ładowanie (skills.load)
skills.load.extraDirsstring[]Dodatkowe katalogi Skills do skanowania, z najniższym priorytetem (po Skills
wbudowanych i pochodzących z Plugin). Ścieżki są rozwijane z obsługą ~.
skills.load.allowSymlinkTargetsstring[]Zaufane rzeczywiste katalogi docelowe, do których mogą wskazywać dowiązane
symbolicznie foldery Skills, nawet gdy dowiązanie symboliczne znajduje się poza
skonfigurowanym katalogiem głównym. Użyj tego w celowych układach repozytoriów
równoległych, takich jak
<workspace>/skills/manager -> ~/Projects/manager/skills. Utrzymuj tę listę
wąską — nie wskazuj szerokich katalogów głównych, takich jak ~ lub ~/Projects.
skills.load.watchbooleandefault: trueObserwuj foldery Skills i odświeżaj migawkę Skills, gdy pliki SKILL.md
ulegną zmianie. Obejmuje zagnieżdżone pliki pod pogrupowanymi katalogami głównymi Skills.
skills.load.watchDebounceMsnumberdefault: 250Okno debounce dla zdarzeń obserwatora Skills w milisekundach.
Instalacja (skills.install)
skills.install.preferBrewbooleandefault: truePreferuj instalatory Homebrew, gdy brew jest dostępny.
skills.install.nodeManager"npm" | "pnpm" | "yarn" | "bun"default: "npm"Preferowany menedżer pakietów Node dla instalacji Skills. Wpływa to tylko na
instalacje Skills — środowisko uruchomieniowe Gateway nadal powinno używać Node
(Bun nie jest zalecany dla WhatsApp/Telegram). Użyj openclaw setup --node-manager
dla npm, pnpm lub bun; ustaw "yarn" ręcznie dla instalacji Skills opartych na Yarn.
skills.install.allowUploadedArchivesbooleandefault: falsePozwól zaufanym klientom Gateway operator.admin instalować prywatne archiwa
zip przygotowane przez skills.upload.*. Zwykłe instalacje z ClawHub nie
wymagają tego ustawienia.
Zasady instalacji operatora (security.installPolicy)
Użyj security.installPolicy, gdy operatorzy potrzebują zaufanego lokalnego
polecenia do zatwierdzania lub blokowania instalacji Skills i Plugin przy użyciu
zasad specyficznych dla hosta. Zasady uruchamiają się po tym, jak OpenClaw
przygotuje materiał źródłowy, a przed kontynuowaniem instalacji lub aktualizacji.
Obejmują Skills z ClawHub, przesłane Skills, Skills z Git/lokalne, instalatory
zależności Skills oraz źródła instalacji/aktualizacji Plugin.
{ 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: falseWłącza zasady instalacji należące do operatora. Gdy są włączone bez poprawnego
polecenia exec, instalacje kończą się bezpieczną odmową.
security.installPolicy.targets("skill" | "plugin")[]Opcjonalny filtr celów. Gdy go pominięto, zasady dotyczą każdego obsługiwanego celu, aby nowe instalacje nie zostały 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 czas zegarowy wykonania jednej decyzji zasad.
security.installPolicy.exec.noOutputTimeoutMsnumberdefault: timeoutMsMaksymalny czas bez danych na stdout lub stderr, po którym zasady kończą się bezpieczną odmową.
security.installPolicy.exec.maxOutputBytesnumberdefault: 1048576Maksymalna łączna liczba bajtów stdout i stderr akceptowana z procesu zasad.
security.installPolicy.exec.env"Record<string,security.installPolicy.exec.passEnvstring[]Nazwy zmiennych środowiskowych kopiowane z procesu OpenClaw do procesu zasad. Przekazywane są tylko nazwane zmienne.
security.installPolicy.exec.trustedDirsstring[]Opcjonalna allowlista katalogów, które mogą zawierać plik wykonywalny zasad.
security.installPolicy.exec.allowInsecurePathbooleandefault: falsePomija sprawdzanie własności i uprawnień ścieżki polecenia. Używaj tylko wtedy, gdy ścieżka jest chroniona innym mechanizmem.
security.installPolicy.exec.allowSymlinkCommandbooleandefault: falsePozwala, aby skonfigurowana ścieżka polecenia była dowiązaniem symbolicznym. Rozwiązany cel nadal musi spełniać pozostałe sprawdzenia ścieżki. Argumenty skryptu interpretera muszą być bezpośrednimi zwykłymi plikami, nie dowiązaniami symbolicznymi.
Zasady otrzymują na stdin jeden obiekt JSON z protocolVersion: 1,
openclawVersion, targetType, targetName, sourcePath, sourcePathKind,
opcjonalnym ustrukturyzowanym source, ustrukturyzowanym 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 czasu, niepoprawny JSON, brakujące pola lub nieobsługiwane
wersje protokołu kończą się bezpieczną odmową.
OpenClaw nie wykonuje zasad instalacji podczas zwykłego uruchamiania Gateway.
Instalacje i aktualizacje kończą się bezpieczną odmową, gdy zasady są włączone,
ale niedostępne. openclaw doctor wykonuje statyczną walidację, a
openclaw doctor --deep uruchamia syntetyczną próbę instalacji względem
skonfigurowanego polecenia.
Aktualizacje zbiorcze stosują zasady osobno dla każdego celu: zablokowana aktualizacja Skills lub Plugin kończy się niepowodzeniem dla tego celu bez wyłączania zasad ani pomijania późniejszych celów w partii.
Przykładowy 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: "local plugin paths are not approved on this host", }), ); return; } process.stdout.write(JSON.stringify({ protocolVersion: 1, decision: "allow" }));});Allowlista wbudowanych Skills
skills.allowBundledstring[]Opcjonalna allowlista wyłącznie dla wbudowanych Skills. Gdy jest ustawiona, kwalifikują się tylko wbudowane Skills znajdujące się na liście. Skills zarządzane, na poziomie agenta i z przestrzeni roboczej pozostają bez zmian.
Wpisy poszczególnych Skills (skills.entries)
Klucze w entries domyślnie odpowiadają name danego Skills. Jeśli Skills
definiuje metadata.openclaw.skillKey, użyj zamiast tego tego klucza. Nazwy
z łącznikami ujmuj w cudzysłowy (JSON5 dopuszcza klucze w cudzysłowach).
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNraWxscy5lbnRyaWVzLjxrZXk
.enabled" type="boolean">
false wyłącza Skills nawet wtedy, gdy jest wbudowany lub zainstalowany.
Wbudowany Skills coding-agent jest opcjonalny — ustaw go na true i upewnij
się, że jeden z claude, codex, opencode albo inny obsługiwany CLI jest
zainstalowany i uwierzytelniony.
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNraWxscy5lbnRyaWVzLjxrZXk
.apiKey" type='string | { source, provider, id }'>
Pole pomocnicze dla Skills, które deklarują metadata.openclaw.primaryEnv.
Obsługuje ciąg jawnego tekstu lub SecretRef: { source: "env", provider: "default", id: "VAR_NAME" }.
"skills.entries.<key�����r�"skills.entries.<key�w₫��ܩAllowlisty agentów (agents)
Użyj konfiguracji agenta, gdy chcesz mieć te same katalogi główne Skills dla maszyny/przestrzeni roboczej, ale inny widoczny zestaw Skills dla każdego agenta.
{ 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[]Wspólna bazowa allowlista dziedziczona przez agentów, którzy pomijają
agents.list[].skills. Pomiń całkowicie, aby domyślnie nie ograniczać Skills.
agents.list[].skillsstring[]Jawny ostateczny zestaw Skills dla tego agenta. Jawne listy zastępują
odziedziczone wartości domyślne — nie są z nimi scalane. Ustaw [], aby nie
udostępniać temu agentowi żadnych Skills.
Workshop (skills.workshop)
skills.workshop.autonomous.enabledbooleandefault: falseGdy true, agenci mogą tworzyć oczekujące propozycje na podstawie trwałych
sygnałów konwersacji po udanych turach. Tworzenie Skills zainicjowane przez
użytkownika zawsze przechodzi przez Skill Workshop niezależnie od tego ustawienia.
skills.workshop.approvalPolicy"pending" | "auto"default: "pending"pending wymaga zatwierdzenia operatora przed zainicjowanym przez agenta zastosowaniem, odrzuceniem lub
kwarantanną. auto zezwala na te działania bez zatwierdzenia.
skills.workshop.allowSymlinkTargetWritesbooleandefault: falseZezwól zastosowaniu Skill Workshop na zapis przez dowiązania symboliczne Skills w obszarze roboczym, których
rzeczywisty cel jest już zaufany przez skills.load.allowSymlinkTargets. Pozostaw tę opcję
wyłączoną, chyba że zastosowania wygenerowanych propozycji powinny modyfikować ten współdzielony
katalog główny Skills.
skills.workshop.maxPendingnumberdefault: 50Maksymalna liczba oczekujących i poddanych kwarantannie propozycji przechowywanych dla każdego obszaru roboczego.
skills.workshop.maxSkillBytesnumberdefault: 40000Maksymalny rozmiar treści propozycji w bajtach. Opisy propozycji mają twardy limit 160 bajtów, ponieważ pojawiają się w danych wyjściowych odkrywania i listowania.
Korzenie Skills jako dowiązania symboliczne
Domyślnie korzenie Skills obszaru roboczego, agenta projektu, dodatkowego katalogu i pakietowe są
granicami izolacji. Folder Skills będący dowiązaniem symbolicznym pod <workspace>/skills,
który wskazuje poza katalog główny, jest pomijany z komunikatem w logu.
Aby zezwolić na zamierzony układ dowiązań symbolicznych, zadeklaruj 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 realpath. extraDirs skanuje bezpośrednio sąsiednie repozytorium;
allowSymlinkTargets zachowuje ścieżkę z dowiązaniem symbolicznym dla istniejących układów.
Zastosowanie Skill Workshop domyślnie nie zapisuje przez te dowiązania symboliczne. Aby pozwolić Workshop apply modyfikować Skills pod już zaufanymi celami dowiązań symbolicznych, włącz to osobno:
{ skills: { load: { allowSymlinkTargets: ["~/Projects/manager/skills"], }, workshop: { allowSymlinkTargetWrites: true, }, },}Zarządzane katalogi ~/.openclaw/skills i osobiste katalogi ~/.agents/skills
już akceptują dowiązania symboliczne katalogów Skills (izolacja per-Skill SKILL.md nadal
obowiązuje).
Skills w piaskownicy i zmienne środowiskowe
Przekaż sekrety do piaskownicy Docker za pomocą:
{ agents: { defaults: { sandbox: { docker: { env: { GEMINI_API_KEY: "your-key-here" }, }, }, }, },}Przypomnienie o kolejności ładowania
workspace/skills (highest)workspace/.agents/skills~/.agents/skills~/.openclaw/skillsbundled skillsskills.load.extraDirs (lowest)Zmiany w Skills i konfiguracji zaczynają obowiązywać w następnej nowej sesji, gdy obserwator jest włączony, albo w następnej turze agenta, gdy obserwator wykryje zmianę.