clawhub: önekini kullanın.
Gereksinimler
- Node 22.22.3+, Node 24.15+ veya Node 25.9+ ve
npmya dapnpm. - TypeScript ESM modülleri.
- Depo içindeki paketlenmiş plugin çalışmaları için depoyu klonlayın ve
pnpm installkomutunu çalıştırın. OpenClaw, paketlenmiş plugin’leriextensions/*çalışma alanı paketlerinden keşfettiği için kaynak kod kullanıma alma üzerinden plugin geliştirme yalnızca pnpm ile yapılır.
Plugin biçimini seçme
Kanal plugin'i
OpenClaw’u bir mesajlaşma platformuna bağlayın.
Sağlayıcı plugin'i
Bir model, medya, arama, getirme, konuşma veya gerçek zamanlı sağlayıcı ekleyin.
CLI arka uç plugin'i
OpenClaw model geri dönüşü üzerinden yerel bir yapay zekâ CLI’sı çalıştırın.
Araç plugin'i
Ajan araçlarını kaydedin.
Hızlı başlangıç
Gerekli bir ajan aracını kaydederek asgari bir araç plugin’i oluşturun. Bu, kullanışlı en kısa plugin biçimidir ve paketi, manifesti, giriş noktasını ve yerel doğrulamayı kapsar.1
Paket meta verilerini oluşturma
contracts.tools içinde bulunmalıdır. activation.onStartup değerini
bilinçli olarak ayarlayın; bu örnek Gateway başlatılırken yüklenir.Ana makine tarafından güvenilen plugin yüzeyleri de manifest ile sınırlandırılır ve yüklü
plugin’ler için açık bildirim gerektirir: api.registerAgentToolResultMiddleware(...),
her hedef çalışma zamanının contracts.agentToolResultMiddleware içinde listelenmesini;
api.registerTrustedToolPolicy(...) ise her ilke kimliğinin
contracts.trustedToolPolicies içinde bulunmasını gerektirir. Bu bildirimler, yükleme sırasındaki
inceleme ile çalışma zamanı kaydını uyumlu tutar.Tüm manifest alanları için Plugin manifesti bölümüne bakın.2
Aracı kaydetme
index.ts
definePluginEntry kullanın. Kanal plugin’leri ise
bunun yerine openclaw/plugin-sdk/core içindeki defineChannelPluginEntry öğesini kullanır.3
Çalışma zamanını test etme
Yüklü veya harici bir plugin için yüklenen çalışma zamanını inceleyin:Plugin bir CLI komutu kaydediyorsa bu komutu da çalıştırıp çıktıyı
doğrulayın; örneğin
openclaw demo-plugin ping.Bu depodaki paketlenmiş bir plugin için OpenClaw, kaynak kod kullanıma alma
plugin paketlerini extensions/* çalışma alanından keşfeder. En yakın hedefli
testi çalıştırın:4
Paket yüklemesini test etme
Yayımlamadan önce, paketlemeye hazır bir plugin’i kullanıcıların elde edeceği
aynı yükleme biçimiyle test edin. Önce bir derleme adımı ekleyin,
openclaw.extensions gibi çalışma zamanı
girişlerini ./dist/index.js gibi derlenmiş JavaScript’e yönlendirin ve
npm pack öğesinin bu dist/ çıktısını içerdiğinden emin olun. TypeScript kaynak girişleri
yalnızca kaynak kod kullanıma almaları ve yerel geliştirme yolları içindir.Ardından plugin’i paketleyin ve tarball dosyasını npm-pack: ile yükleyin:npm-pack:, OpenClaw’un plugin başına yönetilen npm projesini kullanır; böylece
kaynak kod kullanıma alma testinin gizleyebileceği çalışma zamanı bağımlılığı hatalarını yakalar. Katalogla bağlantılı
resmî güveni değil, paket ve bağımlılık biçimini doğrular.
Çalışma zamanı içe aktarımları dependencies veya optionalDependencies içinde olmalıdır;
yalnızca devDependencies içinde bırakılan bağımlılıklar, yönetilen çalışma zamanı
projesi için yüklenmez.Resmî veya ayrıcalıklı plugin davranışının nihai doğrulaması olarak ham bir arşiv/yol
yüklemesi kullanmayın. Ham kaynaklar yerel hata ayıklama için kullanışlıdır ancak
npm veya ClawHub yüklemeleriyle aynı bağımlılık yolunu doğrulamaz. Plugin’iniz
güvenilen resmî plugin durumuna dayanıyorsa, katalog destekli resmî bir yükleme
veya resmî güveni kaydeden yayımlanmış bir paket yolu üzerinden ikinci bir doğrulama
ekleyin. Yükleme kökü ve bağımlılık sahipliği ayrıntıları için
Plugin bağımlılık çözümlemesi bölümüne
bakın.5
Yayımlama
Yayımlamadan önce paketi doğrulayın:Standart ClawHub paket parçacıkları
docs/snippets/plugin-publish/ içinde bulunur.6
Yükleme
Yayımlanan paketi ClawHub üzerinden yükleyin:
Araçları kaydetme
Araçlar gerekli veya isteğe bağlı olabilir. Gerekli araçlar, plugin etkin olduğunda her zaman kullanılabilir. İsteğe bağlı araçların, OpenClaw sahip plugin çalışma zamanını yüklemeden önce kullanıcının açıkça kabul etmesini gerektirir. Araç fabrikaları;deliveryContext, mevcut olduğunda etkin platform görüşmesi için
nativeChannelId ve requesterSenderId dahil olmak üzere güvenilen çalışma zamanı bağlamını alır.
outputSchema isteğe bağlıdır. Kod Modu ve
Araç Arama tarafından kullanılan yapılandırılmış details değerini açıklar. Katalog
çağrıları, yürütmeden önce geçersiz şemaları reddeder ve araç kancalarından sonra nihai değeri
doğrular. Kararlı bir JSON sonucu olmayan araçlarda bunu kullanmayın. Sözleşmenin tamamı için
Araç plugin’leri bölümüne bakın.
api.registerTool(...) ile kaydedilen her araç, plugin manifestinde de
bildirilmelidir:
tools.allow ile katılım sağlar:
name öğesinin eksik olması, execute öğesinin işlev olmaması veya parameters
nesnesi bulunmayan bir araç tanımlayıcısı.
Araç fabrikaları, çalışma zamanının sağladığı bir bağlam nesnesi alır. Bir aracın geçerli
dönüşte etkin modeli günlüğe kaydetmesi, görüntülemesi veya modele uyarlanması gerektiğinde
ctx.activeModel kullanın; bu, provider, modelId ve modelRef içerebilir. Bunu
yerel operatöre, yüklü plugin koduna veya değiştirilmiş bir OpenClaw çalışma zamanına karşı
güvenlik sınırı olarak değil, bilgilendirici çalışma zamanı meta verisi olarak değerlendirin. Hassas
yerel araçlar yine de açık bir plugin veya operatör katılımı gerektirmeli ve
etkin model meta verisi eksik ya da uygun değilse kapalı şekilde başarısız olmalıdır.
Manifest sahipliği ve keşfi bildirir; yürütme yine de canlı
kayıtlı araç uygulamasını çağırır. OpenClaw’un araç açıkça izin verilenler listesine
eklenene kadar bu plugin çalışma zamanını yüklemekten kaçınabilmesi için toolMetadata.<tool>.optional: true
ile api.registerTool(..., { optional: true }) öğelerini uyumlu tutun.
İçe aktarma kuralları
Odaklanmış SDK alt yollarından içe aktarın:api.ts ve
runtime-api.ts gibi yerel barrel dosyalarını kullanın. Kendi plugin’inizi bir
SDK yolu üzerinden içe aktarmayın. Sağlayıcıya özgü yardımcılar, bağlantı gerçekten
genel olmadığı sürece sağlayıcı paketinde kalmalıdır.
Özel Gateway RPC yöntemleri gelişmiş bir giriş noktasıdır. Bunları
plugin’e özgü bir önekte tutun; config.*,
exec.approvals.*, operator.admin.*, wizard.* ve update.* gibi çekirdek yönetici ad alanları ayrılmış
olarak kalır ve operator.admin olarak çözümlenir.
openclaw/plugin-sdk/gateway-method-runtime köprüsü, contracts.gatewayMethodDispatch: ["authenticated-request"] bildiren plugin HTTP
rotaları için ayrılmıştır.
İçe aktarma haritasının tamamı için Plugin SDK’ya genel bakış bölümüne bakın.
OpenClaw SDK uyumluluk alanları, düzenleyicilerin geçiş uyarıları olarak gösterdiği TypeScript
@deprecated ek açıklamalarını taşır. Bunları derleme sırasında zorunlu kılmak için
@typescript-eslint/no-deprecated gibi tür bilgisine duyarlı bir kuralı
etkinleştirin. Oxlint tür bilgisine duyarlı olmadığından bu ek açıklamaları zorunlu kılamaz.
Gönderim öncesi kontrol listesi
package.json doğru
openclaw meta verilerine sahipopenclaw.plugin.json manifesti mevcut ve geçerli
Giriş noktası
defineChannelPluginEntry veya definePluginEntry kullanıyorTüm içe aktarmalar odaklanmış
plugin-sdk/<subpath> yollarını kullanıyorDahili içe aktarmalar, SDK’nın kendi kendine içe aktarımlarını değil yerel modülleri kullanıyor
Testler geçiyor (
pnpm test <bundled-plugin-root>/my-plugin/)pnpm check geçiyor (depo içi pluginler)Beta sürümlerine karşı test etme
- openclaw/openclaw sürümlerini izleyin (
Watch>Releases). Beta etiketleriv2026.3.N-beta.1biçimindedir. Sürüm duyuruları için X’te @openclaw hesabını da takip edebilirsiniz. - Plugininizi beta etiketi yayımlanır yayımlanmaz buna karşı test edin. Kararlı sürümden önceki süre genellikle yalnızca birkaç saattir.
- Testten sonra
plugin-forumDiscord kanalındaki (discord.gg/clawd) plugin başlığınızaall 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 sorun açın veya mevcut sorunu güncelleyin vebeta-blockeretiketini uygulayın. Sorunu başlığınızda bağlantı olarak paylaşın. mainiçinfix(<plugin-id>): beta blocker - <summary>başlıklı bir PR açın ve sorunu hem PR’da hem de Discord başlığınızda bağlantı olarak paylaşın. Katkıda bulunanlar PR’lara etiket uygulayamaz; bu nedenle başlık, bakımcılar ve otomasyon için PR tarafındaki sinyaldir. PR’ı olan engelleyiciler birleştirilir; olmayan engelleyicilere rağmen sürüm yayımlanabilir.- Sessizlik, her şeyin yolunda olduğu anlamına gelir. Bu süreyi kaçırmak, düzeltmenizin genellikle bir sonraki döngüde dahil edilmesi demektir.
Sonraki adımlar
Kanal Pluginleri
Bir mesajlaşma kanalı plugini oluşturun
Sağlayıcı Pluginleri
Bir model sağlayıcı plugini oluşturun
CLI Arka Uç Pluginleri
Yerel bir yapay zekâ CLI arka ucu kaydedin
SDK'ya Genel Bakış
İçe aktarma eşlemesi ve kayıt API’si başvurusu
Çalışma Zamanı Yardımcıları
api.runtime aracılığıyla TTS, arama ve alt aracı
Test Etme
Test yardımcı araçları ve kalıpları
Plugin Manifesti
Tam manifest şeması başvurusu