Skills

Skills

Skills to pliki instrukcji w Markdownie, które uczą agenta, jak i kiedy używać narzędzi. Każdy skill znajduje się w katalogu zawierającym plik SKILL.md z frontmatter YAML i treścią w Markdownie. OpenClaw ładuje wbudowane Skills oraz wszelkie lokalne nadpisania, a następnie filtruje je podczas ładowania na podstawie środowiska, konfiguracji i obecności plików binarnych.

Kolejność ładowania

OpenClaw ładuje z tych źródeł, najpierw z najwyższym priorytetem. Gdy ta sama nazwa skillu pojawia się w wielu miejscach, wygrywa źródło o najwyższym priorytecie.

Priorytet Źródło Ścieżka
1 — najwyższy Skills obszaru roboczego <workspace>/skills
2 Skills agenta projektu <workspace>/.agents/skills
3 Osobiste Skills agenta ~/.agents/skills
4 Zarządzane / lokalne Skills ~/.openclaw/skills
5 Wbudowane Skills dostarczane z instalacją
6 — najniższy Dodatkowe katalogi skills.load.extraDirs + Skills Plugin

Katalogi główne Skills obsługują układy grupowane. OpenClaw wykrywa skill za każdym razem, gdy SKILL.md pojawia się gdziekolwiek pod skonfigurowanym katalogiem głównym:

text
<workspace>/skills/research/SKILL.md          ✓ found as "research"<workspace>/skills/personal/research/SKILL.md ✓ also found as "research"

Ścieżka folderu służy wyłącznie do organizacji. Nazwa skillu, polecenie z ukośnikiem i klucz listy dozwolonych pochodzą z pola frontmatter name (albo z nazwy katalogu, gdy brakuje name).

Skills per agent a współdzielone Skills

W konfiguracjach wieloagentowych każdy agent ma własny obszar roboczy. Użyj ścieżki odpowiadającej oczekiwanej widoczności:

Zakres Ścieżka Widoczne dla
Per-agent <workspace>/skills Tylko ten agent
Agent projektu <workspace>/.agents/skills Tylko agent tego obszaru roboczego
Agent osobisty ~/.agents/skills Wszyscy agenci na tej maszynie
Współdzielone zarządzane ~/.openclaw/skills Wszyscy agenci na tej maszynie
Dodatkowe katalogi skills.load.extraDirs Wszyscy agenci na tej maszynie

Listy dozwolonych agentów

Lokalizacja skillu (priorytet) i widoczność skillu (który agent może go używać) to osobne mechanizmy kontroli. Użyj list dozwolonych, aby ograniczyć, które Skills agent widzi, niezależnie od tego, skąd zostały załadowane.

json5
{  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    ],  },}
Allowlist rules
  • Pomiń agents.defaults.skills, aby domyślnie pozostawić wszystkie Skills bez ograniczeń.
  • Pomiń agents.list[].skills, aby dziedziczyć agents.defaults.skills.
  • Ustaw agents.list[].skills: [], aby nie udostępniać żadnych Skills temu agentowi.
  • Niepusta lista agents.list[].skills jest ostatecznym zestawem — nie łączy się z wartościami domyślnymi.
  • Efektywna lista dozwolonych obowiązuje przy budowaniu promptu, wykrywaniu poleceń z ukośnikiem, synchronizacji sandboxa i migawkach Skills.
  • To nie jest granica autoryzacji powłoki hosta. Jeśli ten sam agent może używać exec, ogranicz tę powłokę osobno za pomocą sandboxingu, izolacji użytkownika systemu operacyjnego, list zakazów/dozwoleń dla exec oraz poświadczeń per zasób.

Pluginy i Skills

Pluginy mogą dostarczać własne Skills, wskazując katalogi skills w openclaw.plugin.json (ścieżki względne względem katalogu głównego Plugin). Skills Plugin ładują się, gdy Plugin jest włączony — na przykład Plugin przeglądarki dostarcza skill browser-automation do wieloetapowego sterowania przeglądarką.

Katalogi Skills Plugin są scalane na tym samym poziomie niskiego priorytetu co skills.load.extraDirs, więc wbudowany, zarządzany, agentowy albo roboczy skill o tej samej nazwie je nadpisuje. Bramkuj je przez metadata.openclaw.requires.config we wpisie konfiguracji Plugin.

Zobacz Plugins i Tools, aby poznać pełny system Plugin.

Skill Workshop

Skill Workshop to kolejka propozycji między agentem a aktywnymi plikami Skills. Gdy agent zauważy pracę nadającą się do ponownego użycia, przygotowuje propozycję zamiast pisać bezpośrednio do SKILL.md. Przeglądasz i zatwierdzasz ją, zanim cokolwiek się zmieni.

bash
openclaw skills workshop listopenclaw skills workshop inspect <proposal-id>openclaw skills workshop apply <proposal-id>

Zobacz Skill Workshop, aby poznać pełny cykl życia, referencję CLI i konfigurację.

Instalowanie z ClawHub

ClawHub to publiczny rejestr Skills. Używaj poleceń openclaw skills do instalowania i aktualizowania albo CLI clawhub do publikowania i synchronizacji.

Akcja Polecenie
Zainstaluj skill w obszarze roboczym openclaw skills install @owner/<slug>
Zainstaluj z repozytorium Git openclaw skills install git:owner/repo@ref
Zainstaluj lokalny katalog skillu openclaw skills install ./path/to/skill --as my-tool
Zainstaluj dla wszystkich lokalnych agentów openclaw skills install @owner/<slug> --global
Zaktualizuj wszystkie Skills obszaru roboczego openclaw skills update --all
Zaktualizuj współdzielony zarządzany skill openclaw skills update @owner/<slug> --global
Zaktualizuj wszystkie współdzielone zarządzane Skills openclaw skills update --all --global
Zweryfikuj kopertę zaufania skillu openclaw skills verify @owner/<slug>
Wypisz wygenerowaną Skill Card openclaw skills verify @owner/<slug> --card
Publikuj / synchronizuj przez ClawHub CLI clawhub sync --all
Install details

openclaw skills install domyślnie instaluje w katalogu skills/ aktywnego obszaru roboczego. Dodaj --global, aby zainstalować we współdzielonym katalogu ~/.openclaw/skills, widocznym dla wszystkich lokalnych agentów, chyba że listy dozwolonych agentów go zawężą.

Instalacje Git i lokalne oczekują SKILL.md w katalogu głównym źródła. Slug pochodzi z frontmatter SKILL.md pola name, gdy jest poprawne, a następnie używa nazwy katalogu albo repozytorium jako wartości zapasowej. Użyj --as <slug>, aby nadpisać. openclaw skills update śledzi tylko instalacje ClawHub — zainstaluj ponownie źródła Git albo lokalne, aby je odświeżyć.

Verification and security scanning

openclaw skills verify @owner/<slug> prosi ClawHub o kopertę zaufania clawhub.skill.verify.v1 dla skillu. Zainstalowane Skills ClawHub są weryfikowane względem wersji i rejestru zapisanych w .clawhub/origin.json. Same slugi pozostają akceptowane dla istniejących zainstalowanych albo jednoznacznych Skills, ale referencje z właścicielem unikają niejednoznaczności wydawcy.

Strony Skills w ClawHub pokazują najnowszy stan skanowania bezpieczeństwa przed instalacją, ze stronami szczegółów dla VirusTotal, ClawScan i analizy statycznej. Polecenie kończy się kodem niezerowym, gdy ClawHub oznaczy weryfikację jako nieudaną. Wydawcy obsługują fałszywe alarmy przez dashboard ClawHub albo clawhub skill rescan @owner/<slug>.

Private archive installs

Klienci Gateway, którzy potrzebują dostarczania poza ClawHub, mogą przygotować archiwum zip ze skillem za pomocą skills.upload.begin, skills.upload.chunk i skills.upload.commit, a następnie zainstalować je przez skills.install({ source: "upload", ... }). Ta ścieżka jest domyślnie wyłączona i wymaga skills.install.allowUploadedArchives: true w openclaw.json. Zwykłe instalacje ClawHub nigdy nie potrzebują tego ustawienia.

Bezpieczeństwo

Path containment

Wykrywanie Skills obszaru roboczego, agenta projektu i dodatkowych katalogów akceptuje tylko katalogi główne Skills, których rozwiązany realpath pozostaje wewnątrz skonfigurowanego katalogu głównego, chyba że skills.load.allowSymlinkTargets jawnie ufa katalogowi docelowemu. Skill Workshop zapisuje przez te zaufane cele tylko wtedy, gdy włączono skills.workshop.allowSymlinkTargetWrites. Zarządzane ~/.openclaw/skills i osobiste ~/.agents/skills mogą zawierać dowiązane symbolicznie foldery Skills, ale każdy realpath SKILL.md nadal musi pozostawać wewnątrz rozwiązanego katalogu skillu.

Operator install policy

Skonfiguruj security.installPolicy, aby uruchamiać zaufane lokalne polecenie polityki, zanim instalacje Skills będą kontynuowane. Polityka otrzymuje metadane i przygotowaną ścieżkę źródłową, dotyczy ścieżek ClawHub, przesłanych, Git, lokalnych, aktualizacji i instalatora zależności, a w razie braku możliwości zwrócenia prawidłowej decyzji kończy się odmową.

Secret injection scope

skills.entries.*.env i skills.entries.*.apiKey wstrzykują sekrety do procesu hosta tylko na czas tej tury agenta — nie do sandboxa. Nie umieszczaj sekretów w promptach ani logach.

Szerszy model zagrożeń i listy kontrolne bezpieczeństwa znajdziesz w Security.

Format SKILL.md

Każdy skill wymaga co najmniej name i description we frontmatter:

markdown
---name: image-labdescription: Generate or edit images via a provider-backed image workflow--- When the user asks to generate an image, use the `image_generate` tool...

Opcjonalne klucze frontmatter

homepagestring

URL pokazywany jako "Website" w interfejsie macOS Skills. Obsługiwane także przez metadata.openclaw.homepage.

user-invocablebooleandefault: true

Gdy true, skill jest udostępniany jako wywoływane przez użytkownika polecenie z ukośnikiem.

disable-model-invocationbooleandefault: false

Gdy true, OpenClaw nie umieszcza instrukcji skillu w normalnym prompcie agenta. Skill nadal jest dostępny jako polecenie z ukośnikiem, gdy user-invocable również ma wartość true.

command-dispatch"tool"

Gdy ustawione na tool, polecenie z ukośnikiem omija model i jest kierowane bezpośrednio do zarejestrowanego narzędzia.

command-toolstring

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

command-arg-mode"raw"default: raw

Przy wysyłaniu narzędzia przekazuje surowy ciąg argumentów do narzędzia bez parsowania w rdzeniu. Narzędzie otrzymuje { command: "<raw args>", commandName: "<slash command>", skillName: "<skill name>" }.

Bramkowanie

OpenClaw filtruje umiejętności podczas ładowania przy użyciu metadata.openclaw (jednowierszowy JSON we frontmatter). Umiejętność bez bloku metadata.openclaw jest zawsze kwalifikowana, chyba że została jawnie wyłączona.

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",      },  }---
alwaysboolean

Gdy true, zawsze dołączaj umiejętność i pomijaj wszystkie pozostałe bramki.

emojistring

Opcjonalne emoji wyświetlane w interfejsie macOS Skills.

homepagestring

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

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

Filtr platformy. Gdy jest ustawiony, umiejętność kwalifikuje się tylko na wymienionych systemach operacyjnych.

requires.binsstring[]

Każdy plik binarny musi istnieć w PATH.

requires.anyBinsstring[]

Co najmniej jeden plik binarny musi istnieć w PATH.

requires.envstring[]

Każda zmienna env musi istnieć w procesie albo być dostarczona przez konfigurację.

requires.configstring[]

Każda ścieżka openclaw.json musi mieć wartość prawdziwą.

primaryEnvstring

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

installobject[]

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

Specyfikacje instalatora

Specyfikacje instalatora mówią interfejsowi macOS Skills, jak zainstalować zależność:

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
  • Gdy podano wiele instalatorów, gateway wybiera jedną preferowaną opcję (brew, gdy jest dostępny, w przeciwnym razie node).
  • Jeśli wszystkie instalatory to download, OpenClaw wyświetla każdy wpis, aby można było zobaczyć wszystkie dostępne artefakty.
  • Specyfikacje mogą zawierać os: ["darwin"|"linux"|"win32"], aby filtrować według platformy.
  • Instalacje Node respektują skills.install.nodeManager w openclaw.json (domyślnie: npm; opcje: npm / pnpm / yarn / bun). Dotyczy to tylko instalacji umiejętności; środowisko uruchomieniowe Gateway powinno nadal być Node.
  • Preferencje instalatora Gateway: Homebrew → uv → skonfigurowany menedżer node → go → download.
Szczegóły poszczególnych instalatorów
  • Homebrew: OpenClaw nie instaluje automatycznie Homebrew ani nie tłumaczy formuł brew na polecenia pakietów systemowych. W kontenerach Linux bez brew instalatory wyłącznie brew są ukryte; użyj niestandardowego obrazu albo zainstaluj zależność ręcznie.
  • Go: OpenClaw wymaga Go 1.21 lub nowszego do automatycznych instalacji umiejętności i zachowuje istniejące ustawienia GOBIN, GOPATH oraz GOTOOLCHAIN. Jeśli skonfigurowany toolchain nie może spełnić wymaganej przez moduł wersji Go, onboarding grupuje umiejętność z ręcznymi wymaganiami wstępnymi Go po próbie instalacji. Jeśli brakuje go, a Homebrew jest dostępny, OpenClaw najpierw instaluje Go przez Homebrew i ustawia GOBIN na bin z Homebrew. W systemie Linux OpenClaw może zamiast tego użyć apt-get jako root albo przez bezhasłowe sudo, gdy odświeżony kandydat golang-go spełnia minimalną wersję.
  • Download: url (wymagane), archive (tar.gz | tar.bz2 | zip), extract (domyślnie: auto po wykryciu archiwum), stripComponents, targetDir (domyślnie: ~/.openclaw/tools/<skillKey>).
Uwagi o sandboxingu

requires.bins jest sprawdzane na hoście podczas ładowania umiejętności. Jeśli agent działa w sandboxie, plik binarny musi też istnieć wewnątrz kontenera. Zainstaluj go przez agents.defaults.sandbox.docker.setupCommand albo niestandardowy obraz. setupCommand uruchamia się raz po utworzeniu kontenera i wymaga wyjścia do sieci, zapisywalnego głównego systemu plików oraz użytkownika root w sandboxie.

Nadpisania konfiguracji

Włączaj, wyłączaj i konfiguruj dołączone lub zarządzane umiejętności pod skills.entries w ~/.openclaw/openclaw.json:

json5
{  skills: {    entries: {      "image-lab": {        enabled: true,        apiKey: { source: "env", provider: "default", id: "GEMINI_API_KEY" },        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 umiejętność nawet wtedy, gdy jest dołączona lub zainstalowana. Dołączona umiejętność coding-agent jest opcjonalna — ustaw skills.entries.coding-agent.enabled: true i upewnij się, że claude, codex, opencode lub inny obsługiwany CLI jest zainstalowany i uwierzytelniony.

apiKeystring | { source, provider, id }

Wygodne pole dla umiejętności deklarujących metadata.openclaw.primaryEnv. Obsługuje zwykły ciąg tekstowy albo obiekt SecretRef.

envRecord<string, string��-��f���z�������k�)
configobject

Opcjonalny zestaw niestandardowych pól konfiguracji dla danej umiejętności.

allowBundledstring[]

Opcjonalna lista dozwolonych wyłącznie dla dołączonych umiejętności. Gdy jest ustawiona, kwalifikują się tylko dołączone umiejętności z listy. Umiejętności zarządzane i z przestrzeni roboczej pozostają bez zmian.

Wstrzykiwanie środowiska

Gdy rozpoczyna się uruchomienie agenta, OpenClaw:

  • Odczytuje metadane umiejętności

    OpenClaw rozwiązuje efektywną listę umiejętności dla agenta, stosując reguły bramkowania, listy dozwolonych i nadpisania konfiguracji.

  • Wstrzykuje env i klucze API

    skills.entries.<key>.env i skills.entries.<key>.apiKey są stosowane do process.env na czas trwania uruchomienia.

  • Buduje prompt systemowy

    Kwalifikujące się umiejętności są kompilowane do zwartego bloku XML i wstrzykiwane do promptu systemowego.

  • Przywraca środowisko

    Po zakończeniu uruchomienia przywracane jest pierwotne środowisko.

  • Dla dołączonego backendu claude-cli OpenClaw materializuje również tę samą kwalifikującą się migawkę umiejętności jako tymczasowy plugin Claude Code i przekazuje ją przez --plugin-dir. Inne backendy CLI używają tylko katalogu promptów.

    Migawki i odświeżanie

    OpenClaw tworzy migawkę kwalifikujących się umiejętności gdy sesja się zaczyna i ponownie używa tej listy we wszystkich kolejnych turach w sesji. Zmiany w umiejętnościach lub konfiguracji zaczynają działać przy następnej nowej sesji.

    Umiejętności odświeżają się w trakcie sesji w dwóch przypadkach:

    • Obserwator umiejętności wykryje zmianę SKILL.md.
    • Połączy się nowy kwalifikujący się zdalny węzeł.

    Odświeżona lista zostanie użyta w następnej turze agenta. Jeśli efektywna lista dozwolonych agenta się zmieni, OpenClaw odświeża migawkę, aby utrzymać widoczne umiejętności w zgodności.

    Obserwator Skills

    Domyślnie OpenClaw obserwuje foldery umiejętności i podbija migawkę, gdy zmieniają się pliki SKILL.md. Skonfiguruj pod skills.load:

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

    Użyj allowSymlinkTargets dla celowo dowiązanych układów, w których dowiązanie symboliczne katalogu głównego umiejętności wskazuje poza skonfigurowany katalog główny, na przykład <workspace>/skills/manager -> ~/Projects/manager/skills. Włącz skills.workshop.allowSymlinkTargetWrites tylko wtedy, gdy Skill Workshop powinien też stosować propozycje przez te zaufane dowiązane ścieżki.

    Zdalne węzły macOS (Linux gateway)

    Jeśli Gateway działa na Linuksie, ale połączony jest węzeł macOS z dozwolonym system.run, OpenClaw może traktować umiejętności dostępne tylko na macOS jako kwalifikujące się, gdy wymagane pliki binarne są obecne na tym węźle. Agent powinien uruchamiać te umiejętności przez narzędzie exec z host=node.

    Węzły offline nie sprawiają, że zdalne umiejętności stają się widoczne. Jeśli węzeł przestanie odpowiadać na sondy bin, OpenClaw czyści jego buforowane dopasowania bin.

    Wpływ na tokeny

    Gdy umiejętności się kwalifikują, OpenClaw wstrzykuje zwarty blok XML do promptu systemowego. Koszt jest deterministyczny:

    text
    total = 195 + Σ (97 + len(name) + len(description) + len(filepath))
    • Narzut bazowy (tylko gdy ≥ 1 umiejętność): ~195 znaków
    • Na umiejętność: ~97 znaków + długości pól name, description i location
    • Escapowanie XML rozszerza & < > " ' do encji, dodając kilka znaków na każde wystąpienie
    • Przy ~4 znakach/token, 97 znaków ≈ 24 tokeny na umiejętność przed długościami pól

    Utrzymuj opisy krótkie i opisowe, aby zminimalizować narzut promptu.

    Powiązane

    Was this useful?
    On this page

    On this page