Skills
Konfiguracja Skills
Większość konfiguracji Skills znajduje się w sekcji skills w pliku
~/.openclaw/openclaw.json. Widoczność właściwa dla poszczególnych agentów jest określana 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: "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, 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 gdy dowiązanie znajduje się poza
skonfigurowanym katalogiem głównym. Używaj tej opcji w przypadku celowych
układów sąsiadujących repozytoriów, takich jak
<workspace>/skills/manager -> ~/Projects/manager/skills. Zachowaj tę listę
wąską — nie wskazuj ogólnych 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 pogrupowanych katalogach głównych Skills.
skills.load.watchDebounceMsnumberdefault: 250Okno eliminowania nadmiarowych zdarzeń obserwatora Skills w milisekundach.
Instalowanie (skills.install)
skills.install.preferBrewbooleandefault: truePreferuje instalatory Homebrew, gdy dostępne jest polecenie brew.
skills.install.nodeManager"npm" | "pnpm" | "yarn" | "bun"default: "npm"Preferowany menedżer pakietów Node do instalowania Skills. Wpływa to wyłącznie
na instalowanie Skills — środowisko uruchomieniowe Gateway nadal powinno używać
Node (Bun nie jest zalecany dla WhatsApp/Telegram). Polecenia
openclaw setup --node-manager i openclaw onboard --node-manager akceptują
npm, pnpm lub bun; aby instalować Skills przy użyciu Yarn, ustaw
"yarn" bezpośrednio w konfiguracji.
skills.install.allowUploadedArchivesbooleandefault: falseZezwala zaufanym klientom Gateway z uprawnieniem operator.admin na instalowanie
prywatnych archiwów zip przygotowanych za pośrednictwem 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ów zgodnie z zasadami
właściwymi dla hosta. Zasady są wykonywane po przygotowaniu materiałów źródłowych
przez OpenClaw, 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 i aktualizacji Pluginów.
{ security: { installPolicy: { enabled: true, // Pomiń targets, aby objąć każdy obsługiwany cel. 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 zarządzane przez operatora zasady instalacji. Po włączeniu bez prawidłowego
polecenia exec instalacje są blokowane w razie błędu.
security.installPolicy.targets("skill" | "plugin")[]Opcjonalny filtr celów. W przypadku pominięcia zasady mają zastosowanie do każdego obsługiwanego celu, dzięki czemu nowe instalacje nie zostaną nieoczekiwanie dozwolone w razie błędu.
security.installPolicy.exec.commandstringBezwzględna ścieżka do zaufanego pliku wykonywalnego zasad. OpenClaw uruchamia go bez powłoki i przed użyciem sprawdza poprawność ścieżki.
security.installPolicy.exec.argsstring[]Statyczne argumenty przekazywane po command.
security.installPolicy.exec.timeoutMsnumberdefault: 10000Maksymalny rzeczywisty czas wykonania jednej decyzji zasad.
security.installPolicy.exec.noOutputTimeoutMsnumberdefault: timeoutMsMaksymalny czas bez danych wyjściowych w stdout lub stderr, po którym zasady blokują operację w razie błędu.
security.installPolicy.exec.maxOutputBytesnumberdefault: 1048576Maksymalna łączna liczba bajtów stdout i stderr akceptowana z procesu zasad.
security.installPolicy.exec.envRecord<string, string
���-.+^��h�����z�������,���jw�����security.installPolicy.exec.passEnvstring[]Nazwy zmiennych środowiskowych kopiowanych z procesu OpenClaw do procesu zasad. Przekazywane są wyłącznie zmienne o podanych nazwach.
security.installPolicy.exec.trustedDirsstring[]Opcjonalna lista dozwolonych katalogów, które mogą zawierać plik wykonywalny zasad.
security.installPolicy.exec.allowInsecurePathbooleandefault: falsePomija sprawdzanie właściciela i uprawnień ścieżki polecenia. Używaj tylko wtedy, gdy ścieżka jest chroniona innym mechanizmem.
security.installPolicy.exec.allowSymlinkCommandbooleandefault: falseZezwala, aby skonfigurowana ścieżka polecenia była dowiązaniem symbolicznym. Rozwiązany cel nadal musi spełniać pozostałe wymogi dotyczące ścieżki. Argumenty skryptów interpretera muszą być bezpośrednimi zwykłymi plikami, a nie dowiązaniami symbolicznymi.
Zasady otrzymują na standardowym wejściu jeden obiekt JSON zawierający
protocolVersion: 1, openclawVersion, targetType, targetName, sourcePath,
sourcePathKind, opcjonalne ustrukturyzowane pola source, origin oraz request.
Muszą zapisać na standardowym wyjściu jeden obiekt JSON:
{ "protocolVersion": 1, "decision": "allow" } albo
{ "protocolVersion": 1, "decision": "block", "reason": "..." }. Niezerowy kod
zakończenia, przekroczenie limitu czasu, nieprawidłowy JSON, brakujące pola lub
nieobsługiwane wersje protokołu powodują zablokowanie operacji w razie błędu.
OpenClaw nie wykonuje zasad instalacji podczas zwykłego uruchamiania Gateway.
Instalacje i aktualizacje są blokowane w razie błędu, gdy zasady są włączone,
ale niedostępne. openclaw doctor przeprowadza walidację statyczną;
openclaw doctor --deep wykonuje syntetyczną próbę instalacji przy użyciu
skonfigurowanego polecenia.
Aktualizacje zbiorcze stosują zasady osobno do każdego celu: zablokowanie aktualizacji Skills lub Pluginu powoduje niepowodzenie tego celu bez wyłączania zasad ani pomijania kolejnych celów w partii.
Przykładowe dane standardowego wejścia:
{ "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" }));});Lista dozwolonych wbudowanych Skills
skills.allowBundledstring[]Opcjonalna lista dozwolonych wyłącznie dla wbudowanych Skills. Po jej ustawieniu dostępne są tylko wbudowane Skills znajdujące się na liście. Nie wpływa to na zarządzane Skills, Skills na poziomie agenta ani Skills obszaru roboczego.
Wpisy poszczególnych Skills (skills.entries)
Klucze w entries domyślnie odpowiadają polu name Skills. Jeśli Skills definiują
metadata.openclaw.skillKey, użyj zamiast tego tego klucza. Nazwy z łącznikami
ujmij w cudzysłowy (JSON5 zezwala na klucze w cudzysłowach).
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNraWxscy5lbnRyaWVzLjxrZXk
.enabled" type="boolean">
false wyłącza Skills, nawet gdy są wbudowane lub zainstalowane. Wbudowane Skills
coding-agent wymagają jawnego włączenia — ustaw tę wartość na true i upewnij się,
że zainstalowano i uwierzytelniono claude, codex, opencode albo inne
obsługiwane CLI.
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNraWxscy5lbnRyaWVzLjxrZXk
.apiKey" type='string | { source, provider, id }'>
Pole pomocnicze dla Skills deklarujących metadata.openclaw.primaryEnv.
Obsługuje zwykły ciąg tekstowy lub SecretRef:
{ source: "env", provider: "default", id: "VAR_NAME" }.
"skills.entries.<key�����r�"skills.entries.<key�w₫��ܩListy dozwolonych Skills agentów (agents)
Użyj konfiguracji agenta, jeśli chcesz zachować te same katalogi główne Skills maszyny lub obszaru roboczego, ale ustawić 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 lista dozwolonych dziedziczona przez agentów, którzy pomijają
agents.list[].skills. Pomiń ją całkowicie, aby domyślnie nie ograniczać Skills.
agents.list[].skillsstring[]Jawny końcowy zestaw Skills dla danego agenta. Jawne listy zastępują
dziedziczone wartości domyślne — nie są z nimi scalane. Ustaw [], aby nie
udostępniać danemu agentowi żadnych Skills.
Warsztat (skills.workshop)
skills.workshop.autonomous.enabledbooleandefault: falseGdy ustawiono true, agenci mogą po pomyślnych turach tworzyć oczekujące
propozycje na podstawie trwałych sygnałów z rozmowy. Tworzenie umiejętności
zainicjowane przez użytkownika zawsze odbywa się za pośrednictwem Skill Workshop,
niezależnie od tego ustawienia.
skills.workshop.approvalPolicy"pending" | "auto"default: "pending"pending wymaga zatwierdzenia przez operatora, zanim agent zainicjuje
zastosowanie, odrzucenie lub kwarantannę. auto zezwala na te działania
bez zatwierdzenia.
skills.workshop.allowSymlinkTargetWritesbooleandefault: falseZezwala funkcji zastosowania w Skill Workshop na zapis poprzez dowiązania
symboliczne umiejętności w obszarze roboczym, których rzeczywisty cel jest już
zaufany przez skills.load.allowSymlinkTargets. Pozostaw tę opcję wyłączoną,
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 dla każdego obszaru roboczego (dozwolony zakres: 1–200).
skills.workshop.maxSkillBytesnumberdefault: 40000Maksymalny rozmiar treści propozycji w bajtach (dozwolony zakres: 1024–200000). Opisy propozycji mają osobny, nieprzekraczalny limit 160 bajtów, ponieważ pojawiają się w wynikach wykrywania i wyświetlania list.
Zobacz Skill Workshop, aby poznać cykl życia propozycji, polecenia CLI, parametry narzędzi agenta oraz metody Gateway kontrolowane przez tę konfigurację.
Katalogi główne umiejętności z dowiązaniami symbolicznymi
Domyślnie katalogi główne umiejętności obszaru roboczego, agenta projektu,
katalogów dodatkowych i umiejętności wbudowanych stanowią granice zawierania.
Folder umiejętności z dowiązaniem symbolicznym w <workspace>/skills, który
prowadzi poza katalog główny, jest pomijany, a informacja o tym trafia do
dziennika.
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 dowiązanie
<workspace>/skills/manager -> ~/Projects/manager/skills jest akceptowane po
ustaleniu ścieżki rzeczywistej. extraDirs skanuje bezpośrednio sąsiednie
repozytorium, natomiast allowSymlinkTargets zachowuje ścieżkę z dowiązaniem
symbolicznym na potrzeby istniejących układów.
Funkcja zastosowania w Skill Workshop domyślnie nie zapisuje poprzez te dowiązania symboliczne. Aby zezwolić Workshop na modyfikowanie umiejętności w już zaufanych celach dowiązań symbolicznych, włącz 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 ograniczenie zawierania pliku SKILL.md dla
każdej umiejętności) — allowSymlinkTargets jest potrzebne tylko dla katalogów
głównych obszaru roboczego, katalogów dodatkowych i agenta projektu
(<workspace>/.agents/skills).
Umiejętności w piaskownicy i zmienne środowiskowe
Przekaż dane poufne 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, albo w następnej turze agenta, gdy obserwator wykryje zmianę.
Powiązane
Czym są umiejętności, kolejność ładowania, warunki dostępu i format SKILL.md.
Tworzenie niestandardowych umiejętności obszaru roboczego.
Kolejka propozycji umiejętności przygotowanych przez agenta.
Katalog natywnych poleceń z ukośnikiem i dyrektywy czatu.