30 KiB
| read_when | sidebarTitle | summary | title | x-i18n | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Migrate to SDK | Bermigrasi dari lapisan kompatibilitas mundur lama ke SDK Plugin modern | Migrasi SDK Plugin |
|
Migrasi SDK Plugin
OpenClaw telah beralih dari lapisan kompatibilitas mundur yang luas ke arsitektur plugin modern dengan impor yang terfokus dan terdokumentasi. Jika plugin Anda dibuat sebelum arsitektur baru ini, panduan ini membantu Anda bermigrasi.
Apa yang berubah
Sistem plugin lama menyediakan dua surface yang sangat terbuka yang memungkinkan plugin mengimpor apa pun yang mereka butuhkan dari satu entry point:
openclaw/plugin-sdk/compat— satu import yang me-re-export puluhan helper. Ini diperkenalkan untuk menjaga plugin lama berbasis hook tetap berfungsi saat arsitektur plugin baru sedang dibangun.openclaw/extension-api— jembatan yang memberi plugin akses langsung ke helper sisi host seperti embedded agent runner.
Kedua surface tersebut sekarang deprecated. Keduanya masih berfungsi pada runtime, tetapi plugin baru tidak boleh menggunakannya, dan plugin yang sudah ada sebaiknya bermigrasi sebelum rilis mayor berikutnya menghapusnya.
Lapisan kompatibilitas mundur akan dihapus dalam rilis mayor mendatang. Plugin yang masih mengimpor dari surface ini akan rusak ketika itu terjadi.Mengapa ini berubah
Pendekatan lama menyebabkan masalah:
- Startup lambat — mengimpor satu helper memuat puluhan modul yang tidak terkait
- Dependensi sirkular — re-export yang luas membuat siklus impor mudah terjadi
- Surface API tidak jelas — tidak ada cara untuk mengetahui ekspor mana yang stabil vs internal
SDK Plugin modern memperbaiki hal ini: setiap jalur impor (openclaw/plugin-sdk/\<subpath\>)
adalah modul kecil yang mandiri dengan tujuan yang jelas dan kontrak yang terdokumentasi.
Seam kenyamanan provider lama untuk channel bawaan juga telah dihapus. Impor
seperti openclaw/plugin-sdk/slack, openclaw/plugin-sdk/discord,
openclaw/plugin-sdk/signal, openclaw/plugin-sdk/whatsapp,
seam helper berlabel channel, dan
openclaw/plugin-sdk/telegram-core adalah shortcut mono-repo privat, bukan
kontrak plugin yang stabil. Gunakan subpath SDK generik yang sempit sebagai gantinya. Di dalam
workspace plugin bawaan, simpan helper milik provider di api.ts atau
runtime-api.ts milik plugin tersebut.
Contoh provider bawaan saat ini:
- Anthropic menyimpan helper stream khusus Claude di seam
api.ts/contract-api.tsmiliknya sendiri - OpenAI menyimpan builder provider, helper model default, dan builder provider realtime
di
api.tsmiliknya sendiri - OpenRouter menyimpan builder provider dan helper onboarding/config di
api.tsmiliknya sendiri
Cara bermigrasi
Plugin channel yang mendukung approval sekarang mengekspos perilaku approval native melalui `approvalCapability.nativeRuntime` plus registry runtime-context bersama.Perubahan utama:
- Ganti `approvalCapability.handler.loadRuntime(...)` dengan
`approvalCapability.nativeRuntime`
- Pindahkan auth/pengiriman khusus approval dari wiring lama `plugin.auth` /
`plugin.approvals` ke `approvalCapability`
- `ChannelPlugin.approvals` telah dihapus dari kontrak publik channel-plugin;
pindahkan field delivery/native/render ke `approvalCapability`
- `plugin.auth` tetap ada hanya untuk alur login/logout channel; hook auth approval
di sana tidak lagi dibaca oleh core
- Daftarkan objek runtime milik channel seperti client, token, atau Bolt
app melalui `openclaw/plugin-sdk/channel-runtime-context`
- Jangan kirim pemberitahuan reroute milik plugin dari handler approval native;
core sekarang memiliki pemberitahuan dialihkan-ke-tempat-lain dari hasil pengiriman aktual
- Saat meneruskan `channelRuntime` ke `createChannelManager(...)`, berikan
surface `createPluginRuntime().channel` yang nyata. Stub parsial akan ditolak.
Lihat `/plugins/sdk-channel-plugins` untuk layout capability approval saat ini.
Jika plugin Anda menggunakan `openclaw/plugin-sdk/windows-spawn`, wrapper Windows
`.cmd`/`.bat` yang tidak ter-resolve sekarang gagal secara tertutup kecuali Anda secara eksplisit memberikan
`allowShellFallback: true`.
```typescript
// Sebelumnya
const program = applyWindowsSpawnProgramPolicy({ candidate });
// Sesudahnya
const program = applyWindowsSpawnProgramPolicy({
candidate,
// Hanya setel ini untuk caller kompatibilitas tepercaya yang memang
// menerima fallback yang dimediasi shell.
allowShellFallback: true,
});
```
Jika caller Anda tidak memang sengaja bergantung pada shell fallback, jangan setel
`allowShellFallback` dan tangani error yang dilempar sebagai gantinya.
Cari plugin Anda untuk impor dari salah satu surface deprecated:
```bash
grep -r "plugin-sdk/compat" my-plugin/
grep -r "openclaw/extension-api" my-plugin/
```
Setiap ekspor dari surface lama dipetakan ke jalur impor modern yang spesifik:
```typescript
// Sebelumnya (lapisan kompatibilitas mundur deprecated)
import {
createChannelReplyPipeline,
createPluginRuntimeStore,
resolveControlCommandGate,
} from "openclaw/plugin-sdk/compat";
// Sesudahnya (impor modern yang terfokus)
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";
```
Untuk helper sisi host, gunakan runtime plugin yang diinjeksi alih-alih mengimpor
secara langsung:
```typescript
// Sebelumnya (bridge extension-api deprecated)
import { runEmbeddedPiAgent } from "openclaw/extension-api";
const result = await runEmbeddedPiAgent({ sessionId, prompt });
// Sesudahnya (runtime yang diinjeksi)
const result = await api.runtime.agent.runEmbeddedPiAgent({ sessionId, prompt });
```
Pola yang sama berlaku untuk helper bridge lama lainnya:
| Impor lama | Padanan modern |
| --- | --- |
| `resolveAgentDir` | `api.runtime.agent.resolveAgentDir` |
| `resolveAgentWorkspaceDir` | `api.runtime.agent.resolveAgentWorkspaceDir` |
| `resolveAgentIdentity` | `api.runtime.agent.resolveAgentIdentity` |
| `resolveThinkingDefault` | `api.runtime.agent.resolveThinkingDefault` |
| `resolveAgentTimeoutMs` | `api.runtime.agent.resolveAgentTimeoutMs` |
| `ensureAgentWorkspace` | `api.runtime.agent.ensureAgentWorkspace` |
| helper session store | `api.runtime.agent.session.*` |
```bash
pnpm build
pnpm test -- my-plugin/
```
Referensi jalur impor
| Jalur impor | Tujuan | Ekspor utama | | --- | --- | --- | | `plugin-sdk/plugin-entry` | Helper entri plugin kanonis | `definePluginEntry` | | `plugin-sdk/core` | Re-export umbrella lama untuk definisi/builder entri channel | `defineChannelPluginEntry`, `createChatChannelPlugin` | | `plugin-sdk/config-schema` | Ekspor skema konfigurasi root | `OpenClawSchema` | | `plugin-sdk/provider-entry` | Helper entri provider tunggal | `defineSingleProviderPluginEntry` | | `plugin-sdk/channel-core` | Definisi dan builder entri channel yang terfokus | `defineChannelPluginEntry`, `defineSetupPluginEntry`, `createChatChannelPlugin`, `createChannelPluginBase` | | `plugin-sdk/setup` | Helper wizard setup bersama | Prompt allowlist, builder status setup | | `plugin-sdk/setup-runtime` | Helper runtime saat setup | Adapter patch setup yang aman diimpor, helper catatan lookup, `promptResolvedAllowFrom`, `splitSetupEntries`, proxy setup terdelegasi | | `plugin-sdk/setup-adapter-runtime` | Helper adapter setup | `createEnvPatchedAccountSetupAdapter` | | `plugin-sdk/setup-tools` | Helper tooling setup | `formatCliCommand`, `detectBinary`, `extractArchive`, `resolveBrewExecutable`, `formatDocsLink`, `CONFIG_DIR` | | `plugin-sdk/account-core` | Helper multi-akun | Helper daftar akun/konfigurasi/action-gate | | `plugin-sdk/account-id` | Helper account-id | `DEFAULT_ACCOUNT_ID`, normalisasi account-id | | `plugin-sdk/account-resolution` | Helper lookup akun | Helper lookup akun + default-fallback | | `plugin-sdk/account-helpers` | Helper akun yang sempit | Helper daftar akun/account-action | | `plugin-sdk/channel-setup` | Adapter wizard setup | `createOptionalChannelSetupSurface`, `createOptionalChannelSetupAdapter`, `createOptionalChannelSetupWizard`, plus `DEFAULT_ACCOUNT_ID`, `createTopLevelChannelDmPolicy`, `setSetupChannelEnabled`, `splitSetupEntries` | | `plugin-sdk/channel-pairing` | Primitif pairing DM | `createChannelPairingController` | | `plugin-sdk/channel-reply-pipeline` | Wiring prefiks balasan + mengetik | `createChannelReplyPipeline` | | `plugin-sdk/channel-config-helpers` | Pabrik adapter konfigurasi | `createHybridChannelConfigAdapter` | | `plugin-sdk/channel-config-schema` | Builder skema konfigurasi | Tipe skema konfigurasi channel | | `plugin-sdk/telegram-command-config` | Helper konfigurasi perintah Telegram | Normalisasi nama perintah, trimming deskripsi, validasi duplikat/konflik | | `plugin-sdk/channel-policy` | Resolusi kebijakan grup/DM | `resolveChannelGroupRequireMention` | | `plugin-sdk/channel-lifecycle` | Helper status akun dan lifecycle draft stream | `createAccountStatusSink`, helper finalisasi pratinjau draft | | `plugin-sdk/inbound-envelope` | Helper envelope inbound | Helper route + builder envelope bersama | | `plugin-sdk/inbound-reply-dispatch` | Helper balasan inbound | Helper record-and-dispatch bersama | | `plugin-sdk/messaging-targets` | Parsing target pesan | Helper parsing/pencocokan target | | `plugin-sdk/outbound-media` | Helper media outbound | Pemuatan media outbound bersama | | `plugin-sdk/outbound-runtime` | Helper runtime outbound | Helper delegasi identitas/pengiriman outbound dan perencanaan payload | | `plugin-sdk/thread-bindings-runtime` | Helper thread-binding | Helper lifecycle dan adapter thread-binding | | `plugin-sdk/agent-media-payload` | Helper payload media lama | Builder payload media agent untuk layout field lama | | `plugin-sdk/channel-runtime` | Shim kompatibilitas deprecated | Hanya utilitas runtime channel lama | | `plugin-sdk/channel-send-result` | Tipe hasil kirim | Tipe hasil balasan | | `plugin-sdk/runtime-store` | Penyimpanan plugin persisten | `createPluginRuntimeStore` | | `plugin-sdk/runtime` | Helper runtime luas | Helper runtime/logging/backup/instalasi plugin | | `plugin-sdk/runtime-env` | Helper env runtime yang sempit | Logger/runtime env, timeout, retry, dan helper backoff | | `plugin-sdk/plugin-runtime` | Helper runtime plugin bersama | Helper plugin commands/hooks/http/interactive | | `plugin-sdk/hook-runtime` | Helper pipeline hook | Helper pipeline webhook/internal hook bersama | | `plugin-sdk/lazy-runtime` | Helper runtime lazy | `createLazyRuntimeModule`, `createLazyRuntimeMethod`, `createLazyRuntimeMethodBinder`, `createLazyRuntimeNamedExport`, `createLazyRuntimeSurface` | | `plugin-sdk/process-runtime` | Helper proses | Helper exec bersama | | `plugin-sdk/cli-runtime` | Helper runtime CLI | Formatting perintah, wait, helper versi | | `plugin-sdk/gateway-runtime` | Helper Gateway | Helper klien Gateway dan patch channel-status | | `plugin-sdk/config-runtime` | Helper konfigurasi | Helper load/write konfigurasi | | `plugin-sdk/telegram-command-config` | Helper perintah Telegram | Helper validasi perintah Telegram yang stabil terhadap fallback saat surface kontrak Telegram bawaan tidak tersedia | | `plugin-sdk/approval-runtime` | Helper prompt approval | Payload approval exec/plugin, helper approval capability/profile, helper routing/runtime approval native | | `plugin-sdk/approval-auth-runtime` | Helper auth approval | Resolusi approver, auth tindakan same-chat | | `plugin-sdk/approval-client-runtime` | Helper klien approval | Helper profile/filter approval exec native | | `plugin-sdk/approval-delivery-runtime` | Helper pengiriman approval | Adapter capability/pengiriman approval native | | `plugin-sdk/approval-gateway-runtime` | Helper Gateway approval | Helper resolusi-gateway approval bersama | | `plugin-sdk/approval-handler-adapter-runtime` | Helper adapter approval | Helper pemuatan adapter approval native yang ringan untuk entrypoint channel panas | | `plugin-sdk/approval-handler-runtime` | Helper handler approval | Helper runtime handler approval yang lebih luas; utamakan seam adapter/gateway yang lebih sempit jika itu sudah cukup | | `plugin-sdk/approval-native-runtime` | Helper target approval | Helper binding target/akun approval native | | `plugin-sdk/approval-reply-runtime` | Helper balasan approval | Helper payload balasan approval exec/plugin | | `plugin-sdk/channel-runtime-context` | Helper runtime-context channel | Helper register/get/watch runtime-context channel generik | | `plugin-sdk/security-runtime` | Helper keamanan | Helper trust, gating DM, konten eksternal, dan pengumpulan secret bersama | | `plugin-sdk/ssrf-policy` | Helper kebijakan SSRF | Helper allowlist host dan kebijakan jaringan privat | | `plugin-sdk/ssrf-runtime` | Helper runtime SSRF | Helper pinned-dispatcher, guarded fetch, kebijakan SSRF | | `plugin-sdk/collection-runtime` | Helper cache terbatas | `pruneMapToMaxSize` | | `plugin-sdk/diagnostic-runtime` | Helper gating diagnostik | `isDiagnosticFlagEnabled`, `isDiagnosticsEnabled` | | `plugin-sdk/error-runtime` | Helper formatting error | `formatUncaughtError`, `isApprovalNotFoundError`, helper grafik error | | `plugin-sdk/fetch-runtime` | Helper fetch/proxy terbungkus | `resolveFetch`, helper proxy | | `plugin-sdk/host-runtime` | Helper normalisasi host | `normalizeHostname`, `normalizeScpRemoteHost` | | `plugin-sdk/retry-runtime` | Helper retry | `RetryConfig`, `retryAsync`, runner kebijakan | | `plugin-sdk/allow-from` | Formatting allowlist | `formatAllowFromLowercase` | | `plugin-sdk/allowlist-resolution` | Pemetaan input allowlist | `mapAllowlistResolutionInputs` | | `plugin-sdk/command-auth` | Helper gating perintah dan surface perintah | `resolveControlCommandGate`, helper otorisasi pengirim, helper registry perintah | | `plugin-sdk/command-status` | Renderer status/help perintah | `buildCommandsMessage`, `buildCommandsMessagePaginated`, `buildHelpMessage` | | `plugin-sdk/secret-input` | Parsing input secret | Helper input secret | | `plugin-sdk/webhook-ingress` | Helper permintaan Webhook | Utilitas target Webhook | | `plugin-sdk/webhook-request-guards` | Helper guard body Webhook | Helper pembacaan/pembatasan body permintaan | | `plugin-sdk/reply-runtime` | Runtime balasan bersama | Dispatch inbound, Heartbeat, perencana balasan, chunking | | `plugin-sdk/reply-dispatch-runtime` | Helper dispatch balasan yang sempit | Helper finalisasi + dispatch provider | | `plugin-sdk/reply-history` | Helper reply-history | `buildHistoryContext`, `buildPendingHistoryContextFromMap`, `recordPendingHistoryEntry`, `clearHistoryEntriesIfEnabled` | | `plugin-sdk/reply-reference` | Perencanaan referensi balasan | `createReplyReferencePlanner` | | `plugin-sdk/reply-chunking` | Helper chunk balasan | Helper chunking teks/markdown | | `plugin-sdk/session-store-runtime` | Helper session store | Helper path store + updated-at | | `plugin-sdk/state-paths` | Helper path state | Helper direktori state dan OAuth | | `plugin-sdk/routing` | Helper routing/session-key | `resolveAgentRoute`, `buildAgentSessionKey`, `resolveDefaultAgentBoundAccountId`, helper normalisasi session-key | | `plugin-sdk/status-helpers` | Helper status channel | Builder ringkasan status channel/akun, default runtime-state, helper metadata issue | | `plugin-sdk/target-resolver-runtime` | Helper resolver target | Helper resolver target bersama | | `plugin-sdk/string-normalization-runtime` | Helper normalisasi string | Helper normalisasi slug/string | | `plugin-sdk/request-url` | Helper URL permintaan | Ekstrak URL string dari input mirip request | | `plugin-sdk/run-command` | Helper perintah terukur waktu | Runner perintah terukur waktu dengan stdout/stderr ternormalisasi | | `plugin-sdk/param-readers` | Pembaca parameter | Pembaca parameter tool/CLI umum | | `plugin-sdk/tool-payload` | Ekstraksi payload tool | Ekstrak payload ternormalisasi dari objek hasil tool | | `plugin-sdk/tool-send` | Ekstraksi pengiriman tool | Ekstrak field target kirim kanonis dari argumen tool | | `plugin-sdk/temp-path` | Helper path sementara | Helper path unduhan sementara bersama | | `plugin-sdk/logging-core` | Helper logging | Helper logger subsistem dan redaksi | | `plugin-sdk/markdown-table-runtime` | Helper tabel markdown | Helper mode tabel markdown | | `plugin-sdk/reply-payload` | Tipe balasan pesan | Tipe payload balasan | | `plugin-sdk/provider-setup` | Helper setup provider lokal/self-hosted terkurasi | Helper discovery/config provider self-hosted | | `plugin-sdk/self-hosted-provider-setup` | Helper setup provider self-hosted yang kompatibel dengan OpenAI dan terfokus | Helper discovery/config provider self-hosted yang sama | | `plugin-sdk/provider-auth-runtime` | Helper auth runtime provider | Helper resolusi API-key runtime | | `plugin-sdk/provider-auth-api-key` | Helper setup API-key provider | Helper onboarding/profile-write API-key | | `plugin-sdk/provider-auth-result` | Helper hasil auth provider | Builder hasil auth OAuth standar | | `plugin-sdk/provider-auth-login` | Helper login interaktif provider | Helper login interaktif bersama | | `plugin-sdk/provider-env-vars` | Helper env-var provider | Helper lookup env-var auth provider | | `plugin-sdk/provider-model-shared` | Helper model/replay provider bersama | `ProviderReplayFamily`, `buildProviderReplayFamilyHooks`, `normalizeModelCompat`, builder kebijakan replay bersama, helper endpoint provider, dan helper normalisasi model-id | | `plugin-sdk/provider-catalog-shared` | Helper katalog provider bersama | `findCatalogTemplate`, `buildSingleProviderApiKeyCatalog`, `supportsNativeStreamingUsageCompat`, `applyProviderNativeStreamingUsageCompat` | | `plugin-sdk/provider-onboard` | Patch onboarding provider | Helper konfigurasi onboarding | | `plugin-sdk/provider-http` | Helper HTTP provider | Helper kapabilitas HTTP/endpoint provider generik | | `plugin-sdk/provider-web-fetch` | Helper web-fetch provider | Helper registrasi/cache provider web-fetch | | `plugin-sdk/provider-web-search-config-contract` | Helper konfigurasi web-search provider | Helper konfigurasi/kredensial web-search yang sempit untuk provider yang tidak memerlukan wiring enable plugin | | `plugin-sdk/provider-web-search-contract` | Helper kontrak web-search provider | Helper kontrak konfigurasi/kredensial web-search yang sempit seperti `createWebSearchProviderContractFields`, `enablePluginInConfig`, `resolveProviderWebSearchPluginConfig`, dan setter/getter kredensial berscope | | `plugin-sdk/provider-web-search` | Helper web-search provider | Helper registrasi/cache/runtime provider web-search | | `plugin-sdk/provider-tools` | Helper kompat tool/skema provider | `ProviderToolCompatFamily`, `buildProviderToolCompatFamilyHooks`, pembersihan skema Gemini + diagnostik, dan helper kompat xAI seperti `resolveXaiModelCompatPatch` / `applyXaiModelCompat` | | `plugin-sdk/provider-usage` | Helper penggunaan provider | `fetchClaudeUsage`, `fetchGeminiUsage`, `fetchGithubCopilotUsage`, dan helper penggunaan provider lainnya | | `plugin-sdk/provider-stream` | Helper wrapper stream provider | `ProviderStreamFamily`, `buildProviderStreamFamilyHooks`, `composeProviderStreamWrappers`, tipe wrapper stream, dan helper wrapper Anthropic/Bedrock/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot bersama | | `plugin-sdk/provider-transport-runtime` | Helper transport provider | Helper transport provider native seperti guarded fetch, transform pesan transport, dan stream event transport yang dapat ditulis | | `plugin-sdk/keyed-async-queue` | Antrean async berurutan | `KeyedAsyncQueue` | | `plugin-sdk/media-runtime` | Helper media bersama | Helper fetch/transform/store media plus builder payload media | | `plugin-sdk/media-generation-runtime` | Helper pembuatan media bersama | Helper failover bersama, pemilihan kandidat, dan pesan model-hilang untuk pembuatan gambar/video/musik | | `plugin-sdk/media-understanding` | Helper media-understanding | Tipe provider media understanding plus ekspor helper gambar/audio yang menghadap provider | | `plugin-sdk/text-runtime` | Helper teks bersama | Penghapusan teks yang terlihat oleh asisten, helper render/chunking/tabel markdown, helper redaksi, helper directive-tag, utilitas teks aman, dan helper teks/logging terkait | | `plugin-sdk/text-chunking` | Helper chunking teks | Helper chunking teks outbound | | `plugin-sdk/speech` | Helper speech | Tipe provider speech plus helper directive, registry, dan validasi yang menghadap provider | | `plugin-sdk/speech-core` | Inti speech bersama | Tipe provider speech, registry, directive, normalisasi | | `plugin-sdk/realtime-transcription` | Helper transkripsi realtime | Tipe provider dan helper registry | | `plugin-sdk/realtime-voice` | Helper suara realtime | Tipe provider dan helper registry | | `plugin-sdk/image-generation-core` | Inti pembuatan gambar bersama | Tipe pembuatan gambar, failover, auth, dan helper registry | | `plugin-sdk/music-generation` | Helper pembuatan musik | Tipe provider/permintaan/hasil pembuatan musik | | `plugin-sdk/music-generation-core` | Inti pembuatan musik bersama | Tipe pembuatan musik, helper failover, lookup provider, dan parsing model-ref | | `plugin-sdk/video-generation` | Helper pembuatan video | Tipe provider/permintaan/hasil pembuatan video | | `plugin-sdk/video-generation-core` | Inti pembuatan video bersama | Tipe pembuatan video, helper failover, lookup provider, dan parsing model-ref | | `plugin-sdk/interactive-runtime` | Helper balasan interaktif | Normalisasi/reduksi payload balasan interaktif | | `plugin-sdk/channel-config-primitives` | Primitif konfigurasi channel | Primitif channel config-schema yang sempit | | `plugin-sdk/channel-config-writes` | Helper penulisan konfigurasi channel | Helper otorisasi penulisan konfigurasi channel | | `plugin-sdk/channel-plugin-common` | Prelude channel bersama | Ekspor prelude plugin channel bersama | | `plugin-sdk/channel-status` | Helper status channel | Helper snapshot/ringkasan status channel bersama | | `plugin-sdk/allowlist-config-edit` | Helper konfigurasi allowlist | Helper edit/baca konfigurasi allowlist | | `plugin-sdk/group-access` | Helper akses grup | Helper keputusan group-access bersama | | `plugin-sdk/direct-dm` | Helper Direct-DM | Helper auth/guard Direct-DM bersama | | `plugin-sdk/extension-shared` | Helper extension bersama | Primitif helper passive-channel/status dan proxy ambient | | `plugin-sdk/webhook-targets` | Helper target Webhook | Registry target Webhook dan helper instalasi route | | `plugin-sdk/webhook-path` | Helper jalur Webhook | Helper normalisasi jalur Webhook | | `plugin-sdk/web-media` | Helper media web bersama | Helper pemuatan media remote/lokal | | `plugin-sdk/zod` | Re-export Zod | `zod` yang di-re-export untuk konsumen SDK Plugin | | `plugin-sdk/memory-core` | Helper memory-core bawaan | Surface helper manajer/konfigurasi/file/CLI memori | | `plugin-sdk/memory-core-engine-runtime` | Fasad runtime engine memori | Fasad runtime indeks/pencarian memori | | `plugin-sdk/memory-core-host-engine-foundation` | Engine foundation host memori | Ekspor engine foundation host memori | | `plugin-sdk/memory-core-host-engine-embeddings` | Engine embedding host memori | Kontrak embedding memori, akses registry, provider lokal, dan helper batch/remote generik; provider remote konkret berada di plugin pemiliknya | | `plugin-sdk/memory-core-host-engine-qmd` | Engine QMD host memori | Ekspor engine QMD host memori | | `plugin-sdk/memory-core-host-engine-storage` | Engine storage host memori | Ekspor engine storage host memori | | `plugin-sdk/memory-core-host-multimodal` | Helper multimodal host memori | Helper multimodal host memori | | `plugin-sdk/memory-core-host-query` | Helper query host memori | Helper query host memori | | `plugin-sdk/memory-core-host-secret` | Helper secret host memori | Helper secret host memori | | `plugin-sdk/memory-core-host-events` | Helper jurnal event host memori | Helper jurnal event host memori | | `plugin-sdk/memory-core-host-status` | Helper status host memori | Helper status host memori | | `plugin-sdk/memory-core-host-runtime-cli` | Runtime CLI host memori | Helper runtime CLI host memori | | `plugin-sdk/memory-core-host-runtime-core` | Runtime inti host memori | Helper runtime inti host memori | | `plugin-sdk/memory-core-host-runtime-files` | Helper file/runtime host memori | Helper file/runtime host memori | | `plugin-sdk/memory-host-core` | Alias runtime inti host memori | Alias netral-vendor untuk helper runtime inti host memori | | `plugin-sdk/memory-host-events` | Alias jurnal event host memori | Alias netral-vendor untuk helper jurnal event host memori | | `plugin-sdk/memory-host-files` | Alias file/runtime host memori | Alias netral-vendor untuk helper file/runtime host memori | | `plugin-sdk/memory-host-markdown` | Helper markdown terkelola | Helper managed-markdown bersama untuk plugin yang berdekatan dengan memori | | `plugin-sdk/memory-host-search` | Fasad pencarian Active Memory | Fasad runtime search-manager Active Memory yang lazy | | `plugin-sdk/memory-host-status` | Alias status host memori | Alias netral-vendor untuk helper status host memori | | `plugin-sdk/memory-lancedb` | Helper memory-lancedb bawaan | Surface helper memory-lancedb | | `plugin-sdk/testing` | Utilitas pengujian | Helper test dan mock |Tabel ini sengaja merupakan subset migrasi umum, bukan seluruh surface SDK.
Daftar lengkap 200+ entrypoint ada di
scripts/lib/plugin-sdk-entrypoints.json.
Daftar itu masih mencakup beberapa seam helper bundled-plugin seperti
plugin-sdk/feishu, plugin-sdk/feishu-setup, plugin-sdk/zalo,
plugin-sdk/zalo-setup, dan plugin-sdk/matrix*. Seam tersebut tetap diekspor untuk
pemeliharaan bundled-plugin dan kompatibilitas, tetapi sengaja
dihilangkan dari tabel migrasi umum dan bukan target yang disarankan untuk
kode plugin baru.
Aturan yang sama berlaku untuk keluarga helper bundled lainnya seperti:
- helper dukungan browser:
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* - surface helper/plugin bundled seperti
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, danplugin-sdk/voice-call
plugin-sdk/github-copilot-token saat ini mengekspos
surface helper token yang sempit DEFAULT_COPILOT_API_BASE_URL,
deriveCopilotApiBaseUrlFromToken, dan resolveCopilotApiToken.
Gunakan impor tersempit yang cocok dengan pekerjaannya. Jika Anda tidak dapat menemukan ekspor,
periksa source di src/plugin-sdk/ atau tanyakan di Discord.
Linimasa penghapusan
| Kapan | Yang terjadi |
|---|---|
| Sekarang | Surface deprecated mengeluarkan peringatan runtime |
| Rilis mayor berikutnya | Surface deprecated akan dihapus; plugin yang masih menggunakannya akan gagal |
Semua plugin inti sudah dimigrasikan. Plugin eksternal sebaiknya bermigrasi sebelum rilis mayor berikutnya.
Menyembunyikan peringatan sementara
Setel variabel environment ini saat Anda sedang mengerjakan migrasi:
OPENCLAW_SUPPRESS_PLUGIN_SDK_COMPAT_WARNING=1 openclaw gateway run
OPENCLAW_SUPPRESS_EXTENSION_API_WARNING=1 openclaw gateway run
Ini adalah escape hatch sementara, bukan solusi permanen.
Terkait
- Getting Started — bangun plugin pertama Anda
- SDK Overview — referensi impor subpath lengkap
- Channel Plugins — membangun plugin channel
- Provider Plugins — membangun plugin provider
- Plugin Internals — pendalaman arsitektur
- Plugin Manifest — referensi skema manifes