Yang berubah
Beberapa permukaan impor yang sangat terbuka sebelumnya memungkinkan plugin mengakses hampir semua hal dari satu titik masuk:openclaw/plugin-sdkdanopenclaw/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 sepertitool_result. Gunakan middleware hasil alat agen sebagai gantinya (lihat Migrasikan ekstensi hasil alat tertanam ke middleware).
infra-runtime dan config-runtime tetap tersedia hanya untuk
jendela berikutnya yang dicatat secara terpisah; plugin baru harus menggunakan subpath terfokus.
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.
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.tsmiliknya sendiri. - OpenAI menyimpan builder provider, helper model default, dan builder provider
realtime di
api.tsmiliknya sendiri. - OpenRouter menyimpan builder provider serta helper onboarding/konfigurasi di
api.tsmiliknya sendiri.
Kebijakan kompatibilitas
Pekerjaan kompatibilitas plugin eksternal mengikuti urutan ini:- Tambahkan kontrak baru.
- Pertahankan perilaku lama yang terhubung melalui adaptor kompatibilitas.
- Keluarkan diagnostik atau peringatan yang menyebutkan path lama dan penggantinya.
- Cakup kedua path dalam pengujian.
- Dokumentasikan penghentian dan jalur migrasinya.
- Hapus hanya setelah jendela migrasi yang diumumkan, biasanya dalam rilis mayor.
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
Migrasikan helper pemuatan/penulisan konfigurasi runtime
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: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:Migrasikan ekstensi hasil alat tertanam ke middleware
api.registerEmbeddedExtensionFactory(...)
khusus runner tertanam dengan middleware yang netral terhadap
runtime:contracts.agentToolResultMiddleware. Pendaftaran middleware terinstal
yang tidak dideklarasikan akan ditolak.Migrasikan handler native persetujuan ke fakta kapabilitas
approvalCapability.nativeRuntime beserta registry konteks runtime
bersama:- Ganti
approvalCapability.handler.loadRuntime(...)denganapprovalCapability.nativeRuntime. - Pindahkan autentikasi/pengiriman khusus persetujuan dari wiring lama
plugin.auth/plugin.approvalskeapprovalCapability. ChannelPlugin.approvalstelah dihapus dari kontrak plugin channel publik; pindahkan field pengiriman/native/render keapprovalCapability.plugin.authtetap 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
channelRuntimekecreateChannelManager(...), sediakan permukaancreatePluginRuntime().channelyang sebenarnya - stub parsial akan ditolak.
Audit perilaku fallback wrapper Windows
openclaw/plugin-sdk/windows-spawn, wrapper Windows
.cmd/.bat yang tidak dapat diresolusikan kini gagal secara tertutup kecuali Anda secara eksplisit meneruskan
allowShellFallback: true:allowShellFallback dan tangani error yang dilempar sebagai gantinya.Temukan impor yang dihentikan
Ganti dengan impor terfokus
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:infra-runtime, sehingga kode repo
tidak dapat mengalami regresi kembali ke barrel yang luas.Migrasikan pembantu rute saluran
openclaw/plugin-sdk/channel-route. Nama
kunci rute yang lebih lama tetap tersedia sebagai alias kompatibilitas:{ 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.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 dalamscripts/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.pembuat bantuan command-auth -> command-status
pembuat bantuan command-auth -> command-status
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.Pembantu pengendalian sebutan -> resolveInboundMentionDecision
Pembantu pengendalian sebutan -> resolveInboundMentionDecision
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.Shim runtime saluran dan pembantu tindakan saluran
Shim runtime saluran dan pembantu tindakan saluran
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.Pembantu tool() penyedia pencarian web -> createTool() pada plugin
Pembantu tool() penyedia pencarian web -> createTool() pada plugin
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.Envelope saluran teks biasa -> BodyForAgent
Envelope saluran teks biasa -> BodyForAgent
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.hook deactivate -> gateway_stop
hook deactivate -> gateway_stop
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.hook subagent_spawning -> pengikatan utas inti
hook subagent_spawning -> pengikatan utas inti
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.Tipe penemuan penyedia -> tipe katalog penyedia
Tipe penemuan penyedia -> tipe katalog penyedia
ProviderCapabilities telah
dihapus. Plugin penyedia
harus menggunakan hook penyedia eksplisit seperti buildReplayPolicy,
normalizeToolSchemas, dan wrapStreamFn, bukan objek statis.Hook kebijakan penalaran -> resolveThinkingProfile
Hook kebijakan penalaran -> resolveThinkingProfile
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.Penyedia autentikasi eksternal -> contracts.externalAuthProviders
Penyedia autentikasi eksternal -> contracts.externalAuthProviders
contracts.externalAuthProviders dalam manifes plugin
dan implementasikan resolveExternalAuthProfiles(...).Pencarian variabel lingkungan penyedia -> setup.providers[].envVars
Pencarian variabel lingkungan penyedia -> setup.providers[].envVars
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.Pendaftaran plugin memori -> registerMemoryCapability
Pendaftaran plugin memori -> registerMemoryCapability
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.API penyedia embedding memori
API penyedia embedding memori
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.Hasil pengiriman kanal mentah -> OutboundDeliveryResult
Hasil pengiriman kanal mentah -> OutboundDeliveryResult
{ 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.Jenis pesan sesi subagen diganti namanya
Jenis pesan sesi subagen diganti namanya
src/plugins/runtime/types.ts:readSession tidak digunakan lagi dan digantikan oleh
getSessionMessages. Tanda tangan sama; metode lama meneruskan panggilan ke
metode baru.API berkas sesi dan transkrip yang dihapus
API berkas sesi dan transkrip yang dihapus
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.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.runtime.tasks.flow -> runtime.tasks.managedFlows
runtime.tasks.flow -> runtime.tasks.managedFlows
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.Factory ekstensi tertanam -> middleware hasil alat agen
Factory ekstensi tertanam -> middleware hasil alat agen
api.registerEmbeddedExtensionFactory(...) khusus runner tertanam
yang dihapus digantikan oleh api.registerAgentToolResultMiddleware(...) dengan daftar runtime eksplisit
dalam contracts.agentToolResultMiddleware.Alias OpenClawSchemaType -> OpenClawConfig
Alias OpenClawSchemaType -> OpenClawConfig
OpenClawSchemaType telah dihapus. Gunakan nama kanonis
OpenClawConfig.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 olehopenclaw/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:
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:
talk.realtime.* /
talk.transcription.* / talk.handoff.* lama (semuanya telah dihapus):
Linimasa penghapusan
pnpm plugins:boundary-report untuk melihat
catatan kompatibilitas yang tenggatnya paling dekat bagi permukaan yang digunakan Plugin Anda.
Menonaktifkan peringatan untuk sementara
Terkait
- Memulai - buat Plugin pertama Anda
- Ikhtisar SDK - referensi lengkap impor subpath
- Plugin Saluran - membuat Plugin saluran
- Plugin Penyedia - membuat Plugin penyedia
- Internal Plugin - pembahasan mendalam tentang arsitektur
- Manifes Plugin - referensi skema manifes