Skip to main content
Plugin paketleme (package.json meta verileri), manifestler (openclaw.plugin.json), kurulum girişleri ve yapılandırma şemaları için başvuru kaynağı.
Adım adım açıklama mı arıyorsunuz? Nasıl yapılır kılavuzları, paketlemeyi bağlam içinde ele alır: Kanal pluginleri ve Sağlayıcı pluginleri.

Paket meta verileri

package.json dosyanız, plugin sistemine plugininizin ne sağladığını bildiren bir openclaw alanına ihtiyaç duyar:
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ı kodunda defineChannelSetupContract(...) 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.
Desteklenen alan türleri 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 eder
  • setup: kanalı etkileşimli kurulum/yapılandırma seçicilerine dâhil eder
  • docs: kanalı doküman/gezinme yüzeylerinde herkese açık olarak işaretler

openclaw.install

openclaw.install, manifest meta verisi değil, paket meta verisidir.
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 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ında tam sürümü npmSpec içinde tutun ve beklenen yapıt bütünlüğünü ekleyin:
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:
Etkinleştirildiğinde OpenClaw, ön dinleme başlangıç aşamasında önceden yapılandırılmış kanallar için bile yalnızca setupEntry yükler. Tam giriş, Gateway dinlemeye başladıktan sonra yüklenir.
Ertelenmiş yüklemeyi yalnızca setupEntry, Gateway’in dinlemeye başlamadan önce ihtiyaç duyduğu her şeyi (kanal kaydı, HTTP yolları, Gateway yöntemleri) kaydediyorsa etkinleştirin. Gerekli başlangıç yetenekleri tam girişe aitse varsayılan davranışı koruyun.
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 bir openclaw.plugin.json sunmalıdır. OpenClaw bunu, Plugin kodunu çalıştırmadan yapılandırmayı doğrulamak için kullanır.
Kanal Plugin’leri için channels ekleyin (sağlayıcı Plugin’leri de providers ekler):
Yapılandırması olmayan Plugin’ler bile bir şema sunmalıdır. Boş bir şema geçerlidir:
Şema başvurusunun tamamı için Plugin bildirimi bölümüne bakın.

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:
Bu, kurulum akışları sırasında ağır çalışma zamanı kodunun (kriptografi kitaplıkları, CLI kayıtları, arka plan hizmetleri) yüklenmesini önler. Kurulum için güvenli dışa aktarımları yardımcı modüllerde tutan, çalışma alanıyla birlikte paketlenmiş kanallar, 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.
  • 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).
  • Kanal Plugin nesnesi (defineSetupPluginEntry aracılığıyla).
  • Gateway dinlemeden önce gerekli olan tüm HTTP yolları.
  • Başlangıç sırasında gereken tüm Gateway yöntemleri.
Bu başlangıç Gateway yöntemleri yine de config.* veya update.* gibi ayrılmış temel yönetici ad alanlarından kaçınmalıdır.
  • 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:
Daha önce doğrudan 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ırmadan channels.<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 anahtarlar
  • namedAccountPromotionKeys: 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ır
  • resolveSingleAccountPromotionTarget(...): 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:
Plugin’iniz kayıt sırasında bu yapılandırmayı 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ılan ChannelConfigSchema sarmalayıcısına dönüştürmek için buildChannelConfigSchema kullanın:
Sözleşmeyi zaten JSON Schema veya TypeBox biçiminde yazıyorsanız OpenClaw’ın meta veri yollarında Zod’dan JSON Schema’ya dönüştürmeyi atlayabilmesi için doğrudan yardımcıyı kullanın:
Üçüncü taraf Plugin’ler için soğuk yol sözleşmesi yine Plugin bildirimidir: yapılandırma şeması, kurulum ve kullanıcı arayüzü yüzeylerinin çalışma zamanı kodunu yüklemeden 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.
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(...).
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.
Yalnızca belirli bağlamlarda görünmesi gereken isteğe bağlı kurulum yüzeyleri için openclaw/plugin-sdk/channel-setup içindeki createOptionalChannelSetupSurface öğesini kullanın:
İsteğe bağlı kurulum yüzeyinin yalnızca bir yarısına ihtiyaç duyduğunuzda 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 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çin
  • createCliPathTextInput(...): yol destekli metin girişleri için
  • createDelegatedSetupWizardProxy(...): setupEntry durum, hazırlama veya sonlandırma davranışını daha ağır bir tam sihirbaza tembel olarak iletmek zorunda olduğunda
  • createDelegatedTextInputShouldPrompt(...): setupEntry yalnızca bir textInputs[*].shouldPrompt kararını temsilciye aktarmak zorunda olduğunda

Yayımlama ve yükleme

Harici Plugin’ler: ClawHub üzerinde yayımlayın, ardından yükleyin:
Yalın paket belirtimleri, ad paketle birlikte gelen veya resmî bir Plugin kimliğiyle eşleşmediği sürece başlatma geçişi sırasında npm’den yüklenir; eşleşirse OpenClaw bunun yerine ilgili yerel/resmî kopyayı kullanır. Belirlenimci kaynak seçimi için clawhub:, npm:, git: veya npm-pack: kullanın — bkz. Plugin’leri yönetme.
Depo içi Plugin’ler: paketle birlikte gelen Plugin çalışma alanı ağacının altına yerleştirin; derleme sırasında otomatik olarak keşfedilirler.
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.
Paketle birlikte gelen paket meta verileri açıkça belirtilir; Gateway başlangıcında derlenmiş JavaScript’ten çıkarılmaz. Çalışma zamanı bağımlılıkları, bunların sahibi olan Plugin paketine aittir; paketlenmiş OpenClaw başlangıcı Plugin bağımlılıklarını hiçbir zaman onarmaz veya yansıtmaz.

İlgili