Plugins
Zgodność Plugin
OpenClaw utrzymuje starsze kontrakty pluginów podłączone przez nazwane adaptery zgodności przed ich usunięciem. Chroni to istniejące wbudowane i zewnętrzne pluginy, podczas gdy kontrakty SDK, manifestu, konfiguracji początkowej, konfiguracji i środowiska uruchomieniowego agenta ewoluują.
Rejestr zgodności
Kontrakty zgodności pluginów są śledzone w głównym rejestrze w
src/plugins/compat/registry.ts.
Każdy rekord zawiera:
- stabilny kod zgodności
- status:
active,deprecated,removal-pendingalboremoved - właściciela: SDK, konfiguracja, konfiguracja początkowa, kanał, dostawca, wykonywanie pluginu, środowisko uruchomieniowe agenta albo core
- daty wprowadzenia i wycofania, gdy mają zastosowanie
- wskazówki dotyczące zamiennika
- dokumentację, diagnostykę i testy obejmujące stare i nowe zachowanie
Rejestr jest źródłem do planowania przez maintainerów i przyszłych kontroli inspektora pluginów. Jeśli zachowanie widoczne dla pluginów się zmienia, dodaj lub zaktualizuj rekord zgodności w tej samej zmianie, która dodaje adapter.
Zgodność napraw Doctor i migracji jest śledzona osobno w
src/commands/doctor/shared/deprecation-compat.ts. Te rekordy obejmują stare kształty konfiguracji, układy rejestru instalacji i warstwy naprawcze, które mogą musieć pozostać dostępne po usunięciu ścieżki zgodności środowiska uruchomieniowego.
Przeglądy wydania powinny sprawdzać oba rejestry. Nie usuwaj migracji Doctor tylko dlatego, że pasujący rekord zgodności środowiska uruchomieniowego lub konfiguracji wygasł; najpierw sprawdź, czy nie istnieje obsługiwana ścieżka aktualizacji, która nadal wymaga naprawy. Ponownie zweryfikuj też każdą adnotację zamiennika podczas planowania wydania, ponieważ własność pluginów i zakres konfiguracji mogą się zmieniać, gdy dostawcy i kanały są przenoszeni poza core.
Pakiet inspektora pluginów
Inspektor pluginów powinien istnieć poza głównym repozytorium OpenClaw jako osobny pakiet/repozytorium oparte na wersjonowanych kontraktach zgodności i manifestu.
CLI pierwszego dnia powinno mieć postać:
openclaw-plugin-inspector ./my-plugin
Powinno emitować:
- walidację manifestu/schematu
- wersję zgodności kontraktu, która jest sprawdzana
- kontrole metadanych instalacji/źródła
- kontrole importu zimnej ścieżki
- ostrzeżenia o wycofaniu i zgodności
Użyj --json, aby uzyskać stabilne dane wyjściowe czytelne maszynowo w adnotacjach CI. Core OpenClaw powinien udostępniać kontrakty i fikstury, których inspektor może używać, ale nie powinien publikować binarnego inspektora z głównego pakietu openclaw.
Ścieżka akceptacyjna maintainerów
Użyj Blacksmith Testbox dla ścieżki akceptacyjnej instalowalnego pakietu podczas walidowania zewnętrznego inspektora względem pakietów pluginów OpenClaw. Uruchom ją z czystego checkoutu OpenClaw po zbudowaniu pakietu:
blacksmith testbox warmup ci-check-testbox.yml --ref main --idle-timeout 90
blacksmith testbox run --id <tbx_id> "pnpm install && pnpm build && npm exec --yes @openclaw/[email protected] -- ./extensions/telegram --json"
blacksmith testbox run --id <tbx_id> "npm exec --yes @openclaw/[email protected] -- ./extensions/discord --json"
blacksmith testbox run --id <tbx_id> "npm exec --yes @openclaw/[email protected] -- <clawhub-plugin-dir> --json"
blacksmith testbox stop <tbx_id>
Ta ścieżka powinna pozostać opcjonalna dla maintainerów, ponieważ instaluje zewnętrzny pakiet npm i może inspektować pakiety pluginów sklonowane poza repozytorium. Lokalne zabezpieczenia repozytorium obejmują mapę eksportów SDK, metadane rejestru zgodności, redukcję wycofanych importów SDK i granice importów wbudowanych rozszerzeń; dowód z inspektora w Testbox obejmuje pakiet tak, jak używają go autorzy zewnętrznych pluginów.
Zasady wycofywania
OpenClaw nie powinien usuwać udokumentowanego kontraktu pluginu w tym samym wydaniu, które wprowadza jego zamiennik.
Sekwencja migracji wygląda tak:
- Dodaj nowy kontrakt.
- Zachowaj stare zachowanie podłączone przez nazwany adapter zgodności.
- Emituj diagnostykę lub ostrzeżenia, gdy autorzy pluginów mogą podjąć działanie.
- Udokumentuj zamiennik i harmonogram.
- Przetestuj zarówno starą, jak i nową ścieżkę.
- Odczekaj ogłoszone okno migracji.
- Usuń tylko z wyraźną zgodą na wydanie z breaking changes.
Wycofane rekordy muszą zawierać datę rozpoczęcia ostrzeżeń, zamiennik, link do dokumentacji i ostateczną datę usunięcia nie później niż trzy miesiące po rozpoczęciu ostrzegania. Nie dodawaj wycofanej ścieżki zgodności z bezterminowym oknem usunięcia, chyba że maintainerzy wyraźnie zdecydują, że jest to trwała zgodność, i zamiast tego oznaczą ją jako active.
Obecne obszary zgodności
Obecne rekordy zgodności obejmują:
- starsze szerokie importy SDK, takie jak
openclaw/plugin-sdk/compat - starsze kształty pluginów oparte wyłącznie na hookach oraz
before_agent_start - starsze punkty wejścia pluginów
activate(api), podczas gdy pluginy migrują doregister(api) - starsze aliasy SDK, takie jak
openclaw/extension-api,openclaw/plugin-sdk/channel-runtime, kreatory statusuopenclaw/plugin-sdk/command-auth,openclaw/plugin-sdk/test-utils(zastąpione przez ukierunkowane podścieżki testoweopenclaw/plugin-sdk/*) oraz aliasy typówClawdbotConfig/OpenClawSchemaType - listę dozwolonych wbudowanych pluginów i zachowanie włączania
- starsze metadane manifestu zmiennych środowiskowych dostawcy/kanału
- starsze hooki pluginów dostawców i aliasy typów, podczas gdy dostawcy przechodzą na jawne hooki katalogu, uwierzytelniania, myślenia, odtwarzania i transportu
- starsze aliasy środowiska uruchomieniowego, takie jak
api.runtime.taskFlow,api.runtime.subagent.getSession,api.runtime.sttoraz wycofaneapi.runtime.config.loadConfig()/api.runtime.config.writeConfigFile(...) - starszą podzieloną rejestrację pluginów pamięci, podczas gdy pluginy pamięci przechodzą na
registerMemoryCapability - starsze pomocniki SDK kanału dla natywnych schematów wiadomości, bramkowania wzmianek, formatowania przychodzących kopert i zagnieżdżania zdolności zatwierdzania
- starszy klucz trasy kanału i aliasy pomocników porównywalnego celu, podczas gdy pluginy
przechodzą na
openclaw/plugin-sdk/channel-route - wskazówki aktywacji, które są zastępowane własnością wkładów w manifeście
- awaryjną ścieżkę środowiska uruchomieniowego
setup-api, podczas gdy deskryptory konfiguracji początkowej przechodzą na zimne metadanesetup.requiresRuntime: false - hooki
discoverydostawców, podczas gdy hooki katalogu dostawcy przechodzą nacatalog.run(...) - metadane kanału
showConfigured/showInSetup, podczas gdy pakiety kanałów przechodzą naopenclaw.channel.exposure - starsze klucze konfiguracji zasad środowiska uruchomieniowego, podczas gdy Doctor migruje operatorów do
agentRuntime - awaryjną ścieżkę generowanych metadanych konfiguracji wbudowanych kanałów, podczas gdy trafiają metadane
channelConfigsoparte najpierw na rejestrze - utrwalone flagi środowiskowe wyłączenia rejestru pluginów i migracji instalacji, podczas gdy
przepływy napraw migrują operatorów do
openclaw plugins registry --refreshiopenclaw doctor --fix - starsze ścieżki konfiguracji wyszukiwania w sieci, pobierania z sieci i x_search należące do pluginów, podczas gdy
Doctor migruje je do
plugins.entries.<plugin>.config - starszą autorską konfigurację
plugins.installsi aliasy ścieżki ładowania wbudowanych pluginów, podczas gdy metadane instalacji przenoszą się do zarządzanego stanem rejestru pluginów
Nowy kod pluginów powinien preferować zamiennik wskazany w rejestrze i w konkretnym przewodniku migracji. Istniejące pluginy mogą nadal używać ścieżki zgodności, dopóki dokumentacja, diagnostyka i informacje o wydaniu nie ogłoszą okna usunięcia.
Informacje o wydaniu
Informacje o wydaniu powinny zawierać nadchodzące wycofania pluginów wraz z docelowymi datami i linkami do dokumentacji migracji. Takie ostrzeżenie musi nastąpić, zanim ścieżka zgodności przejdzie do removal-pending albo removed.