Documentation Index
Fetch the complete documentation index at: https://docs2.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
Durum
Paylaşılan ajan, CLI, Plugin yeteneği ve giden teslim yüzeyleri için uygulandı:ReplyPayload.presentationanlamsal ileti kullanıcı arayüzünü taşır.ReplyPayload.delivery.pingönderilen ileti sabitleme isteklerini taşır.- Paylaşılan ileti eylemleri, sağlayıcıya özgü
components,blocks,buttonsveyacardyerinepresentation,deliveryvepinalanlarını sunar. - Core, Plugin tarafından bildirilen giden yetenekler üzerinden sunumu işler veya otomatik olarak daha basit bir biçime düşürür.
- Discord, Slack, Telegram, Mattermost, MS Teams ve Feishu işleyicileri genel sözleşmeyi kullanır.
- Discord kanal denetim düzlemi kodu artık Carbon destekli kullanıcı arayüzü kapsayıcılarını içe aktarmaz.
Sorun
Kanal kullanıcı arayüzü şu anda birbiriyle uyumsuz birkaç yüzeye bölünmüş durumda:- Core,
buildCrossContextComponentsüzerinden Discord biçimli bir bağlamlar arası işleyici kancasına sahiptir. - Discord
channel.ts,DiscordUiContainerüzerinden yerel Carbon kullanıcı arayüzünü içe aktarabilir; bu da çalışma zamanı kullanıcı arayüzü bağımlılıklarını kanal Plugin denetim düzlemine çeker. - Ajan ve CLI, Discord
components, Slackblocks, Telegram veya Mattermostbuttonsve Teams veya Feishucardgibi yerel yük kaçış yolları sunar. ReplyPayload.channelDatahem aktarım ipuçlarını hem de yerel kullanıcı arayüzü zarflarını taşır.- Genel
interactivemodeli vardır, ancak Discord, Slack, Teams, Feishu, LINE, Telegram ve Mattermost tarafından zaten kullanılan daha zengin düzenlerden daha dardır.
Hedefler
- Core, bildirilen yeteneklere göre bir ileti için en iyi anlamsal sunuma karar verir.
- Eklentiler yetenekleri bildirir ve anlamsal sunumu yerel aktarım yüklerine işler.
- Web Denetim Kullanıcı Arayüzü, sohbetin yerel kullanıcı arayüzünden ayrı kalır.
- Yerel kanal yükleri, paylaşılan ajan veya CLI ileti yüzeyi üzerinden sunulmaz.
- Desteklenmeyen sunum özellikleri otomatik olarak en iyi metin gösterimine düşürülür.
- Gönderilen bir iletiyi sabitleme gibi teslim davranışları sunum değil, genel teslim meta verisidir.
Hedef olmayanlar
buildCrossContextComponentsiçin geriye dönük uyumluluk uyarlama katmanı yoktur.components,blocks,buttonsveyacardiçin herkese açık yerel kaçış yolları yoktur.- Core içinde kanala özgü yerel kullanıcı arayüzü kitaplıkları içe aktarılmaz.
- Paketlenmiş kanallar için sağlayıcıya özgü SDK aralıkları yoktur.
Hedef model
ReplyPayload alanına Core tarafından sahip olunan bir presentation alanı ekleyin.
interactive, geçiş sırasında presentation alanının bir alt kümesi haline gelir:
interactivemetin bloğupresentation.blocks[].type = "text"değerine eşlenir.interactivedüğmeler bloğupresentation.blocks[].type = "buttons"değerine eşlenir.interactiveseçim bloğupresentation.blocks[].type = "select"değerine eşlenir.
presentation kullanır; interactive, mevcut yanıt üreticileri için dahili bir eski ayrıştırıcı/işleme yardımcısı olarak kalır.
Teslim meta verileri
Kullanıcı arayüzü olmayan gönderim davranışı için Core tarafından sahip olunan birdelivery alanı ekleyin.
delivery.pin = true, başarıyla teslim edilen ilk iletiyi sabitle anlamına gelir.notifyvarsayılan olarakfalsedeğerindedir.requiredvarsayılan olarakfalsedeğerindedir; desteklenmeyen kanallar veya başarısız sabitleme, teslimi sürdürerek otomatik olarak daha basit bir davranışa düşer.- El ile yapılan
pin,unpinvelist-pinsileti eylemleri mevcut iletiler için kalır.
channelData.telegram.pin = true değerinden delivery.pin = true değerine taşınmalıdır.
Çalışma zamanı yetenek sözleşmesi
Sunum ve teslim işleme kancalarını denetim düzlemi kanal Plugin’ine değil, çalışma zamanı giden bağdaştırıcısına ekleyin.- Hedef kanalı ve çalışma zamanı bağdaştırıcısını çözümle.
- Sunum yeteneklerini iste.
- Desteklenmeyen blokları işlemeden önce daha basit biçime düşür.
renderPresentationçağır.- İşleyici yoksa sunumu metin yedeğine dönüştür.
- Başarılı gönderimden sonra,
delivery.pinistenmiş ve destekleniyorsapinDeliveredMessageçağır.
Kanal eşlemesi
Discord:presentationalanını çalışma zamanına özel modüllerde components v2 ve Carbon kapsayıcılarına işle.- Vurgu rengi yardımcılarını hafif modüllerde tut.
- Kanal Plugin denetim düzlemi kodundan
DiscordUiContaineriçe aktarımlarını kaldır.
presentationalanını Block Kit’e işle.- Ajan ve CLI
blocksgirdisini kaldır.
- Metin, bağlam ve ayırıcıları metin olarak işle.
- Hedef yüzey için yapılandırıldığında ve izin verildiğinde eylemleri ve seçimi satır içi klavyeler olarak işle.
- Satır içi düğmeler devre dışı olduğunda metin yedeğini kullan.
- ACP konu sabitlemesini
delivery.pinalanına taşı.
- Yapılandırıldığında eylemleri etkileşimli düğmeler olarak işle.
- Diğer blokları metin yedeği olarak işle.
presentationalanını Adaptive Cards olarak işle.- El ile
pin/unpin/list-pinseylemlerini koru. - Graph desteği hedef konuşma için güvenilirse isteğe bağlı olarak
pinDeliveredMessageuygula.
presentationalanını etkileşimli kartlara işle.- El ile
pin/unpin/list-pinseylemlerini koru. - API davranışı güvenilirse gönderilen ileti sabitleme için isteğe bağlı olarak
pinDeliveredMessageuygula.
presentationalanını mümkün olduğunda Flex veya şablon iletilerine işle.- Desteklenmeyen bloklar için metne geri dön.
- LINE kullanıcı arayüzü yüklerini
channelDataalanından kaldır.
- Sunumu ölçülü biçimlendirmeyle metne dönüştür.
Yeniden düzenleme adımları
ui-colors.tsdosyasını Carbon destekli kullanıcı arayüzünden ayıran veextensions/discord/src/channel.tsiçindenDiscordUiContainerkaldıran Discord sürüm düzeltmesini yeniden uygula.ReplyPayload, giden yük normalleştirme, teslim özetleri ve kanca yüklerinepresentationvedeliveryekle.- Dar bir SDK/çalışma zamanı alt yolunda
MessagePresentationşeması ve ayrıştırıcı yardımcıları ekle. - İleti yetenekleri olan
buttons,cards,componentsveblocksyerine anlamsal sunum yeteneklerini koy. - Sunum işleme ve teslim sabitleme için çalışma zamanı giden bağdaştırıcı kancaları ekle.
- Bağlamlar arası bileşen oluşturmayı
buildCrossContextPresentationile değiştir. src/infra/outbound/channel-adapters.tsdosyasını sil ve kanal Plugin türlerindenbuildCrossContextComponentskaldır.maybeApplyCrossContextMarkerişlevini yerel parametreler yerinepresentationekleyecek şekilde değiştir.- Plugin-dispatch gönderim yollarını yalnızca anlamsal sunum ve teslim meta verilerini kullanacak şekilde güncelle.
- Ajan ve CLI yerel yük parametrelerini kaldır:
components,blocks,buttonsvecard. - Yerel ileti aracı şemaları oluşturan SDK yardımcılarını kaldır ve yerine sunum şeması yardımcılarını koy.
- Kullanıcı arayüzü/yerel zarfları
channelDataalanından kaldır; kalan her alan gözden geçirilene kadar yalnızca aktarım meta verilerini tut. - Discord, Slack, Telegram, Mattermost, MS Teams, Feishu ve LINE işleyicilerini taşı.
- İleti CLI, kanal sayfaları, Plugin SDK ve yetenek yemek kitabı belgelerini güncelle.
- Discord ve etkilenen kanal giriş noktaları için içe aktarım yayılım profillemesi çalıştır.
channelData aktarım zarfları için daha derin bir dahili temizlik geçişi olarak kalıyor. 15. adım, tür/test kapısının ötesinde nicel içe aktarım yayılım sayıları istiyorsak takip doğrulaması olarak kalıyor.
Testler
Ekle veya güncelle:- Sunum normalleştirme testleri.
- Desteklenmeyen bloklar için sunum otomatik düşürme testleri.
- Plugin dispatch ve Core teslim yolları için bağlamlar arası işaretleyici testleri.
- Discord, Slack, Telegram, Mattermost, MS Teams, Feishu, LINE ve metin yedeği için kanal işleme matrisi testleri.
- Yerel alanların kaldırıldığını kanıtlayan ileti aracı şema testleri.
- Yerel bayrakların kaldırıldığını kanıtlayan CLI testleri.
- Carbon’u kapsayan Discord giriş noktası içe aktarım tembelliği regresyonu.
- Telegram ve genel yedeği kapsayan teslim sabitleme testleri.
Açık sorular
delivery.pinilk geçişte Discord, Slack, MS Teams ve Feishu için de mi uygulanmalı, yoksa önce yalnızca Telegram mı?deliverysonundareplyToId,replyToCurrent,silentveaudioAsVoicegibi mevcut alanları da içine almalı mı, yoksa gönderim sonrası davranışlara odaklı mı kalmalı?- Sunum doğrudan görselleri veya dosya referanslarını desteklemeli mi, yoksa medya şimdilik kullanıcı arayüzü düzeninden ayrı mı kalmalı?