Punkty wejścia pluginów
Każdy plugin eksportuje domyślny obiekt entry. SDK udostępnia trzy pomocnicze funkcje do ich tworzenia.definePluginEntry
Import: openclaw/plugin-sdk/plugin-entry
Dla pluginów providerów, pluginów narzędzi, pluginów hooków i wszystkiego, co nie jest
kanałem wiadomości.
| Pole | Typ | Wymagane | Domyślnie |
|---|---|---|---|
id | string | Tak | — |
name | string | Tak | — |
description | string | Tak | — |
kind | string | Nie | — |
configSchema | OpenClawPluginConfigSchema | () => OpenClawPluginConfigSchema | Nie | Schemat pustego obiektu |
register | (api: OpenClawPluginApi) => void | Tak | — |
idmusi odpowiadać manifestowiopenclaw.plugin.json.kindsłuży do wyłącznych slotów:"memory"lub"context-engine".configSchemamoże być funkcją do leniwej ewaluacji.- OpenClaw rozwiązuje i zapamiętuje ten schemat przy pierwszym dostępie, więc kosztowne konstruktory schematów uruchamiają się tylko raz.
defineChannelPluginEntry
Import: openclaw/plugin-sdk/channel-core
Opakowuje definePluginEntry logiką specyficzną dla kanałów. Automatycznie wywołuje
api.registerChannel({ plugin }), udostępnia opcjonalny seam metadanych CLI dla
głównej pomocy i warunkuje registerFull trybem rejestracji.
| Pole | Typ | Wymagane | Domyślnie |
|---|---|---|---|
id | string | Tak | — |
name | string | Tak | — |
description | string | Tak | — |
plugin | ChannelPlugin | Tak | — |
configSchema | OpenClawPluginConfigSchema | () => OpenClawPluginConfigSchema | Nie | Schemat pustego obiektu |
setRuntime | (runtime: PluginRuntime) => void | Nie | — |
registerCliMetadata | (api: OpenClawPluginApi) => void | Nie | — |
registerFull | (api: OpenClawPluginApi) => void | Nie | — |
setRuntimejest wywoływane podczas rejestracji, aby można było zapisać referencję runtime (zwykle przezcreatePluginRuntimeStore). Jest pomijane podczas przechwytywania metadanych CLI.registerCliMetadatadziała zarówno przyapi.registrationMode === "cli-metadata", jak iapi.registrationMode === "full". Używaj go jako kanonicznego miejsca dla deskryptorów CLI należących do kanału, aby główna pomoc pozostawała nieaktywująca, a jednocześnie normalna rejestracja poleceń CLI była zgodna z pełnym ładowaniem pluginów.registerFulldziała tylko wtedy, gdyapi.registrationMode === "full". Jest pomijane podczas ładowania tylko do setupu.- Podobnie jak
definePluginEntry,configSchemamoże być leniwą fabryką, a OpenClaw zapamiętuje rozwiązany schemat przy pierwszym dostępie. - Dla należących do pluginu głównych poleceń CLI preferuj
api.registerCli(..., { descriptors: [...] }), gdy chcesz, aby polecenie pozostało ładowane leniwie, ale nie znikało z głównego drzewa parsowania CLI. W przypadku pluginów kanałów preferuj rejestrowanie tych deskryptorów z poziomuregisterCliMetadata(...), aregisterFull(...)pozostaw do pracy wyłącznie runtime. - Jeśli
registerFull(...)rejestruje również metody Gateway RPC, trzymaj je pod prefiksem specyficznym dla pluginu. Zarezerwowane główne przestrzenie nazw administratora (config.*,exec.approvals.*,wizard.*,update.*) są zawsze wymuszane dooperator.admin.
defineSetupPluginEntry
Import: openclaw/plugin-sdk/channel-core
Dla lekkiego pliku setup-entry.ts. Zwraca tylko { plugin } bez
logiki runtime ani CLI.
defineSetupPluginEntry(...) z wąskimi rodzinami helperów setupu:
openclaw/plugin-sdk/setup-runtimedla bezpiecznych dla runtime helperów setupu, takich jak bezpieczne importowo adaptery poprawek setupu, wyjścielookup-note,promptResolvedAllowFrom,splitSetupEntriesi delegowane proxy setupuopenclaw/plugin-sdk/channel-setupdla opcjonalnych powierzchni setupu instalacjiopenclaw/plugin-sdk/setup-toolsdla helperów CLI/archiwów/dokumentacji setupu i instalacji
Tryb rejestracji
api.registrationMode informuje plugin, jak został załadowany:
| Tryb | Kiedy | Co rejestrować |
|---|---|---|
"full" | Normalny start Gateway | Wszystko |
"setup-only" | Wyłączony/nieskonfigurowany kanał | Tylko rejestrację kanału |
"setup-runtime" | Przepływ setupu z dostępnym runtime | Rejestrację kanału oraz tylko lekki runtime potrzebny przed załadowaniem pełnego entry |
"cli-metadata" | Główna pomoc / przechwytywanie metadanych CLI | Tylko deskryptory CLI |
defineChannelPluginEntry obsługuje ten podział automatycznie. Jeśli używasz
definePluginEntry bezpośrednio dla kanału, sprawdź tryb samodzielnie:
"setup-runtime" jako okno, w którym powierzchnie startowe tylko do setupu muszą
istnieć bez ponownego wchodzenia do pełnego środowiska runtime zbundlowanego kanału. Dobrze pasują tu
rejestracja kanału, bezpieczne dla setupu trasy HTTP, bezpieczne dla setupu metody Gateway oraz
delegowane helpery setupu. Ciężkie usługi działające w tle, rejestratory CLI oraz
bootstrapy SDK providerów/klientów nadal należą do "full".
W szczególności dla rejestratorów CLI:
- używaj
descriptors, gdy rejestrator posiada jedno lub więcej głównych poleceń i chcesz, aby OpenClaw ładował właściwy moduł CLI leniwie przy pierwszym wywołaniu - upewnij się, że te deskryptory obejmują każdy główny korzeń polecenia udostępniany przez rejestrator
- używaj samego
commandstylko dla ścieżek zgodności eager
Kształty pluginów
OpenClaw klasyfikuje załadowane pluginy według ich zachowania rejestracyjnego:| Kształt | Opis |
|---|---|
| plain-capability | Jeden typ możliwości (np. tylko provider) |
| hybrid-capability | Wiele typów możliwości (np. provider + speech) |
| hook-only | Tylko hooki, bez możliwości |
| non-capability | Narzędzia/polecenia/usługi, ale bez możliwości |
openclaw plugins inspect <id>, aby zobaczyć kształt pluginu.
Powiązane
- Przegląd SDK — API rejestracji i dokumentacja subpath
- Helpery runtime —
api.runtimeicreatePluginRuntimeStore - Setup i konfiguracja — manifest, setup entry, odroczone ładowanie
- Pluginy kanałów — budowanie obiektu
ChannelPlugin - Pluginy providerów — rejestracja providerów i hooki