Przejdź do głównej treści

Migracja Plugin SDK

OpenClaw przeszedł od szerokiej warstwy kompatybilności wstecznej do nowoczesnej architektury pluginów z ukierunkowanymi, udokumentowanymi importami. Jeśli Twój plugin został zbudowany przed wprowadzeniem nowej architektury, ten przewodnik pomoże Ci przeprowadzić migrację.

Co się zmienia

Stary system pluginów udostępniał dwie szeroko otwarte powierzchnie, które pozwalały pluginom importować wszystko, czego potrzebowały, z jednego punktu wejścia:
  • openclaw/plugin-sdk/compat — pojedynczy import, który re-eksportował dziesiątki helperów. Został wprowadzony po to, aby starsze pluginy oparte na hookach nadal działały podczas tworzenia nowej architektury pluginów.
  • openclaw/extension-api — pomost, który dawał pluginom bezpośredni dostęp do helperów po stronie hosta, takich jak osadzony runner agenta.
Obie te powierzchnie są teraz przestarzałe. Nadal działają w czasie działania, ale nowe pluginy nie mogą z nich korzystać, a istniejące pluginy powinny przejść migrację, zanim kolejna główna wersja je usunie.
Warstwa kompatybilności wstecznej zostanie usunięta w jednej z przyszłych głównych wersji. Pluginy, które nadal importują z tych powierzchni, przestaną działać, gdy to nastąpi.

Dlaczego to się zmieniło

Stare podejście powodowało problemy:
  • Wolne uruchamianie — zaimportowanie jednego helpera ładowało dziesiątki niepowiązanych modułów
  • Zależności cykliczne — szerokie re-eksporty ułatwiały tworzenie cykli importów
  • Niejasna powierzchnia API — nie było sposobu, aby określić, które eksporty są stabilne, a które wewnętrzne
Nowoczesny Plugin SDK rozwiązuje ten problem: każda ścieżka importu (openclaw/plugin-sdk/\<subpath\>) jest małym, samodzielnym modułem z jasno określonym celem i udokumentowanym kontraktem. Starsze wygodne warstwy providerów dla wbudowanych kanałów również zostały usunięte. Importy takie jak openclaw/plugin-sdk/slack, openclaw/plugin-sdk/discord, openclaw/plugin-sdk/signal, openclaw/plugin-sdk/whatsapp, helperowe warstwy oznaczone marką kanału oraz openclaw/plugin-sdk/telegram-core były prywatnymi skrótami mono-repo, a nie stabilnymi kontraktami pluginów. Zamiast tego używaj wąskich, generycznych podścieżek SDK. W obrębie workspace wbudowanych pluginów trzymaj helpery należące do providera we własnym api.ts lub runtime-api.ts tego pluginu. Aktualne przykłady wbudowanych providerów:
  • Anthropic przechowuje helpery strumieni specyficzne dla Claude we własnej warstwie api.ts / contract-api.ts
  • OpenAI przechowuje buildery providerów, helpery modeli domyślnych i buildery providerów realtime we własnym api.ts
  • OpenRouter przechowuje helpery buildera providera oraz onboarding/config we własnym api.ts

Jak przeprowadzić migrację

1

Przenieś handlery natywne dla zatwierdzeń do faktów capability

Pluginy kanałów obsługujące zatwierdzenia udostępniają teraz natywne zachowanie zatwierdzeń przez approvalCapability.nativeRuntime wraz ze współdzielonym rejestrem kontekstu runtime.Najważniejsze zmiany:
  • Zastąp approvalCapability.handler.loadRuntime(...) przez approvalCapability.nativeRuntime
  • Przenieś uwierzytelnianie/dostarczanie specyficzne dla zatwierdzeń ze starszego połączenia plugin.auth / plugin.approvals do approvalCapability
  • ChannelPlugin.approvals zostało usunięte z publicznego kontraktu pluginu kanału; przenieś pola delivery/native/render do approvalCapability
  • plugin.auth pozostaje wyłącznie dla przepływów logowania/wylogowania kanału; hooki uwierzytelniania zatwierdzeń nie są już tam odczytywane przez core
  • Rejestruj obiekty runtime należące do kanału, takie jak klienci, tokeny lub aplikacje Bolt, przez openclaw/plugin-sdk/channel-runtime-context
  • Nie wysyłaj komunikatów o przekierowaniu należących do pluginu z natywnych handlerów zatwierdzeń; core obsługuje teraz komunikaty „dostarczono gdzie indziej” na podstawie rzeczywistych wyników dostarczenia
  • Przy przekazywaniu channelRuntime do createChannelManager(...) podaj rzeczywistą powierzchnię createPluginRuntime().channel. Częściowe stuby są odrzucane.
Aktualny układ capability zatwierdzeń znajdziesz w /plugins/sdk-channel-plugins.
2

Sprawdź zachowanie fallbacku wrappera Windows

Jeśli Twój plugin używa openclaw/plugin-sdk/windows-spawn, nierozwiązane wrappery Windows .cmd/.bat teraz domyślnie kończą się błędem, chyba że jawnie przekażesz allowShellFallback: true.
// Przed
const program = applyWindowsSpawnProgramPolicy({ candidate });

// Po
const program = applyWindowsSpawnProgramPolicy({
  candidate,
  // Ustaw to tylko dla zaufanych wywołań zgodności, które celowo
  // akceptują fallback pośredniczony przez shell.
  allowShellFallback: true,
});
Jeśli Twój kod wywołujący nie polega celowo na fallbacku shella, nie ustawiaj allowShellFallback i zamiast tego obsłuż zgłaszany błąd.
3

Znajdź przestarzałe importy

Przeszukaj plugin pod kątem importów z którejkolwiek z przestarzałych powierzchni:
grep -r "plugin-sdk/compat" my-plugin/
grep -r "openclaw/extension-api" my-plugin/
4

Zastąp je ukierunkowanymi importami

Każdy eksport ze starej powierzchni odpowiada określonej nowoczesnej ścieżce importu:
// Przed (przestarzała warstwa kompatybilności wstecznej)
import {
  createChannelReplyPipeline,
  createPluginRuntimeStore,
  resolveControlCommandGate,
} from "openclaw/plugin-sdk/compat";

// Po (nowoczesne ukierunkowane importy)
import { createChannelReplyPipeline } from "openclaw/plugin-sdk/channel-reply-pipeline";
import { createPluginRuntimeStore } from "openclaw/plugin-sdk/runtime-store";
import { resolveControlCommandGate } from "openclaw/plugin-sdk/command-auth";
W przypadku helperów po stronie hosta używaj wstrzykniętego runtime pluginu zamiast importować je bezpośrednio:
// Przed (przestarzały pomost extension-api)
import { runEmbeddedPiAgent } from "openclaw/extension-api";
const result = await runEmbeddedPiAgent({ sessionId, prompt });

// Po (wstrzyknięty runtime)
const result = await api.runtime.agent.runEmbeddedPiAgent({ sessionId, prompt });
Ten sam wzorzec dotyczy innych starszych helperów pomostu:
Stary importNowoczesny odpowiednik
resolveAgentDirapi.runtime.agent.resolveAgentDir
resolveAgentWorkspaceDirapi.runtime.agent.resolveAgentWorkspaceDir
resolveAgentIdentityapi.runtime.agent.resolveAgentIdentity
resolveThinkingDefaultapi.runtime.agent.resolveThinkingDefault
resolveAgentTimeoutMsapi.runtime.agent.resolveAgentTimeoutMs
ensureAgentWorkspaceapi.runtime.agent.ensureAgentWorkspace
helpery magazynu sesjiapi.runtime.agent.session.*
5

Zbuduj i przetestuj

pnpm build
pnpm test -- my-plugin/

Odniesienie do ścieżek importu

Ścieżka importuPrzeznaczenieKluczowe eksporty
plugin-sdk/plugin-entryKanoniczny helper punktu wejścia pluginudefinePluginEntry
plugin-sdk/coreStarszy zbiorczy re-eksport dla definicji/builderów punktów wejścia kanałudefineChannelPluginEntry, createChatChannelPlugin
plugin-sdk/config-schemaEksport głównego schematu konfiguracjiOpenClawSchema
plugin-sdk/provider-entryHelper punktu wejścia pojedynczego provideradefineSingleProviderPluginEntry
plugin-sdk/channel-coreUkierunkowane definicje i buildery punktów wejścia kanałudefineChannelPluginEntry, defineSetupPluginEntry, createChatChannelPlugin, createChannelPluginBase
plugin-sdk/setupWspółdzielone helpery kreatora konfiguracjiPrompty allowlisty, buildery statusu konfiguracji
plugin-sdk/setup-runtimeHelpery runtime dla czasu konfiguracjiBezpieczne dla importu adaptery łatek konfiguracji, helpery notatek lookup, promptResolvedAllowFrom, splitSetupEntries, delegowane proxy konfiguracji
plugin-sdk/setup-adapter-runtimeHelpery adaptera konfiguracjicreateEnvPatchedAccountSetupAdapter
plugin-sdk/setup-toolsHelpery narzędzi konfiguracjiformatCliCommand, detectBinary, extractArchive, resolveBrewExecutable, formatDocsLink, CONFIG_DIR
plugin-sdk/account-coreHelpery dla wielu kontHelpery list kont/konfiguracji/bramek akcji
plugin-sdk/account-idHelpery account-idDEFAULT_ACCOUNT_ID, normalizacja account-id
plugin-sdk/account-resolutionHelpery wyszukiwania kontHelpery wyszukiwania konta + fallbacku domyślnego
plugin-sdk/account-helpersWąskie helpery kontHelpery list kont/akcji na kontach
plugin-sdk/channel-setupAdaptery kreatora konfiguracjicreateOptionalChannelSetupSurface, createOptionalChannelSetupAdapter, createOptionalChannelSetupWizard, a także DEFAULT_ACCOUNT_ID, createTopLevelChannelDmPolicy, setSetupChannelEnabled, splitSetupEntries
plugin-sdk/channel-pairingPrymitywy parowania DMcreateChannelPairingController
plugin-sdk/channel-reply-pipelineLogika prefiksu odpowiedzi + typingcreateChannelReplyPipeline
plugin-sdk/channel-config-helpersFabryki adapterów konfiguracjicreateHybridChannelConfigAdapter
plugin-sdk/channel-config-schemaBuildery schematu konfiguracjiTypy schematu konfiguracji kanału
plugin-sdk/telegram-command-configHelpery konfiguracji komend TelegramNormalizacja nazw komend, przycinanie opisów, walidacja duplikatów/konfliktów
plugin-sdk/channel-policyRozwiązywanie polityk grup/DMresolveChannelGroupRequireMention
plugin-sdk/channel-lifecycleŚledzenie statusu kontacreateAccountStatusSink
plugin-sdk/inbound-envelopeHelpery kopert wejściowychWspółdzielone helpery routingu + buildera kopert
plugin-sdk/inbound-reply-dispatchHelpery odpowiedzi wejściowychWspółdzielone helpery zapisu i dyspozycji
plugin-sdk/messaging-targetsParsowanie celów wiadomościHelpery parsowania/dopasowywania celów
plugin-sdk/outbound-mediaHelpery mediów wychodzącychWspółdzielone ładowanie mediów wychodzących
plugin-sdk/outbound-runtimeHelpery runtime dla ruchu wychodzącegoHelpery tożsamości wychodzącej/delegatów wysyłki
plugin-sdk/thread-bindings-runtimeHelpery powiązań wątkówHelpery cyklu życia powiązań wątków i adapterów
plugin-sdk/agent-media-payloadStarsze helpery payloadów mediówBuilder payloadu mediów agenta dla starszych układów pól
plugin-sdk/channel-runtimePrzestarzała warstwa zgodnościTylko starsze narzędzia channel runtime
plugin-sdk/channel-send-resultTypy wyników wysyłkiTypy wyników odpowiedzi
plugin-sdk/runtime-storeTrwałe przechowywanie pluginucreatePluginRuntimeStore
plugin-sdk/runtimeSzerokie helpery runtimeHelpery runtime/logowania/kopii zapasowej/instalacji pluginu
plugin-sdk/runtime-envWąskie helpery środowiska runtimeLogger/runtime env, helpery timeout, retry i backoff
plugin-sdk/plugin-runtimeWspółdzielone helpery runtime pluginuHelpery poleceń/hooków/http/interaktywne pluginu
plugin-sdk/hook-runtimeHelpery pipeline hookówWspółdzielone helpery pipeline webhooków/wewnętrznych hooków
plugin-sdk/lazy-runtimeHelpery lazy runtimecreateLazyRuntimeModule, createLazyRuntimeMethod, createLazyRuntimeMethodBinder, createLazyRuntimeNamedExport, createLazyRuntimeSurface
plugin-sdk/process-runtimeHelpery procesówWspółdzielone helpery exec
plugin-sdk/cli-runtimeHelpery runtime CLIFormatowanie komend, oczekiwania, helpery wersji
plugin-sdk/gateway-runtimeHelpery GatewayKlient Gateway i helpery łatek statusu kanału
plugin-sdk/config-runtimeHelpery konfiguracjiHelpery ładowania/zapisu konfiguracji
plugin-sdk/telegram-command-configHelpery komend TelegramHelpery walidacji komend Telegram o stabilnym fallbacku, gdy powierzchnia kontraktu wbudowanego Telegram jest niedostępna
plugin-sdk/approval-runtimeHelpery promptów zatwierdzeńPayload wykonania/pluginu zatwierdzeń, helpery capability/profili zatwierdzeń, helpery routingu/runtime dla natywnych zatwierdzeń
plugin-sdk/approval-auth-runtimeHelpery uwierzytelniania zatwierdzeńRozwiązywanie approvera, uwierzytelnianie działań w tym samym czacie
plugin-sdk/approval-client-runtimeHelpery klienta zatwierdzeńHelpery profili/filtrów natywnych zatwierdzeń wykonania
plugin-sdk/approval-delivery-runtimeHelpery dostarczania zatwierdzeńAdaptery capability/dostarczania natywnych zatwierdzeń
plugin-sdk/approval-gateway-runtimeHelpery Gateway dla zatwierdzeńWspółdzielony helper rozwiązywania approval gateway
plugin-sdk/approval-handler-adapter-runtimeHelpery adaptera zatwierdzeńLekkie helpery ładowania natywnego adaptera zatwierdzeń dla gorących punktów wejścia kanału
plugin-sdk/approval-handler-runtimeHelpery handlera zatwierdzeńSzersze helpery runtime handlera zatwierdzeń; preferuj węższe warstwy adapter/gateway, gdy są wystarczające
plugin-sdk/approval-native-runtimeHelpery celu zatwierdzeńHelpery powiązań celu/konta dla natywnych zatwierdzeń
plugin-sdk/approval-reply-runtimeHelpery odpowiedzi zatwierdzeńHelpery payloadów odpowiedzi zatwierdzeń wykonania/pluginu
plugin-sdk/channel-runtime-contextHelpery runtime-context kanałuGeneryczne helpery register/get/watch dla runtime-context kanału
plugin-sdk/security-runtimeHelpery bezpieczeństwaWspółdzielone helpery zaufania, bramkowania DM, treści zewnętrznych i zbierania sekretów
plugin-sdk/ssrf-policyHelpery polityki SSRFHelpery allowlisty hostów i polityki sieci prywatnych
plugin-sdk/ssrf-runtimeHelpery runtime SSRFPrzypięty dispatcher, guardowany fetch, helpery polityki SSRF
plugin-sdk/collection-runtimeHelpery ograniczonej pamięci podręcznejpruneMapToMaxSize
plugin-sdk/diagnostic-runtimeHelpery bramkowania diagnostykiisDiagnosticFlagEnabled, isDiagnosticsEnabled
plugin-sdk/error-runtimeHelpery formatowania błędówformatUncaughtError, isApprovalNotFoundError, helpery grafu błędów
plugin-sdk/fetch-runtimeHelpery opakowanego fetch/proxyresolveFetch, helpery proxy
plugin-sdk/host-runtimeHelpery normalizacji hostanormalizeHostname, normalizeScpRemoteHost
plugin-sdk/retry-runtimeHelpery retryRetryConfig, retryAsync, uruchamiacze polityk
plugin-sdk/allow-fromFormatowanie allowlistyformatAllowFromLowercase
plugin-sdk/allowlist-resolutionMapowanie wejścia allowlistymapAllowlistResolutionInputs
plugin-sdk/command-authBramkowanie komend i helpery powierzchni komendresolveControlCommandGate, helpery autoryzacji nadawcy, helpery rejestru komend
plugin-sdk/command-statusRenderery statusu/pomocy komendbuildCommandsMessage, buildCommandsMessagePaginated, buildHelpMessage
plugin-sdk/secret-inputParsowanie wejścia sekretówHelpery wejścia sekretów
plugin-sdk/webhook-ingressHelpery żądań WebhookNarzędzia celu Webhook
plugin-sdk/webhook-request-guardsHelpery ochrony żądań Webhook bodyHelpery odczytu/limitów body żądania
plugin-sdk/reply-runtimeWspółdzielony runtime odpowiedziDyspozycja wejściowa, Heartbeat, planner odpowiedzi, chunking
plugin-sdk/reply-dispatch-runtimeWąskie helpery dyspozycji odpowiedziHelpery finalizacji + dyspozycji providera
plugin-sdk/reply-historyHelpery historii odpowiedzibuildHistoryContext, buildPendingHistoryContextFromMap, recordPendingHistoryEntry, clearHistoryEntriesIfEnabled
plugin-sdk/reply-referencePlanowanie referencji odpowiedzicreateReplyReferencePlanner
plugin-sdk/reply-chunkingHelpery chunków odpowiedziHelpery chunkingu tekstu/markdown
plugin-sdk/session-store-runtimeHelpery magazynu sesjiŚcieżka magazynu + helpery updated-at
plugin-sdk/state-pathsHelpery ścieżek stanuHelpery katalogów stanu i OAuth
plugin-sdk/routingHelpery routingu/session-keyresolveAgentRoute, buildAgentSessionKey, resolveDefaultAgentBoundAccountId, helpery normalizacji session-key
plugin-sdk/status-helpersHelpery statusu kanałuBuildery podsumowania statusu kanału/konta, domyślne wartości stanu runtime, helpery metadanych problemów
plugin-sdk/target-resolver-runtimeHelpery resolvera celuWspółdzielone helpery resolvera celu
plugin-sdk/string-normalization-runtimeHelpery normalizacji ciągówHelpery normalizacji slugów/ciągów
plugin-sdk/request-urlHelpery URL żądaniaWyodrębnianie tekstowych URL-i z wejść podobnych do request
plugin-sdk/run-commandHelpery poleceń z pomiarem czasuRunner poleceń z normalizowanym stdout/stderr
plugin-sdk/param-readersCzytniki parametrówTypowe czytniki parametrów narzędzi/CLI
plugin-sdk/tool-payloadWyodrębnianie payloadu narzędziWyodrębnianie znormalizowanych payloadów z obiektów wyników narzędzi
plugin-sdk/tool-sendWyodrębnianie wysyłki narzędziWyodrębnianie kanonicznych pól celu wysyłki z argumentów narzędzia
plugin-sdk/temp-pathHelpery ścieżek tymczasowychWspółdzielone helpery ścieżek tymczasowego pobierania
plugin-sdk/logging-coreHelpery logowaniaLogger podsystemu i helpery redakcji
plugin-sdk/markdown-table-runtimeHelpery tabel markdownHelpery trybu tabel markdown
plugin-sdk/reply-payloadTypy payloadów odpowiedziTypy payloadów odpowiedzi
plugin-sdk/provider-setupKuratorowane helpery konfiguracji providerów lokalnych/self-hostedHelpery wykrywania/konfiguracji providerów self-hosted
plugin-sdk/self-hosted-provider-setupUkierunkowane helpery konfiguracji self-hosted providerów zgodnych z OpenAITe same helpery wykrywania/konfiguracji providerów self-hosted
plugin-sdk/provider-auth-runtimeHelpery runtime uwierzytelniania provideraHelpery rozwiązywania kluczy API runtime
plugin-sdk/provider-auth-api-keyHelpery konfiguracji kluczy API provideraHelpery onboardingu/zapisu profilu kluczy API
plugin-sdk/provider-auth-resultHelpery wyników uwierzytelniania provideraStandardowy builder wyniku uwierzytelniania OAuth
plugin-sdk/provider-auth-loginHelpery interaktywnego logowania provideraWspółdzielone helpery interaktywnego logowania
plugin-sdk/provider-env-varsHelpery zmiennych środowiskowych provideraHelpery wyszukiwania zmiennych środowiskowych uwierzytelniania providera
plugin-sdk/provider-model-sharedWspółdzielone helpery modeli/odtwarzania provideraProviderReplayFamily, buildProviderReplayFamilyHooks, normalizeModelCompat, współdzielone buildery polityki replay, helpery endpointów providera oraz helpery normalizacji model-id
plugin-sdk/provider-catalog-sharedWspółdzielone helpery katalogu providerafindCatalogTemplate, buildSingleProviderApiKeyCatalog, supportsNativeStreamingUsageCompat, applyProviderNativeStreamingUsageCompat
plugin-sdk/provider-onboardŁatki onboardingu provideraHelpery konfiguracji onboardingu
plugin-sdk/provider-httpHelpery HTTP provideraGeneryczne helpery HTTP/endpoint capability providera
plugin-sdk/provider-web-fetchHelpery web-fetch provideraHelpery rejestracji/pamięci podręcznej providera web-fetch
plugin-sdk/provider-web-search-config-contractHelpery konfiguracji web-search provideraWąskie helpery konfiguracji/poświadczeń web-search dla providerów, które nie potrzebują połączenia enable plugin
plugin-sdk/provider-web-search-contractHelpery kontraktu web-search provideraWąskie helpery kontraktu konfiguracji/poświadczeń web-search, takie jak createWebSearchProviderContractFields, enablePluginInConfig, resolveProviderWebSearchPluginConfig oraz zakresowane settery/gettery poświadczeń
plugin-sdk/provider-web-searchHelpery web-search provideraHelpery rejestracji/pamięci podręcznej/runtime providera web-search
plugin-sdk/provider-toolsHelpery zgodności narzędzi/schematów provideraProviderToolCompatFamily, buildProviderToolCompatFamilyHooks, czyszczenie schematu Gemini + diagnostyka oraz helpery zgodności xAI, takie jak resolveXaiModelCompatPatch / applyXaiModelCompat
plugin-sdk/provider-usageHelpery użycia providerafetchClaudeUsage, fetchGeminiUsage, fetchGithubCopilotUsage oraz inne helpery użycia providera
plugin-sdk/provider-streamHelpery wrapperów strumieni provideraProviderStreamFamily, buildProviderStreamFamilyHooks, composeProviderStreamWrappers, typy wrapperów strumieni oraz współdzielone helpery wrapperów Anthropic/Bedrock/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot
plugin-sdk/keyed-async-queueUporządkowana kolejka asyncKeyedAsyncQueue
plugin-sdk/media-runtimeWspółdzielone helpery mediówHelpery pobierania/przekształcania/przechowywania mediów oraz buildery payloadów mediów
plugin-sdk/media-generation-runtimeWspółdzielone helpery generowania mediówWspółdzielone helpery failover, wybór kandydatów i komunikaty o brakującym modelu dla generowania obrazów/wideo/muzyki
plugin-sdk/media-understandingHelpery media-understandingTypy providera media understanding oraz eksporty helperów obrazów/audio skierowane do providerów
plugin-sdk/text-runtimeWspółdzielone helpery tekstoweUsuwanie tekstu widocznego dla asystenta, helpery renderowania/chunkingu/tabel markdown, helpery redakcji, helpery tagów dyrektyw, narzędzia safe-text oraz powiązane helpery tekstowe/logowania
plugin-sdk/text-chunkingHelpery chunkingu tekstuHelper chunkingu tekstu wychodzącego
plugin-sdk/speechHelpery speechTypy providerów speech oraz helpery dyrektyw, rejestru i walidacji skierowane do providerów
plugin-sdk/speech-coreWspółdzielony rdzeń speechTypy providerów speech, rejestr, dyrektywy, normalizacja
plugin-sdk/realtime-transcriptionHelpery transkrypcji realtimeTypy providerów i helpery rejestru
plugin-sdk/realtime-voiceHelpery głosu realtimeTypy providerów i helpery rejestru
plugin-sdk/image-generation-coreWspółdzielony rdzeń generowania obrazówTypy generowania obrazów, helpery failover, auth i rejestru
plugin-sdk/music-generationHelpery generowania muzykiTypy providera/żądania/wyniku generowania muzyki
plugin-sdk/music-generation-coreWspółdzielony rdzeń generowania muzykiTypy generowania muzyki, helpery failover, wyszukiwanie providera i parsowanie model-ref
plugin-sdk/video-generationHelpery generowania wideoTypy providera/żądania/wyniku generowania wideo
plugin-sdk/video-generation-coreWspółdzielony rdzeń generowania wideoTypy generowania wideo, helpery failover, wyszukiwanie providera i parsowanie model-ref
plugin-sdk/interactive-runtimeHelpery odpowiedzi interaktywnychNormalizacja/redukcja payloadów odpowiedzi interaktywnych
plugin-sdk/channel-config-primitivesPrymitywy konfiguracji kanałuWąskie prymitywy channel config-schema
plugin-sdk/channel-config-writesHelpery zapisu konfiguracji kanałuHelpery autoryzacji zapisu konfiguracji kanału
plugin-sdk/channel-plugin-commonWspółdzielone preludium kanałuEksporty współdzielonego preludium pluginu kanału
plugin-sdk/channel-statusHelpery statusu kanałuWspółdzielone helpery snapshotów/podsumowań statusu kanału
plugin-sdk/allowlist-config-editHelpery konfiguracji allowlistyHelpery edycji/odczytu konfiguracji allowlisty
plugin-sdk/group-accessHelpery dostępu grupowegoWspółdzielone helpery decyzji dostępu grupowego
plugin-sdk/direct-dmHelpery Direct-DMWspółdzielone helpery auth/guard Direct-DM
plugin-sdk/extension-sharedWspółdzielone helpery rozszerzeńPrymitywy helperów passive-channel/status i ambient proxy
plugin-sdk/webhook-targetsHelpery celów WebhookRejestr celów Webhook i helpery instalacji tras
plugin-sdk/webhook-pathHelpery ścieżek WebhookHelpery normalizacji ścieżek Webhook
plugin-sdk/web-mediaWspółdzielone helpery mediów webHelpery ładowania mediów zdalnych/lokalnych
plugin-sdk/zodRe-eksport ZodRe-eksportowane zod dla odbiorców Plugin SDK
plugin-sdk/memory-coreWbudowane helpery memory-corePowierzchnia helperów menedżera pamięci/konfiguracji/plików/CLI
plugin-sdk/memory-core-engine-runtimeFasada runtime silnika pamięciFasada runtime indeksowania/wyszukiwania pamięci
plugin-sdk/memory-core-host-engine-foundationSilnik foundation hosta pamięciEksporty silnika foundation hosta pamięci
plugin-sdk/memory-core-host-engine-embeddingsSilnik embedding hosta pamięciKontrakty embeddingów pamięci, dostęp do rejestru, lokalny provider oraz generyczne helpery batch/zdalne; konkretni zdalni providerzy pozostają we własnych pluginach
plugin-sdk/memory-core-host-engine-qmdSilnik QMD hosta pamięciEksporty silnika QMD hosta pamięci
plugin-sdk/memory-core-host-engine-storageSilnik przechowywania hosta pamięciEksporty silnika przechowywania hosta pamięci
plugin-sdk/memory-core-host-multimodalHelpery multimodalne hosta pamięciHelpery multimodalne hosta pamięci
plugin-sdk/memory-core-host-queryHelpery zapytań hosta pamięciHelpery zapytań hosta pamięci
plugin-sdk/memory-core-host-secretHelpery sekretów hosta pamięciHelpery sekretów hosta pamięci
plugin-sdk/memory-core-host-eventsHelpery dziennika zdarzeń hosta pamięciHelpery dziennika zdarzeń hosta pamięci
plugin-sdk/memory-core-host-statusHelpery statusu hosta pamięciHelpery statusu hosta pamięci
plugin-sdk/memory-core-host-runtime-cliRuntime CLI hosta pamięciHelpery runtime CLI hosta pamięci
plugin-sdk/memory-core-host-runtime-coreGłówny runtime hosta pamięciHelpery głównego runtime hosta pamięci
plugin-sdk/memory-core-host-runtime-filesHelpery plików/runtime hosta pamięciHelpery plików/runtime hosta pamięci
plugin-sdk/memory-host-coreAlias głównego runtime hosta pamięciNeutralny względem dostawcy alias helperów głównego runtime hosta pamięci
plugin-sdk/memory-host-eventsAlias dziennika zdarzeń hosta pamięciNeutralny względem dostawcy alias helperów dziennika zdarzeń hosta pamięci
plugin-sdk/memory-host-filesAlias plików/runtime hosta pamięciNeutralny względem dostawcy alias helperów plików/runtime hosta pamięci
plugin-sdk/memory-host-markdownHelpery zarządzanego markdownWspółdzielone helpery zarządzanego markdown dla pluginów powiązanych z pamięcią
plugin-sdk/memory-host-searchFasada wyszukiwania Active MemoryLenewa fasada runtime menedżera wyszukiwania active memory
plugin-sdk/memory-host-statusAlias statusu hosta pamięciNeutralny względem dostawcy alias helperów statusu hosta pamięci
plugin-sdk/memory-lancedbWbudowane helpery memory-lancedbPowierzchnia helperów memory-lancedb
plugin-sdk/testingNarzędzia testoweHelpery testowe i mocki
Ta tabela jest celowo wspólnym podzbiorem migracyjnym, a nie pełną powierzchnią SDK. Pełna lista ponad 200 punktów wejścia znajduje się w scripts/lib/plugin-sdk-entrypoints.json. Ta lista nadal zawiera niektóre warstwy helperów wbudowanych pluginów, takie jak plugin-sdk/feishu, plugin-sdk/feishu-setup, plugin-sdk/zalo, plugin-sdk/zalo-setup oraz plugin-sdk/matrix*. Nadal są one eksportowane na potrzeby utrzymania i zgodności wbudowanych pluginów, ale celowo pominięto je w tabeli wspólnej migracji i nie są zalecanym celem dla nowego kodu pluginów. Ta sama zasada dotyczy innych rodzin helperów wbudowanych, takich jak:
  • helpery obsługi przeglądarki: plugin-sdk/browser-cdp, plugin-sdk/browser-config-runtime, plugin-sdk/browser-config-support, plugin-sdk/browser-control-auth, plugin-sdk/browser-node-runtime, plugin-sdk/browser-profiles, plugin-sdk/browser-security-runtime, plugin-sdk/browser-setup-tools, plugin-sdk/browser-support
  • Matrix: plugin-sdk/matrix*
  • LINE: plugin-sdk/line*
  • IRC: plugin-sdk/irc*
  • powierzchnie helperów/pluginów wbudowanych, takie jak plugin-sdk/googlechat, plugin-sdk/zalouser, plugin-sdk/bluebubbles*, plugin-sdk/mattermost*, plugin-sdk/msteams, plugin-sdk/nextcloud-talk, plugin-sdk/nostr, plugin-sdk/tlon, plugin-sdk/twitch, plugin-sdk/github-copilot-login, plugin-sdk/github-copilot-token, plugin-sdk/diagnostics-otel, plugin-sdk/diffs, plugin-sdk/llm-task, plugin-sdk/thread-ownership oraz plugin-sdk/voice-call
plugin-sdk/github-copilot-token obecnie udostępnia wąską powierzchnię helperów tokenów: DEFAULT_COPILOT_API_BASE_URL, deriveCopilotApiBaseUrlFromToken oraz resolveCopilotApiToken. Używaj możliwie najwęższego importu, który odpowiada danemu zadaniu. Jeśli nie możesz znaleźć eksportu, sprawdź źródła w src/plugin-sdk/ lub zapytaj na Discord.

Harmonogram usunięcia

KiedyCo się stanie
TerazPrzestarzałe powierzchnie emitują ostrzeżenia w runtime
Następna główna wersjaPrzestarzałe powierzchnie zostaną usunięte; pluginy, które nadal z nich korzystają, przestaną działać
Wszystkie pluginy core zostały już zmigrowane. Zewnętrzne pluginy powinny przejść migrację przed następną główną wersją.

Tymczasowe wyciszenie ostrzeżeń

Ustaw te zmienne środowiskowe podczas pracy nad migracją:
OPENCLAW_SUPPRESS_PLUGIN_SDK_COMPAT_WARNING=1 openclaw gateway run
OPENCLAW_SUPPRESS_EXTENSION_API_WARNING=1 openclaw gateway run
To tymczasowy mechanizm awaryjny, a nie trwałe rozwiązanie.

Powiązane