defineToolPlugin kullanın.
Önerilen akış şöyledir:
openclaw plugins initile bir paket iskeleti oluşturun.defineToolPluginile araçlar yazın.- JavaScript derleyin.
openclaw plugins buildileopenclaw.plugin.jsonvepackage.jsonmeta verilerini üretin.- Yayınlamadan veya kurmadan önce üretilen meta verileri doğrulayın.
Gereksinimler
- Node >= 22.
- TypeScript ESM paket çıktısı.
- Yapılandırma ve araç parametresi şemaları için
typebox. openclaw/plugin-sdk/tool-plugindışa aktaran ilk OpenClaw sürümü olanopenclaw >=2026.5.17.dist/,openclaw.plugin.jsonvepackage.jsongönderebilen bir paket kökü.
typebox içe aktarır, bu nedenle typebox yalnızca devDependencies içinde değil, dependencies içinde tutulmalıdır.
Hızlı başlangıç
Yeni bir Plugin paketi oluşturun:src/index.ts:echoaracı içeren birdefineToolPlugingirişi.src/index.test.ts: küçük bir meta veri testi.tsconfig.json:dist/için NodeNext TypeScript çıktısı.package.json: betikler, çalışma zamanı bağımlılıkları veopenclaw.extensions: ["./dist/index.js"].openclaw.plugin.json: ilk araç için üretilmiş manifest meta verileri.
Araç yazma
defineToolPlugin, Plugin kimliği, isteğe bağlı bir yapılandırma şeması ve statik bir araç listesi alır. Parametre ve yapılandırma türleri TypeBox şemalarından çıkarımlanır.
İsteğe bağlı ve fabrika araçları
Kullanıcıların aracın 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 aracı Plugin çalışma zamanı kodunu yüklemeden keşfedebilir.
Bir aracın oluşturulmadan önce çalışma zamanı araç bağlamına ihtiyacı olduğunda factory kullanın. Fabrika, aracın belirli bir çalıştırma için devre dışı kalmasına, sandbox durumunu incelemesine veya çalışma zamanı yardımcılarını bağlamasına izin verirken meta verileri statik tutar.
definePluginEntry kullanın.
Dönüş değerleri
defineToolPlugin, düz dönüş değerlerini OpenClaw araç sonucu biçimine sarar:
- Modelin tam olarak o metni görmesi gerekiyorsa bir dize döndürün.
- Modelin biçimlendirilmiş JSON görmesini ve OpenClaw’ın özgün değeri
detailsiçinde tutmasını istiyorsanız JSON uyumlu bir değer döndürün.
AgentToolResult döndürmeniz veya mevcut bir api.registerTool uygulamasını yeniden kullanmanız gerektiğinde fabrika aracı kullanın. Tamamen dinamik araçlara veya karma Plugin yeteneklerine ihtiyacınız olduğunda defineToolPlugin yerine definePluginEntry kullanın.
Yapılandırma
configSchema isteğe bağlıdır. Atlanırsa OpenClaw katı bir boş nesne şeması kullanır ve üretilen manifest yine de configSchema içerir.
configSchema eklediğinizde, ikinci execute bağımsız değişkeni şemadan türlenir:
Üretilen meta veriler
OpenClaw, kurulu Plugin’leri soğuk meta verilerden keşfeder. Plugin manifestini, Plugin çalışma zamanı kodunu içe aktarmadan önce okuyabilmelidir. Bu nedenledefineToolPlugin statik meta verileri açığa çıkarır ve openclaw plugins build bu meta verileri pakete yazar.
Plugin kimliğini, adını, açıklamasını, yapılandırma şemasını, etkinleştirmeyi veya araç adlarını değiştirdikten sonra oluşturucuyu çalıştırın:
contracts.tools önemli keşif sözleşmesidir. OpenClaw’a, kurulu her Plugin çalışma zamanını yüklemeden her aracın hangi Plugin’e ait olduğunu söyler. Manifest güncel değilse araç keşifte eksik olabilir veya bir kayıt hatasından yanlış Plugin sorumlu tutulabilir.
Paket meta verileri
Basit araç Plugin’i iş akışı içinopenclaw plugins build, package.json dosyasını seçilen tek çalışma zamanı girişiyle hizalar:
./dist/index.js gibi derlenmiş JavaScript kullanın. Kaynak girdiler çalışma alanı geliştirmesinde yararlıdır, ancak yayınlanan paketler TypeScript çalışma zamanı yüklemesine bağımlı olmamalıdır.
CI’da doğrulama
Üretilen meta veriler güncel olmadığında dosyaları yeniden yazmadan CI’ı başarısız kılmak içinplugins build --check kullanın:
plugins validate şunları denetler:
openclaw.plugin.jsonvardır ve normal manifest yükleyicisinden geçer.- Geçerli giriş
defineToolPluginmeta verilerini dışa aktarır. - Üretilen manifest alanları giriş meta verileriyle eşleşir.
contracts.toolsbildirilen araç adlarıyla eşleşir.package.json,openclaw.extensionsöğesini seçilen çalışma zamanı girişine yönlendirir.
Yerel olarak kurma ve inceleme
Ayrı bir OpenClaw checkout’ından veya kurulu CLI’dan paket yolunu kurun:Yayınlama
Paket hazır olduğunda ClawHub üzerinden yayınlayın:Sorun giderme
plugin entry not found: ./dist/index.js
Seçilen giriş dosyası yok. npm run build ç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şturulmuş bir değer dışa aktarmadı. Modül varsayılan dışa aktarımının defineToolPlugin(...) sonucu olduğunu denetleyin veya --entry ile doğru girişi geçirin.
openclaw.plugin.json generated metadata is stale
Manifest artık giriş meta verileriyle eşleşmiyor. Şunu çalıştırın:
openclaw.plugin.json hem de package.json değişikliklerini commit’leyin.
package.json openclaw.extensions must include ./dist/index.js
Paket meta verileri farklı bir çalışma zamanı girişini gösteriyor. Oluşturucunun paket meta verilerini göndermeyi amaçladığınız girişle hizalaması için openclaw plugins build --entry ./dist/index.js çalıştırın.
Cannot find package 'typebox'
Derlenmiş Plugin çalışma zamanında typebox içe aktarır. typebox öğesini dependencies içinde tutun, paket bağımlılıklarını yeniden kurun, yeniden derleyin ve doğrulamayı yeniden çalıştırın.
Araç kurulumdan sonra görünmüyor
Bunları sırayla denetleyin:openclaw plugins inspect <plugin-id> --runtimeopenclaw plugins validate --root <plugin-root> --entry ./dist/index.jsopenclaw.plugin.json, beklenen araç adlarıylacontracts.toolsiçerir.package.json,openclaw.extensions: ["./dist/index.js"]içerir.- Plugin kurulduktan sonra Gateway yeniden başlatıldı veya yeniden yüklendi.