package.json meta verileri), manifestler (openclaw.plugin.json), kurulum girişleri ve yapılandırma şemaları için başvuru kaynağı.
Paket meta verileri
package.json dosyanız, plugin sistemine plugininizin ne sağladığını bildiren bir openclaw alanına ihtiyaç duyar:
- Kanal plugini
- Sağlayıcı plugini / ClawHub temel yapılandırması
ClawHub’da harici olarak yayımlamak için
compat ve build gereklidir. Standart yayımlama kod parçacıkları docs/snippets/plugin-publish/ içinde bulunur.openclaw alanları
string[]
Giriş noktası dosyaları (paket köküne göre). Çalışma alanı ve git çalışma kopyası geliştirmesi için geçerli kaynak girişleridir.
string[]
extensions için derlenmiş JavaScript eş dosyaları; OpenClaw yüklü bir npm paketini yüklediğinde tercih edilir. Kaynak/derlenmiş çözümleme sırası için SDK giriş noktaları bölümüne bakın.string
Yalnızca kurulum için kullanılan hafif giriş (isteğe bağlı).
string
setupEntry için derlenmiş JavaScript eş dosyası. setupEntry değerinin de ayarlanmasını gerektirir.object
Bir pluginin kimlik veya etiket türetilebilecek kanal/sağlayıcı meta verileri olmadığında kullanılan
{ id, label } yedek plugin kimliği.object
Kurulum, seçici, hızlı başlangıç ve durum yüzeyleri için kanal kataloğu meta verileri.
object
Yükleme ipuçları:
npmSpec, localPath, defaultChoice, minHostVersion, expectedIntegrity, allowInvalidConfigRecovery, requiredPlatformPackages.object
Başlangıç davranışı bayrakları.
object
Bu pluginin desteklediği
pluginApi sürüm aralığı. Harici ClawHub yayımları için gereklidir.Sağlayıcı kimlikleri (
providers: string[]) paket meta verileri değil, manifest meta verileridir. Bunları burada değil, openclaw.plugin.json içinde bildirin — Plugin manifesti bölümüne bakın.openclaw.channel
openclaw.channel, çalışma zamanı yüklenmeden önce kanal keşfi ve kurulum yüzeyleri için düşük maliyetli paket meta verileridir.
Kanalın sahip olduğu kurulum alanları
Kanal pluginleri, kurulum alanlarını çalışma zamanı kodundadefineChannelSetupContract(...) ile bir kez tanımlamalı ve eşleşen serileştirilebilir izdüşümü openclaw.channel.setup.fields altında yayımlamalıdır. Çalışma zamanı tanımı, plugine özgü yerel girdi türünü çıkarır, hem yönlendirmeli hem de etkileşimsiz değerleri ayrıştırır ve kanala özgü anahtarları çekirdek türlerin dışında tutar. Paket meta verileri, openclaw channels add <channel-id> --help ve openclaw channels add --channel <channel-id> --help bileşenlerinin plugini yüklemeden yalnızca seçilen kanalın seçeneklerini keşfetmesini sağlar.
string, boolean, integer, string-list ve choice şeklindedir. Kimlik bilgileri için sensitive: true kullanın. Her alan anahtarı, olumsuz biçimler dâhil olmak üzere uzun CLI bayrağının camelCase biçimli öznitelik adına eşit olmalıdır; örneğin --api-token için apiToken. Hem olumlu hem de --no-* biçimleri gerektiğinde Boolean alanları cli.negatedFlags ekleyebilir. channel, account ve hesap görüntüleme name ortak denetim zarfı olarak kalır.
Yayımlanmış setup/ChannelSetupInput bağdaştırıcısı, mevcut harici pluginler için kullanılabilir olmaya devam eder. Yeni pluginler setupContract sunmalıdır; her ikisi de mevcut olduğunda OpenClaw her zaman bunu tercih eder.
Örnek:
exposure şunları destekler:
configured: kanalı yapılandırılmış/durum tarzı listeleme yüzeylerine dâhil edersetup: kanalı etkileşimli kurulum/yapılandırma seçicilerine dâhil ederdocs: kanalı doküman/gezinme yüzeylerinde herkese açık olarak işaretler
openclaw.install
openclaw.install, manifest meta verisi değil, paket meta verisidir.
İlk katılım davranışı
İlk katılım davranışı
Etkileşimli ilk katılım, isteğe bağlı kurulum yüzeyleri için
openclaw.install kullanır: Plugin’iniz çalışma zamanı yüklenmeden önce sağlayıcı kimlik doğrulama seçeneklerini veya kanal kurulumu/katalog meta verilerini sunuyorsa ilk katılım, ClawHub, npm veya yerel kurulum seçimini isteyebilir; Plugin’i kurabilir ya da etkinleştirebilir ve ardından seçilen akışa devam edebilir. ClawHub seçenekleri clawhubSpec kullanır ve mevcut olduklarında tercih edilir; npm seçenekleri, kayıt defteri npmSpec içeren güvenilir katalog meta verileri gerektirir (tam sürümler ve expectedIntegrity isteğe bağlı sabitlemelerdir; ayarlandıklarında kurulum/güncelleme sırasında zorunlu tutulurlar). “Neyin gösterileceğini” openclaw.plugin.json içinde, “nasıl kurulacağını” ise package.json içinde tutun.minHostVersion zorunluluğu
minHostVersion zorunluluğu
minHostVersion ayarlanmışsa hem kurulum hem de paketle birlikte gelmeyen bildirim-kayıt defteri yüklemesi bunu zorunlu tutar. Daha eski ana makineler harici Plugin’leri atlar; geçersiz sürüm dizeleri reddedilir. Paketle birlikte gelen kaynak Plugin’lerin, ana makine kaynak kodu teslimiyle aynı sürümde olduğu varsayılır.Sabitlenmiş npm kurulumları
Sabitlenmiş npm kurulumları
Sabitlenmiş npm kurulumlarında tam sürümü
npmSpec içinde tutun ve beklenen yapıt bütünlüğünü ekleyin:allowInvalidConfigRecovery kapsamı
allowInvalidConfigRecovery kapsamı
allowInvalidConfigRecovery, bozuk yapılandırmalar için genel bir atlatma yöntemi değildir. Yalnızca paketle birlikte gelen Plugin’lere yönelik dar kapsamlı bir kurtarma özelliğidir ve yeniden kurulumun/kurulumun, eksik bir paketle birlikte gelen Plugin yolu veya aynı Plugin’e ait eski bir channels.<id> girdisi gibi bilinen yükseltme kalıntılarını onarmasını sağlar. Yapılandırma ilgisiz nedenlerle bozuksa kurulum yine kapalı biçimde başarısız olur ve operatöre openclaw doctor --fix çalıştırmasını söyler.Ertelenmiş tam yükleme
Kanal Plugin’leri, aşağıdaki yapılandırmayla ertelenmiş yüklemeyi seçebilir:setupEntry yükler. Tam giriş, Gateway dinlemeye başladıktan sonra yüklenir.
Kurulum/tam girişiniz Gateway RPC yöntemlerini kaydediyorsa bunları Plugin’e özgü bir ön ek altında tutun. Ayrılmış temel yönetici ad alanları (config.*, exec.approvals.*, wizard.*, update.*) temel bileşenin mülkiyetinde kalır ve her zaman operator.admin olarak normalleştirilir.
Plugin bildirimi
Her yerel Plugin, paket kökünde biropenclaw.plugin.json sunmalıdır. OpenClaw bunu, Plugin kodunu çalıştırmadan yapılandırmayı doğrulamak için kullanır.
channels ekleyin (sağlayıcı Plugin’leri de providers ekler):
ClawHub’da yayımlama
Skills ve Plugin paketleri ayrı ClawHub yayımlama komutları kullanır. Plugin paketleri için pakete özgü komutu kullanın:clawhub skill publish <path>, bir Plugin paketini değil bir beceri klasörünü yayımlamak için kullanılan farklı bir komuttur. Bkz. ClawHub’da Yayımlama.Kurulum girişi
setup-entry.ts, OpenClaw’ın yalnızca kurulum yüzeylerine (ilk katılım, yapılandırma onarımı, devre dışı bırakılmış kanal incelemesi) ihtiyaç duyduğunda yüklediği, index.ts için hafif bir alternatiftir:
defineSetupPluginEntry(...) yerine openclaw/plugin-sdk/channel-entry-contract kaynağındaki defineBundledChannelSetupEntry(...) öğesini kullanabilir. Paketle birlikte gelen bu sözleşme, kurulum zamanı çalışma ortamı bağlantılarının hafif ve açık kalabilmesi için isteğe bağlı bir runtime dışa aktarımını da destekler.
OpenClaw'ın tam giriş yerine setupEntry kullandığı durumlar
OpenClaw'ın tam giriş yerine setupEntry kullandığı durumlar
- Kanal devre dışıdır ancak kurulum/ilk katılım yüzeylerine ihtiyaç duyar.
- Kanal etkindir ancak yapılandırılmamıştır.
- Ertelenmiş yükleme etkindir (
deferConfiguredChannelFullLoadUntilAfterListen).
setupEntry'nin kaydetmesi gerekenler
setupEntry'nin kaydetmesi gerekenler
- Kanal Plugin nesnesi (
defineSetupPluginEntryaracılığıyla). - Gateway dinlemeden önce gerekli olan tüm HTTP yolları.
- Başlangıç sırasında gereken tüm Gateway yöntemleri.
config.* veya update.* gibi ayrılmış temel yönetici ad alanlarından kaçınmalıdır.setupEntry'nin İÇERMEMESİ gerekenler
setupEntry'nin İÇERMEMESİ gerekenler
- CLI kayıtları.
- Arka plan hizmetleri.
- Ağır çalışma zamanı içe aktarımları (kriptografi, SDK’lar).
- Yalnızca başlangıçtan sonra gereken Gateway yöntemleri.
Dar kapsamlı kurulum yardımcısı içe aktarımları
Yalnızca kurulum amaçlı sıcak yollar için, kurulum yüzeyinin yalnızca bir kısmına ihtiyacınız olduğunda daha geniş kapsamlıplugin-sdk/setup çatı öğesi yerine dar kapsamlı kurulum yardımcısı bağlantılarını tercih edin:
moveSingleAccountChannelSectionToDefaultAccount(...) gibi yapılandırma yaması yardımcılarını da içeren paylaşımlı kurulum araç kutusunun tamamını istediğinizde daha geniş kapsamlı plugin-sdk/setup bağlantısını kullanın.
Sabit kurulum sihirbazı metni için createSetupTranslator(...) kullanın. Sırasıyla OPENCLAW_LOCALE, LC_ALL, LC_MESSAGES ve LANG içindeki ilk boş olmayan değeri kullanır, ardından İngilizceye geri döner. Açık bir İngilizce geçersiz kılma değeri için OPENCLAW_LOCALE=en ayarlayın. Plugin’e özgü kurulum metnini Plugin’e ait kodda tutun ve paylaşımlı katalog anahtarlarını yalnızca ortak kurulum etiketleri, durum metni ve resmi paketle birlikte gelen Plugin kurulum metni için kullanın.
Kurulum yaması bağdaştırıcıları içe aktarma sırasında sıcak yol açısından güvenli kalır. Paketle birlikte gelen tek hesap yükseltme sözleşme yüzeyi araması tembel yürütülür; bu nedenle plugin-sdk/setup-runtime öğesini içe aktarmak, bağdaştırıcı gerçekten kullanılmadan önce paketle birlikte gelen sözleşme yüzeyi keşfini istekli biçimde yüklemez.
Kanalın sahip olduğu kurulum giriş alanları
ChannelSetupInput, kurulum çağıranları ve kanal
Plugin’leri tarafından paylaşılan genel bir zarftır. Kalıcı olarak türü belirtilmiş alanları name, token, tokenFile,
useEnv, allowFrom ve defaultTo öğeleridir. Plugin’e ait ek anahtarlar çalışma zamanı giriş nesnesinde yine
bulunabilir, ancak paylaşılan tür bir dizin imzası bildirmez.
Her Plugin kendi kurulum alanlarını bildirmeli ve daraltmalı veya
bağdaştırıcı sınırında Plugin’e ait bir şemayla doğrulamalıdır:
ChannelSetupInput üzerinde bildirilen kanala özgü alanlar, harici kaynak uyumluluğu için geçici olarak türlendirilmiş durumda kalır.
Bunlar kullanımdan kaldırılmıştır. Ağaç dışı yayımlanmış 426
kanal Plugin’ini kapsayan 2026-07-22 tarihli kayıt defteri taraması, okuyucusu olmayan 21 alanı kaldırdı ve bilinen
okuyucuları olan 22 alanı korudu. Korunan her alan, yayımlanmış hiçbir Plugin artık onu okumadığı anda silinir;
sürüm sınırı gerekmez. Yeni ve paketle birlikte gelen Plugin’ler bu
katmana dayanmamalıdır; sahip oldukları alanları yerel olarak bildirmelidir.
Kanalın sahip olduğu tek hesaplı yapılandırmanın yükseltilmesi
Bir kanal, tek hesaplı üst düzey yapılandırmadanchannels.<id>.accounts.* yapısına yükseltildiğinde, varsayılan paylaşılan davranış, yükseltilen hesap kapsamındaki değerleri accounts.default içine taşır.
Her kanal Plugin’i, kurulum bağdaştırıcısı aracılığıyla bu yükseltmeyi genişletebilir veya daraltabilir:
singleAccountKeysToMove: yükseltilen hesaba taşınması gereken ek üst düzey anahtarlarnamedAccountPromotionKeys: adlandırılmış hesaplar zaten mevcutsa yalnızca bu anahtarlar yükseltilen hesaba taşınır; paylaşılan politika/teslimat anahtarları kanal kökünde kalırresolveSingleAccountPromotionTarget(...): yükseltilen değerleri hangi mevcut hesabın alacağını seçer
singleAccountKeysToMove alanının bulunması, yükseltme sözleşmesinin tamamlandığını belirtir. Eski anahtar yükseltmesini devre dışı bırakmak için alanı boş bir dizi olsa bile bildirin. Alanı atlayan bağdaştırıcılar, önceden yayımlanmış Plugin’ler için okuyucu destekli bildirim öncesi yükseltme katmanını korur. 2026-07-22 tarihli kayıt defteri taraması, yayımlanmış bağımlısı olmayan 23 anahtarı kaldırdı ve altı ortak anahtar ile yalnızca kurulumda kullanılan rooms anahtarını korudu. Korunan her anahtar, yayımlanmış okuyucuları bildirimlere geçirildiği anda silinir; sürüm sınırı gerekmez.
Doctor’ın bu bildirimleri hafif, paketle birlikte gelen kurulum yapısından yüklemesi gerektiğinde Plugin paket bildiriminde openclaw.setupFeatures.configPromotion: true bildirin. Yalnızca kuruluma yönelik Plugin yüzeyi ile tam kanal Plugin’i aynı bildirimleri sunmalıdır.
Önceden çözümlenmiş bir Plugin ile moveSingleAccountChannelSectionToDefaultAccount(...) çağrılırken kurulum bağdaştırıcısını setupSurface olarak iletin. Çağıranın sağladığı kurulum yüzeyleri, yüklenen ve paketle birlikte gelen aramalara göre önceliklidir; böylece kapsamlı veya yalnızca kuruluma yönelik Plugin’ler genel kayıttan bağımsız kalır.
Matrix, paketle birlikte gelen güncel örnektir. Tam olarak bir adlandırılmış Matrix hesabı zaten mevcutsa veya
defaultAccount, Ops gibi standart olmayan mevcut bir anahtarı gösteriyorsa yükseltme, yeni bir accounts.default girdisi oluşturmak yerine bu hesabı korur.Yapılandırma şeması
Plugin yapılandırması, bildirim dosyanızdaki JSON Schema’ya göre doğrulanır. Kullanıcılar Plugin’leri şu şekilde yapılandırır:api.pluginConfig olarak alır.
Kanala özgü yapılandırma için bunun yerine kanal yapılandırması bölümünü kullanın:
Kanal yapılandırma şemaları oluşturma
Bir Zod şemasını Plugin’in sahip olduğu yapılandırma yapılarında kullanılanChannelConfigSchema sarmalayıcısına dönüştürmek için buildChannelConfigSchema kullanın:
channels.<id> öğesini inceleyebilmesi için oluşturulan JSON Schema’yı openclaw.plugin.json#channelConfigs içine yansıtın.
Kurulum sihirbazları
Kanal Plugin’leri,openclaw onboard için etkileşimli kurulum sihirbazları sağlayabilir. Sihirbaz, ChannelPlugin üzerindeki bir ChannelSetupWizard nesnesidir:
ChannelSetupWizard; textInputs, dmPolicy, allowFrom, groupAccess, prepare, finalize ve daha fazlasını da destekler. Paketle birlikte gelen tam bir örnek için Discord Plugin’inin src/setup-core.ts öğesine bakın.
Paylaşılan allowFrom istemleri
Paylaşılan allowFrom istemleri
Yalnızca standart
note -> prompt -> parse -> merge -> patch akışına ihtiyaç duyan DM izin listesi istemleri için openclaw/plugin-sdk/setup içindeki paylaşılan kurulum yardımcılarını tercih edin: createPromptParsedAllowFromForAccount(...) ve createTopLevelChannelParsedAllowFromPrompt(...).Standart kanal kurulum durumu
Standart kanal kurulum durumu
Yalnızca etiketler, puanlar ve isteğe bağlı ek satırlara göre değişen kanal kurulum durumu blokları için her Plugin’de aynı
status nesnesini elle oluşturmak yerine openclaw/plugin-sdk/setup içindeki createStandardChannelSetupStatus(...) öğesini tercih edin.İsteğe bağlı kanal kurulum yüzeyi
İsteğe bağlı kanal kurulum yüzeyi
Yalnızca belirli bağlamlarda görünmesi gereken isteğe bağlı kurulum yüzeyleri için İsteğe bağlı kurulum yüzeyinin yalnızca bir yarısına ihtiyaç duyduğunuzda
openclaw/plugin-sdk/channel-setup içindeki createOptionalChannelSetupSurface öğesini kullanın:plugin-sdk/channel-setup, daha düşük seviyeli createOptionalChannelSetupAdapter(...) ve createOptionalChannelSetupWizard(...) oluşturucularını da sunar.Oluşturulan isteğe bağlı bağdaştırıcı/sihirbaz, gerçek yapılandırma yazımlarında kapalı biçimde başarısız olur. validateInput, applyAccountConfig ve finalize genelinde tek bir kurulum gerekli iletisini yeniden kullanır ve docsPath ayarlandığında bir dokümantasyon bağlantısı ekler.İkili dosya destekli kurulum yardımcıları
İkili dosya destekli kurulum yardımcıları
İkili dosya destekli kurulum kullanıcı arayüzleri için aynı ikili dosya/durum bağlantı kodunu her kanala kopyalamak yerine paylaşılan temsilci yardımcılarını tercih edin:
createDetectedBinaryStatus(...): yalnızca etiketler, ipuçları, puanlar ve ikili dosya algılamasına göre değişen durum blokları içincreateCliPathTextInput(...): yol destekli metin girişleri içincreateDelegatedSetupWizardProxy(...):setupEntrydurum, hazırlama veya sonlandırma davranışını daha ağır bir tam sihirbaza tembel olarak iletmek zorunda olduğundacreateDelegatedTextInputShouldPrompt(...):setupEntryyalnızca birtextInputs[*].shouldPromptkararını temsilciye aktarmak zorunda olduğunda
Yayımlama ve yükleme
Harici Plugin’ler: ClawHub üzerinde yayımlayın, ardından yükleyin:- npm
- Yalnızca ClawHub
- npm paket belirtimi
clawhub:, npm:, git: veya npm-pack: kullanın — bkz. Plugin’leri yönetme.npm kaynaklı yüklemelerde
openclaw plugins install, paketi yaşam döngüsü betikleri devre dışı bırakılmış (--ignore-scripts) şekilde ~/.openclaw/npm/projects altında Plugin başına bir projeye yükler. Plugin bağımlılık ağaçlarını saf JS/TS olarak tutun ve postinstall derlemeleri gerektiren paketlerden kaçının.Gateway başlangıcı Plugin bağımlılıklarını yüklemez. npm/git/ClawHub yükleme akışları bağımlılık yakınsamasının sahibidir; yerel Plugin’lerin bağımlılıkları önceden yüklenmiş olmalıdır.
İlgili
- Plugin oluşturma — adım adım başlangıç kılavuzu
- Plugin bildirimi — tam bildirim şeması başvurusu
- SDK giriş noktaları —
definePluginEntryvedefineChannelPluginEntry