Building Plugins
Plugins, OpenClaw’ı yeni yeteneklerle genişletir: kanallar, model sağlayıcıları, konuşma, gerçek zamanlı transkripsiyon, gerçek zamanlı ses, medya anlama, görsel oluşturma, video oluşturma, web getirme, web arama, agent araçları veya bunların herhangi bir kombinasyonu. Plugin’inizi OpenClaw deposuna eklemeniz gerekmez. Şuraya yayımlayın: ClawHub veya npm, ardından kullanıcılaropenclaw plugins install <package-name> ile yükler. OpenClaw önce ClawHub’ı dener
ve ardından otomatik olarak npm’e geri döner.
Önkoşullar
- Node >= 22 ve bir paket yöneticisi (npm veya pnpm)
- TypeScript (ESM) bilgisi
- Depo içi plugin’ler için: depo klonlanmış olmalı ve
pnpm installçalıştırılmış olmalı
Ne tür bir plugin?
Kanal plugin'i
OpenClaw’ı bir mesajlaşma platformuna bağlayın (Discord, IRC vb.)
Sağlayıcı plugin'i
Bir model sağlayıcısı ekleyin (LLM, proxy veya özel uç nokta)
Araç / hook plugin'i
Agent araçları, olay hook’ları veya hizmetleri kaydedin — aşağıdan devam edin
openclaw/plugin-sdk/channel-setup içinden
createOptionalChannelSetupSurface(...) kullanın. Bu, yükleme gereksinimini
duyuran ve plugin yüklenene kadar gerçek yapılandırma yazımlarında güvenli
şekilde başarısız olan bir kurulum bağdaştırıcısı + sihirbaz çifti üretir.
Hızlı başlangıç: araç plugin’i
Bu rehber, bir agent aracı kaydeden minimal bir plugin oluşturur. Kanal ve sağlayıcı plugin’leri için yukarıda bağlantısı verilen özel rehberler vardır.Paketi ve manifest'i oluşturun
docs/snippets/plugin-publish/ içinde bulunur.Giriş noktasını yazın
definePluginEntry, kanal olmayan plugin’ler içindir. Kanallar için
defineChannelPluginEntry kullanın — bkz. Channel Plugins.
Tam giriş noktası seçenekleri için bkz. Entry Points.Test edin ve yayımlayın
Harici plugin’ler: ClawHub ile doğrulayın ve yayımlayın, sonra yükleyin:OpenClaw,
@myorg/openclaw-my-plugin gibi yalın paket belirtimleri için
npm’den önce ClawHub’ı da kontrol eder.Depo içi plugin’ler: paketlenmiş plugin çalışma alanı ağacının altına yerleştirin — otomatik olarak keşfedilir.Plugin yetenekleri
Tek bir plugin,api nesnesi üzerinden istediği sayıda yetenek kaydedebilir:
| Yetenek | Kayıt yöntemi | Ayrıntılı rehber |
|---|---|---|
| Metin çıkarımı (LLM) | api.registerProvider(...) | Provider Plugins |
| CLI çıkarım arka ucu | api.registerCliBackend(...) | CLI Backends |
| Kanal / mesajlaşma | api.registerChannel(...) | Channel Plugins |
| Konuşma (TTS/STT) | api.registerSpeechProvider(...) | Provider Plugins |
| Gerçek zamanlı transkripsiyon | api.registerRealtimeTranscriptionProvider(...) | Provider Plugins |
| Gerçek zamanlı ses | api.registerRealtimeVoiceProvider(...) | Provider Plugins |
| Medya anlama | api.registerMediaUnderstandingProvider(...) | Provider Plugins |
| Görsel oluşturma | api.registerImageGenerationProvider(...) | Provider Plugins |
| Video oluşturma | api.registerVideoGenerationProvider(...) | Provider Plugins |
| Web getirme | api.registerWebFetchProvider(...) | Provider Plugins |
| Web arama | api.registerWebSearchProvider(...) | Provider Plugins |
| Agent araçları | api.registerTool(...) | Aşağıda |
| Özel komutlar | api.registerCommand(...) | Entry Points |
| Olay hook’ları | api.registerHook(...) | Entry Points |
| HTTP rotaları | api.registerHttpRoute(...) | Internals |
| CLI alt komutları | api.registerCli(...) | Entry Points |
config.*,
exec.approvals.*, wizard.*, update.*) ayrılmış kalır ve bir plugin daha
dar bir kapsam istese bile her zaman operator.admin olarak çözülür.
Aklınızda bulundurmanız gereken hook guard semantiği:
before_tool_call:{ block: true }nihaidir ve daha düşük öncelikli işleyicileri durdurur.before_tool_call:{ block: false }karar verilmemiş gibi değerlendirilir.before_tool_call:{ requireApproval: true }agent yürütmesini duraklatır ve exec onay katmanı, Telegram düğmeleri, Discord etkileşimleri veya herhangi bir kanaldaki/approvekomutu üzerinden kullanıcıdan onay ister.before_install:{ block: true }nihaidir ve daha düşük öncelikli işleyicileri durdurur.before_install:{ block: false }karar verilmemiş gibi değerlendirilir.message_sending:{ cancel: true }nihaidir ve daha düşük öncelikli işleyicileri durdurur.message_sending:{ cancel: false }karar verilmemiş gibi değerlendirilir.
/approve komutu hem exec hem de plugin onaylarını sınırlı geri dönüşle işler:
bir exec onay kimliği bulunamadığında OpenClaw aynı kimliği plugin onayları
üzerinden yeniden dener. Plugin onay yönlendirmesi, yapılandırmadaki
approvals.plugin üzerinden bağımsız olarak yapılandırılabilir.
Özel onay akışının aynı sınırlı geri dönüş durumunu algılaması gerekiyorsa,
onay süresi dolma dizgelerini elle eşleştirmek yerine
openclaw/plugin-sdk/error-runtime içinden isApprovalNotFoundError
kullanmayı tercih edin.
Ayrıntılar için bkz. SDK Overview hook decision semantics.
Agent araçlarını kaydetme
Araçlar, LLM’nin çağırabildiği türlendirilmiş işlevlerdir. Zorunlu (her zaman kullanılabilir) veya isteğe bağlı (kullanıcının açıkça etkinleştirmesi gerekir) olabilirler:- Araç adları çekirdek araçlarla çakışmamalıdır (çakışmalar atlanır)
- Yan etkileri veya ek ikili gereksinimleri olan araçlar için
optional: truekullanın - Kullanıcılar
tools.allowiçine plugin kimliğini ekleyerek bir plugin’deki tüm araçları etkinleştirebilir
İçe aktarma kuralları
Her zaman odaklıopenclaw/plugin-sdk/<subpath> yollarından içe aktarın:
api.ts, runtime-api.ts) kullanın — kendi plugin’inizi asla SDK yolu
üzerinden içe aktarmayın.
Sağlayıcı plugin’leri için, sağlayıcıya özgü yardımcıları gerçekten genel bir
ayrım yüzeyi olmadıkça bu paket kökü barrel dosyalarında tutun. Güncel paketlenmiş örnekler:
- Anthropic: Claude akış sarmalayıcıları ve
service_tier/ beta yardımcıları - OpenAI: sağlayıcı oluşturucuları, varsayılan model yardımcıları, gerçek zamanlı sağlayıcılar
- OpenRouter: sağlayıcı oluşturucusu ile onboarding/yapılandırma yardımcıları
openclaw/plugin-sdk/* içine taşımak yerine ilgili paket kökü ayrım yüzeyinde tutun.
Bazı oluşturulmuş openclaw/plugin-sdk/<bundled-id> yardımcı ayrım yüzeyleri,
örneğin plugin-sdk/feishu-setup veya plugin-sdk/zalo-setup, paketlenmiş
plugin bakımı ve uyumluluğu için hâlâ vardır. Bunları, yeni üçüncü taraf
plugin’ler için varsayılan desen olarak değil, ayrılmış yüzeyler olarak ele alın.
Gönderim öncesi kontrol listesi
package.json doğru
openclaw meta verilerine sahipopenclaw.plugin.json manifest’i mevcut ve geçerli
Giriş noktası
defineChannelPluginEntry veya definePluginEntry kullanıyorTüm içe aktarmalar odaklı
plugin-sdk/<subpath> yollarını kullanıyorDahili içe aktarmalar SDK öz-içe aktarmaları değil, yerel modülleri kullanıyor
Testler geçiyor (
pnpm test -- <bundled-plugin-root>/my-plugin/)pnpm check geçiyor (depo içi plugin’ler)Beta Sürüm Testi
- openclaw/openclaw üzerindeki GitHub sürüm etiketlerini izleyin ve
Watch>Releasesile abone olun. Beta etiketleriv2026.3.N-beta.1gibi görünür. Sürüm duyuruları için resmi OpenClaw X hesabı @openclaw bildirimlerini de açabilirsiniz. - Etiket görünür görünmez plugin’inizi beta etiketiyle test edin. Kararlı sürüm öncesindeki pencere genellikle yalnızca birkaç saattir.
- Testten sonra
plugin-forumDiscord kanalında plugin’inizin başlığındaall goodveya neyin bozulduğunu yazın. Henüz bir başlığınız yoksa oluşturun. - Bir şey bozulursa,
Beta blocker: <plugin-name> - <summary>başlıklı bir issue açın veya mevcut olanı güncelleyin vebeta-blockeretiketini uygulayın. Issue bağlantısını başlığınıza ekleyin. mainiçinfix(<plugin-id>): beta blocker - <summary>başlıklı bir PR açın ve issue’yu hem PR’da hem de Discord başlığınızda bağlayın. Katkıcılar PR’leri etiketleyemez, bu yüzden başlık, bakımcılar ve otomasyon için PR tarafındaki sinyaldir. PR’si olan engelleyiciler birleştirilir; olmayanlar yine de yayımlanabilir. Bakımcılar beta testi sırasında bu başlıkları izler.- Sessizlik yeşil anlamına gelir. Pencereyi kaçırırsanız, düzeltmeniz büyük olasılıkla bir sonraki döngüye kalır.
Sonraki adımlar
Channel Plugins
Bir mesajlaşma kanal plugin’i oluşturun
Provider Plugins
Bir model sağlayıcı plugin’i oluşturun
SDK Overview
İçe aktarma haritası ve kayıt API başvurusu
Runtime Helpers
api.runtime üzerinden TTS, arama, alt agentTesting
Test yardımcıları ve desenleri
Plugin Manifest
Tam manifest şeması başvurusu
İlgili
- Plugin Architecture — dahili mimari derinlemesine incelemesi
- SDK Overview — Plugin SDK başvurusu
- Manifest — plugin manifest biçimi
- Channel Plugins — kanal plugin’leri oluşturma
- Provider Plugins — sağlayıcı plugin’leri oluşturma