Plugin maintainer reference

API masuk saluran

Jalur penerimaan channel mengikuti satu alur:

text
peristiwa platform -> fakta/konteks masuk -> balasan agen -> pengiriman pesan

Gunakan openclaw/plugin-sdk/channel-inbound untuk normalisasi peristiwa masuk, pemformatan, root, dan orkestrasi. Gunakan openclaw/plugin-sdk/channel-outbound untuk pengiriman native, tanda terima, pengiriman persisten, dan perilaku pratinjau langsung.

Helper inti

ts
   buildChannelInboundEventContext,  runChannelInboundEvent,  dispatchChannelInboundReply,} from "openclaw/plugin-sdk/channel-inbound";
  • buildChannelInboundEventContext(...): memproyeksikan fakta channel yang dinormalisasi ke dalam konteks prompt/sesi. Teruskan metadata pengirim/obrolan milik channel melalui channelContext, yang dilihat hook plugin sebagai ctx.channelContext. Perluas PluginHookChannelSenderContext atau PluginHookChannelChatContext dari subjalur ini untuk bidang khusus channel.
  • runChannelInboundEvent(...): menjalankan penyerapan, klasifikasi, prapemeriksaan, resolusi, pencatatan, dispatch, dan finalisasi untuk satu peristiwa platform masuk.
  • dispatchChannelInboundReply(...): mencatat dan melakukan dispatch terhadap balasan masuk yang telah dirakit dengan adaptor pengiriman.

Untuk peristiwa masuk khusus media, biarkan isi pesan dan teks perintah kosong dan teruskan satu fakta ChannelInboundMediaInput per lampiran native. Saat baris riwayat sekitar atau pembawa khusus teks lainnya harus menjelaskan fakta tersebut, gunakan formatMediaPlaceholderText(media). Ini mengklasifikasikan setiap fakta dari kind, tipe MIME, lalu ekstensi jalur atau URL; lampiran native yang belum diunduh tetap harus menyumbangkan masing-masing satu fakta khusus tipe. Jangan gunakan pemformat untuk menyintesis isi utama pesan masuk.

Channel bawaan/native yang sudah menerima objek runtime plugin yang diinjeksi dapat memanggil helper yang sama di bawah runtime.channel.inbound.*, alih-alih mengimpor subjalur ini secara langsung:

ts
await runtime.channel.inbound.run({  channel: "demo",  accountId,  raw: platformEvent,  adapter: {    ingest: normalizePlatformEvent,    resolveTurn: resolveInboundReply,  },});

Rakit input dispatchChannelInboundReply(...) untuk dispatcher kompatibilitas yang mempertahankan pengiriman platform di adaptor pengiriman. Jalur pengiriman baru harus menggunakan adaptor pesan dan helper pesan persisten dari channel-outbound sebagai gantinya.

Migrasi

Alias runtime runtime.channel.turn.* telah dihapus. Gunakan:

  • runtime.channel.inbound.run(...) untuk peristiwa masuk mentah.
  • runtime.channel.inbound.dispatchReply(...) untuk konteks balasan yang telah dirakit.
  • runtime.channel.inbound.buildContext(...) untuk payload konteks masuk.
  • runtime.channel.inbound.runPreparedReply(...), tidak digunakan lagi, hanya untuk jalur dispatch siap pakai milik channel yang sudah merakit closure dispatch-nya sendiri.

Kode plugin baru tidak boleh memperkenalkan API channel bernama turn. Pertahankan kosakata giliran model atau agen di dalam kode agen/penyedia; plugin channel menggunakan istilah masuk, pesan, pengiriman, dan balasan.

Was this useful?
On this page

On this page