Skip to main content
OpenClaw mengganti lapisan kompatibilitas mundur yang luas dengan arsitektur plugin modern yang dibangun dari impor kecil dan terfokus. Jika plugin Anda dibuat sebelum perubahan tersebut, panduan ini membantu memigrasikannya ke kontrak saat ini.

Yang berubah

Beberapa permukaan impor yang sangat terbuka sebelumnya memungkinkan plugin mengakses hampir semua hal dari satu titik masuk:
  • openclaw/plugin-sdk dan openclaw/plugin-sdk/compat - mengekspor ulang puluhan helper selama SDK terfokus sedang dibangun. Kedua root tersebut kini telah dihapus; gunakan subpath terdokumentasi sebagai gantinya.
  • openclaw/plugin-sdk/infra-runtime - barrel luas yang mencampurkan event sistem, status heartbeat, antrean pengiriman, helper fetch/proxy, helper file, tipe persetujuan, dan utilitas yang tidak terkait.
  • openclaw/plugin-sdk/config-runtime - barrel konfigurasi luas yang dipertahankan hanya untuk jendela kompatibilitas berikutnya; helper langsung untuk memuat/menulis saat runtime telah dihapus.
  • openclaw/extension-api - bridge yang telah dihapus dan memberi plugin akses langsung ke helper sisi host seperti runner agen tertanam.
  • api.registerEmbeddedExtensionFactory(...) - hook khusus runner tertanam yang telah dihapus dan mengamati event runner tertanam seperti tool_result. Gunakan middleware hasil alat agen sebagai gantinya (lihat Migrasikan ekstensi hasil alat tertanam ke middleware).
SDK root, barrel kompatibilitas, bridge ekstensi, dan factory ekstensi tertanam telah dihapus. infra-runtime dan config-runtime tetap tersedia hanya untuk jendela berikutnya yang dicatat secara terpisah; plugin baru harus menggunakan subpath terfokus.
Plugin yang mengimpor permukaan root, kompatibilitas, atau ekstensi yang telah dihapus tidak lagi dapat dimuat. Ikuti pemetaan di bawah sebelum melakukan peningkatan.
OpenClaw tidak menghapus atau menafsirkan ulang perilaku plugin terdokumentasi dalam perubahan yang sama dengan diperkenalkannya pengganti. Perubahan kontrak yang merusak kompatibilitas terlebih dahulu melalui adaptor kompatibilitas, diagnostik, dokumentasi, dan jendela penghentian. Hal tersebut berlaku untuk impor SDK, field manifes, API penyiapan, hook, dan perilaku pendaftaran runtime.

Alasannya

  • Startup lambat - mengimpor satu helper memuat puluhan modul yang tidak terkait.
  • Dependensi melingkar - ekspor ulang yang luas memudahkan terbentuknya siklus impor.
  • Permukaan API yang tidak jelas - tidak ada cara untuk membedakan ekspor stabil dari ekspor internal.
Setiap openclaw/plugin-sdk/<subpath> kini merupakan modul kecil dan mandiri dengan kontrak terdokumentasi. Seam kemudahan provider lama untuk channel bawaan juga telah dihapus - pintasan helper bermerek channel merupakan kemudahan privat mono-repo, 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:
  • Anthropic menyimpan helper stream khusus Claude di seam api.ts / contract-api.ts miliknya sendiri.
  • OpenAI menyimpan builder provider, helper model default, dan builder provider realtime di api.ts miliknya sendiri.
  • OpenRouter menyimpan builder provider serta helper onboarding/konfigurasi di api.ts miliknya sendiri.

Kebijakan kompatibilitas

Pekerjaan kompatibilitas plugin eksternal mengikuti urutan ini:
  1. Tambahkan kontrak baru.
  2. Pertahankan perilaku lama yang terhubung melalui adaptor kompatibilitas.
  3. Keluarkan diagnostik atau peringatan yang menyebutkan path lama dan penggantinya.
  4. Cakup kedua path dalam pengujian.
  5. Dokumentasikan penghentian dan jalur migrasinya.
  6. Hapus hanya setelah jendela migrasi yang diumumkan, biasanya dalam rilis mayor.
Jika sebuah field manifes masih diterima, terus gunakan field tersebut hingga dokumentasi dan diagnostik menyatakan sebaliknya. Kode baru sebaiknya mengutamakan pengganti yang terdokumentasi; plugin yang sudah ada tidak boleh rusak selama rilis minor biasa. Audit antrean migrasi saat ini dengan pnpm plugins:boundary-report: pnpm plugins:boundary-report:ci berjalan dengan ketiga flag kegagalan. Setiap catatan kompatibilitas memiliki tanggal removeAfter yang eksplisit (bukan “rilis mayor berikutnya” yang samar) - laporan mengelompokkan catatan yang dihentikan berdasarkan tanggal tersebut, menghitung referensi kode/dokumentasi lokal, menampilkan impor SDK khusus pemilik lain yang dicadangkan, dan merangkum bridge SDK host memori privat. Subpath SDK yang dicadangkan harus memiliki penggunaan pemilik yang dilacak; ekspor cadangan yang tidak digunakan harus dihapus dari SDK publik.

Cara melakukan migrasi

1

Migrasikan helper pemuatan/penulisan konfigurasi runtime

Plugin bawaan harus berhenti memanggil api.runtime.config.loadConfig() dan api.runtime.config.writeConfigFile(...) secara langsung. Utamakan konfigurasi yang sudah diteruskan ke jalur pemanggilan aktif. Handler berumur panjang yang memerlukan snapshot proses saat ini dapat menggunakan api.runtime.config.current(). Alat agen berumur panjang harus membaca ctx.getRuntimeConfig() di dalam execute agar alat yang dibuat sebelum penulisan konfigurasi tetap melihat konfigurasi yang telah diperbarui.Penulisan konfigurasi dilakukan melalui helper transaksional dengan kebijakan setelah penulisan yang eksplisit:
Gunakan afterWrite: { mode: "restart", reason: "..." } ketika perubahan memerlukan restart gateway yang bersih, dan afterWrite: { mode: "none", reason: "..." } hanya ketika pemanggil memiliki tindak lanjut dan sengaja menonaktifkan perencana pemuatan ulang. Hasil mutasi menyertakan ringkasan followUp bertipe untuk pengujian dan pencatatan; gateway tetap bertanggung jawab untuk menerapkan atau menjadwalkan restart.loadConfig dan writeConfigFile telah dihapus dari runtime plugin. Plugin bawaan dan kode runtime repo dilindungi oleh pnpm check:deprecated-api-usage dan pnpm check:no-runtime-action-load-config: penggunaan baru dalam plugin produksi langsung gagal, penulisan konfigurasi langsung gagal, metode server gateway harus menggunakan snapshot runtime permintaan, helper pengiriman/tindakan/klien channel runtime harus menerima konfigurasi dari batasnya, dan modul runtime berumur panjang tidak mengizinkan panggilan ambient loadConfig().Kode plugin baru sebaiknya menghindari barrel openclaw/plugin-sdk/config-runtime yang luas. Gunakan subpath sempit sesuai kebutuhan:Plugin bawaan dan pengujiannya dilindungi pemindai dari barrel luas tersebut agar impor dan mock tetap lokal terhadap perilaku yang dibutuhkan. Barrel tersebut masih tersedia untuk kompatibilitas eksternal, tetapi kode baru tidak boleh bergantung padanya.
2

Migrasikan ekstensi hasil alat tertanam ke middleware

Plugin bawaan harus mengganti handler hasil alat api.registerEmbeddedExtensionFactory(...) khusus runner tertanam dengan middleware yang netral terhadap runtime:
Perbarui manifes plugin pada saat yang sama:
Plugin terinstal juga dapat mendaftarkan middleware hasil alat ketika diaktifkan secara eksplisit dan setiap runtime yang ditargetkan dideklarasikan dalam contracts.agentToolResultMiddleware. Pendaftaran middleware terinstal yang tidak dideklarasikan akan ditolak.
3

Migrasikan handler native persetujuan ke fakta kapabilitas

Plugin channel yang mendukung persetujuan mengekspos perilaku persetujuan native melalui approvalCapability.nativeRuntime beserta registry konteks runtime bersama:
  • Ganti approvalCapability.handler.loadRuntime(...) dengan approvalCapability.nativeRuntime.
  • Pindahkan autentikasi/pengiriman khusus persetujuan dari wiring lama plugin.auth / plugin.approvals ke approvalCapability.
  • ChannelPlugin.approvals telah dihapus dari kontrak plugin channel publik; pindahkan field pengiriman/native/render ke approvalCapability.
  • plugin.auth tetap digunakan hanya untuk alur login/logout channel; core tidak lagi membaca hook autentikasi persetujuan dari sana.
  • Daftarkan objek runtime milik channel (klien, token, aplikasi Bolt) melalui openclaw/plugin-sdk/channel-runtime-context.
  • Jangan kirim pemberitahuan pengalihan rute milik plugin dari handler persetujuan native; core memiliki pemberitahuan dialihkan-ke-tempat-lain berdasarkan hasil pengiriman aktual.
  • Saat meneruskan channelRuntime ke createChannelManager(...), sediakan permukaan createPluginRuntime().channel yang sebenarnya - stub parsial akan ditolak.
Lihat Plugin Channel untuk tata letak kapabilitas persetujuan saat ini.
4

Audit perilaku fallback wrapper Windows

Jika plugin Anda menggunakan openclaw/plugin-sdk/windows-spawn, wrapper Windows .cmd/.bat yang tidak dapat diresolusikan kini gagal secara tertutup kecuali Anda secara eksplisit meneruskan allowShellFallback: true:
Jika pemanggil Anda tidak sengaja bergantung pada fallback shell, jangan tetapkan allowShellFallback dan tangani error yang dilempar sebagai gantinya.
5

Temukan impor yang dihentikan

6

Ganti dengan impor terfokus

Setiap ekspor dari permukaan lama dipetakan ke path impor modern tertentu:
Untuk pembantu sisi host, gunakan runtime plugin yang diinjeksi alih-alih mengimpor secara langsung:
Pola yang sama berlaku untuk pembantu jembatan lama lainnya:
7

Ganti impor infra-runtime yang luas

openclaw/plugin-sdk/infra-runtime masih tersedia untuk kompatibilitas eksternal, tetapi kode baru harus mengimpor permukaan terfokus yang benar-benar dibutuhkannya:Plugin bawaan dilindungi pemindai dari infra-runtime, sehingga kode repo tidak dapat mengalami regresi kembali ke barrel yang luas.
8

Migrasikan pembantu rute saluran

Kode rute saluran baru menggunakan openclaw/plugin-sdk/channel-route. Nama kunci rute yang lebih lama tetap tersedia sebagai alias kompatibilitas:Pembantu rute modern menormalkan { channel, to, accountId, threadId } secara konsisten di seluruh persetujuan native, penekanan balasan, deduplikasi pesan masuk, pengiriman cron, dan perutean sesi.Jangan tambahkan penggunaan baru ChannelMessagingAdapter.parseExplicitTarget atau resolveChannelRouteTargetWithParser(...) dari plugin-sdk/channel-route — semuanya tidak digunakan lagi dan hanya dipertahankan untuk plugin lama. Plugin saluran baru harus menggunakan messaging.targetResolver.resolveTarget(...) untuk normalisasi ID target dan fallback ketika direktori tidak menemukan hasil, messaging.inferTargetChatType(...) ketika inti memerlukan jenis peer sejak awal, serta messaging.resolveOutboundSessionRoute(...) untuk identitas sesi dan utas native penyedia.
9

Bangun dan uji

Referensi jalur impor

Peta ekspor paket publik adalah sumber kebenaran untuk subjalur SDK yang dapat diimpor. Gunakan panduan SDK berdasarkan topik yang ditautkan dari ikhtisar SDK dan utamakan subjalur publik terdokumentasi yang paling sempit. Inventaris compiler dalam scripts/lib/plugin-sdk-entrypoints.json juga memuat entri lokal privat yang digunakan untuk membangun plugin bawaan; keberadaannya di sana tidak menjadikannya ekspor paket publik. Tabel ini adalah subset migrasi umum, bukan keseluruhan permukaan SDK. Inventaris titik masuk compiler berada di scripts/lib/plugin-sdk-entrypoints.json; ekspor paket dihasilkan dari subset publik. Jalur pembantu khusus plugin bawaan telah dihentikan dari peta ekspor SDK publik, kecuali fasad kompatibilitas yang didokumentasikan secara eksplisit seperti shim plugin-sdk/discord yang tidak digunakan lagi dan dipertahankan untuk plugin eksternal yang masih mengimpor paket @openclaw/discord yang dipublikasikan secara langsung. Pembantu khusus pemilik berada di dalam paket plugin pemiliknya; perilaku host bersama dipindahkan melalui kontrak SDK generik seperti plugin-sdk/gateway-runtime, plugin-sdk/security-runtime, dan API plugin yang diinjeksi. Gunakan impor paling sempit yang sesuai dengan tugasnya. Jika Anda tidak dapat menemukan ekspor, periksa sumber di src/plugin-sdk/ atau tanyakan kepada maintainer kontrak generik mana yang harus memilikinya.

Permukaan kompatibilitas yang dihapus

Penyisiran Juli 2026 menghapus barrel SDK root dan compat, jembatan API ekstensi, alias subjalur SDK yang kedaluwarsa, subjalur SDK yang tidak digunakan, serta ekspor publik untuk modul SDK khusus bawaan. Modul khusus bawaan tetap tersedia bagi pemiliknya di repositori melalui pemetaan build lokal privat; modul tersebut tidak dapat diimpor dari paket yang dipublikasikan.

Publikasi penyedia API global proses

registerApiProvider(...) dan unregisterApiProviders(...) dihapus dari openclaw/plugin-sdk/llm. Keduanya memublikasikan transportasi API ke state global proses, yang kemudian harus disalin oleh runtime model milik siklus hidup ke setiap registry yang telah disiapkan. Plugin penyedia harus mendaftarkan penyedia inferensi teks melalui api.registerProvider(...). Kode dan pengujian milik host yang membuat ApiRegistry harus mendaftar langsung pada registry tersebut agar kepemilikan penyedia dan pembongkaran tetap terbatas pada runtime yang telah disiapkan.

Barrel pengujian privat

openclaw/plugin-sdk/testing bersifat lokal repo dan dikecualikan dari artefak paket yang dirilis, sehingga dihapus sebelum tanggal removeAfter 2026-07-28. Pengujian repositori menggunakan subjalur terfokus seperti plugin-sdk/plugin-test-runtime, plugin-sdk/channel-test-helpers, plugin-sdk/channel-target-testing, plugin-sdk/test-env, dan plugin-sdk/test-fixtures.

Referensi migrasi

Pemetaan ini mencakup permukaan yang dihapus pada Juli 2026 serta penghentian aktif dengan jangka waktu yang lebih panjang. Pemetaan merupakan panduan migrasi, bukan bukti bahwa permukaan lama masih tersedia; lihat registry kompatibilitas dan linimasa penghapusan untuk status terkini.
Lama (openclaw/plugin-sdk/command-auth): buildCommandsMessage, buildCommandsMessagePaginated, buildHelpMessage.Baru (openclaw/plugin-sdk/command-status): signature yang sama, diimpor dari subjalur yang lebih sempit. Ekspor ulang kompatibilitas command-auth telah dihapus.
Lama: resolveMentionGating(params) dan resolveMentionGatingWithBypass(params) dari openclaw/plugin-sdk/channel-inbound atau openclaw/plugin-sdk/channel-mention-gating.Baru: resolveInboundMentionDecision({ facts, policy }) — satu objek keputusan alih-alih dua bentuk pemanggilan terpisah.Diterapkan di Discord, iMessage, Matrix, MS Teams, QQBot, Signal, Telegram, WhatsApp, dan Zalo. Model peristiwa app_mention milik Slack tidak menggunakan pembantu ini.
openclaw/plugin-sdk/channel-runtime telah dihapus. Gunakan openclaw/plugin-sdk/channel-runtime-context untuk mendaftarkan objek runtime.Pembantu skema pesan native dalam openclaw/plugin-sdk/channel-actions dihapus bersama ekspor saluran “actions” mentah. Ekspos kemampuan melalui permukaan semantik presentation sebagai gantinya — plugin saluran mendeklarasikan apa yang direndernya (kartu, tombol, pilihan), bukan nama tindakan mentah yang diterimanya.
Lama: factory tool() dari openclaw/plugin-sdk/provider-web-search.Baru: implementasikan createTool(...) secara langsung pada plugin penyedia. OpenClaw tidak lagi memerlukan pembantu SDK untuk mendaftarkan wrapper alat.
Lama: api.runtime.channel.reply.formatInboundEnvelope(...) (dan bidang channelEnvelope pada objek pesan masuk) untuk membuat envelope prompt teks biasa datar dari pesan saluran masuk.Baru: BodyForAgent beserta blok konteks pengguna terstruktur. Plugin saluran melampirkan metadata perutean (utas, topik, balas-ke, reaksi) sebagai bidang bertipe alih-alih menggabungkannya ke dalam string prompt. Pembantu formatAgentEnvelope(...) masih didukung untuk envelope sintetis yang ditujukan bagi asisten, tetapi envelope teks biasa masuk sedang dalam proses dihentikan.Area yang terdampak: inbound_claim, message_received, dan setiap plugin saluran kustom yang melakukan pascapemrosesan pada teks envelope lama.
Lama: api.on("deactivate", handler).Baru: api.on("gateway_stop", handler). Kontrak pembersihan saat penghentian tetap sama; hanya nama hook yang berubah.
deactivate tetap terhubung sebagai alias kompatibilitas yang tidak digunakan lagi hingga dihapus setelah 2026-08-16.
Lama: api.on("subagent_spawning", handler) yang mengembalikan threadBindingReady atau deliveryOrigin.Baru: biarkan inti menyiapkan pengikatan subagen thread: true melalui adaptor pengikatan sesi saluran. Gunakan api.on("subagent_spawned", handler) hanya untuk observasi setelah peluncuran.
subagent_spawning, PluginHookSubagentSpawningEvent, PluginHookSubagentSpawningResult, dan SubagentLifecycleHookRunner.runSubagentSpawning(...) tetap hanya sebagai permukaan kompatibilitas yang tidak digunakan lagi selama plugin eksternal bermigrasi, lalu dihapus setelah 2026-08-30.
Empat alias tipe penemuan kini menjadi wrapper tipis untuk tipe era katalog:Alias tersebut dan kumpulan statis lama ProviderCapabilities telah dihapus. Plugin penyedia harus menggunakan hook penyedia eksplisit seperti buildReplayPolicy, normalizeToolSchemas, dan wrapStreamFn, bukan objek statis.
Lama (tiga hook terpisah pada ProviderThinkingPolicy): isBinaryThinking(ctx), supportsXHighThinking(ctx), dan resolveDefaultThinkingLevel(ctx).Baru: satu resolveThinkingProfile(ctx) yang mengembalikan ProviderThinkingProfile dengan id kanonis, label opsional, dan daftar tingkat yang diperingkat. OpenClaw menurunkan tingkat nilai tersimpan yang sudah usang berdasarkan peringkat profil secara otomatis.Konteks tersebut mencakup fakta provider, modelId, gabungan reasoning opsional, dan gabungan fakta model compat opsional. Plugin penyedia dapat menggunakan fakta katalog tersebut untuk mengekspos profil khusus model hanya jika kontrak permintaan yang dikonfigurasi mendukungnya.Implementasikan satu hook, bukan tiga. Hook lama telah dihapus.
Lama: mengimplementasikan hook autentikasi eksternal tanpa mendeklarasikan penyedia dalam manifes plugin.Baru: deklarasikan contracts.externalAuthProviders dalam manifes plugin dan implementasikan resolveExternalAuthProfiles(...).
Bidang manifes lama: providerAuthEnvVars: { anthropic: ["ANTHROPIC_API_KEY"] }.Baru: cerminkan pencarian variabel lingkungan yang sama ke setup.providers[].envVars pada manifes. Ini menggabungkan metadata lingkungan penyiapan/status di satu tempat dan menghindari menjalankan runtime plugin hanya untuk menjawab pencarian variabel lingkungan.providerAuthEnvVars tidak lagi diterima.
Lama: tiga panggilan terpisah - api.registerMemoryPromptSection(...), api.registerMemoryFlushPlan(...), api.registerMemoryRuntime(...).Baru: satu panggilan pada API status memori - registerMemoryCapability(pluginId, { promptBuilder, flushPlanResolver, runtime }).Slot yang sama, satu panggilan pendaftaran. Pembantu prompt dan korpus tambahan (registerMemoryPromptSupplement, registerMemoryCorpusSupplement) tidak terpengaruh.
Lama: api.registerMemoryEmbeddingProvider(...) ditambah contracts.memoryEmbeddingProviders.Baru: api.registerEmbeddingProvider(...) ditambah contracts.embeddingProviders.Kontrak penyedia embedding generik dapat digunakan kembali di luar memori dan merupakan jalur yang didukung untuk penyedia baru. API pendaftaran khusus memori tetap terhubung sebagai kompatibilitas yang tidak digunakan lagi selama penyedia yang ada bermigrasi. Pemeriksaan plugin melaporkan penggunaan non-bawaan sebagai utang kompatibilitas.
Lama: kembalikan { ok, messageId, error } melalui ChannelSendRawResult dan normalkan dengan createRawChannelSendResultAdapter(...).Baru: kembalikan bidang OutboundDeliveryResult dan lampirkan kanal dengan createAttachedChannelResultAdapter(...). Pengiriman yang gagal harus melempar pengecualian, bukan mengembalikan string kesalahan. Jenis hasil mentah tetap tersedia hingga rilis mayor SDK plugin berikutnya.
Dua alias jenis lama masih diekspor dari src/plugins/runtime/types.ts:Metode runtime readSession tidak digunakan lagi dan digantikan oleh getSessionMessages. Tanda tangan sama; metode lama meneruskan panggilan ke metode baru.
Peralihan sesi/transkrip ke SQLite menghapus atau menghentikan penggunaan API yang menghadap plugin yang mengekspos penyimpanan sessions.json aktif, jalur transkrip JSONL, atau daftar berkas sesi. Plugin runtime harus menggunakan identitas sesi dan pembantu runtime SDK, bukan menyelesaikan atau mengubah berkas aktif.Berkas transkrip JSONL lama tetap valid sebagai artefak impor, arsip, ekspor, dan dukungan. Berkas tersebut tidak lagi menjadi kontrak runtime kondisi tetap untuk sesi aktif.Plugin resmi yang dirilis dengan v2026.7.1-beta.5 mengimpor empat pembantu yang tidak digunakan lagi di atas. openclaw/plugin-sdk/session-store-runtime mempertahankan jembatan persis tersebut hingga 2026-10-12; plugin baru harus menggunakan penggantinya. resolveStorePath(...) tetap menjadi pembantu SDK yang didukung dan bukan bagian dari penghentian penggunaan ini.openclaw plugins inspect --all --runtime melaporkan plugin non-bawaan yang kesalahan pemuatan atau diagnostiknya masih merujuk pada API berkas yang dihapus ini. Penyisiran advisori @openclaw/plugin-inspector harus menggunakan versi 0.3.17 atau yang lebih baru agar pemindaian paket eksternal juga menandai pembantu sesi seluruh penyimpanan, pembantu jalur berkas sesi, target berkas transkrip lama, dan pembantu transkrip tingkat rendah sebelum rilis.
Lama: runtime.tasks.flow (tunggal) mengembalikan pengakses alur tugas langsung.Baru: runtime.tasks.managedFlows mempertahankan runtime mutasi TaskFlow terkelola untuk plugin yang membuat, memperbarui, membatalkan, atau menjalankan tugas turunan dari suatu alur. Gunakan runtime.tasks.flows ketika plugin hanya memerlukan pembacaan berbasis DTO.
Alias lama dihapus pada Juli 2026.
Dicakup dalam Cara bermigrasi di atas. Disertakan di sini untuk kelengkapan: jalur api.registerEmbeddedExtensionFactory(...) khusus runner tertanam yang dihapus digantikan oleh api.registerAgentToolResultMiddleware(...) dengan daftar runtime eksplisit dalam contracts.agentToolResultMiddleware.
Alias SDK akar OpenClawSchemaType telah dihapus. Gunakan nama kanonis OpenClawConfig.
Penghentian penggunaan tingkat ekstensi (di dalam plugin kanal/penyedia bawaan di bawah extensions/) dilacak dalam barrel api.ts dan runtime-api.ts miliknya sendiri. Penghentian ini tidak memengaruhi kontrak plugin pihak ketiga dan tidak dicantumkan di sini. Jika barrel lokal plugin bawaan digunakan secara langsung, baca komentar penghentian penggunaan dalam barrel tersebut sebelum melakukan peningkatan.

Migrasi Talk dan suara waktu nyata

Kode suara waktu nyata, telefoni, rapat, dan Talk peramban berbagi satu pengontrol sesi Talk yang diekspor oleh openclaw/plugin-sdk/realtime-voice. Pengontrol tersebut memiliki amplop peristiwa Talk umum, status giliran aktif, status pengambilan, status audio keluaran, riwayat peristiwa terbaru, dan penolakan giliran usang. Plugin penyedia memiliki sesi waktu nyata khusus vendor. Plugin rapat-peramban menggunakan openclaw/plugin-sdk/meeting-runtime untuk mekanisme sesi, peramban, audio, host-node, konsultasi-agen, dan panggilan suara, lalu mengimplementasikan MeetingPlatformAdapter untuk aturan URL, skrip DOM, pemetaan tindakan manual, takarir, pembuatan, dan rencana akses masuk. API REST platform, OAuth, artefak, pemilih, dan nama wire tetap berada dalam plugin. Rencana izin peramban menerima URL rapat yang diminta agar setiap platform hanya dapat memberikan izin untuk origin yang didukungnya secara tepat. Runtime sesi juga harus menormalkan kesehatan langsung khusus platform setelah kepergian dari peramban dikonfirmasi; bidang transkrip historis dapat tetap ada, tetapi kesiapan takarir dan audio tidak boleh tetap aktif setelah keluar. Semua permukaan bawaan berjalan pada pengontrol bersama: relay peramban, serah-terima ruang terkelola, waktu nyata panggilan suara, STT streaming panggilan suara, waktu nyata Google Meet, dan tekan-untuk-bicara native. Gateway mengiklankan satu kanal peristiwa Talk langsung dalam hello-ok.features.events: talk.event. Kode baru tidak boleh memanggil createTalkEventSequencer(...) secara langsung kecuali mengimplementasikan adaptor tingkat rendah atau fixture pengujian. Gunakan pengontrol bersama agar peristiwa dengan cakupan giliran tidak dapat dipancarkan tanpa id giliran, panggilan turnEnd / turnCancel yang usang tidak dapat menghapus giliran aktif yang lebih baru, dan peristiwa siklus hidup audio keluaran tetap konsisten di seluruh telefoni, rapat, relay peramban, serah-terima ruang terkelola, dan klien Talk native. Bentuk API publik:
Sesi WebRTC/websocket-penyedia milik peramban menggunakan talk.client.create, karena peramban memiliki negosiasi penyedia dan transportasi media, sedangkan Gateway memiliki kredensial, instruksi, dan kebijakan alat. talk.session.* adalah permukaan umum yang dikelola Gateway untuk waktu nyata gateway-relay, transkripsi gateway-relay, dan sesi STT/TTS native ruang terkelola. Konfigurasi lama yang menempatkan pemilih waktu nyata di samping talk.provider / talk.providers harus diperbaiki dengan openclaw doctor --fix; Talk runtime tidak menafsirkan ulang konfigurasi penyedia ucapan/TTS sebagai konfigurasi penyedia waktu nyata. Kombinasi talk.session.create yang didukung sengaja dibatasi: Peta metode untuk pembaca yang bermigrasi dari keluarga talk.realtime.* / talk.transcription.* / talk.handoff.* lama (semuanya telah dihapus): Kosakata kontrol terpadu juga sengaja dibuat terbatas: Jangan memperkenalkan kasus khusus penyedia atau platform di inti agar ini berfungsi. Inti mengelola semantik sesi Talk. Plugin penyedia mengelola penyiapan sesi vendor. Voice-call dan Google Meet mengelola adaptor telepon/pertemuan. Browser dan aplikasi native mengelola UX perekaman/pemutaran perangkat.

Linimasa penghapusan

Subpath SDK publik yang tersisa di bawah ini memiliki jangka waktu penghapusan yang didukung registri. Baris 30 Juli dihapus setelah penyisiran awal yang diotorisasi pengelola: subpath yang tidak digunakan dihapus, alias kompatibilitas sebelumnya dihapus, dan modul khusus bawaan diturunkan menjadi pemetaan build lokal privat. Semua Plugin inti telah dimigrasikan. Plugin eksternal harus bermigrasi sebelum rilis mayor berikutnya. Jalankan pnpm plugins:boundary-report untuk melihat catatan kompatibilitas yang tenggatnya paling dekat bagi permukaan yang digunakan Plugin Anda.

Menonaktifkan peringatan untuk sementara

Ini adalah jalan keluar sementara, bukan solusi permanen.

Terkait