defineToolPlugin yalnızca ajanların çağırabileceği araçlar ekleyen bir plugin oluşturur: kanal,
model sağlayıcısı, kanca, hizmet veya kurulum arka ucu içermez. OpenClaw’un plugin
çalışma zamanı kodunu yüklemeden araçları keşfetmesi için gereken manifest meta verilerini
oluşturur.
Sağlayıcı, kanal, kanca, hizmet veya karma yetenekli pluginler için bunun yerine
Plugin oluşturma, Kanal Pluginleri
veya Sağlayıcı Pluginleri ile başlayın.
Gereksinimler
- Node 22.22.3+, Node 24.15+ veya Node 25.9+.
- TypeScript ESM paket çıktısı.
typebox,dependenciesiçinde olmalıdır (yalnızcadevDependenciesiçinde değil; oluşturulan plugin bunu çalışma zamanında içe aktarır).openclaw >=2026.5.17,openclaw/plugin-sdk/tool-plugindışa aktarımını yapan ilk sürüm.dist/,openclaw.plugin.jsonvepackage.jsondosyalarını dağıtan bir paket kökü.
Hızlı başlangıç
plugins init şunları oluşturur:
npm run plugin:build, npm run build (tsc) ve ardından
openclaw plugins build --entry ./dist/index.js komutunu çalıştırır. npm run plugin:validate
yeniden oluşturur ve openclaw plugins validate --entry ./dist/index.js komutunu çalıştırır.
Başarılı doğrulama şu çıktıyı verir:
openclaw plugins init <id> seçenekleri:
Araç yazma
defineToolPlugin, plugin kimliğini, isteğe bağlı bir yapılandırma şemasını ve
statik bir araç listesini alır. Parametre ve yapılandırma türleri
TypeBox şemalarından çıkarılır.
İsteğe bağlı ve fabrika araçları
Kullanıcıların aracı bir modele gönderilmeden önce açıkça izin listesine alması gerekiyorsaoptional: true ayarlayın. openclaw plugins build, eşleşen
toolMetadata.<tool>.optional manifest girdisini yazar; böylece OpenClaw, plugin çalışma zamanı
kodunu yüklemeden aracın isteğe bağlı olduğunu görebilir.
factory kullanın. Somut araç
çalışma zamanında oluşturulsa da meta veriler statik kalır.
definePluginEntry kullanın.
Dönüş değerleri
defineToolPlugin, düz dönüş değerlerini OpenClaw araç sonucu
biçimine sarar:
- Modelin tam olarak bu metni görmesi gerektiğinde bir dize döndürün.
- Modelin biçimlendirilmiş JSON görmesini ve OpenClaw’un özgün değeri
detailsiçinde tutmasını istediğinizde JSON uyumlu bir değer döndürün.
AgentToolResult gerektiğinde veya mevcut bir
api.registerTool uygulamasını yeniden kullanmak istediğinizde fabrika aracı kullanın.
Çıktı sözleşmeleri
Bir araç kararlı, JSON uyumlu veriler döndürdüğündeoutputSchema ekleyin. Bu,
content içindeki biçimlendirilmiş metni değil, AgentToolResult.details içinde
saklanan özgün değeri açıklar:
details değerini köprü üzerinden döndürmeden önce doğrular.
Geçersiz bir şema aracın çalışmasına izin vermez; sonuç uyuşmazlığı tamamlanan
çağrının başarısız olmasına neden olur. Yapılandırılmış hata varyantları da dahil olmak üzere
istisna oluşturmayan tüm sonuç varyantlarını ekleyin veya sonuç kararlı değilse şemayı
kullanmayın. Güvenilir çıktı meta verileri model tarafından görünür hâle gelebileceğinden
şema açıklamalarına gizli veya hassas değerler koymayın.
Eksiksiz ve kompakt bir çıktı ipucu istediğinizde nesne katmanlarında
{ additionalProperties: false } kullanın; açık veya kesilmiş şemalar tools.describe(...)
üzerinden kullanılabilir kalır ancak eksiksiz hızlı dizin sözleşmeleri olarak duyurulmaz.
Fabrika araçları, döndürdükleri somut AnyAgentTool üzerinde
outputSchema bildirir. Statik tool({ factory }) bildirimi, çalışma zamanı
aracıyla uyumsuz hâle gelebileceği için ayrı bir çıktı şeması kabul etmez.
Yapılandırma
configSchema isteğe bağlıdır. Bunu atladığınızda OpenClaw katı bir boş nesne
şeması uygular; oluşturulan manifest yine de configSchema içerir.
configSchema kullanıldığında ikinci execute bağımsız değişkeninin
türü bundan çıkarılır:
Oluşturulan meta veriler
OpenClaw, plugin çalışma zamanı kodunu içe aktarmadan önce plugin manifestini okumalıdır.defineToolPlugin bunun için statik meta verileri sunar ve
openclaw plugins build bunları pakete yazar. Plugin kimliğini, adını, açıklamasını,
yapılandırma şemasını, etkinleştirmesini veya araç adlarını değiştirdikten sonra
oluşturucuyu yeniden çalıştırın:
contracts.tools önemli keşif sözleşmesidir: OpenClaw’a, kurulu her pluginin
çalışma zamanını yüklemeden her aracın hangi plugine ait olduğunu bildirir. Güncel olmayan
bir manifest, aracın keşifte bulunamamasına veya kayıt hatasının yanlış plugine
yüklenmesine neden olabilir.
Paket meta verileri
openclaw plugins build ayrıca package.json değerini seçilen çalışma zamanı
girdisiyle hizalar:
./dist/index.js) dağıtın.
Kaynak girdileri yalnızca çalışma alanı içindeki yerel geliştirmede çalışır.
CI’da doğrulama
Oluşturulan meta veriler güncel değilseplugins build --check, dosyaları yeniden
yazmadan başarısız olur:
@deprecated ek açıklamalarını taşır. Bunları CI’da 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. Bu nedenle
oluşturulan plugins init iskeleti bir kullanımdan kaldırma lint yapılandırması eklemez.
plugins validate şunları denetler:
openclaw.plugin.jsonmevcut ve normal manifest yükleyicisinden geçiyor.- Geçerli giriş,
defineToolPluginmeta verilerini dışa aktarıyor. - Oluşturulan manifest alanları giriş meta verileriyle eşleşiyor.
contracts.toolsbildirilen araç adlarıyla eşleşiyor.package.json,openclaw.extensionsöğesini seçilen çalışma zamanı girişine yönlendiriyor.
Yerel olarak yükleme ve inceleme
Ayrı bir OpenClaw çalışma kopyasından veya yüklü CLI’dan paket yolunu yükleyin:Yayımlama
Paket hazır olduğunda ClawHub aracılığıyla yayımlayın.clawhub package publish
bir kaynak alır: yerel klasör, GitHub deposu (owner/repo[@ref]) veya
tarball URL’si.
Sorun giderme
plugin entry not found: ./dist/index.js
Seçilen giriş dosyası mevcut değil. npm run build komutunu çalıştırın,
ardından openclaw plugins build --entry ./dist/index.js veya
openclaw plugins validate --entry ./dist/index.js komutunu yeniden çalıştırın.
plugin entry does not expose defineToolPlugin metadata
Giriş, defineToolPlugin tarafından oluşturulan bir değeri dışa aktarmadı.
Modülün varsayılan dışa aktarımının defineToolPlugin(...) sonucu olduğunu
doğrulayın veya --entry ile doğru girişi iletin.
openclaw.plugin.json generated metadata is stale
Manifest artık giriş meta verileriyle eşleşmiyor. Şunları çalıştırın:
openclaw.plugin.json hem de package.json değişikliklerini kaydedin.
package.json openclaw.extensions must include ./dist/index.js
Paket meta verileri farklı bir çalışma zamanı girişine işaret ediyor.
Oluşturucunun paket meta verilerini yayımlamayı amaçladığınız girişle
hizalaması için openclaw plugins build --entry ./dist/index.js komutunu çalıştırın.
Cannot find package 'typebox'
Derlenen Plugin, çalışma zamanında typebox öğesini içe aktarıyor.
Bunu dependencies içinde tutun; yeniden yükleyin, yeniden derleyin ve
doğrulamayı tekrar çalıştırın.
Araç yüklemeden sonra görünmüyor
Şunları sırayla kontrol edin:openclaw plugins inspect <plugin-id> --runtimeopenclaw plugins validate --root <plugin-root> --entry ./dist/index.jsopenclaw.plugin.json, beklenen araç adlarını içerencontracts.toolsöğesine sahip.package.json,openclaw.extensions: ["./dist/index.js"]öğesine sahip.- Plugin yüklendikten sonra Gateway yeniden başlatıldı veya yeniden yüklendi.