Kanal Eklentileri Oluşturma
Bu kılavuz, OpenClaw’ı bir mesajlaşma platformuna bağlayan bir kanal eklentisi oluşturma sürecini açıklar. Sonunda DM güvenliği, eşleştirme, yanıt iş parçacığı oluşturma ve giden mesajlaşma içeren çalışan bir kanalınız olacak.Daha önce hiç OpenClaw eklentisi oluşturmadıysanız, temel paket
yapısı ve manifest kurulumu için önce
Başlangıç bölümünü okuyun.
Kanal eklentileri nasıl çalışır
Kanal eklentilerinin kendi gönder/düzenle/tepki araçlarına ihtiyacı yoktur. OpenClaw çekirdekte paylaşılan tek birmessage aracı tutar. Eklentiniz şu alanların sahibidir:
- Yapılandırma — hesap çözümleme ve kurulum sihirbazı
- Güvenlik — DM ilkesi ve izin listeleri
- Eşleştirme — DM onay akışı
- Oturum grameri — sağlayıcıya özgü konuşma kimliklerinin temel sohbetlere, iş parçacığı kimliklerine ve üst geri dönüşlere nasıl eşlendiği
- Giden — platforma metin, medya ve anket gönderme
- İş parçacığı oluşturma — yanıtların nasıl iş parçacığına bağlandığı
:thread: kayıtlarının ve dağıtımın sahibidir.
Platformunuz konuşma kimliklerinin içinde ek kapsam depoluyorsa, bu çözümlemeyi
eklenti içinde messaging.resolveSessionConversation(...) ile tutun. Bu,
rawId değerini temel konuşma kimliğine, isteğe bağlı iş parçacığı
kimliğine, açık baseConversationId değerine ve olası
parentConversationCandidates değerlerine eşlemek için kanonik kancadır.
parentConversationCandidates döndürdüğünüzde, bunları en dar üst öğeden
en geniş/temel konuşmaya doğru sıralı tutun.
Kanal kayıt defteri başlatılmadan önce aynı çözümlemeye ihtiyaç duyan paketlenmiş
eklentiler, eşleşen bir resolveSessionConversation(...)
dışa aktarımıyla üst düzey bir session-key-api.ts dosyasını da açığa çıkarabilir.
Çekirdek bu önyükleme açısından güvenli yüzeyi yalnızca çalışma zamanı eklenti kayıt defteri henüz kullanılamıyorken
kullanır.
messaging.resolveParentConversationCandidates(...), bir eklentinin yalnızca
genel/ham kimliğin üzerine üst geri dönüşlere ihtiyaç duyduğu eski uyumluluk geri dönüşü olarak kullanılmaya devam eder.
Her iki kanca da varsa, çekirdek önce
resolveSessionConversation(...).parentConversationCandidates değerini kullanır ve yalnızca
kanonik kanca bunları atladığında resolveParentConversationCandidates(...) değerine geri döner.
Onaylar ve kanal yetenekleri
Çoğu kanal eklentisinin onaya özgü koda ihtiyacı yoktur.- Çekirdek aynı sohbetteki
/approve, paylaşılan onay düğmesi yükleri ve genel geri dönüş teslimatının sahibidir. - Kanalın onaya özgü davranışa ihtiyaç duyduğu durumlarda kanal eklentisinde tek bir
approvalCapabilitynesnesini tercih edin. approvalCapability.authorizeActorActionveapprovalCapability.getActionAvailabilityState, kanonik onay-yetkilendirme yüzeyidir.- Yinelenen yerel onay istemlerini gizleme veya teslimattan önce yazıyor göstergeleri gönderme gibi kanala özgü yük yaşam döngüsü davranışları için
outbound.shouldSuppressLocalPayloadPromptya daoutbound.beforeDeliverPayloadkullanın. approvalCapability.deliveryyalnızca yerel onay yönlendirmesi veya geri dönüş bastırma için kullanılmalıdır.approvalCapability.renderyalnızca bir kanal gerçekten paylaşılan oluşturucu yerine özel onay yüklerine ihtiyaç duyduğunda kullanılmalıdır.- Bir kanal mevcut yapılandırmadan kararlı, sahip benzeri DM kimliklerini çıkarabiliyorsa, onaya özgü çekirdek mantığı eklemeden aynı sohbetteki
/approveişlemini kısıtlamak içinopenclaw/plugin-sdk/approval-runtimeiçindekicreateResolvedApproverActionAuthAdapterkullanın. - Bir kanalın yerel onay teslimatına ihtiyacı varsa, kanal kodunu hedef normalleştirme ve taşıma kancalarına odaklı tutun. İstek filtreleme, yönlendirme, tekilleştirme, süresi dolma ve gateway aboneliğinin sahibi çekirdek olsun diye
openclaw/plugin-sdk/approval-runtimeiçindekicreateChannelExecApprovalProfile,createChannelNativeOriginTargetResolver,createChannelApproverDmTargetResolver,createApproverRestrictedNativeApprovalCapabilityvecreateChannelNativeApprovalRuntimeyardımcılarını kullanın. - Yerel onay kanalları hem
accountIdhem deapprovalKinddeğerini bu yardımcılar üzerinden yönlendirmelidir.accountId, çok hesaplı onay ilkesinin doğru bot hesabı kapsamına bağlı kalmasını sağlar veapprovalKind, çekirdekte sabit kodlu dallanmalar olmadan yürütme ve eklenti onayı davranışını kanal için kullanılabilir tutar. - Teslim edilen onay kimliği türünü uçtan uca koruyun. Yerel istemciler, yürütme ve eklenti onayı yönlendirmesini kanal yerel durumundan tahmin etmemeli veya yeniden yazmamalıdır.
- Farklı onay türleri bilinçli olarak farklı yerel yüzeyler açığa çıkarabilir.
Mevcut paketlenmiş örnekler:
- Slack, hem yürütme hem de eklenti kimlikleri için yerel onay yönlendirmesini kullanılabilir tutar.
- Matrix, yalnızca yürütme onayları için yerel DM/kanal yönlendirmesini korur ve
eklenti onaylarını paylaşılan aynı sohbet
/approveyolunda bırakır.
createApproverRestrictedNativeApprovalAdapterhâlâ bir uyumluluk sarmalayıcısı olarak vardır, ancak yeni kodcapabilityoluşturucusunu tercih etmeli ve eklentideapprovalCapabilityaçığa çıkarmalıdır.
openclaw/plugin-sdk/approval-auth-runtimeopenclaw/plugin-sdk/approval-client-runtimeopenclaw/plugin-sdk/approval-delivery-runtimeopenclaw/plugin-sdk/approval-native-runtimeopenclaw/plugin-sdk/approval-reply-runtime
openclaw/plugin-sdk/setup-runtime,
openclaw/plugin-sdk/setup-adapter-runtime,
openclaw/plugin-sdk/reply-runtime,
openclaw/plugin-sdk/reply-dispatch-runtime,
openclaw/plugin-sdk/reply-reference ve
openclaw/plugin-sdk/reply-chunking tercih edin.
Özellikle kurulum için:
openclaw/plugin-sdk/setup-runtime, çalışma zamanı açısından güvenli kurulum yardımcılarını kapsar: içe aktarma açısından güvenli kurulum yama bağdaştırıcıları (createPatchedAccountSetupAdapter,createEnvPatchedAccountSetupAdapter,createSetupInputPresenceValidator), lookup-note çıktısı,promptResolvedAllowFrom,splitSetupEntriesve devredilen kurulum proxy oluşturucularıopenclaw/plugin-sdk/setup-adapter-runtime,createEnvPatchedAccountSetupAdapteriçin dar, ortam farkındalıklı bağdaştırıcı yüzeyidiropenclaw/plugin-sdk/channel-setup, isteğe bağlı kurulum yapılandırma oluşturucularını ve birkaç kurulum açısından güvenli ilkel öğeyi kapsar:createOptionalChannelSetupSurface,createOptionalChannelSetupAdapter,createOptionalChannelSetupWizard,DEFAULT_ACCOUNT_ID,createTopLevelChannelDmPolicy,setSetupChannelEnabledvesplitSetupEntries- daha geniş
openclaw/plugin-sdk/setupyüzeyini yalnızcamoveSingleAccountChannelSectionToDefaultAccount(...)gibi daha ağır paylaşılan kurulum/yapılandırma yardımcılarına da ihtiyaç duyduğunuzda kullanın
createOptionalChannelSetupSurface(...) tercih edin. Oluşturulan
bağdaştırıcı/sihirbaz yapılandırma yazımlarında ve sonlandırmada hata durumunda kapalı kalır ve
aynı yükleme-gerekli iletisini doğrulama, sonlandırma ve belgeler bağlantısı metni boyunca yeniden kullanır.
Diğer sıcak kanal yolları için de daha geniş eski yüzeyler yerine dar yardımcıları
tercih edin:
- çok hesaplı yapılandırma ve
varsayılan hesap geri dönüşü için
openclaw/plugin-sdk/account-core,openclaw/plugin-sdk/account-id,openclaw/plugin-sdk/account-resolutionveopenclaw/plugin-sdk/account-helpers - gelen rota/zarf ve
kaydet-ve-dağıt kablolaması için
openclaw/plugin-sdk/inbound-envelopeveopenclaw/plugin-sdk/inbound-reply-dispatch - hedef çözümleme/eşleştirme için
openclaw/plugin-sdk/messaging-targets - medya yükleme ve giden
kimlik/gönderme delege işlemleri için
openclaw/plugin-sdk/outbound-mediaveopenclaw/plugin-sdk/outbound-runtime - iş parçacığı bağlama yaşam döngüsü
ve bağdaştırıcı kaydı için
openclaw/plugin-sdk/thread-bindings-runtime - yalnızca eski agent/media
yük alan düzeni hâlâ gerekiyorsa
openclaw/plugin-sdk/agent-media-payload - Telegram özel komut
normalleştirmesi, yinelenen/çakışma doğrulaması ve geri dönüş açısından kararlı komut
yapılandırma sözleşmesi için
openclaw/plugin-sdk/telegram-command-config
Adım adım anlatım
Paket ve manifest
Standart eklenti dosyalarını oluşturun.
package.json içindeki channel alanı,
bunun bir kanal eklentisi olmasını sağlar. Tam paket meta veri yüzeyi için
Eklenti Kurulumu ve Yapılandırma bölümüne bakın:Kanal eklentisi nesnesini oluşturun
ChannelPlugin arayüzü birçok isteğe bağlı bağdaştırıcı yüzeyi içerir. Asgari düzeyle başlayın —
id ve setup — ve ihtiyaç duydukça bağdaştırıcılar ekleyin.src/channel.ts oluşturun:src/channel.ts
createChatChannelPlugin size sizin için ne yapar
createChatChannelPlugin size sizin için ne yapar
Düşük seviyeli bağdaştırıcı arayüzlerini elle uygulamak yerine,
bildirimsel seçenekler verirsiniz ve oluşturucu bunları birleştirir:
Tam denetime ihtiyacınız varsa bildirimsel seçenekler yerine ham bağdaştırıcı nesnelerini de verebilirsiniz.
| Seçenek | Bağladığı şey |
|---|---|
security.dm | Yapılandırma alanlarından kapsamlı DM güvenlik çözümleyicisi |
pairing.text | Kod alışverişiyle metin tabanlı DM eşleştirme akışı |
threading | Yanıt-modu çözümleyicisi (sabit, hesap kapsamlı veya özel) |
outbound.attachedResults | Sonuç meta verisi döndüren gönderme işlevleri (mesaj kimlikleri) |
Giriş noktasını bağlayın
index.ts oluşturun:index.ts
registerCliMetadata(...) içine yerleştirin; böylece OpenClaw
tam kanal çalışma zamanını etkinleştirmeden bunları kök yardımda gösterebilir.
Aynı zamanda normal tam yüklemeler gerçek komut
kaydı için aynı tanımlayıcıları almaya devam eder. registerFull(...) yalnızca çalışma zamanına özgü işler için kalsın.
registerFull(...) gateway RPC yöntemleri kaydediyorsa,
eklentiye özgü bir önek kullanın. Çekirdek yönetici ad alanları (config.*,
exec.approvals.*, wizard.*, update.*) ayrılmıştır ve her zaman
operator.admin olarak çözülür.
defineChannelPluginEntry, kayıt modu ayrımını otomatik olarak yönetir. Tüm
seçenekler için Giriş Noktaları bölümüne bakın.Bir kurulum girişi ekleyin
Onboarding sırasında hafif yükleme için OpenClaw, kanal devre dışıyken
veya yapılandırılmamışken tam giriş yerine bunu yükler.
Bu, kurulum akışları sırasında ağır çalışma zamanı kodunun içe çekilmesini önler.
Ayrıntılar için Kurulum ve Yapılandırma bölümüne bakın.
setup-entry.ts oluşturun:setup-entry.ts
Gelen mesajları işleyin
Eklentinizin platformdan mesaj alması ve bunları
OpenClaw’a iletmesi gerekir. Tipik örnek, isteği doğrulayan ve
bunu kanalınızın gelen işleyicisi üzerinden dağıtan bir webhook’tur:
Gelen mesaj işleme kanala özgüdür. Her kanal eklentisi
kendi gelen işlem hattının sahibidir. Gerçek örnekler için paketlenmiş kanal eklentilerine
(örneğin Microsoft Teams veya Google Chat eklenti paketi)
bakın.
Test edin
Yan yana konumlandırılmış testleri Paylaşılan test yardımcıları için Test bölümüne bakın.
src/channel.test.ts içinde yazın:src/channel.test.ts
Dosya yapısı
Gelişmiş konular
İş parçacığı oluşturma seçenekleri
Sabit, hesap kapsamlı veya özel yanıt modları
Message aracı entegrasyonu
describeMessageTool ve eylem keşfi
Hedef çözümleme
inferTargetChatType, looksLikeId, resolveTarget
Çalışma zamanı yardımcıları
api.runtime aracılığıyla TTS, STT, medya, alt ajan
Bazı paketlenmiş yardımcı yüzeyler hâlâ paketlenmiş eklenti bakımı ve
uyumluluk için vardır. Bunlar yeni kanal eklentileri için önerilen desen değildir;
o paketlenmiş eklenti ailesini doğrudan sürdürmüyorsanız ortak SDK
yüzeyinden genel kanal/kurulum/yanıt/çalışma zamanı alt yollarını tercih edin.
Sonraki adımlar
- Sağlayıcı Eklentileri — eklentiniz aynı zamanda modeller de sağlıyorsa
- SDK Genel Bakış — tam alt yol içe aktarma başvurusu
- SDK Testing — test yardımcıları ve sözleşme testleri
- Eklenti Manifesti — tam manifest şeması