Skills

Skills

OpenClaw używa kompatybilnych z AgentSkills folderów skillów, aby nauczyć agenta korzystania z narzędzi. Każdy skill jest katalogiem zawierającym SKILL.md z frontmatter YAML i instrukcjami. OpenClaw ładuje wbudowane skille oraz opcjonalne lokalne nadpisania i filtruje je podczas ładowania na podstawie środowiska, konfiguracji oraz obecności binariów.

Lokalizacje i pierwszeństwo

OpenClaw ładuje skille z tych źródeł, najwyższe pierwszeństwo jako pierwsze:

# Źródło Ścieżka
1 Skille obszaru roboczego <workspace>/skills
2 Skille agenta projektu <workspace>/.agents/skills
3 Osobiste skille agenta ~/.agents/skills
4 Zarządzane/lokalne skille ~/.openclaw/skills
5 Wbudowane skille dostarczane z instalacją
6 Dodatkowe foldery skillów skills.load.extraDirs (config)

Jeśli nazwa skilla koliduje, wygrywa źródło o najwyższym pierwszeństwie.

Natywny katalog $CODEX_HOME/skills Codex CLI nie jest jednym z tych katalogów głównych skillów OpenClaw. W trybie harness Codex lokalne uruchomienia serwera aplikacji używają izolowanych katalogów domowych Codex przypisanych do agenta, więc osobiste skille Codex CLI nie są ładowane niejawnie. Użyj openclaw migrate codex --dry-run, aby zrobić ich inwentaryzację, oraz openclaw migrate codex, aby wybrać katalogi skillów za pomocą interaktywnego monitu z polami wyboru przed skopiowaniem ich do bieżącego obszaru roboczego agenta OpenClaw. W uruchomieniach nieinteraktywnych powtarzaj --skill <name> dla dokładnych skillów do skopiowania.

Skille przypisane do agenta i współdzielone

W konfiguracjach multi-agent każdy agent ma własny obszar roboczy:

Zakres Ścieżka Widoczne dla
Przypisane do agenta <workspace>/skills Tylko tego agenta
Agent projektu <workspace>/.agents/skills Tylko agenta tego obszaru roboczego
Agent osobisty ~/.agents/skills Wszystkich agentów na tej maszynie
Współdzielone zarządzane/lokalne ~/.openclaw/skills Wszystkich agentów na tej maszynie
Współdzielone dodatkowe katalogi skills.load.extraDirs (najniższe pierwszeństwo) Wszystkich agentów na tej maszynie

Ta sama nazwa w wielu miejscach → wygrywa źródło o najwyższym pierwszeństwie. Obszar roboczy ma pierwszeństwo przed agentem projektu, ten przed agentem osobistym, ten przed zarządzanymi/lokalnymi, te przed wbudowanymi, a wbudowane przed dodatkowymi katalogami.

Listy dozwolonych skillów agenta

Lokalizacja skilla i widoczność skilla to osobne mechanizmy kontroli. Lokalizacja/pierwszeństwo decyduje, która kopia skilla o tej samej nazwie wygrywa; listy dozwolonych agenta decydują, których skillów agent może faktycznie używać.

json5
{  agents: {    defaults: {      skills: ["github", "weather"],    },    list: [      { id: "writer" }, // inherits github, weather      { id: "docs", skills: ["docs-search"] }, // replaces defaults      { id: "locked-down", skills: [] }, // no skills    ],  },}
Reguły list dozwolonych
  • Pomiń agents.defaults.skills, aby domyślnie nie ograniczać skillów.
  • Pomiń agents.list[].skills, aby dziedziczyć agents.defaults.skills.
  • Ustaw agents.list[].skills: [], aby nie zezwalać na żadne skille.
  • Niepusta lista agents.list[].skills jest ostatecznym zestawem dla tego agenta - nie jest scalana z wartościami domyślnymi.
  • Efektywna lista dozwolonych obowiązuje przy budowaniu promptu, wykrywaniu poleceń slash skillów, synchronizacji z sandboxem i migawkach skillów.

Pluginy i skille

Pluginy mogą dostarczać własne skille, wymieniając katalogi skills w openclaw.plugin.json (ścieżki względne wobec katalogu głównego pluginu). Skille pluginu ładują się, gdy plugin jest włączony. To właściwe miejsce na specyficzne dla narzędzi instrukcje operacyjne, które są zbyt długie na opis narzędzia, ale powinny być dostępne zawsze, gdy plugin jest zainstalowany - na przykład plugin przeglądarki dostarcza skill browser-automation do wieloetapowego sterowania przeglądarką.

Katalogi skillów pluginów są scalane z tą samą ścieżką o niskim pierwszeństwie co skills.load.extraDirs, więc wbudowany, zarządzany, agentowy lub roboczy skill o tej samej nazwie je nadpisuje. Możesz je bramkować przez metadata.openclaw.requires.config we wpisie konfiguracji pluginu.

Zobacz Pluginy, aby poznać wykrywanie/konfigurację, oraz Narzędzia, aby poznać powierzchnię narzędzi, której uczą te skille.

Skill Workshop

Opcjonalny, eksperymentalny plugin Skill Workshop może tworzyć lub aktualizować skille obszaru roboczego na podstawie procedur wielokrotnego użytku zaobserwowanych podczas pracy agenta. Jest domyślnie wyłączony i musi zostać jawnie włączony przez plugins.entries.skill-workshop.

Skill Workshop zapisuje tylko do <workspace>/skills, skanuje wygenerowaną treść, obsługuje oczekującą akceptację lub automatyczne bezpieczne zapisy, przenosi niebezpieczne propozycje do kwarantanny i odświeża migawkę skillów po udanych zapisach, aby nowe skille stały się dostępne bez restartu Gateway.

Używaj go do poprawek takich jak „następnym razem zweryfikuj atrybucję GIF-a” albo trudno wypracowanych przepływów pracy, takich jak listy kontrolne QA mediów. Zacznij od oczekującej akceptacji; używaj automatycznych zapisów tylko w zaufanych obszarach roboczych po przejrzeniu propozycji. Pełny przewodnik: plugin Skill Workshop.

ClawHub (instalacja i synchronizacja)

ClawHub to publiczny rejestr skillów dla OpenClaw. Używaj natywnych poleceń openclaw skills do odkrywania/instalowania/aktualizowania albo osobnego CLI clawhub do przepływów publikowania/synchronizacji. Pełny przewodnik: ClawHub.

Akcja Polecenie
Zainstaluj skill w obszarze roboczym openclaw skills install <skill-slug>
Zaktualizuj wszystkie zainstalowane skille openclaw skills update --all
Synchronizuj (skanuj + publikuj aktualizacje) clawhub sync --all

Natywne openclaw skills install instaluje do katalogu skills/ aktywnego obszaru roboczego. Osobne CLI clawhub również instaluje do ./skills w bieżącym katalogu roboczym (albo wraca do skonfigurowanego obszaru roboczego OpenClaw). OpenClaw wykrywa to jako <workspace>/skills w następnej sesji. Skonfigurowane katalogi główne skillów obsługują też jeden poziom grupowania, taki jak skills/<group>/<skill>/SKILL.md, dzięki czemu powiązane skille firm trzecich można trzymać we współdzielonym folderze bez szerokiego skanowania rekurencyjnego.

Klienci Gateway, którzy potrzebują prywatnego dostarczania poza ClawHub, mogą przygotować archiwum zip skilla za pomocą skills.upload.begin, skills.upload.chunk i skills.upload.commit, a następnie zainstalować zatwierdzone przesłanie przez skills.install({ source: "upload", uploadId, slug, force?, sha256? }). To jawna ścieżka przesyłania administracyjnego dla zaufanych klientów, a nie normalny przepływ openclaw skills install <slug> ani instalacja ClawHub. Jest domyślnie wyłączona i działa tylko wtedy, gdy w openclaw.json ustawiono skills.install.allowUploadedArchives: true. Tryb przesyłania nadal instaluje do domyślnego obszaru roboczego agenta, do katalogu skills/<slug>; wewnętrzna nazwa folderu z archiwum jest ignorowana dla docelowej instalacji.

Strony skillów ClawHub pokazują najnowszy stan skanowania bezpieczeństwa przed instalacją, z podstronami szczegółów skanerów dla VirusTotal, ClawScan i analizy statycznej. openclaw skills install <slug> pozostaje wyłącznie ścieżką instalacji; wydawcy usuwają fałszywe alarmy przez panel ClawHub albo clawhub skill rescan <slug>.

Bezpieczeństwo

  • Wykrywanie skillów obszaru roboczego i dodatkowych katalogów akceptuje tylko katalogi główne skillów oraz pliki SKILL.md, których rozwiązany realpath pozostaje wewnątrz skonfigurowanego katalogu głównego.
  • Prywatne instalacje archiwów Gateway są domyślnie wyłączone. Po jawnym włączeniu wymagają zatwierdzonego przesłania zip zawierającego SKILL.md i ponownie używają tych samych zabezpieczeń wyodrębniania archiwów, przechodzenia ścieżek, dowiązań symbolicznych, wymuszania i wycofywania co instalacje skillów ClawHub. Są bramkowane przez skills.install.allowUploadedArchives; normalne instalacje ClawHub nie wymagają tego ustawienia.
  • Instalacje zależności skillów wspierane przez Gateway (skills.install, onboarding i UI ustawień Skills) uruchamiają wbudowany skaner niebezpiecznego kodu przed wykonaniem metadanych instalatora. Wyniki critical są domyślnie blokowane, chyba że wywołujący jawnie ustawi niebezpieczne nadpisanie; podejrzane wyniki nadal tylko ostrzegają.
  • openclaw skills install <slug> działa inaczej - pobiera folder skilla ClawHub do obszaru roboczego i nie używa powyższej ścieżki metadanych instalatora.
  • skills.entries.*.env i skills.entries.*.apiKey wstrzykują sekrety do procesu hosta dla danej tury agenta (nie do sandboxa). Nie umieszczaj sekretów w promptach ani logach.

Szerszy model zagrożeń i listy kontrolne znajdziesz w Bezpieczeństwo.

Format SKILL.md

SKILL.md musi zawierać co najmniej:

markdown
---name: image-labdescription: Generate or edit images via a provider-backed image workflow---

OpenClaw przestrzega specyfikacji AgentSkills dotyczącej układu/intencji. Parser używany przez osadzonego agenta obsługuje tylko jednowierszowe klucze frontmatter; metadata powinno być jednowierszowym obiektem JSON. Użyj {baseDir} w instrukcjach, aby odwołać się do ścieżki folderu skilla.

Opcjonalne klucze frontmatter

homepagestring

URL widoczny jako „Website” w UI Skills macOS. Obsługiwany również przez metadata.openclaw.homepage.

user-invocablebooleandefault: true

Gdy true, skill jest udostępniany jako polecenie slash użytkownika.

disable-model-invocationbooleandefault: false

Gdy true, OpenClaw nie umieszcza instrukcji skilla w normalnym prompcie agenta. Skill nadal jest zainstalowany i nadal można go jawnie uruchomić jako polecenie slash, gdy user-invocable również ma wartość true.

command-dispatch"tool"

Gdy ustawiono na tool, polecenie slash omija model i jest wysyłane bezpośrednio do narzędzia.

command-toolstring

Nazwa narzędzia do wywołania, gdy ustawiono command-dispatch: tool.

command-arg-mode"raw"default: raw

W przypadku wysyłania do narzędzia przekazuje surowy ciąg argumentów do narzędzia (bez parsowania w rdzeniu). Narzędzie jest wywoływane z { command: "<raw args>", commandName: "<slash command>", skillName: "<skill name>" }.

Bramkowanie (filtry podczas ładowania)

OpenClaw filtruje skille podczas ładowania przy użyciu metadata (jednowierszowy JSON):

markdown
---name: image-labdescription: Generate or edit images via a provider-backed image workflowmetadata:  {    "openclaw":      {        "requires": { "bins": ["uv"], "env": ["GEMINI_API_KEY"], "config": ["browser.enabled"] },        "primaryEnv": "GEMINI_API_KEY",      },  }---

Pola pod metadata.openclaw:

alwaysboolean

Gdy true, zawsze dołączaj skill (pomiń pozostałe bramki).

emojistring

Opcjonalne emoji używane przez interfejs macOS Skills.

homepagestring

Opcjonalny URL wyświetlany jako „Witryna” w interfejsie macOS Skills.

os"darwin" | "linux" | "win32"

Opcjonalna lista platform. Jeśli jest ustawiona, skill kwalifikuje się tylko na tych systemach operacyjnych.

requires.binsstring[]

Każdy element musi istnieć w PATH.

requires.anyBinsstring[]

Co najmniej jeden element musi istnieć w PATH.

requires.envstring[]

Zmienna środowiskowa musi istnieć albo zostać podana w konfiguracji.

requires.configstring[]

Lista ścieżek openclaw.json, które muszą mieć wartość truthy.

primaryEnvstring

Nazwa zmiennej środowiskowej powiązana z skills.entries.<name>.apiKey.

installobject[]

Opcjonalne specyfikacje instalatora używane przez interfejs macOS Skills (brew/node/go/uv/download).

Jeśli metadata.openclaw nie istnieje, skill zawsze się kwalifikuje (chyba że jest wyłączony w konfiguracji albo zablokowany przez skills.allowBundled dla wbudowanych skills).

Uwagi dotyczące sandboxingu

  • requires.bins jest sprawdzane na hoście podczas ładowania skill.
  • Jeśli agent działa w sandboxie, plik binarny musi także istnieć wewnątrz kontenera. Zainstaluj go przez agents.defaults.sandbox.docker.setupCommand (albo własny obraz). setupCommand uruchamia się raz po utworzeniu kontenera. Instalacje pakietów wymagają także dostępu wychodzącego do sieci, zapisywalnego głównego systemu plików i użytkownika root w sandboxie.
  • Przykład: skill summarize (skills/summarize/SKILL.md) potrzebuje CLI summarize w kontenerze sandboxa, aby tam działać.

Specyfikacje instalatora

markdown
---name: geminidescription: Use Gemini CLI for coding assistance and Google search lookups.metadata:  {    "openclaw":      {        "emoji": "♊️",        "requires": { "bins": ["gemini"] },        "install":          [            {              "id": "brew",              "kind": "brew",              "formula": "gemini-cli",              "bins": ["gemini"],              "label": "Install Gemini CLI (brew)",            },          ],      },  }---
Reguły wyboru instalatora
  • Jeśli wymieniono wiele instalatorów, gateway wybiera jedną preferowaną opcję (brew, gdy jest dostępny, w przeciwnym razie node).
  • Jeśli wszystkie instalatory to download, OpenClaw wypisuje każdy wpis, aby można było zobaczyć dostępne artefakty.
  • Specyfikacje instalatora mogą zawierać os: ["darwin"|"linux"|"win32"], aby filtrować opcje według platformy.
  • Instalacje Node honorują skills.install.nodeManager w openclaw.json (domyślnie: npm; opcje: npm/pnpm/yarn/bun). Wpływa to tylko na instalacje skills; środowiskiem uruchomieniowym Gateway nadal powinien być Node - Bun nie jest zalecany dla WhatsApp/Telegram.
  • Wybór instalatora oparty na Gateway jest sterowany preferencjami: gdy specyfikacje instalacji mieszają rodzaje, OpenClaw preferuje Homebrew, gdy skills.install.preferBrew jest włączone i brew istnieje, następnie uv, potem skonfigurowany menedżer node, a następnie inne rozwiązania awaryjne, takie jak go lub download.
  • Jeśli każda specyfikacja instalacji to download, OpenClaw pokazuje wszystkie opcje pobierania zamiast zwijać je do jednego preferowanego instalatora.
Szczegóły poszczególnych instalatorów
  • Instalacje Go: jeśli brakuje go, a brew jest dostępny, gateway najpierw instaluje Go przez Homebrew i ustawia GOBIN na katalog bin Homebrew, gdy to możliwe.
  • Instalacje pobierane: url (wymagane), archive (tar.gz | tar.bz2 | zip), extract (domyślnie: automatycznie po wykryciu archiwum), stripComponents, targetDir (domyślnie: ~/.openclaw/tools/<skillKey>).

Nadpisania konfiguracji

Wbudowane i zarządzane skills można włączać lub wyłączać oraz dostarczać im wartości środowiskowe w skills.entries w ~/.openclaw/openclaw.json:

json5
{  skills: {    entries: {      "image-lab": {        enabled: true,        apiKey: { source: "env", provider: "default", id: "GEMINI_API_KEY" }, // or plaintext string        env: {          GEMINI_API_KEY: "GEMINI_KEY_HERE",        },        config: {          endpoint: "https://example.invalid",          model: "nano-pro",        },      },      peekaboo: { enabled: true },      sag: { enabled: false },    },  },}
enabledboolean

false wyłącza skill, nawet jeśli jest wbudowany albo zainstalowany. Wbudowany skill coding-agent wymaga jawnego włączenia: ustaw skills.entries.coding-agent.enabled: true przed udostępnieniem go agentom, następnie upewnij się, że jeden z claude, codex, opencode lub pi jest zainstalowany i uwierzytelniony dla własnego CLI.

apiKeystring | { source, provider, id }

Ułatwienie dla skills deklarujących metadata.openclaw.primaryEnv. Obsługuje zwykły tekst albo SecretRef.

envRecord<string, string��-�լ���,��r�J0��r�ܳ�'����z7��;��ְ���š�q�
configobject

Opcjonalny worek na niestandardowe pola danego skill. Niestandardowe klucze muszą znajdować się tutaj.

allowBundledstring[]

Opcjonalna allowlista tylko dla wbudowanych skills. Jeśli jest ustawiona, kwalifikują się tylko wbudowane skills z listy (zarządzane/workspace skills pozostają bez zmian).

Jeśli nazwa skill zawiera łączniki, ujmij klucz w cudzysłów (JSON5 pozwala na klucze w cudzysłowie). Klucze konfiguracji domyślnie odpowiadają nazwie skill - jeśli skill definiuje metadata.openclaw.skillKey, użyj tego klucza w skills.entries.

Wstrzykiwanie środowiska

Gdy rozpoczyna się uruchomienie agenta, OpenClaw:

  1. Odczytuje metadane skills.
  2. Stosuje skills.entries.<key>.env i skills.entries.<key>.apiKey do process.env.
  3. Buduje prompt systemowy z kwalifikującymi się skills.
  4. Przywraca pierwotne środowisko po zakończeniu uruchomienia.

Wstrzykiwanie środowiska jest ograniczone do uruchomienia agenta, a nie globalnym środowiskiem powłoki.

Dla wbudowanego backendu claude-cli OpenClaw materializuje także ten sam kwalifikujący się snapshot jako tymczasowy plugin Claude Code i przekazuje go przez --plugin-dir. Claude Code może wtedy używać swojego natywnego resolvera skills, podczas gdy OpenClaw nadal odpowiada za precedencję, allowlisty dla agentów, gating oraz wstrzykiwanie env/klucza API skills.entries.*. Inne backendy CLI używają wyłącznie katalogu promptów.

Snapshoty i odświeżanie

OpenClaw tworzy snapshot kwalifikujących się skills gdy rozpoczyna się sesja i używa ponownie tej listy w kolejnych turach w tej samej sesji. Zmiany w skills lub konfiguracji zaczynają obowiązywać w następnej nowej sesji.

Skills mogą odświeżyć się w trakcie sesji w dwóch przypadkach:

  • Obserwator skills jest włączony.
  • Pojawi się nowy kwalifikujący się węzeł zdalny.

Traktuj to jako hot reload: odświeżona lista jest używana w następnej turze agenta. Jeśli efektywna allowlista skills agenta zmieni się dla tej sesji, OpenClaw odświeży snapshot, aby widoczne skills pozostały zgodne z bieżącym agentem.

Obserwator skills

Domyślnie OpenClaw obserwuje foldery skills i podbija snapshot skills, gdy zmieniają się pliki SKILL.md. Skonfiguruj w skills.load:

json5
{  skills: {    load: {      extraDirs: ["~/Projects/agent-scripts/skills"],      allowSymlinkTargets: ["~/Projects/manager/skills"],      watch: true,      watchDebounceMs: 250,    },  },}

Użyj allowSymlinkTargets dla celowych układów z sąsiednimi repozytoriami, w których wbudowany root skill zawiera dowiązanie symboliczne, na przykład ~/.agents/skills/manager -> ~/Projects/manager/skills. Lista celów jest dopasowywana po rozwiązaniu realpath i powinna pozostać wąska.

Zdalne węzły macOS (Gateway na Linuksie)

Jeśli Gateway działa na Linuksie, ale połączony jest węzeł macOS z dozwolonym system.run (zabezpieczenie zatwierdzeń Exec nie jest ustawione na deny), OpenClaw może traktować skills tylko dla macOS jako kwalifikujące się, gdy wymagane pliki binarne są obecne na tym węźle. Agent powinien wykonywać te skills przez narzędzie exec z host=node.

Opiera się to na raportowaniu przez węzeł obsługi poleceń oraz na sondzie bin przez system.which lub system.run. Węzły offline nie sprawiają, że skills tylko zdalne są widoczne. Jeśli połączony węzeł przestaje odpowiadać na sondy bin, OpenClaw czyści jego cache dopasowań bin, aby agenci nie widzieli już skills, których obecnie nie można tam uruchomić.

Wpływ na tokeny

Gdy skills są kwalifikujące się, OpenClaw wstrzykuje zwartą listę XML dostępnych skills do promptu systemowego (przez formatSkillsForPrompt w pi-coding-agent). Koszt jest deterministyczny:

  • Narzut bazowy (tylko gdy ≥1 skill): 195 znaków.
  • Na skill: 97 znaków + długość wartości <name>, <description> i <location> po escapowaniu XML.

Wzór (znaki):

text
total = 195 + Σ (97 + len(name_escaped) + len(description_escaped) + len(location_escaped))

Escapowanie XML rozwija & < > " ' do encji (&amp;, &lt; itd.), zwiększając długość. Liczby tokenów różnią się zależnie od tokenizatora modelu. Przybliżone oszacowanie w stylu OpenAI to ~4 znaki/token, więc 97 znaków ≈ 24 tokeny na skill plus rzeczywiste długości pól.

Cykl życia zarządzanych skills

OpenClaw dostarcza bazowy zestaw skills jako wbudowane skills wraz z instalacją (pakiet npm lub OpenClaw.app). ~/.openclaw/skills istnieje dla lokalnych nadpisań - na przykład do przypięcia lub spatchowania skill bez zmieniania wbudowanej kopii. Workspace skills należą do użytkownika i nadpisują obie opcje w przypadku konfliktów nazw.

Szukasz więcej skills?

Przeglądaj https://clawhub.ai. Pełny schemat konfiguracji: Konfiguracja Skills.

Powiązane

Was this useful?