Pluginleri yükleme ve kullanma
Plugin ekleme, etkinleştirme ve sorunlarını giderme konusunda son kullanıcı kılavuzu.
Plugin geliştirme
Çalışan en küçük manifesti içeren ilk Plugin öğreticisi.
Kanal pluginleri
Bir mesajlaşma kanalı Plugini geliştirin.
Sağlayıcı pluginleri
Bir model sağlayıcı Plugini geliştirin.
SDK'ye genel bakış
İçe aktarma eşlemesi ve kayıt API’si başvuru kaynağı.
Genel yetenek modeli
Yetenekler, OpenClaw içindeki genel yerel Plugin modelidir. Her yerel OpenClaw Plugini bir veya daha fazla yetenek türü için kaydolur:Sıfır yetenek kaydeden ancak kancalar, araçlar, keşif hizmetleri veya arka plan hizmetleri sağlayan bir Plugin, yalnızca eski kancaları kullanan bir Plugindir. Bu düzen hâlâ tam olarak desteklenmektedir.
Harici uyumluluk yaklaşımı
Yetenek modeli çekirdeğe eklenmiştir ve günümüzde paketle gelen/yerel pluginler tarafından kullanılmaktadır; ancak harici Plugin uyumluluğu için hâlâ “dışa aktarılmışsa dondurulmuştur” yaklaşımından daha sıkı bir ölçüt gerekir.
Amaçlanan yön yetenek kaydıdır. Geçiş sırasında eski kancalar, harici pluginler için bozulmaya yol açmayan en güvenli yol olmaya devam eder. Dışa aktarılan yardımcı alt yolların tümü eşit değildir; rastlantısal yardımcı dışa aktarımlar yerine dar kapsamlı, belgelenmiş sözleşmeleri tercih edin.
Plugin biçimleri
OpenClaw, yüklenen her Plugini yalnızca statik meta verilere göre değil, gerçek kayıt davranışına göre bir biçimde sınıflandırır:yalın-yetenek
yalın-yetenek
Tam olarak bir yetenek türü kaydeder (örneğin
arcee veya chutes gibi yalnızca sağlayıcı görevi gören bir Plugin).hibrit-yetenek
hibrit-yetenek
Birden fazla yetenek türü kaydeder (örneğin
openai; metin çıkarımı, konuşma, medya anlama ve görüntü oluşturmanın sahibidir).yalnızca-kanca
yalnızca-kanca
Yalnızca kancaları (türlü veya özel) kaydeder; yetenek, araç, komut veya hizmet kaydetmez.
yetenek-dışı
yetenek-dışı
Araçları, komutları, hizmetleri veya rotaları kaydeder ancak yetenek kaydetmez.
openclaw plugins inspect <id> kullanın. Ayrıntılar için CLI başvuru kaynağına bakın.
Uyumluluk sinyalleri
openclaw doctor, openclaw plugins inspect <id>, openclaw status --all ve openclaw plugins doctor şu uyumluluk bildirimlerini gösterir:
Bilgilendirme/uyarı sinyallerinin hiçbiri bugün Plugininizi bozmaz. Bu sinyaller
openclaw status --all ve openclaw plugins doctor içinde de görünür.
Mimariye genel bakış
OpenClaw’ın Plugin sistemi dört katmandan oluşur:1
Manifest + keşif
OpenClaw; yapılandırılmış yollarda, çalışma alanı köklerinde, genel Plugin köklerinde ve paketle gelen pluginlerde aday pluginleri bulur. Keşif önce yerel
openclaw.plugin.json manifestlerini ve desteklenen paket manifestlerini okur.2
Etkinleştirme + doğrulama
Çekirdek, keşfedilen bir Pluginin etkinleştirildiğine, devre dışı bırakıldığına, engellendiğine veya bellek gibi özel bir yuva için seçildiğine karar verir.
3
Çalışma zamanı yüklemesi
Yerel OpenClaw pluginleri işlem içinde yüklenir ve yetenekleri merkezi bir kayıt defterine kaydeder. Paketlenmiş JavaScript, yerel
require üzerinden yüklenir; üçüncü taraf yerel kaynak TypeScript için acil durum alternatifi Jiti’dir. Uyumlu paketler, çalışma zamanı kodu içe aktarılmadan kayıt defteri girdilerine dönüştürülür.4
Yüzey kullanımı
OpenClaw’ın geri kalanı araçları, kanalları, sağlayıcı kurulumunu, kancaları, HTTP rotalarını, CLI komutlarını ve hizmetleri sunmak için kayıt defterini okur.
- ayrıştırma zamanı meta verileri
registerCli(..., { descriptors: [...] })kaynağından gelir - gerçek Plugin CLI modülü tembel kalabilir ve ilk çağrıda kaydolabilir
- manifest/yapılandırma doğrulaması, Plugin kodu çalıştırılmadan manifest/şema meta verilerinden yapılabilmelidir
- yerel yetenek keşfi, etkinleştirme yapmayan bir kayıt defteri anlık görüntüsü oluşturmak için güvenilir Plugin giriş kodunu yükleyebilir
- yerel çalışma zamanı davranışı, Plugin modülünün
register(api)yolundan veapi.registrationMode === "full"ile gelir
Plugin meta verisi anlık görüntüsü ve arama tablosu
Gateway başlangıcı, geçerli yapılandırma anlık görüntüsü için birPluginMetadataSnapshot oluşturur. Anlık görüntü yalnızca meta verilerden oluşur: yüklü Plugin dizinini, manifest kayıt defterini, manifest tanılamalarını, sahip eşlemelerini, Plugin kimliği normalleştiricisini ve manifest kayıtlarını depolar. Yüklenmiş Plugin modüllerini, sağlayıcı SDK’lerini, paket içeriklerini veya çalışma zamanı dışa aktarımlarını içermez.
Pluginleri dikkate alan yapılandırma doğrulaması, başlangıçta otomatik etkinleştirme ve Gateway Plugin önyüklemesi; manifest/dizin meta verilerini birbirinden bağımsız olarak yeniden oluşturmak yerine bu anlık görüntüyü kullanır. PluginLookUpTable aynı anlık görüntüden türetilir ve geçerli çalışma zamanı yapılandırması için başlangıç Plugin planını ekler.
Gateway, başlangıçtan sonra geçerli meta veri anlık görüntüsünü değiştirilebilir bir çalışma zamanı ürünü olarak tutar. Yinelenen çalışma zamanı sağlayıcı keşfi, her sağlayıcı kataloğu geçişinde yüklü dizini ve manifest kayıt defterini yeniden oluşturmak yerine bu anlık görüntüyü ödünç alabilir. Gateway kapatıldığında, yapılandırma/Plugin envanteri değiştiğinde ve yüklü dizine yazıldığında anlık görüntü temizlenir veya değiştirilir; uyumlu ve geçerli bir anlık görüntü bulunmadığında çağıranlar soğuk manifest/dizin yoluna geri döner. Uyumluluk denetimleri, plugins.load.paths ve varsayılan ajan çalışma alanı gibi Plugin keşif köklerini içermelidir; çünkü çalışma alanı pluginleri meta veri kapsamının parçasıdır.
Anlık görüntü ve arama tablosu, yinelenen başlangıç kararlarını hızlı yolda tutar:
- kanal sahipliği
- ertelenmiş kanal başlangıcı
- başlangıç Plugin kimlikleri
- sağlayıcı ve CLI arka uç sahipliği
- kurulum sağlayıcısı, komut diğer adı, model kataloğu sağlayıcısı ve manifest sözleşmesi sahipliği
- Plugin yapılandırma şeması ve kanal yapılandırma şeması doğrulaması
- başlangıçta otomatik etkinleştirme kararları
PluginLookUpTable almak yerine manifest kayıtlarını kalıcı yüklenmiş plugin dizininden doğrudan yeniden oluşturmaya devam ediyor. Bu yol artık kaydı istek üzerine yeniden oluşturuyor; çağıranda zaten mevcutsa çalışma zamanı akışları üzerinden geçerli arama tablosunu veya açık bir manifest kaydını aktarmayı tercih edin.
Etkinleştirme planlaması
Etkinleştirme planlaması, kontrol düzleminin bir parçasıdır. Çağıranlar, daha geniş çalışma zamanı kayıtlarını yüklemeden önce somut bir komut, sağlayıcı, kanal, rota, aracı koşum takımı veya yetenek için hangi pluginlerin ilgili olduğunu sorgulayabilir. Planlayıcı, mevcut manifest davranışının uyumluluğunu korur:activation.*alanları açık planlayıcı ipuçlarıdırproviders,channels,commandAliases,setup.providers,contracts.toolsve hook’lar manifest sahipliği geri dönüşü olmaya devam eder- yalnızca kimliklerden oluşan planlayıcı API’si mevcut çağıranlar için kullanılabilir kalır
- plan API’si neden etiketlerini bildirir; böylece tanılama, açık ipuçlarını sahiplik geri dönüşünden ayırt edebilir
Kanal pluginleri ve paylaşılan mesaj aracı
Kanal pluginlerinin normal sohbet eylemleri için ayrı bir gönderme/düzenleme/tepki verme aracı kaydetmesi gerekmez. OpenClaw, çekirdekte tek bir paylaşılanmessage aracı tutar ve kanal pluginleri bunun arkasındaki kanala özgü keşif ile yürütmenin sahipliğini üstlenir.
Geçerli sınır şöyledir:
- çekirdek; paylaşılan
messagearaç barındırıcısının, istem bağlantılarının, oturum/ileti dizisi kaydının ve yürütme yönlendirmenin sahibidir - kanal pluginleri; kapsamlı eylem keşfinin, yetenek keşfinin ve kanala özgü tüm şema parçalarının sahibidir
- kanal pluginleri; konuşma kimliklerinin ileti dizisi kimliklerini nasıl kodladığı veya üst konuşmalardan nasıl devralındığı gibi, sağlayıcıya özgü oturum konuşması dilbilgisinin sahibidir
- kanal pluginleri son eylemi kendi eylem bağdaştırıcıları üzerinden yürütür
ChannelMessageActionAdapter.describeMessageTool(...) şeklindedir. Bu birleşik keşif çağrısı, söz konusu parçaların birbirinden sapmaması için bir pluginin görünür eylemlerini, yeteneklerini ve şema katkılarını birlikte döndürmesine olanak tanır.
Mesaj eylemi adları, her aktarımın her eylemi işleyebilmesi için kasıtlı olarak kapalı ve çekirdeğin sahip olduğu bir söz dağarcığını kullanır. Pluginler eylem adlarını bir çekirdek PR’ı aracılığıyla ekler; çalışma zamanında kayıt kasıtlı olarak desteklenmez.
Kanala özgü bir mesaj aracı parametresi, yerel yol veya uzak medya URL’si gibi bir medya kaynağı taşıdığında plugin ayrıca describeMessageTool(...) içinden mediaSourceParams döndürmelidir. Çekirdek, pluginin sahip olduğu parametre adlarını sabit kodlamadan korumalı alan yol normalleştirmesi ve giden medya erişimi ipuçlarını uygulamak için bu açık listeyi kullanır. Profil kapsamlı bir medya parametresinin send gibi ilgisiz eylemlerde normalleştirilmemesi için burada kanal genelinde tek bir düz liste yerine eylem kapsamlı eşlemeleri tercih edin.
Çekirdek, çalışma zamanı kapsamını bu keşif adımına aktarır. Önemli alanlar şunlardır:
accountIdcurrentChannelIdcurrentThreadTscurrentMessageIdsessionKeysessionIdagentId- güvenilir gelen
requesterSenderId
message aracında kanala özgü dalları sabit kodlamadan, etkin hesaba, geçerli odaya/ileti dizisine/mesaja veya güvenilir istekte bulunanın kimliğine göre mesaj eylemlerini gizleyebilir ya da gösterebilir.
Gömülü çalıştırıcı yönlendirme değişikliklerinin hâlâ plugin işi olmasının nedeni budur: çalıştırıcı, geçerli sohbet/oturum kimliğini plugin keşif sınırına iletmekten sorumludur; böylece paylaşılan message aracı geçerli tur için kanalın sahip olduğu doğru yüzeyi sunar.
Kanalın sahip olduğu yürütme yardımcıları için kanal pluginleri, yürütme çalışma zamanını kendi plugin modülleri içinde tutmalıdır. Çekirdek artık src/agents/tools altında Discord, Slack, Telegram veya WhatsApp mesaj eylemi çalışma zamanlarının sahibi değildir. Ayrı plugin-sdk/*-action-runtime alt yolları yayımlamıyoruz ve bu pluginler kendi yerel çalışma zamanı kodlarını doğrudan pluginin sahip olduğu modüllerden içe aktarmalıdır.
Aynı sınır genel olarak sağlayıcı adını taşıyan SDK bağlantı noktaları için de geçerlidir: çekirdek Discord, Signal, Slack, WhatsApp veya benzer pluginler için kanala özgü kolaylık barrel’larını içe aktarmamalıdır. Çekirdeğin bir davranışa ihtiyacı varsa ya paketlenmiş pluginin kendi api.ts / runtime-api.ts barrel’ını kullanmalı ya da ihtiyacı paylaşılan SDK’da dar kapsamlı, genel bir yeteneğe yükseltmelidir.
Paketlenmiş pluginler de aynı kuralı izler. Paketlenmiş bir pluginin runtime-api.ts öğesi, kendi markalı openclaw/plugin-sdk/<plugin-id> cephesini yeniden dışa aktarmamalıdır. Bu markalı cepheler haricî pluginler ve eski tüketiciler için uyumluluk shim’leri olarak kalır; ancak paketlenmiş pluginler yerel dışa aktarımları ve openclaw/plugin-sdk/channel-policy, openclaw/plugin-sdk/runtime-store veya openclaw/plugin-sdk/webhook-ingress gibi dar kapsamlı genel SDK alt yollarını kullanmalıdır. Yeni kod, mevcut bir haricî ekosistemin uyumluluk sınırı gerektirmediği sürece plugin kimliğine özgü SDK cepheleri eklememelidir.
Özellikle anketler için iki yürütme yolu vardır:
outbound.sendPoll, ortak anket modeline uyan kanallar için paylaşılan temeldiractions.handleAction("poll"), kanala özgü anket semantiği veya ek anket parametreleri için tercih edilen yoldur
Yetenek sahipliği modeli
OpenClaw, yerel bir plugini ilgisiz entegrasyonların toplandığı bir paket olarak değil, bir şirketin veya özelliğin sahiplik sınırı olarak değerlendirir. Bunun anlamı şudur:- bir şirket plugini genellikle o şirketin OpenClaw’a dönük tüm yüzeylerinin sahibi olmalıdır
- bir özellik plugini genellikle sunduğu özellik yüzeyinin tamamının sahibi olmalıdır
- kanallar, sağlayıcı davranışını geçici biçimde yeniden uygulamak yerine paylaşılan çekirdek yeteneklerini kullanmalıdır
Çok yetenekli tedarikçi
Çok yetenekli tedarikçi
google; metin çıkarımı, CLI arka ucu, gömmeler, konuşma, gerçek zamanlı ses, medya anlama, görüntü/müzik/video üretimi ve web aramasının sahibidir. openai; metin çıkarımı, gömmeler, konuşma, gerçek zamanlı transkripsiyon, gerçek zamanlı ses, medya anlama ve görüntü/video üretiminin sahibidir. minimax; metin çıkarımının yanı sıra medya anlama, konuşma, görüntü/müzik/video üretimi ve web aramasının sahibidir.Tek yetenekli tedarikçi
Tek yetenekli tedarikçi
arcee ve chutes yalnızca metin çıkarımının; microsoft ise yalnızca konuşmanın sahibidir. Bir tedarikçi plugini, o tedarikçinin daha geniş yüzeyini kapsaması gerekene kadar bu kadar dar kalabilir.Özellik plugini
Özellik plugini
voice-call; çağrı aktarımı, araçlar, CLI, rotalar ve Twilio medya akışı köprülemesinin sahibidir; ancak tedarikçi pluginlerini doğrudan içe aktarmak yerine paylaşılan konuşma, gerçek zamanlı transkripsiyon ve gerçek zamanlı ses yeteneklerini kullanır.- bir tedarikçinin OpenClaw’a dönük yüzeyi, metin modelleri, konuşma, görüntüler ve videoyu kapsasa bile tek bir pluginde bulunur
- diğer tedarikçiler de kendi yüzey alanları için aynısını yapabilir
- kanallar, sağlayıcının hangi tedarikçi pluginine ait olduğunu önemsemez; çekirdeğin sunduğu paylaşılan yetenek sözleşmesini kullanırlar
- plugin = sahiplik sınırı
- yetenek = birden fazla pluginin uygulayabildiği veya kullanabildiği çekirdek sözleşmesi
1
Yeteneği tanımlayın
Eksik yeteneği çekirdekte tanımlayın.
2
SDK üzerinden sunun
Plugin API’si/çalışma zamanı üzerinden tür güvenli biçimde sunun.
3
Tüketicileri bağlayın
Kanalları/özellikleri bu yeteneğe bağlayın.
4
Tedarikçi uygulamaları
Tedarikçi pluginlerinin uygulamaları kaydetmesine olanak tanıyın.
Yetenek katmanlandırması
Kodun nereye ait olduğuna karar verirken şu zihinsel modeli kullanın:- Çekirdek yetenek katmanı
- Tedarikçi plugin katmanı
- Kanal/özellik plugin katmanı
Paylaşılan orkestrasyon, politika, geri dönüş, yapılandırma birleştirme kuralları, teslim semantiği ve tür güvenli sözleşmeler.
- çekirdek; yanıt zamanı TTS politikasının, geri dönüş sırasının, tercihlerin ve kanal tesliminin sahibidir
elevenlabs,google,microsoftveopenaisentez uygulamalarının sahibidirvoice-calltelefon TTS çalışma zamanı yardımcısını kullanır
Çok yetenekli şirket plugini örneği
Bir şirket plugini dışarıdan bakıldığında bütünlüklü hissettirmelidir. OpenClaw’ın modeller, konuşma, gerçek zamanlı transkripsiyon, gerçek zamanlı ses, medya anlama, görüntü üretimi, video üretimi, web getirme ve web araması için paylaşılan sözleşmeleri varsa bir tedarikçi tüm yüzeylerine tek bir yerde sahip olabilir:- tek bir plugin tedarikçi yüzeyinin sahibidir
- yetenek sözleşmelerinin sahibi hâlâ çekirdektir
- sağlayıcı isteği dönüştürme ve HTTP yardımcıları tedarikçi plugininde kalır
- kanallar ve özellik pluginleri tedarikçi kodunu değil,
api.runtime.*yardımcılarını kullanır - sözleşme testleri, pluginin sahip olduğunu belirttiği yetenekleri kaydettiğini doğrulayabilir
Yetenek örneği: video anlama
OpenClaw görüntü/ses/video anlamayı zaten tek bir paylaşılan yetenek olarak değerlendirir. Aynı sahiplik modeli burada da geçerlidir:1
Core sözleşmeyi tanımlar
Core, medya anlama sözleşmesini tanımlar.
2
Sağlayıcı pluginleri kaydolur
Sağlayıcı pluginleri, uygun olduğunda
describeImage, transcribeAudio ve describeVideo öğelerini kaydeder.3
Tüketiciler ortak davranışı kullanır
Kanallar ve özellik pluginleri, doğrudan sağlayıcı koduna bağlanmak yerine ortak core davranışını kullanır.
api.registerVideoGenerationProvider(...) uygulamalarını buna göre kaydeder.
Somut bir kullanıma sunma kontrol listesine mi ihtiyacınız var? Yetenek Tarifleri sayfasına bakın.
Sözleşmeler ve uygulama
Plugin API yüzeyi,OpenClawPluginApi içinde kasıtlı olarak türü belirlenmiş ve merkezileştirilmiştir. Bu sözleşme, desteklenen kayıt noktalarını ve bir pluginin güvenebileceği çalışma zamanı yardımcılarını tanımlar.
Bunun önemi:
- plugin yazarları tek bir kararlı dahili standarda sahip olur
- core, aynı sağlayıcı kimliğini kaydeden iki plugin gibi yinelenen sahiplikleri reddedebilir
- başlangıç, hatalı biçimlendirilmiş kayıtlar için eyleme dönüştürülebilir tanılamalar gösterebilir
- sözleşme testleri, paketlenmiş plugin sahipliğini uygulayabilir ve sessiz sapmaları önleyebilir
Çalışma zamanı kayıt uygulaması
Çalışma zamanı kayıt uygulaması
Plugin kayıt defteri, pluginler yüklenirken kayıtları doğrular. Örneğin yinelenen sağlayıcı kimlikleri, yinelenen konuşma sağlayıcısı kimlikleri ve hatalı biçimlendirilmiş kayıtlar, tanımsız davranış yerine plugin tanılamaları üretir.
Sözleşme testleri
Sözleşme testleri
OpenClaw’un sahipliği açıkça doğrulayabilmesi için paketlenmiş pluginler, test çalıştırmaları sırasında sözleşme kayıt defterlerinde yakalanır. Günümüzde bu; model sağlayıcıları, konuşma sağlayıcıları, web arama sağlayıcıları ve paketlenmiş kayıt sahipliği için kullanılır.
Bir sözleşmede neler bulunmalı
- İyi sözleşmeler
- Kötü sözleşmeler
- türü belirlenmiş
- küçük
- yeteneğe özgü
- core’a ait
- birden fazla plugin tarafından yeniden kullanılabilir
- sağlayıcı bilgisi gerektirmeden kanallar/özellikler tarafından kullanılabilir
Yürütme modeli
Yerel OpenClaw pluginleri, Gateway ile aynı işlem içinde çalışır. Korumalı alanda çalıştırılmazlar. Yüklenen bir yerel plugin, core koduyla aynı işlem düzeyindeki güven sınırına sahiptir. OpenClaw şu anda uyumlu paketleri meta veri/içerik paketleri olarak ele aldığından, bunlar varsayılan olarak daha güvenlidir. Mevcut sürümlerde bu çoğunlukla paketlenmiş Skills anlamına gelir. Paketlenmemiş pluginler için izin listeleri ve açık kurulum/yükleme yolları kullanın. Çalışma alanı pluginlerini üretim varsayılanları olarak değil, geliştirme zamanı kodu olarak değerlendirin. Paketlenmiş çalışma alanı paket adlarında plugin kimliğini npm adına bağlı tutun: varsayılan olarak@openclaw/<id>; paket kasıtlı olarak daha dar bir plugin rolü sunuyorsa -provider, -plugin, -speech, -sandbox veya -media-understanding gibi onaylanmış, türü belirlenmiş bir sonek kullanın.
Güven notu:
plugins.allow, kaynak menşeine değil plugin kimliklerine güvenir. Paketlenmiş bir pluginle aynı kimliğe sahip çalışma alanı plugini etkinleştirildiğinde/izin listesine eklendiğinde, kasıtlı olarak paketlenmiş kopyanın yerine geçer. Bu normaldir ve yerel geliştirme, yama testi ve acil düzeltmeler için kullanışlıdır. Paketlenmiş plugin güveni, kurulum meta verilerinden değil kaynak anlık görüntüsünden — yükleme anında diskte bulunan manifest ve koddan — belirlenir. Bozulmuş veya değiştirilmiş bir kurulum kaydı, paketlenmiş bir pluginin güven yüzeyini gerçek kaynağın beyan ettiğinin ötesine sessizce genişletemez.Dışa aktarma sınırı
OpenClaw, uygulama kolaylıklarını değil yetenekleri dışa aktarır. Yetenek kaydını herkese açık tutun. Sözleşme dışı yardımcı dışa aktarımları azaltın:- paketlenmiş plugine özgü yardımcı alt yollar
- genel API olarak tasarlanmamış çalışma zamanı tesisatı alt yolları
- sağlayıcıya özgü kolaylık yardımcıları
- uygulama ayrıntısı olan kurulum/ilk katılım yardımcıları
plugin-sdk/gateway-runtime, plugin-sdk/security-runtime ve enjekte edilen plugin API yetenekleri gibi genel SDK sözleşmelerine yükseltin.