Plugin SDK reference
Plugin bildirimi
Bu sayfa yalnızca yerel OpenClaw Plugin manifestosu içindir.
Uyumlu paket yerleşimleri için bkz. Plugin paketleri.
Uyumlu paket biçimleri farklı manifesto dosyaları kullanır:
- Codex paketi:
.codex-plugin/plugin.json - Claude paketi:
.claude-plugin/plugin.jsonveya manifestosuz varsayılan Claude bileşeni yerleşimi - Cursor paketi:
.cursor-plugin/plugin.json
OpenClaw bu paket yerleşimlerini de otomatik algılar, ancak bunlar burada
açıklanan openclaw.plugin.json şemasına göre doğrulanmaz.
Uyumlu paketlerde OpenClaw şu anda paket meta verilerini ve bildirilen
Skills köklerini, Claude komut köklerini, Claude paketi settings.json varsayılanlarını,
Claude paketi LSP varsayılanlarını ve yerleşim OpenClaw çalışma zamanı beklentileriyle
eşleştiğinde desteklenen hook paketlerini okur.
Her yerel OpenClaw Plugin, Plugin kökünde bir openclaw.plugin.json dosyasıyla
gelmelidir. OpenClaw bu manifestoyu, Plugin kodunu çalıştırmadan yapılandırmayı
doğrulamak için kullanır. Eksik veya geçersiz manifestolar Plugin hatası olarak
değerlendirilir ve yapılandırma doğrulamasını engeller.
Tam Plugin sistemi kılavuzuna bakın: Plugins. Yerel yetenek modeli ve güncel dış uyumluluk rehberi için: Yetenek modeli.
Bu dosya ne yapar
openclaw.plugin.json, OpenClaw'ın Plugin kodunuzu yüklemeden önce okuduğu
meta verilerdir. Aşağıdaki her şey, Plugin çalışma zamanını başlatmadan incelenebilecek
kadar düşük maliyetli olmalıdır.
Şunun için kullanın:
- Plugin kimliği, yapılandırma doğrulaması ve yapılandırma arayüzü ipuçları
- kimlik doğrulama, ilk kurulum ve kurulum meta verileri (takma ad, otomatik etkinleştirme, sağlayıcı ortam değişkenleri, kimlik doğrulama seçenekleri)
- denetim düzlemi yüzeyleri için etkinleştirme ipuçları
- kısaltılmış model ailesi sahipliği
- statik yetenek sahipliği anlık görüntüleri (
contracts) - paylaşılan
openclaw qaana makinesinin inceleyebileceği QA çalıştırıcı meta verileri - katalog ve doğrulama yüzeyleriyle birleştirilen kanala özgü yapılandırma meta verileri
Şunun için kullanmayın: çalışma zamanı davranışı kaydetmek, kod giriş noktaları
bildirmek veya npm kurulum meta verileri. Bunlar Plugin kodunuza ve package.json
dosyasına aittir.
Minimal örnek
{ "id": "voice-call", "configSchema": { "type": "object", "additionalProperties": false, "properties": {} }}Zengin örnek
{ "id": "openrouter", "name": "OpenRouter", "description": "OpenRouter provider plugin", "version": "1.0.0", "providers": ["openrouter"], "modelSupport": { "modelPrefixes": ["router-"] }, "modelIdNormalization": { "providers": { "openrouter": { "prefixWhenBare": "openrouter" } } }, "providerEndpoints": [ { "endpointClass": "openrouter", "hostSuffixes": ["openrouter.ai"] } ], "providerRequest": { "providers": { "openrouter": { "family": "openrouter" } } }, "cliBackends": ["openrouter-cli"], "syntheticAuthRefs": ["openrouter-cli"], "setup": { "providers": [ { "id": "openrouter", "envVars": ["OPENROUTER_API_KEY"] } ] }, "providerAuthAliases": { "openrouter-coding": "openrouter" }, "channelEnvVars": { "openrouter-chatops": ["OPENROUTER_CHATOPS_TOKEN"] }, "providerAuthChoices": [ { "provider": "openrouter", "method": "api-key", "choiceId": "openrouter-api-key", "choiceLabel": "OpenRouter API key", "groupId": "openrouter", "groupLabel": "OpenRouter", "optionKey": "openrouterApiKey", "cliFlag": "--openrouter-api-key", "cliOption": "--openrouter-api-key <key>", "cliDescription": "OpenRouter API key", "onboardingScopes": ["text-inference"] } ], "uiHints": { "apiKey": { "label": "API key", "placeholder": "sk-or-v1-...", "sensitive": true } }, "configSchema": { "type": "object", "additionalProperties": false, "properties": { "apiKey": { "type": "string" } } }}Üst düzey alan başvurusu
| Alan | Gerekli | Tür | Ne anlama gelir |
|---|---|---|---|
id |
Evet | string |
Kanonik Plugin kimliği. Bu, plugins.entries.<id> içinde kullanılan kimliktir. |
configSchema |
Evet | object |
Bu Plugin'in yapılandırması için satır içi JSON Schema. |
requiresPlugins |
Hayır | string[] |
Bu Plugin'in etkili olması için ayrıca yüklenmesi gereken Plugin kimlikleri. Keşif, Plugin'i yüklenebilir tutar ancak gerekli herhangi bir Plugin eksik olduğunda uyarır. |
enabledByDefault |
Hayır | true |
Paketle gelen bir Plugin'i varsayılan olarak etkin şeklinde işaretler. Plugin'i varsayılan olarak devre dışı bırakmak için bunu atlayın veya true olmayan herhangi bir değere ayarlayın. |
enabledByDefaultOnPlatforms |
Hayır | string[] |
Paketle gelen bir Plugin'i yalnızca listelenen Node.js platformlarında varsayılan olarak etkin şeklinde işaretler, örneğin ["darwin"]. Açık yapılandırma yine de önceliklidir. |
legacyPluginIds |
Hayır | string[] |
Bu kanonik Plugin kimliğine normalize edilen eski kimlikler. |
autoEnableWhenConfiguredProviders |
Hayır | string[] |
Kimlik doğrulama, yapılandırma veya model referansları bunlardan söz ettiğinde bu Plugin'i otomatik etkinleştirmesi gereken sağlayıcı kimlikleri. |
kind |
Hayır | "memory" | "context-engine" |
plugins.slots.* tarafından kullanılan özel bir Plugin türü bildirir. |
channels |
Hayır | string[] |
Bu Plugin'in sahibi olduğu kanal kimlikleri. Keşif ve yapılandırma doğrulaması için kullanılır. |
providers |
Hayır | string[] |
Bu Plugin'in sahibi olduğu sağlayıcı kimlikleri. |
providerCatalogEntry |
Hayır | string |
Tam Plugin çalışma zamanını etkinleştirmeden yüklenebilen, bildirime kapsamlı sağlayıcı katalog meta verileri için Plugin köküne göreli hafif sağlayıcı katalog modülü yolu. |
modelSupport |
Hayır | object |
Çalışma zamanından önce Plugin'i otomatik yüklemek için kullanılan, bildirimin sahibi olduğu kısa model ailesi meta verileri. |
modelCatalog |
Hayır | object |
Bu Plugin'in sahibi olduğu sağlayıcılar için bildirimsel model katalog meta verileri. Bu, Plugin çalışma zamanını yüklemeden gelecekteki salt okunur listeleme, ilk kurulum, model seçiciler, takma adlar ve bastırma için kontrol düzlemi sözleşmesidir. |
modelPricing |
Hayır | object |
Sağlayıcının sahibi olduğu harici fiyatlandırma arama politikası. Bunu, yerel/kendi barındırılan sağlayıcıları uzak fiyatlandırma kataloglarının dışında tutmak veya sağlayıcı referanslarını çekirdekte sağlayıcı kimliklerini sabit kodlamadan OpenRouter/LiteLLM katalog kimliklerine eşlemek için kullanın. |
modelIdNormalization |
Hayır | object |
Sağlayıcı çalışma zamanı yüklenmeden önce çalışması gereken, sağlayıcının sahibi olduğu model kimliği takma ad/önek temizliği. |
providerEndpoints |
Hayır | object[] |
Sağlayıcı çalışma zamanı yüklenmeden önce çekirdeğin sınıflandırması gereken sağlayıcı rotaları için bildirimin sahibi olduğu uç nokta host/baseUrl meta verileri. |
providerRequest |
Hayır | object |
Sağlayıcı çalışma zamanı yüklenmeden önce genel istek politikası tarafından kullanılan düşük maliyetli sağlayıcı ailesi ve istek uyumluluğu meta verileri. |
secretProviderIntegrations |
Hayır | Record<string, object> |
Kurulum veya yükleme yüzeylerinin çekirdekte sağlayıcıya özgü entegrasyonları sabit kodlamadan sunabileceği bildirimsel SecretRef exec sağlayıcı ön ayarları. |
cliBackends |
Hayır | string[] |
Bu Plugin'in sahibi olduğu CLI çıkarım arka uç kimlikleri. Açık yapılandırma referanslarından başlangıçta otomatik etkinleştirme için kullanılır. |
syntheticAuthRefs |
Hayır | string[] |
Çalışma zamanı yüklenmeden önce soğuk model keşfi sırasında Plugin'e ait sentetik kimlik doğrulama kancası yoklanması gereken sağlayıcı veya CLI arka uç referansları. |
nonSecretAuthMarkers |
Hayır | string[] |
Gizli olmayan yerel, OAuth veya ortam kimlik bilgisi durumunu temsil eden, paketle gelen Plugin'e ait yer tutucu API anahtarı değerleri. |
commandAliases |
Hayır | object[] |
Çalışma zamanı yüklenmeden önce Plugin farkındalığı olan yapılandırma ve CLI tanılamaları üretmesi gereken, bu Plugin'in sahibi olduğu komut adları. |
providerAuthEnvVars |
Hayır | Record<string, string[]> |
Sağlayıcı kimlik doğrulama/durum araması için kullanımdan kaldırılmış uyumluluk ortam meta verileri. Yeni Plugin'ler için setup.providers[].envVars tercih edin; OpenClaw bunu kullanımdan kaldırma süresi boyunca okumaya devam eder. |
providerAuthAliases |
Hayır | Record<string, string> |
Kimlik doğrulama araması için başka bir sağlayıcı kimliğini yeniden kullanması gereken sağlayıcı kimlikleri; örneğin temel sağlayıcı API anahtarını ve kimlik doğrulama profillerini paylaşan bir kodlama sağlayıcısı. |
channelEnvVars |
Hayır | Record<string, string[]> |
OpenClaw'ın Plugin kodunu yüklemeden inceleyebileceği düşük maliyetli kanal ortam meta verileri. Bunu, genel başlangıç/yapılandırma yardımcılarının görmesi gereken ortam güdümlü kanal kurulumu veya kimlik doğrulama yüzeyleri için kullanın. |
providerAuthChoices |
Hayır | object[] |
İlk kurulum seçicileri, tercih edilen sağlayıcı çözümlemesi ve basit CLI bayrağı bağlantısı için düşük maliyetli kimlik doğrulama seçeneği meta verileri. |
activation |
Hayır | object |
Başlangıç, sağlayıcı, komut, kanal, rota ve yetenekle tetiklenen yükleme için düşük maliyetli etkinleştirme planlayıcısı meta verileri. Yalnızca meta veri; gerçek davranış yine de Plugin çalışma zamanına aittir. |
setup |
Hayır | object |
Keşif ve kurulum yüzeylerinin Plugin çalışma zamanını yüklemeden inceleyebileceği düşük maliyetli kurulum/ilk kurulum tanımlayıcıları. |
qaRunners |
Hayır | object[] |
Paylaşılan openclaw qa hostu tarafından Plugin çalışma zamanı yüklenmeden önce kullanılan düşük maliyetli QA çalıştırıcı tanımlayıcıları. |
contracts |
Hayır | object |
Harici kimlik doğrulama kancaları, embeddings, konuşma, gerçek zamanlı transkripsiyon, gerçek zamanlı ses, medya anlama, görüntü üretimi, müzik üretimi, video üretimi, web getirme, web araması ve araç sahipliği için statik yetenek sahipliği anlık görüntüsü. |
mediaUnderstandingProviderMetadata |
Hayır | Record<string, object> |
contracts.mediaUnderstandingProviders içinde bildirilen sağlayıcı kimlikleri için düşük maliyetli medya anlama varsayılanları. |
imageGenerationProviderMetadata |
Hayır | Record<string, object> |
contracts.imageGenerationProviders içinde bildirilen sağlayıcı kimlikleri için, sağlayıcıya ait kimlik doğrulama takma adları ve base-url korumaları dahil düşük maliyetli görüntü üretimi kimlik doğrulama meta verileri. |
videoGenerationProviderMetadata |
Hayır | Record<string, object> |
contracts.videoGenerationProviders içinde bildirilen sağlayıcı kimlikleri için, sağlayıcıya ait kimlik doğrulama takma adları ve base-url korumaları dahil düşük maliyetli video üretimi kimlik doğrulama meta verileri. |
musicGenerationProviderMetadata |
Hayır | Record<string, object> |
contracts.musicGenerationProviders içinde bildirilen sağlayıcı kimlikleri için, sağlayıcıya ait kimlik doğrulama takma adları ve base-url korumaları dahil düşük maliyetli müzik üretimi kimlik doğrulama meta verileri. |
toolMetadata |
Hayır | Record<string, object> |
contracts.tools içinde bildirilen Plugin'e ait araçlar için düşük maliyetli kullanılabilirlik meta verileri. Bir aracın yapılandırma, ortam veya kimlik doğrulama kanıtı olmadığı sürece çalışma zamanını yüklememesi gerektiğinde bunu kullanın. |
channelConfigs |
Hayır | Record<string, object> |
Çalışma zamanı yüklenmeden önce keşif ve doğrulama yüzeylerine birleştirilen, manifeste ait kanal yapılandırma meta verileri. |
skills |
Hayır | string[] |
Plugin köküne göre göreli olarak yüklenecek Skill dizinleri. |
name |
Hayır | string |
İnsan tarafından okunabilir Plugin adı. |
description |
Hayır | string |
Plugin yüzeylerinde gösterilen kısa özet. |
icon |
Hayır | string |
Pazaryeri/katalog kartları için HTTPS görsel URL'si. ClawHub geçerli herhangi bir https:// URL'sini kabul eder ve bu atlandığında veya geçersiz olduğunda varsayılan Plugin simgesine geri döner. |
version |
Hayır | string |
Bilgilendirici Plugin sürümü. |
uiHints |
Hayır | Record<string, object> |
Yapılandırma alanları için kullanıcı arayüzü etiketleri, yer tutucular ve hassasiyet ipuçları. |
Üretim sağlayıcısı meta veri başvurusu
Üretim sağlayıcısı meta veri alanları, eşleşen contracts.*GenerationProviders listesinde bildirilen sağlayıcılar için statik kimlik doğrulama sinyallerini açıklar. OpenClaw bu alanları sağlayıcı çalışma zamanı yüklenmeden önce okur, böylece çekirdek araçlar her sağlayıcı Plugin’ini içe aktarmadan bir üretim sağlayıcısının kullanılabilir olup olmadığına karar verebilir.
Bu alanları yalnızca ucuz, bildirime dayalı olgular için kullanın. Taşıma, istek dönüşümleri, token yenileme, kimlik bilgisi doğrulama ve gerçek üretim davranışı Plugin çalışma zamanında kalır.
{ "contracts": { "imageGenerationProviders": ["example-image"] }, "imageGenerationProviderMetadata": { "example-image": { "aliases": ["example-image-oauth"], "authProviders": ["example-image"], "configSignals": [ { "rootPath": "plugins.entries.example-image.config", "overlayPath": "image", "mode": { "path": "mode", "default": "local", "allowed": ["local"] }, "requiredAny": ["workflow", "workflowPath"], "required": ["promptNodeId"] } ], "authSignals": [ { "provider": "example-image" }, { "provider": "example-image-oauth", "providerBaseUrl": { "provider": "example-image", "defaultBaseUrl": "https://api.example.com/v1", "allowedBaseUrls": ["https://api.example.com/v1"] } } ] } }}Her meta veri girdisi şunları destekler:
| Alan | Gerekli | Tür | Ne anlama gelir |
|---|---|---|---|
aliases |
Hayır | string[] |
Üretim sağlayıcısı için statik kimlik doğrulama takma adları olarak sayılması gereken ek sağlayıcı kimlikleri. |
authProviders |
Hayır | string[] |
Yapılandırılmış kimlik doğrulama profilleri bu üretim sağlayıcısı için kimlik doğrulama olarak sayılması gereken sağlayıcı kimlikleri. |
configSignals |
Hayır | object[] |
Kimlik doğrulama profilleri veya ortam değişkenleri olmadan yapılandırılabilen yerel ya da kendi barındırılan sağlayıcılar için ucuz, yalnızca yapılandırma sinyalleri. |
authSignals |
Hayır | object[] |
Açık kimlik doğrulama sinyalleri. Varsa, sağlayıcı kimliğinden, aliases ve authProviders değerlerinden gelen varsayılan sinyal kümesinin yerini alır. |
referenceAudioInputs |
Hayır | boolean |
Yalnızca video üretimi. Sağlayıcı referans ses varlıklarını kabul ediyorsa true olarak ayarlayın; aksi halde video_generate ses referansı parametrelerini gizler. |
Her configSignals girdisi şunları destekler:
| Alan | Gerekli | Tür | Ne anlama gelir |
|---|---|---|---|
rootPath |
Evet | string |
İncelenecek Plugin’e ait yapılandırma nesnesine nokta yolu, örneğin plugins.entries.example.config. |
overlayPath |
Hayır | string |
Sinyal değerlendirilmeden önce nesnesi kök nesnenin üzerine bindirilecek kök yapılandırma içindeki nokta yolu. Bunu image, video veya music gibi yeteneğe özgü yapılandırma için kullanın. |
overlayMapPath |
Hayır | string |
Nesne değerlerinin her biri kök nesnenin üzerine bindirilecek kök yapılandırma içindeki nokta yolu. Bunu accounts gibi adlandırılmış hesap haritaları için kullanın; yapılandırılmış herhangi bir hesap yeterli sayılır. |
required |
Hayır | string[] |
Etkili yapılandırma içinde yapılandırılmış değerlere sahip olması gereken nokta yolları. Dizeler boş olmamalıdır; nesneler ve diziler boş olmamalıdır. |
requiredAny |
Hayır | string[] |
Etkili yapılandırma içinde en az birinin yapılandırılmış değere sahip olması gereken nokta yolları. |
mode |
Hayır | object |
Etkili yapılandırma içindeki isteğe bağlı dize mod koruması. Bunu yalnızca yapılandırmayla kullanılabilirlik tek bir moda uygulandığında kullanın. |
Her mode koruması şunları destekler:
| Alan | Gerekli | Tür | Ne anlama gelir |
|---|---|---|---|
path |
Hayır | string |
Etkili yapılandırma içindeki nokta yolu. Varsayılan olarak mode kullanılır. |
default |
Hayır | string |
Yapılandırma yolu atladığında kullanılacak mod değeri. |
allowed |
Hayır | string[] |
Varsa, sinyal yalnızca etkili mod bu değerlerden biri olduğunda geçer. |
disallowed |
Hayır | string[] |
Varsa, etkili mod bu değerlerden biri olduğunda sinyal başarısız olur. |
Her authSignals girdisi şunları destekler:
| Alan | Gerekli | Tür | Ne anlama gelir |
|---|---|---|---|
provider |
Evet | string |
Yapılandırılmış kimlik doğrulama profillerinde denetlenecek sağlayıcı kimliği. |
providerBaseUrl |
Hayır | object |
Sinyalin yalnızca başvurulan yapılandırılmış sağlayıcı izin verilen bir taban URL kullandığında sayılmasını sağlayan isteğe bağlı koruma. Bunu bir kimlik doğrulama takma adı yalnızca belirli API’ler için geçerliyse kullanın. |
Her providerBaseUrl koruması şunları destekler:
| Alan | Gerekli | Tür | Ne anlama gelir |
|---|---|---|---|
provider |
Evet | string |
baseUrl değeri denetlenecek sağlayıcı yapılandırma kimliği. |
defaultBaseUrl |
Hayır | string |
Sağlayıcı yapılandırması baseUrl değerini atladığında varsayılacak taban URL. |
allowedBaseUrls |
Evet | string[] |
Bu kimlik doğrulama sinyali için izin verilen taban URL’ler. Yapılandırılmış veya varsayılan taban URL bu normalleştirilmiş değerlerden biriyle eşleşmediğinde sinyal yok sayılır. |
Araç meta veri başvurusu
toolMetadata, araç adına göre anahtarlanan üretim sağlayıcısı meta verileriyle aynı configSignals ve authSignals şekillerini kullanır. contracts.tools sahipliği bildirir. toolMetadata, OpenClaw’ın yalnızca araç fabrikasının null döndürmesini sağlamak için bir Plugin çalışma zamanını içe aktarmaktan kaçınabilmesi amacıyla ucuz kullanılabilirlik kanıtı bildirir.
{ "setup": { "providers": [ { "id": "example", "envVars": ["EXAMPLE_API_KEY"] } ] }, "contracts": { "tools": ["example_search"] }, "toolMetadata": { "example_search": { "authSignals": [ { "provider": "example" } ], "configSignals": [ { "rootPath": "plugins.entries.example.config", "overlayPath": "search", "required": ["apiKey"] } ] } }}Bir aracın toolMetadata değeri yoksa, OpenClaw mevcut davranışı korur ve araç sözleşmesi ilkeyle eşleştiğinde sahip Plugin’i yükler. Fabrikası kimlik doğrulama/yapılandırmaya bağlı olan sıcak yol araçları için Plugin yazarları, çekirdeğin sormak amacıyla çalışma zamanını içe aktarmasını sağlamak yerine toolMetadata bildirmelidir.
providerAuthChoices başvurusu
Her providerAuthChoices girdisi bir ilk kurulum veya kimlik doğrulama seçeneğini açıklar. OpenClaw bunu sağlayıcı çalışma zamanı yüklenmeden önce okur. Sağlayıcı kurulum listeleri, sağlayıcı çalışma zamanını yüklemeden bu manifest seçeneklerini, tanımlayıcıdan türetilmiş kurulum seçeneklerini ve kurulum kataloğu meta verilerini kullanır.
| Alan | Gerekli | Tür | Anlamı |
|---|---|---|---|
provider |
Evet | string |
Bu seçimin ait olduğu sağlayıcı kimliği. |
method |
Evet | string |
Yönlendirilecek kimlik doğrulama yöntemi kimliği. |
choiceId |
Evet | string |
Onboarding ve CLI akışları tarafından kullanılan kararlı kimlik doğrulama seçimi kimliği. |
choiceLabel |
Hayır | string |
Kullanıcıya gösterilen etiket. Atlanırsa OpenClaw choiceId değerine geri döner. |
choiceHint |
Hayır | string |
Seçici için kısa yardımcı metin. |
assistantPriority |
Hayır | number |
Daha düşük değerler, asistan tarafından yönlendirilen etkileşimli seçicilerde daha önce sıralanır. |
assistantVisibility |
Hayır | "visible" | "manual-only" |
Seçimi asistan seçicilerinden gizlerken manuel CLI seçimine izin vermeye devam eder. |
deprecatedChoiceIds |
Hayır | string[] |
Kullanıcıları bu yedek seçime yönlendirmesi gereken eski seçim kimlikleri. |
groupId |
Hayır | string |
İlgili seçimleri gruplamak için isteğe bağlı grup kimliği. |
groupLabel |
Hayır | string |
Bu grup için kullanıcıya gösterilen etiket. |
groupHint |
Hayır | string |
Grup için kısa yardımcı metin. |
optionKey |
Hayır | string |
Basit tek bayraklı kimlik doğrulama akışları için dahili seçenek anahtarı. |
cliFlag |
Hayır | string |
--openrouter-api-key gibi CLI bayrağı adı. |
cliOption |
Hayır | string |
--openrouter-api-key <key> gibi tam CLI seçenek biçimi. |
cliDescription |
Hayır | string |
CLI yardımında kullanılan açıklama. |
onboardingScopes |
Hayır | Array<"text-inference" | "image-generation" | "music-generation"> |
Bu seçimin hangi onboarding yüzeylerinde görünmesi gerektiği. Atlanırsa varsayılan olarak ["text-inference"] kullanır. |
commandAliases başvurusu
Bir Plugin, kullanıcıların yanlışlıkla plugins.allow içine koyabileceği veya
kök CLI komutu olarak çalıştırmayı deneyebileceği bir çalışma zamanı komut adına
sahip olduğunda commandAliases kullanın. OpenClaw bu meta veriyi Plugin çalışma
zamanı kodunu içe aktarmadan tanılama için kullanır.
{ "commandAliases": [ { "name": "dreaming", "kind": "runtime-slash", "cliCommand": "memory" } ]}| Alan | Gerekli | Tür | Anlamı |
|---|---|---|---|
name |
Evet | string |
Bu Plugin'e ait olan komut adı. |
kind |
Hayır | "runtime-slash" |
Takma adı, kök CLI komutu yerine sohbet eğik çizgi komutu olarak işaretler. |
cliCommand |
Hayır | string |
Varsa CLI işlemleri için önerilecek ilgili kök CLI komutu. |
activation başvurusu
Plugin, hangi kontrol düzlemi olaylarının onu bir etkinleştirme/yükleme planına
dahil etmesi gerektiğini düşük maliyetle bildirebildiğinde activation kullanın.
Bu blok, yaşam döngüsü API'si değil planlayıcı meta verisidir. Çalışma zamanı
davranışı kaydetmez, register(...) yerine geçmez ve Plugin kodunun zaten
çalıştırılmış olduğunu vaat etmez. Etkinleştirme planlayıcısı, mevcut manifest
sahipliği meta verilerine geri dönmeden önce aday Plugin'leri daraltmak için bu
alanları kullanır; örneğin providers, channels, commandAliases,
setup.providers, contracts.tools ve kancalar.
Sahipliği zaten açıklayan en dar meta veriyi tercih edin. Bu alanlar ilişkiyi
ifade ettiğinde providers, channels, commandAliases, kurulum tanımlayıcıları
veya contracts kullanın. Bu sahiplik alanlarıyla temsil edilemeyen ek
planlayıcı ipuçları için activation kullanın.
claude-cli, my-cli veya google-gemini-cli gibi CLI çalışma zamanı takma
adları için üst düzey cliBackends kullanın; activation.onAgentHarnesses
yalnızca zaten bir sahiplik alanı olmayan gömülü aracı yürütme takımı kimlikleri
içindir.
Bu blok yalnızca meta veridir. Çalışma zamanı davranışı kaydetmez ve
register(...), setupEntry veya diğer çalışma zamanı/Plugin giriş noktalarının
yerine geçmez. Mevcut tüketiciler bunu daha geniş Plugin yüklemesinden önce
daraltma ipucu olarak kullanır; bu nedenle başlangıç dışı etkinleştirme meta
verilerinin eksik olması genellikle yalnızca performans maliyeti doğurur;
manifest sahipliği geri dönüşleri hâlâ varken doğruluğu değiştirmemelidir.
Her Plugin activation.onStartup değerini bilinçli olarak ayarlamalıdır. Bunu
yalnızca Plugin'in Gateway başlangıcı sırasında çalışması gerektiğinde true
olarak ayarlayın. Plugin başlangıçta etkisizse ve yalnızca daha dar tetikleyicilerden
yüklenmeliyse false olarak ayarlayın. onStartup değerinin atlanması artık
Plugin'i başlangıçta örtük olarak yüklemez; başlangıç, kanal, yapılandırma,
aracı yürütme takımı, bellek veya diğer daha dar etkinleştirme tetikleyicileri
için açık etkinleştirme meta verisi kullanın.
{ "activation": { "onStartup": false, "onProviders": ["openai"], "onCommands": ["models"], "onChannels": ["web"], "onRoutes": ["gateway-webhook"], "onConfigPaths": ["browser"], "onCapabilities": ["provider", "tool"] }}| Alan | Gerekli | Tür | Anlamı |
|---|---|---|---|
onStartup |
Hayır | boolean |
Açık Gateway başlangıç etkinleştirmesi. Her Plugin bunu ayarlamalıdır. true, başlangıç sırasında Plugin'i içe aktarır; false, eşleşen başka bir tetikleyici yükleme gerektirmedikçe başlangıçta tembel tutar. |
onProviders |
Hayır | string[] |
Bu Plugin'i etkinleştirme/yükleme planlarına dahil etmesi gereken sağlayıcı kimlikleri. |
onAgentHarnesses |
Hayır | string[] |
Bu Plugin'i etkinleştirme/yükleme planlarına dahil etmesi gereken gömülü aracı yürütme takımı çalışma zamanı kimlikleri. CLI arka uç takma adları için üst düzey cliBackends kullanın. |
onCommands |
Hayır | string[] |
Bu Plugin'i etkinleştirme/yükleme planlarına dahil etmesi gereken komut kimlikleri. |
onChannels |
Hayır | string[] |
Bu Plugin'i etkinleştirme/yükleme planlarına dahil etmesi gereken kanal kimlikleri. |
onRoutes |
Hayır | string[] |
Bu Plugin'i etkinleştirme/yükleme planlarına dahil etmesi gereken rota türleri. |
onConfigPaths |
Hayır | string[] |
Yol mevcut olduğunda ve açıkça devre dışı bırakılmadığında bu Plugin'i başlangıç/yükleme planlarına dahil etmesi gereken köke göreli yapılandırma yolları. |
onCapabilities |
Hayır | Array<"provider" | "channel" | "tool" | "hook"> |
Kontrol düzlemi etkinleştirme planlaması tarafından kullanılan geniş yetenek ipuçları. Mümkün olduğunda daha dar alanları tercih edin. |
Mevcut canlı tüketiciler:
- Gateway başlangıç planlaması, açık başlangıç içe aktarması için
activation.onStartupkullanır - komutla tetiklenen CLI planlaması, eski
commandAliases[].cliCommandveyacommandAliases[].namedeğerine geri döner - aracı çalışma zamanı başlangıç planlaması, gömülü yürütme takımları için
activation.onAgentHarnessesve CLI çalışma zamanı takma adları için üst düzeycliBackends[]kullanır - kanalla tetiklenen kurulum/kanal planlaması, açık kanal etkinleştirme meta
verisi eksik olduğunda eski
channels[]sahipliğine geri döner - başlangıç Plugin planlaması, paketlenmiş tarayıcı Plugin'inin
browserbloğu gibi kanal dışı kök yapılandırma yüzeyleri içinactivation.onConfigPathskullanır - sağlayıcıyla tetiklenen kurulum/çalışma zamanı planlaması, açık sağlayıcı
etkinleştirme meta verisi eksik olduğunda eski
providers[]ve üst düzeycliBackends[]sahipliğine geri döner
Planlayıcı tanılamaları, açık etkinleştirme ipuçlarını manifest sahipliği geri
dönüşünden ayırt edebilir. Örneğin activation-command-hint,
activation.onCommands eşleştiği anlamına gelirken manifest-command-alias,
planlayıcının bunun yerine commandAliases sahipliğini kullandığı anlamına
gelir. Bu neden etiketleri ana makine tanılamaları ve testler içindir; Plugin
yazarları sahipliği en iyi açıklayan meta veriyi bildirmeye devam etmelidir.
qaRunners başvurusu
Bir Plugin, paylaşılan openclaw qa kökü altında bir veya daha fazla taşıma
çalıştırıcısı sağladığında qaRunners kullanın. Bu meta veriyi düşük maliyetli
ve statik tutun; gerçek CLI kaydının sahibi hâlâ qaRunnerCliRegistrations
dışa aktaran hafif bir runtime-api.ts yüzeyi üzerinden Plugin çalışma
zamanıdır.
{ "qaRunners": [ { "commandName": "matrix", "description": "Run the Docker-backed Matrix live QA lane against a disposable homeserver" } ]}| Alan | Gerekli | Tür | Ne anlama gelir |
|---|---|---|---|
commandName |
Evet | string |
openclaw qa altına bağlanan alt komut, örneğin matrix. |
description |
Hayır | string |
Paylaşılan ana makinenin saplama komuta ihtiyacı olduğunda kullanılan yedek yardım metni. |
setup başvurusu
Kurulum ve kullanıma alma yüzeylerinin runtime yüklenmeden önce Plugin'e ait
ucuz metadata'ya ihtiyaç duyduğu durumlarda setup kullanın.
{ "setup": { "providers": [ { "id": "openai", "authMethods": ["api-key"], "envVars": ["OPENAI_API_KEY"], "authEvidence": [ { "type": "local-file-with-env", "fileEnvVar": "OPENAI_CREDENTIALS_FILE", "requiresAllEnv": ["OPENAI_PROJECT"], "credentialMarker": "openai-local-credentials", "source": "openai local credentials" } ] } ], "cliBackends": ["openai-cli"], "configMigrations": ["legacy-openai-auth"], "requiresRuntime": false }}Üst düzey cliBackends geçerli kalır ve CLI çıkarım arka uçlarını açıklamaya
devam eder. setup.cliBackends, yalnızca metadata olarak kalması gereken
kontrol düzlemi/kurulum akışları için kuruluma özgü tanımlayıcı yüzeydir.
Mevcut olduğunda, setup.providers ve setup.cliBackends kurulum keşfi için
tercih edilen tanımlayıcı öncelikli arama yüzeyidir. Tanımlayıcı yalnızca aday
Plugin'i daraltıyorsa ve kurulum hâlâ kurulum zamanında daha zengin runtime
hook'larına ihtiyaç duyuyorsa, requiresRuntime: true ayarlayın ve yedek yürütme
yolu olarak setup-api öğesini yerinde tutun.
OpenClaw ayrıca genel sağlayıcı kimlik doğrulaması ve ortam değişkeni
aramalarında setup.providers[].envVars öğesini içerir. providerAuthEnvVars,
kullanımdan kaldırma penceresi boyunca bir uyumluluk adaptörü üzerinden
desteklenmeye devam eder, ancak bunu hâlâ kullanan paketlenmemiş Plugin'ler bir
manifest tanılaması alır. Yeni Plugin'ler kurulum/durum ortam metadata'sını
setup.providers[].envVars üzerine koymalıdır.
OpenClaw, kurulum girdisi olmadığında veya setup.requiresRuntime: false
kurulum runtime'ının gereksiz olduğunu bildirdiğinde, basit kurulum seçimlerini
setup.providers[].authMethods öğesinden de türetebilir. Açık
providerAuthChoices girdileri özel etiketler, CLI bayrakları, kullanıma alma
kapsamı ve asistan metadata'sı için tercih edilmeye devam eder.
requiresRuntime: false değerini yalnızca bu tanımlayıcılar kurulum yüzeyi için
yeterli olduğunda ayarlayın. OpenClaw açık false değerini yalnızca
tanımlayıcıdan oluşan bir sözleşme olarak ele alır ve kurulum araması için
setup-api veya openclaw.setupEntry yürütmez. Yalnızca tanımlayıcıdan oluşan
bir Plugin bu kurulum runtime girdilerinden birini yine de gönderiyorsa,
OpenClaw eklemeli bir tanılama raporlar ve onu yok saymaya devam eder.
requiresRuntime değerinin atlanması, bayrak olmadan tanımlayıcı eklemiş mevcut
Plugin'lerin bozulmaması için eski yedek davranışı korur.
Kurulum araması Plugin'e ait setup-api kodunu yürütebildiğinden,
normalleştirilmiş setup.providers[].id ve setup.cliBackends[] değerleri
keşfedilen Plugin'ler arasında benzersiz kalmalıdır. Belirsiz sahiplik, keşif
sırasından bir kazanan seçmek yerine kapalı şekilde başarısız olur.
Kurulum runtime'ı yürütüldüğünde, setup-api manifest tanımlayıcılarının
bildirmediği bir sağlayıcı veya CLI arka ucu kaydederse ya da bir tanımlayıcının
eşleşen runtime kaydı yoksa, kurulum kayıt defteri tanılamaları tanımlayıcı
sapmasını raporlar. Bu tanılamalar eklemelidir ve eski Plugin'leri reddetmez.
setup.providers başvurusu
| Alan | Gerekli | Tür | Ne anlama gelir |
|---|---|---|---|
id |
Evet | string |
Kurulum veya kullanıma alma sırasında sunulan sağlayıcı kimliği. Normalleştirilmiş kimlikleri küresel olarak benzersiz tutun. |
authMethods |
Hayır | string[] |
Bu sağlayıcının tam runtime yüklemeden desteklediği kurulum/kimlik doğrulama yöntemi kimlikleri. |
envVars |
Hayır | string[] |
Genel kurulum/durum yüzeylerinin Plugin runtime'ı yüklenmeden önce denetleyebileceği ortam değişkenleri. |
authEvidence |
Hayır | object[] |
Gizli olmayan işaretçiler üzerinden kimlik doğrulayabilen sağlayıcılar için ucuz yerel kimlik doğrulama kanıtı denetimleri. |
authEvidence, runtime kodu yüklenmeden doğrulanabilen, sağlayıcıya ait yerel
kimlik bilgisi işaretçileri içindir. Bu denetimler ucuz ve yerel kalmalıdır:
ağ çağrısı yok, anahtarlık veya secret-manager okuması yok, kabuk komutu yok ve
sağlayıcı API yoklaması yok.
Desteklenen kanıt girdileri:
| Alan | Gerekli | Tür | Ne anlama gelir |
|---|---|---|---|
type |
Evet | string |
Şu anda local-file-with-env. |
fileEnvVar |
Hayır | string |
Açık bir kimlik bilgisi dosya yolu içeren ortam değişkeni. |
fallbackPaths |
Hayır | string[] |
fileEnvVar yoksa veya boşsa denetlenen yerel kimlik bilgisi dosya yolları. ${HOME} ve ${APPDATA} destekler. |
requiresAnyEnv |
Hayır | string[] |
Kanıt geçerli olmadan önce listelenen ortam değişkenlerinden en az biri boş olmamalıdır. |
requiresAllEnv |
Hayır | string[] |
Kanıt geçerli olmadan önce listelenen her ortam değişkeni boş olmamalıdır. |
credentialMarker |
Evet | string |
Kanıt mevcut olduğunda döndürülen gizli olmayan işaretçi. |
source |
Hayır | string |
Kimlik doğrulama/durum çıktısı için kullanıcıya dönük kaynak etiketi. |
setup alanları
| Alan | Gerekli | Tür | Ne anlama gelir |
|---|---|---|---|
providers |
Hayır | object[] |
Kurulum ve kullanıma alma sırasında sunulan sağlayıcı kurulum tanımlayıcıları. |
cliBackends |
Hayır | string[] |
Tanımlayıcı öncelikli kurulum araması için kullanılan kurulum zamanı arka uç kimlikleri. Normalleştirilmiş kimlikleri küresel olarak benzersiz tutun. |
configMigrations |
Hayır | string[] |
Bu Plugin'in kurulum yüzeyinin sahip olduğu yapılandırma migrasyonu kimlikleri. |
requiresRuntime |
Hayır | boolean |
Kurulumun tanımlayıcı aramasından sonra hâlâ setup-api yürütmesine ihtiyaç duyup duymadığı. |
uiHints başvurusu
uiHints, yapılandırma alan adlarından küçük işleme ipuçlarına giden bir haritadır.
{ "uiHints": { "apiKey": { "label": "API key", "help": "Used for OpenRouter requests", "placeholder": "sk-or-v1-...", "sensitive": true } }}Her alan ipucu şunları içerebilir:
| Alan | Tür | Ne anlama gelir |
|---|---|---|
label |
string |
Kullanıcıya dönük alan etiketi. |
help |
string |
Kısa yardımcı metin. |
tags |
string[] |
İsteğe bağlı kullanıcı arayüzü etiketleri. |
advanced |
boolean |
Alanı gelişmiş olarak işaretler. |
sensitive |
boolean |
Alanı gizli veya hassas olarak işaretler. |
placeholder |
string |
Form girişleri için yer tutucu metin. |
contracts başvurusu
contracts öğesini yalnızca OpenClaw'ın Plugin runtime'ını içe aktarmadan
okuyabileceği statik yetenek sahipliği metadata'sı için kullanın.
{ "contracts": { "agentToolResultMiddleware": ["openclaw", "codex"], "trustedToolPolicies": ["workflow-budget"], "externalAuthProviders": ["acme-ai"], "embeddingProviders": ["openai-compatible"], "speechProviders": ["openai"], "realtimeTranscriptionProviders": ["openai"], "realtimeVoiceProviders": ["openai"], "memoryEmbeddingProviders": ["local"], "mediaUnderstandingProviders": ["openai"], "imageGenerationProviders": ["openai"], "videoGenerationProviders": ["qwen"], "webFetchProviders": ["firecrawl"], "webSearchProviders": ["gemini"], "migrationProviders": ["hermes"], "gatewayMethodDispatch": ["authenticated-request"], "tools": ["firecrawl_search", "firecrawl_scrape"] }}Her liste isteğe bağlıdır:
| Alan | Tür | Ne anlama gelir |
|---|---|---|
embeddedExtensionFactories |
string[] |
Codex uygulama sunucusu uzantı factory kimlikleri, şu anda codex-app-server. |
agentToolResultMiddleware |
string[] |
Bu Plugin'in araç sonucu ara yazılımı kaydedebileceği çalışma zamanı kimlikleri. |
trustedToolPolicies |
string[] |
Kurulu bir Plugin'in kaydedebileceği Plugin'e yerel güvenilir araç öncesi politika kimlikleri. Paketle gelen Plugin'ler bu alan olmadan politika kaydedebilir. |
externalAuthProviders |
string[] |
Bu Plugin'in sahibi olduğu harici kimlik doğrulama profili kancalarına ait sağlayıcı kimlikleri. |
embeddingProviders |
string[] |
Bellek dahil yeniden kullanılabilir vektör gömme kullanımı için bu Plugin'in sahibi olduğu genel gömme sağlayıcısı kimlikleri. |
speechProviders |
string[] |
Bu Plugin'in sahibi olduğu konuşma sağlayıcısı kimlikleri. |
realtimeTranscriptionProviders |
string[] |
Bu Plugin'in sahibi olduğu gerçek zamanlı transkripsiyon sağlayıcısı kimlikleri. |
realtimeVoiceProviders |
string[] |
Bu Plugin'in sahibi olduğu gerçek zamanlı ses sağlayıcısı kimlikleri. |
memoryEmbeddingProviders |
string[] |
Bu Plugin'in sahibi olduğu, kullanımdan kaldırılmış belleğe özgü gömme sağlayıcısı kimlikleri. |
mediaUnderstandingProviders |
string[] |
Bu Plugin'in sahibi olduğu medya anlama sağlayıcısı kimlikleri. |
transcriptSourceProviders |
string[] |
Bu Plugin'in sahibi olduğu transkript kaynağı sağlayıcısı kimlikleri. |
imageGenerationProviders |
string[] |
Bu Plugin'in sahibi olduğu görüntü oluşturma sağlayıcısı kimlikleri. |
videoGenerationProviders |
string[] |
Bu Plugin'in sahibi olduğu video oluşturma sağlayıcısı kimlikleri. |
webFetchProviders |
string[] |
Bu Plugin'in sahibi olduğu web getirme sağlayıcısı kimlikleri. |
webSearchProviders |
string[] |
Bu Plugin'in sahibi olduğu web arama sağlayıcısı kimlikleri. |
migrationProviders |
string[] |
openclaw migrate için bu Plugin'in sahibi olduğu içe aktarma sağlayıcısı kimlikleri. |
gatewayMethodDispatch |
string[] |
Gateway yöntemlerini süreç içinde dağıtan, kimliği doğrulanmış Plugin HTTP rotaları için ayrılmış yetki. |
tools |
string[] |
Bu Plugin'in sahibi olduğu aracı araç adları. |
contracts.embeddedExtensionFactories, paketle gelen yalnızca Codex
uygulama sunucusu uzantı factory'leri için korunur. Paketle gelen araç sonucu
dönüşümleri bunun yerine contracts.agentToolResultMiddleware bildirmeli ve
api.registerAgentToolResultMiddleware(...) ile kaydolmalıdır. Kurulu
Plugin'ler aynı ara yazılım bağlantı noktasını yalnızca açıkça etkinleştirildiğinde
ve yalnızca contracts.agentToolResultMiddleware içinde bildirdikleri çalışma
zamanları için kullanabilir.
Ana makine tarafından güvenilen araç öncesi politika katmanına ihtiyaç duyan
kurulu Plugin'ler, kayıtlı her yerel kimliği contracts.trustedToolPolicies
içinde bildirmeli ve açıkça etkinleştirilmelidir. Paketle gelen Plugin'ler
mevcut güvenilir politika yolunu korur, ancak bildirilmemiş politika kimliklerine
sahip kurulu Plugin'ler kayıt öncesinde reddedilir. Politika kimlikleri kaydı
yapan Plugin'e göre kapsamlanır; bu nedenle iki Plugin de workflow-budget
bildirip kaydedebilir; tek bir Plugin aynı yerel kimliği iki kez kaydedemez.
Çalışma zamanı api.registerTool(...) kayıtları contracts.tools ile
eşleşmelidir. Araç keşfi, istenen araçların sahibi olabilecek yalnızca ilgili
Plugin çalışma zamanlarını yüklemek için bu listeyi kullanır.
resolveExternalAuthProfiles uygulayan sağlayıcı Plugin'ler
contracts.externalAuthProviders bildirmelidir; bildirilmemiş harici kimlik
doğrulama kancaları yok sayılır.
Genel gömme sağlayıcıları, api.registerEmbeddingProvider(...) ile kaydedilen
her bağdaştırıcı için contracts.embeddingProviders bildirmelidir. Bellek
araması tarafından tüketilen sağlayıcılar dahil yeniden kullanılabilir vektör
oluşturma için genel sözleşmeyi kullanın. contracts.memoryEmbeddingProviders,
kullanımdan kaldırılmış belleğe özgü uyumluluktur ve yalnızca mevcut
sağlayıcılar genel gömme sağlayıcısı bağlantı noktasına taşınırken kalır.
contracts.gatewayMethodDispatch şu anda "authenticated-request" kabul eder.
Bu, kötü amaçlı yerel Plugin'lere karşı bir korumalı alan değil, Gateway kontrol
düzlemi yöntemlerini kasıtlı olarak süreç içinde dağıtan yerel Plugin HTTP
rotaları için bir API hijyeni geçididir. Bunu yalnızca zaten Gateway HTTP kimlik
doğrulaması gerektiren, sıkı incelenmiş paketle gelen/operatör yüzeyleri için
kullanın.
mediaUnderstandingProviderMetadata başvurusu
Bir medya anlama sağlayıcısının, çalışma zamanı yüklenmeden önce genel çekirdek
yardımcılarının ihtiyaç duyduğu varsayılan modelleri, otomatik kimlik doğrulama
geri dönüş önceliği veya yerel belge desteği varsa mediaUnderstandingProviderMetadata
kullanın. Anahtarlar ayrıca contracts.mediaUnderstandingProviders içinde
bildirilmelidir.
{ "contracts": { "mediaUnderstandingProviders": ["example"] }, "mediaUnderstandingProviderMetadata": { "example": { "capabilities": ["image", "audio"], "defaultModels": { "image": "example-vision-latest", "audio": "example-transcribe-latest" }, "autoPriority": { "image": 40 }, "nativeDocumentInputs": ["pdf"] } }}Her sağlayıcı girdisi şunları içerebilir:
| Alan | Tür | Ne anlama gelir |
|---|---|---|
capabilities |
("image" | "audio" | "video")[] |
Bu sağlayıcı tarafından sunulan medya yetenekleri. |
defaultModels |
Record<string, string> |
Yapılandırma bir model belirtmediğinde kullanılan yetenekten modele varsayılanlar. |
autoPriority |
Record<string, number> |
Otomatik kimlik bilgisi tabanlı sağlayıcı geri dönüşü için düşük sayılar daha önce sıralanır. |
nativeDocumentInputs |
"pdf"[] |
Sağlayıcı tarafından desteklenen yerel belge girişleri. |
channelConfigs başvurusu
Bir kanal Plugin'inin çalışma zamanı yüklenmeden önce düşük maliyetli
yapılandırma meta verilerine ihtiyacı olduğunda channelConfigs kullanın.
Salt okunur kanal kurulum/durum keşfi, kurulum girdisi olmadığında veya
setup.requiresRuntime: false kurulum çalışma zamanının gereksiz olduğunu
bildirdiğinde, yapılandırılmış harici kanallar için bu meta verileri doğrudan
kullanabilir.
channelConfigs, Plugin manifest meta verisidir; yeni bir üst düzey kullanıcı
yapılandırması bölümü değildir. Kullanıcılar kanal örneklerini hâlâ
channels.<channel-id> altında yapılandırır. OpenClaw, Plugin çalışma zamanı
kodu yürütülmeden önce yapılandırılmış kanalın hangi Plugin'e ait olduğuna karar
vermek için manifest meta verilerini okur.
Bir kanal Plugin'i için configSchema ve channelConfigs farklı yolları açıklar:
configSchema,plugins.entries.<plugin-id>.configdeğerini doğrularchannelConfigs.<channel-id>.schema,channels.<channel-id>değerini doğrular
channels[] bildiren paketle gelmeyen Plugin'ler, eşleşen channelConfigs
girdilerini de bildirmelidir. Bunlar olmadan OpenClaw Plugin'i yine de yükleyebilir,
ancak soğuk yol yapılandırma şeması, kurulum ve Control UI yüzeyleri, Plugin
çalışma zamanı yürütülene kadar kanala ait seçenek şeklini bilemez.
channelConfigs.<channel-id>.commands.nativeCommandsAutoEnabled ve
nativeSkillsAutoEnabled, kanal çalışma zamanı yüklenmeden önce çalışan komut
yapılandırma denetimleri için statik auto varsayılanları bildirebilir. Paketle
gelen kanallar da aynı varsayılanları, paketlerine ait diğer kanal katalog meta
verileriyle birlikte package.json#openclaw.channel.commands üzerinden
yayınlayabilir.
{ "channelConfigs": { "matrix": { "schema": { "type": "object", "additionalProperties": false, "properties": { "homeserverUrl": { "type": "string" } } }, "uiHints": { "homeserverUrl": { "label": "Homeserver URL", "placeholder": "https://matrix.example.com" } }, "label": "Matrix", "description": "Matrix homeserver connection", "commands": { "nativeCommandsAutoEnabled": true, "nativeSkillsAutoEnabled": true }, "preferOver": ["matrix-legacy"] } }}Her kanal girdisi şunları içerebilir:
| Alan | Tür | Ne anlama gelir |
|---|---|---|
schema |
object |
channels.<id> için JSON Schema. Bildirilen her kanal yapılandırma girdisi için gereklidir. |
uiHints |
Record<string, object> |
Bu kanal yapılandırma bölümü için isteğe bağlı UI etiketleri/yer tutucuları/hassas ipuçları. |
label |
string |
Çalışma zamanı meta verileri hazır olmadığında seçici ve inceleme yüzeylerine birleştirilen kanal etiketi. |
description |
string |
İnceleme ve katalog yüzeyleri için kısa kanal açıklaması. |
commands |
object |
Çalışma zamanı öncesi yapılandırma denetimleri için statik yerel komut ve yerel Skills otomatik varsayılanları. |
preferOver |
string[] |
Bu kanalın seçim yüzeylerinde önüne geçmesi gereken eski veya daha düşük öncelikli Plugin kimlikleri. |
Başka bir kanal Plugin'ini değiştirme
Plugin'iniz, başka bir Plugin'in de sağlayabildiği bir kanal kimliği için tercih
edilen sahip olduğunda preferOver kullanın. Yaygın durumlar; yeniden
adlandırılmış bir Plugin kimliği, paketle gelen bir Plugin'in yerini alan
bağımsız bir Plugin veya yapılandırma uyumluluğu için aynı kanal kimliğini
koruyan bakımlı bir çatallanmadır.
{ "id": "acme-chat", "channels": ["chat"], "channelConfigs": { "chat": { "schema": { "type": "object", "additionalProperties": false, "properties": { "webhookUrl": { "type": "string" } } }, "preferOver": ["chat"] } }}channels.chat yapılandırıldığında OpenClaw hem kanal kimliğini hem de tercih
edilen Plugin kimliğini dikkate alır. Daha düşük öncelikli Plugin yalnızca
paketle geldiği veya varsayılan olarak etkin olduğu için seçilmişse OpenClaw,
kanala ve araçlarına tek bir Plugin'in sahip olması için onu etkili çalışma
zamanı yapılandırmasında devre dışı bırakır. Açık kullanıcı seçimi yine de
üstün gelir: kullanıcı her iki Plugin'i de açıkça etkinleştirirse OpenClaw bu
seçimi korur ve istenen Plugin kümesini sessizce değiştirmek yerine yinelenen
kanal/araç tanılamaları bildirir.
preferOver değerini gerçekten aynı kanalı sağlayabilen Plugin kimlikleriyle
sınırlı tutun. Bu genel bir öncelik alanı değildir ve kullanıcı yapılandırma
anahtarlarını yeniden adlandırmaz.
modelSupport başvurusu
OpenClaw, Plugin çalışma zamanı yüklenmeden önce gpt-5.5 veya claude-sonnet-4.6 gibi kısaltma model kimliklerinden sağlayıcı Plugin'inizi çıkarsamalıysa modelSupport kullanın.
{ "modelSupport": { "modelPrefixes": ["gpt-", "o1", "o3", "o4"], "modelPatterns": ["^computer-use-preview"] }}OpenClaw bu önceliği uygular:
- açık
provider/modelbaşvuruları, sahip olanprovidersbildirim üst verisini kullanır modelPatterns,modelPrefixesdeğerlerine göre önceliklidir- bir paketlenmemiş Plugin ve bir paketlenmiş Plugin ikisi de eşleşirse paketlenmemiş Plugin kazanır
- kalan belirsizlik, kullanıcı veya yapılandırma bir sağlayıcı belirtene kadar yok sayılır
Alanlar:
| Alan | Tür | Anlamı |
|---|---|---|
modelPrefixes |
string[] |
Kısaltma model kimliklerine karşı startsWith ile eşleştirilen önekler. |
modelPatterns |
string[] |
Profil son eki kaldırıldıktan sonra kısaltma model kimliklerine karşı eşleştirilen regex kaynakları. |
modelPatterns girdileri, iç içe yineleme içeren kalıpları (örneğin (a+)+$)
reddeden compileSafeRegex üzerinden derlenir. Güvenlik denetiminden geçemeyen
kalıplar, sözdizimi açısından geçersiz regex ile aynı şekilde sessizce atlanır.
Kalıpları basit tutun ve iç içe niceleyicilerden kaçının.
modelCatalog başvurusu
OpenClaw'ın Plugin çalışma zamanını yüklemeden önce sağlayıcı model üst verisini
bilmesi gerektiğinde modelCatalog kullanın. Bu, sabit katalog satırları,
sağlayıcı takma adları, bastırma kuralları ve keşif modu için bildirim tarafından
sahip olunan kaynaktır. Çalışma zamanı yenilemesi hâlâ sağlayıcı çalışma zamanı
koduna aittir, ancak bildirim çekirdeğe çalışma zamanının ne zaman gerektiğini
söyler.
{ "providers": ["openai"], "modelCatalog": { "providers": { "openai": { "baseUrl": "https://api.openai.com/v1", "api": "openai-responses", "models": [ { "id": "gpt-5.4", "name": "GPT-5.4", "input": ["text", "image"], "reasoning": true, "contextWindow": 256000, "maxTokens": 128000, "cost": { "input": 1.25, "output": 10, "cacheRead": 0.125 }, "status": "available", "tags": ["default"] } ] } }, "aliases": { "azure-openai-responses": { "provider": "openai", "api": "azure-openai-responses" } }, "suppressions": [ { "provider": "azure-openai-responses", "model": "gpt-5.3-codex-spark", "reason": "not available on Azure OpenAI Responses" } ], "discovery": { "openai": "static" } }}Üst düzey alanlar:
| Alan | Tür | Anlamı |
|---|---|---|
providers |
Record<string, object> |
Bu Plugin'in sahip olduğu sağlayıcı kimlikleri için katalog satırları. Anahtarlar üst düzey providers içinde de görünmelidir. |
aliases |
Record<string, object> |
Katalog veya bastırma planlaması için sahip olunan bir sağlayıcıya çözümlenmesi gereken sağlayıcı takma adları. |
suppressions |
object[] |
Bu Plugin'in sağlayıcıya özgü bir nedenle bastırdığı başka bir kaynaktan gelen model satırları. |
discovery |
Record<string, "static" | "refreshable" | "runtime"> |
Sağlayıcı kataloğunun bildirim üst verisinden okunup okunamayacağı, önbelleğe yenilenip yenilenemeyeceği veya çalışma zamanı gerektirip gerektirmediği. |
runtimeAugment |
boolean |
Yalnızca sağlayıcı çalışma zamanı, bildirim/yapılandırma planlamasından sonra katalog satırları eklemek zorundaysa true olarak ayarlayın. |
aliases, model kataloğu planlaması için sağlayıcı sahipliği aramasına katılır.
Takma ad hedefleri, aynı Plugin'in sahip olduğu üst düzey sağlayıcılar olmalıdır.
Sağlayıcıya göre filtrelenmiş bir liste takma ad kullandığında, OpenClaw sağlayıcı
çalışma zamanını yüklemeden sahip bildirimini okuyabilir ve takma ad API/temel URL
geçersiz kılmalarını uygulayabilir. Takma adlar, filtrelenmemiş katalog
listelemelerini genişletmez; geniş listeler yalnızca sahip olan kanonik sağlayıcı
satırlarını yayar.
suppressions, eski sağlayıcı çalışma zamanı suppressBuiltInModel kancasının
yerini alır. Bastırma girdileri yalnızca sağlayıcı Plugin'e ait olduğunda veya
sahip olunan bir sağlayıcıyı hedefleyen bir modelCatalog.aliases anahtarı olarak
bildirildiğinde dikkate alınır. Çalışma zamanı bastırma kancaları artık model
çözümleme sırasında çağrılmaz.
Sağlayıcı alanları:
| Alan | Tür | Anlamı |
|---|---|---|
baseUrl |
string |
Bu sağlayıcı kataloğundaki modeller için isteğe bağlı varsayılan temel URL. |
api |
ModelApi |
Bu sağlayıcı kataloğundaki modeller için isteğe bağlı varsayılan API adaptörü. |
headers |
Record<string, string> |
Bu sağlayıcı kataloğuna uygulanan isteğe bağlı statik başlıklar. |
models |
object[] |
Zorunlu model satırları. id olmayan satırlar yok sayılır. |
Model alanları:
| Alan | Tür | Anlamı |
|---|---|---|
id |
string |
provider/ öneki olmadan, sağlayıcıya yerel model kimliği. |
name |
string |
İsteğe bağlı görüntüleme adı. |
api |
ModelApi |
İsteğe bağlı model başına API geçersiz kılması. |
baseUrl |
string |
İsteğe bağlı model başına temel URL geçersiz kılması. |
headers |
Record<string, string> |
İsteğe bağlı model başına statik başlıklar. |
input |
Array<"text" | "image" | "document" | "audio" | "video"> |
Modelin kabul ettiği modaliteler. |
reasoning |
boolean |
Modelin akıl yürütme davranışı sunup sunmadığı. |
contextWindow |
number |
Yerel sağlayıcı bağlam penceresi. |
contextTokens |
number |
contextWindow değerinden farklı olduğunda isteğe bağlı etkili çalışma zamanı bağlam sınırı. |
maxTokens |
number |
Bilindiğinde en fazla çıktı token sayısı. |
cost |
object |
İsteğe bağlı tieredPricing dahil, milyon token başına isteğe bağlı USD fiyatlandırması. |
compat |
object |
OpenClaw model yapılandırması uyumluluğuyla eşleşen isteğe bağlı uyumluluk bayrakları. |
status |
"available" | "preview" | "deprecated" | "disabled" |
Listeleme durumu. Yalnızca satır hiç görünmemeliyse bastırın. |
statusReason |
string |
Kullanılamaz durumla gösterilen isteğe bağlı neden. |
replaces |
string[] |
Bu modelin yerini aldığı eski sağlayıcıya yerel model kimlikleri. |
replacedBy |
string |
Kullanımdan kaldırılmış satırlar için yedek sağlayıcıya yerel model kimliği. |
tags |
string[] |
Seçiciler ve filtreler tarafından kullanılan kararlı etiketler. |
Bastırma alanları:
| Alan | Tür | Anlamı |
|---|---|---|
provider |
string |
Bastırılacak yukarı akış satırı için sağlayıcı kimliği. Bu Plugin'e ait olmalı veya sahip olunan bir takma ad olarak bildirilmelidir. |
model |
string |
Bastırılacak sağlayıcıya yerel model kimliği. |
reason |
string |
Bastırılan satır doğrudan istendiğinde gösterilen isteğe bağlı ileti. |
when.baseUrlHosts |
string[] |
Bastırmanın uygulanması için gereken etkili sağlayıcı temel URL ana makinelerinin isteğe bağlı listesi. |
when.providerConfigApiIn |
string[] |
Bastırmanın uygulanması için gereken tam sağlayıcı yapılandırması api değerlerinin isteğe bağlı listesi. |
modelCatalog içine yalnızca çalışma zamanına özgü veri koymayın. static
değerini yalnızca bildirim satırları, sağlayıcıya göre filtrelenmiş liste ve
seçici yüzeylerinin kayıt/çalışma zamanı keşfini atlamasına yetecek kadar
tamamlandığında kullanın. Bildirim satırları listelenebilir başlangıçlar veya
tamamlayıcılar olarak yararlı olduğunda ancak yenileme/önbellek daha sonra daha
fazla satır ekleyebildiğinde refreshable kullanın; yenilenebilir satırlar kendi
başlarına yetkili değildir. OpenClaw'ın listeyi bilmek için sağlayıcı çalışma
zamanını yüklemesi gerektiğinde runtime kullanın.
modelIdNormalization başvurusu
Sağlayıcı çalışma zamanı yüklenmeden önce gerçekleşmesi gereken ucuz,
sağlayıcıya ait model kimliği temizliği için modelIdNormalization kullanın. Bu,
kısa model adları, sağlayıcıya yerel eski kimlikler ve proxy önek kuralları gibi
takma adları çekirdek model seçimi tabloları yerine sahip Plugin bildiriminde
tutar.
{ "providers": ["anthropic", "openrouter"], "modelIdNormalization": { "providers": { "anthropic": { "aliases": { "sonnet-4.6": "claude-sonnet-4-6" } }, "openrouter": { "prefixWhenBare": "openrouter" } } }}Sağlayıcı alanları:
| Alan | Tür | Anlamı |
|---|---|---|
aliases |
Record<string,string> |
Büyük/küçük harfe duyarsız tam model kimliği takma adları. Değerler yazıldığı gibi döndürülür. |
stripPrefixes |
string[] |
Takma ad aramasından önce kaldırılacak önekler; eski sağlayıcı/model yinelenmesi için kullanışlıdır. |
prefixWhenBare |
string |
Normalleştirilmiş model kimliği zaten / içermediğinde eklenecek önek. |
prefixWhenBareAfterAliasStartsWith |
object[] |
Takma ad aramasından sonra, modelPrefix ve prefix ile anahtarlanan koşullu çıplak kimlik önek kuralları. |
providerEndpoints başvurusu
Genel istek politikasının sağlayıcı çalışma zamanı yüklenmeden önce bilmesi
gereken uç nokta sınıflandırması için providerEndpoints kullanın. Çekirdek her
endpointClass değerinin anlamına hâlâ sahip olur; Plugin bildirimleri ana
makine ve temel URL üst verisine sahip olur.
Endpoint alanları:
| Alan | Tür | Ne anlama gelir |
|---|---|---|
endpointClass |
string |
openrouter, moonshot-native veya google-vertex gibi bilinen çekirdek endpoint sınıfı. |
hosts |
string[] |
Endpoint sınıfına eşlenen tam ana makine adları. |
hostSuffixes |
string[] |
Endpoint sınıfına eşlenen ana makine sonekleri. Yalnızca domain soneki eşleşmesi için başına . ekleyin. |
baseUrls |
string[] |
Endpoint sınıfına eşlenen tam normalleştirilmiş HTTP(S) temel URL'leri. |
googleVertexRegion |
string |
Tam global ana makineler için statik Google Vertex bölgesi. |
googleVertexRegionHostSuffix |
string |
Google Vertex bölge önekini açığa çıkarmak için eşleşen ana makinelerden çıkarılacak sonek. |
providerRequest referansı
Genel istek politikasının sağlayıcı çalışma zamanını yüklemeden ihtiyaç duyduğu
ucuz istek uyumluluğu metadatası için providerRequest kullanın. Davranışa özel
payload yeniden yazmayı sağlayıcı çalışma zamanı hook'larında veya paylaşılan sağlayıcı ailesi yardımcılarında tutun.
{ "providers": ["vllm"], "providerRequest": { "providers": { "vllm": { "family": "vllm", "openAICompletions": { "supportsStreamingUsage": true } } } }}Sağlayıcı alanları:
| Alan | Tür | Ne anlama gelir |
|---|---|---|
family |
string |
Genel istek uyumluluğu kararları ve tanılamalar tarafından kullanılan sağlayıcı ailesi etiketi. |
compatibilityFamily |
"moonshot" |
Paylaşılan istek yardımcıları için isteğe bağlı sağlayıcı ailesi uyumluluk grubu. |
openAICompletions |
object |
OpenAI uyumlu tamamlama isteği bayrakları, şu anda supportsStreamingUsage. |
secretProviderIntegrations referansı
Bir Plugin yeniden kullanılabilir SecretRef exec sağlayıcı ön ayarı yayımlayabildiğinde
secretProviderIntegrations kullanın. OpenClaw bu metadatayı Plugin çalışma zamanı yüklenmeden önce okur,
Plugin sahipliğini secrets.providers.<alias>.pluginIntegration içinde saklar ve
gerçek secret çözümlemesini SecretRef çalışma zamanına bırakır.
Ön ayarlar yalnızca paketlenmiş pluginler ve git ile ClawHub kurulumları gibi
yönetilen Plugin kurulum köklerinden keşfedilen kurulu pluginler için açığa çıkarılır.
{ "secretProviderIntegrations": { "secret-store": { "providerAlias": "team-secrets", "displayName": "Team secrets", "source": "exec", "command": "${node}", "args": ["./bin/resolve-secrets.mjs"] } }}Harita anahtarı entegrasyon id'sidir. providerAlias atlanırsa OpenClaw,
SecretRef sağlayıcı alias'ı olarak entegrasyon id'sini kullanır. Sağlayıcı alias'ları,
örneğin team-secrets veya onepassword-work gibi normal SecretRef sağlayıcı alias kalıbıyla eşleşmelidir.
Bir operatör ön ayarı seçtiğinde OpenClaw şuna benzer bir sağlayıcı referansı yazar:
{ "secrets": { "providers": { "team-secrets": { "source": "exec", "pluginIntegration": { "pluginId": "acme-secrets", "integrationId": "secret-store" } } } }}Başlatma/yeniden yükleme sırasında OpenClaw, geçerli Plugin manifest metadatasını yükleyerek,
sahip Pluginin kurulu ve etkin olduğunu denetleyerek ve exec komutunu manifestten somutlaştırarak
bu sağlayıcıyı çözümler. Plugini devre dışı bırakmak veya kaldırmak, etkin SecretRef'ler için
sağlayıcıyı geri alır. Bağımsız exec yapılandırması isteyen operatörler manuel
command/args sağlayıcılarını doğrudan yazmaya devam edebilir.
Şu anda yalnızca source: "exec" ön ayarları desteklenir. command
${node} olmalı ve args[0], ./ ile başlayan Plugin köküne göreli bir çözümleyici betiği olmalıdır.
OpenClaw bunu başlatma/yeniden yükleme sırasında geçerli Node çalıştırılabilir dosyasına ve
Plugin içindeki mutlak betik yoluna somutlaştırır. --require, --import,
--loader, --env-file, --eval ve --print gibi Node seçenekleri manifest
ön ayar sözleşmesinin parçası değildir. Node olmayan komutlara ihtiyaç duyan operatörler
bağımsız manuel exec sağlayıcılarını doğrudan yapılandırabilir.
OpenClaw, manifest ön ayarları için trustedDirs değerlerini Plugin kökünden ve
${node} ön ayarları için geçerli Node çalıştırılabilir dosyası dizininden türetir.
Manifestte yazılan trustedDirs yok sayılır. timeoutMs,
maxOutputBytes, jsonOnly, env, passEnv ve allowInsecurePath gibi diğer exec sağlayıcı seçenekleri
normal SecretRef exec sağlayıcı yapılandırmasına aktarılır.
modelPricing referansı
Bir sağlayıcının çalışma zamanı yüklenmeden önce kontrol düzlemi fiyatlandırma davranışına ihtiyaç duyduğu durumlarda
modelPricing kullanın. Gateway fiyatlandırma önbelleği, sağlayıcı çalışma zamanı kodunu içe aktarmadan
bu metadatayı okur.
{ "providers": ["ollama", "openrouter"], "modelPricing": { "providers": { "ollama": { "external": false }, "openrouter": { "openRouter": { "passthroughProviderModel": true }, "liteLLM": false } } }}Sağlayıcı alanları:
| Alan | Tür | Ne anlama gelir |
|---|---|---|
external |
boolean |
OpenRouter veya LiteLLM fiyatlandırmasını asla çekmemesi gereken yerel/kendi barındırılan sağlayıcılar için false olarak ayarlayın. |
openRouter |
false | object |
OpenRouter fiyatlandırma arama eşlemesi. false, bu sağlayıcı için OpenRouter aramasını devre dışı bırakır. |
liteLLM |
false | object |
LiteLLM fiyatlandırma arama eşlemesi. false, bu sağlayıcı için LiteLLM aramasını devre dışı bırakır. |
Kaynak alanları:
| Alan | Tür | Ne anlama gelir |
|---|---|---|
provider |
string |
OpenClaw sağlayıcı id'sinden farklı olduğunda harici katalog sağlayıcı id'si; örneğin bir zai sağlayıcısı için z-ai. |
passthroughProviderModel |
boolean |
Eğik çizgi içeren model id'lerini iç içe sağlayıcı/model referansları olarak ele alır; OpenRouter gibi proxy sağlayıcılar için kullanışlıdır. |
modelIdTransforms |
"version-dots"[] |
Ek harici katalog model id varyantları. version-dots, claude-opus-4.6 gibi noktalı sürüm id'lerini dener. |
OpenClaw Sağlayıcı İndeksi
OpenClaw Sağlayıcı İndeksi, pluginleri henüz kurulu olmayabilecek sağlayıcılar için OpenClaw'a ait önizleme metadatasıdır. Bir Plugin manifestinin parçası değildir. Plugin manifestleri kurulu Plugin yetki kaynağı olmaya devam eder. Sağlayıcı İndeksi, bir sağlayıcı Plugini kurulu olmadığında gelecekteki kurulabilir sağlayıcı ve kurulum öncesi model seçici yüzeylerinin tüketeceği dahili yedek sözleşmedir.
Katalog yetki sırası:
- Kullanıcı yapılandırması.
- Kurulu Plugin manifesti
modelCatalog. - Açık yenilemeden gelen model kataloğu önbelleği.
- OpenClaw Sağlayıcı İndeksi önizleme satırları.
Sağlayıcı İndeksi secret'lar, etkin durum, çalışma zamanı hook'ları veya
canlı hesaba özel model verileri içermemelidir. Önizleme katalogları, Plugin manifestleriyle aynı
modelCatalog sağlayıcı satırı şeklini kullanır; ancak api,
baseUrl, fiyatlandırma veya uyumluluk bayrakları gibi çalışma zamanı adaptörü alanları bilerek
kurulu Plugin manifestiyle hizalı tutulmadığı sürece kararlı görüntüleme metadatasıyla sınırlı kalmalıdır.
Canlı /models keşfine sahip sağlayıcılar, normal listeleme veya ilk kurulumun sağlayıcı API'lerini çağırması yerine
yenilenmiş satırları açık model kataloğu önbelleği yolu üzerinden yazmalıdır.
Sağlayıcı İndeksi girdileri, Plugini çekirdekten çıkarılmış veya başka şekilde henüz kurulu olmayan sağlayıcılar için kurulabilir Plugin metadatası da taşıyabilir. Bu metadata kanal kataloğu kalıbını yansıtır: paket adı, npm kurulum belirtimi, beklenen bütünlük ve ucuz auth seçimi etiketleri kurulabilir bir kurulum seçeneği göstermek için yeterlidir. Plugin kurulduktan sonra onun manifesti kazanır ve Sağlayıcı İndeksi girdisi o sağlayıcı için yok sayılır.
Eski üst düzey capability anahtarları kullanımdan kaldırılmıştır. speechProviders, realtimeTranscriptionProviders,
realtimeVoiceProviders, mediaUnderstandingProviders,
imageGenerationProviders, videoGenerationProviders,
webFetchProviders ve webSearchProviders değerlerini contracts altına taşımak için
openclaw doctor --fix kullanın; normal manifest yükleme artık bu üst düzey alanları capability sahipliği olarak
ele almaz.
Manifest ve package.json
İki dosya farklı işler için kullanılır:
| Dosya | Ne için kullanılır |
|---|---|
openclaw.plugin.json |
Plugin kodu çalışmadan önce var olması gereken keşif, yapılandırma doğrulama, auth seçimi metadatası ve UI ipuçları |
package.json |
npm metadatası, bağımlılık kurulumu ve giriş noktaları, kurulum kapıları, kurulum veya katalog metadatası için kullanılan openclaw bloğu |
Bir metadata parçasının nereye ait olduğundan emin değilseniz şu kuralı kullanın:
- OpenClaw bunu Plugin kodunu yüklemeden önce bilmek zorundaysa
openclaw.plugin.jsoniçine koyun - paketleme, giriş dosyaları veya npm kurulum davranışıyla ilgiliyse
package.jsoniçine koyun
Keşfi etkileyen package.json alanları
Bazı çalışma zamanı öncesi Plugin metadataları bilerek openclaw.plugin.json yerine
package.json içindeki openclaw bloğunda bulunur.
openclaw.bundle ve openclaw.bundle.json, OpenClaw Plugin sözleşmeleri değildir;
native pluginler aşağıdaki desteklenen package.json#openclaw alanlarıyla birlikte
openclaw.plugin.json kullanmalıdır.
Önemli örnekler:
| Alan | Ne anlama gelir |
|---|---|
openclaw.extensions |
Yerel Plugin giriş noktalarını bildirir. Plugin paket dizininin içinde kalmalıdır. |
openclaw.runtimeExtensions |
Kurulu paketler için derlenmiş JavaScript çalışma zamanı giriş noktalarını bildirir. Plugin paket dizininin içinde kalmalıdır. |
openclaw.setupEntry |
İlk kurulum, ertelenmiş kanal başlatma ve salt okunur kanal durumu/SecretRef keşfi sırasında kullanılan hafif, yalnızca kurulum giriş noktası. Plugin paket dizininin içinde kalmalıdır. |
openclaw.runtimeSetupEntry |
Kurulu paketler için derlenmiş JavaScript kurulum giriş noktasını bildirir. setupEntry gerektirir, var olmalıdır ve Plugin paket dizininin içinde kalmalıdır. |
openclaw.channel |
Etiketler, dokümantasyon yolları, takma adlar ve seçim metni gibi ucuz kanal katalog meta verileri. |
openclaw.channel.commands |
Kanal çalışma zamanı yüklenmeden önce yapılandırma, denetim ve komut listesi yüzeyleri tarafından kullanılan statik yerel komut ve yerel beceri otomatik varsayılan meta verileri. |
openclaw.channel.configuredState |
Tam kanal çalışma zamanını yüklemeden "yalnızca ortam değişkeniyle kurulum zaten var mı?" sorusunu yanıtlayabilen hafif yapılandırılmış durum denetleyici meta verileri. |
openclaw.channel.persistedAuthState |
Tam kanal çalışma zamanını yüklemeden "zaten oturum açılmış herhangi bir şey var mı?" sorusunu yanıtlayabilen hafif kalıcı kimlik doğrulama denetleyici meta verileri. |
openclaw.install.clawhubSpec / openclaw.install.npmSpec / openclaw.install.localPath |
Paketle gelen ve harici yayımlanan Plugin’ler için kurulum/güncelleme ipuçları. |
openclaw.install.defaultChoice |
Birden fazla kurulum kaynağı kullanılabilir olduğunda tercih edilen kurulum yolu. |
openclaw.install.minHostVersion |
>=2026.3.22 veya >=2026.5.1-beta.1 gibi bir semver alt sınırı kullanan, desteklenen en düşük OpenClaw ana makine sürümü. |
openclaw.compat.pluginApi |
Bu paket için gereken en düşük OpenClaw Plugin API aralığı; >=2026.5.27 gibi bir semver alt sınırı kullanır. |
openclaw.install.expectedIntegrity |
sha512-... gibi beklenen npm dağıtım bütünlük dizesi; kurulum ve güncelleme akışları getirilen yapıtı buna göre doğrular. |
openclaw.install.allowInvalidConfigRecovery |
Yapılandırma geçersiz olduğunda dar kapsamlı, paketle gelen Plugin yeniden kurulum kurtarma yoluna izin verir. |
openclaw.install.requiredPlatformPackages |
Kilit dosyası platform kısıtları geçerli ana makineyle eşleştiğinde ortaya çıkması gereken npm paket takma adları. |
openclaw.startup.deferConfiguredChannelFullLoadUntilAfterListen |
Kurulum çalışma zamanı kanal yüzeylerinin dinleme öncesinde yüklenmesine izin verir, ardından tam yapılandırılmış kanal Plugin’ini dinleme sonrası etkinleştirmeye erteler. |
Manifest meta verileri, çalışma zamanı yüklenmeden önce ilk kurulumda hangi
sağlayıcı/kanal/kurulum seçeneklerinin görüneceğine karar verir.
package.json#openclaw.install, kullanıcı bu seçeneklerden birini seçtiğinde
ilk kuruluma ilgili Plugin’in nasıl getirileceğini veya etkinleştirileceğini
söyler. Kurulum ipuçlarını openclaw.plugin.json içine taşımayın.
openclaw.install.minHostVersion, paketle gelmeyen Plugin kaynakları için
kurulum ve manifest kayıt yükleme sırasında zorunlu tutulur. Geçersiz değerler
reddedilir; daha yeni ama geçerli değerler, eski ana makinelerde harici
Plugin’leri atlar. Paketle gelen kaynak Plugin’lerin ana makine checkout’ı ile
aynı sürümde olduğu varsayılır.
openclaw.install.requiredPlatformPackages, gerekli yerel ikili dosyaları
isteğe bağlı, platforma özel takma adlar üzerinden sunan npm paketleri içindir.
Desteklenen her platform takma adı için yalın npm paket adını listeleyin. npm
kurulumu sırasında OpenClaw yalnızca kilit dosyası kısıtları geçerli ana
makineyle eşleşen bildirilen takma adı doğrular. npm başarı bildirir ama bu
takma adı atlar ise OpenClaw taze bir önbellekle bir kez yeniden dener ve takma
ad hâlâ eksikse kurulumu geri alır.
openclaw.compat.pluginApi, paketle gelmeyen Plugin kaynakları için paket
kurulumu sırasında zorunlu tutulur. Paketin üzerine inşa edildiği OpenClaw
Plugin SDK/çalışma zamanı API alt sınırı için bunu kullanın.
minHostVersion değerinden daha katı olabilir; örneğin bir Plugin paketi daha
yeni bir API’ye ihtiyaç duyarken diğer akışlar için daha düşük bir kurulum
ipucunu koruyabilir. Resmi OpenClaw sürüm eşitlemesi, varsayılan olarak mevcut
resmi Plugin API alt sınırlarını OpenClaw sürümüne yükseltir; ancak yalnızca
Plugin sürümleri, paket özellikle eski ana makineleri desteklediğinde daha
düşük bir alt sınırı koruyabilir. Uyumluluk sözleşmesi olarak yalnızca paket
sürümünü kullanmayın. peerDependencies.openclaw, npm paket meta verisi olarak
kalır; OpenClaw kurulum uyumluluğu kararları için
openclaw.compat.pluginApi sözleşmesini kullanır.
Resmi isteğe bağlı kurulum meta verileri, Plugin ClawHub’da yayımlandığında
clawhubSpec kullanmalıdır; ilk kurulum bunu tercih edilen uzak kaynak olarak
ele alır ve kurulumdan sonra ClawHub yapıt gerçeklerini kaydeder. npmSpec,
henüz ClawHub’a taşınmamış paketler için uyumluluk geri dönüşü olarak kalır.
Tam npm sürüm sabitlemesi zaten npmSpec içinde bulunur; örneğin
"npmSpec": "@wecom/wecom-openclaw-plugin@1.2.3". Resmi harici katalog
girdileri, güncelleme akışlarının getirilen npm yapıtı artık sabitlenmiş
sürümle eşleşmiyorsa güvenli şekilde başarısız olması için tam belirtimleri
expectedIntegrity ile eşleştirmelidir. Etkileşimli ilk kurulum, uyumluluk için
yalın paket adları ve dist-tag’ler dahil güvenilen kayıt npm belirtimlerini
sunmaya devam eder. Katalog tanılamaları tam, değişken, bütünlükle sabitlenmiş,
bütünlüğü eksik, paket adı uyuşmayan ve geçersiz varsayılan seçim kaynaklarını
ayırt edebilir. Ayrıca expectedIntegrity mevcut olduğunda ama bunu
sabitleyebileceği geçerli bir npm kaynağı bulunmadığında uyarır.
expectedIntegrity mevcut olduğunda kurulum/güncelleme akışları bunu zorunlu
tutar; atlandığında kayıt çözümlemesi bütünlük sabitlemesi olmadan kaydedilir.
Kanal Plugin’leri, durum, kanal listesi veya SecretRef taramalarının tam çalışma
zamanını yüklemeden yapılandırılmış hesapları tanımlaması gerektiğinde
openclaw.setupEntry sağlamalıdır. Kurulum girişi kanal meta verilerini ve
kurulum açısından güvenli yapılandırma, durum ve gizli bilgi adaptörlerini
sunmalıdır; ağ istemcilerini, Gateway dinleyicilerini ve taşıma çalışma
zamanlarını ana uzantı giriş noktasında tutun.
Çalışma zamanı giriş noktası alanları, kaynak giriş noktası alanları için paket
sınırı denetimlerini geçersiz kılmaz. Örneğin
openclaw.runtimeExtensions, sınır dışına çıkan bir openclaw.extensions
yolunu yüklenebilir hâle getiremez.
openclaw.install.allowInvalidConfigRecovery özellikle dar kapsamlıdır. Rastgele
bozuk yapılandırmaları kurulabilir hâle getirmez. Bugün yalnızca eksik bir
paketle gelen Plugin yolu veya aynı paketle gelen Plugin için eskimiş bir
channels.<id> girdisi gibi belirli eskimiş paketle gelen Plugin yükseltme
hatalarından kurulum akışlarının kurtulmasına izin verir. İlişkisiz
yapılandırma hataları kurulumu yine de engeller ve operatörleri
openclaw doctor --fix komutuna yönlendirir.
openclaw.channel.persistedAuthState, küçük bir denetleyici modül için paket
meta verisidir:
{ "openclaw": { "channel": { "id": "whatsapp", "persistedAuthState": { "specifier": "./auth-presence", "exportName": "hasAnyWhatsAppAuth" } } }}Kurulum, doctor, durum veya salt okunur varlık akışları tam kanal Plugin’i yüklenmeden önce ucuz bir evet/hayır kimlik doğrulama yoklamasına ihtiyaç duyduğunda bunu kullanın. Kalıcı kimlik doğrulama durumu, yapılandırılmış kanal durumu değildir: Bu meta verileri Plugin’leri otomatik etkinleştirmek, çalışma zamanı bağımlılıklarını onarmak veya bir kanal çalışma zamanının yüklenip yüklenmeyeceğine karar vermek için kullanmayın. Hedef export yalnızca kalıcı durumu okuyan küçük bir işlev olmalıdır; bunu tam kanal çalışma zamanı barrel’ı üzerinden yönlendirmeyin.
openclaw.channel.configuredState, ucuz yalnızca ortam değişkeni yapılandırma
denetimleri için aynı biçimi izler:
{ "openclaw": { "channel": { "id": "telegram", "configuredState": { "specifier": "./configured-state", "exportName": "hasTelegramConfiguredState" } } }}Bir kanal yapılandırılmış durumu ortam değişkenlerinden veya diğer küçük
çalışma zamanı dışı girdilerden yanıtlayabiliyorsa bunu kullanın. Denetim tam
yapılandırma çözümlemesi veya gerçek kanal çalışma zamanı gerektiriyorsa bu
mantığı bunun yerine Plugin config.hasConfiguredState kancasında tutun.
Keşif önceliği (yinelenen Plugin kimlikleri)
OpenClaw Plugin’leri birkaç kökten keşfeder. Ham dosya sistemi tarama sırası
için Plugin tarama
sırası bölümüne bakın. İki
keşif aynı id değerini paylaşıyorsa yalnızca en yüksek öncelikli manifest
tutulur; daha düşük öncelikli yinelemeler yanında yüklenmek yerine bırakılır.
Öncelik, en yüksekten en düşüğe:
- Yapılandırmada seçilen —
plugins.entries.<id>içinde açıkça sabitlenmiş bir yol - Paketle gelen — OpenClaw ile gelen Plugin’ler
- Genel kurulum — genel OpenClaw Plugin köküne kurulan Plugin’ler
- Çalışma alanı — geçerli çalışma alanına göre keşfedilen Plugin’ler
Sonuçlar:
- Çalışma alanında duran paketle gelen bir Plugin’in fork’lanmış veya eskimiş kopyası, paketle gelen derlemeyi gölgelemez.
- Paketle gelen bir Plugin’i yerel bir Plugin ile gerçekten geçersiz kılmak için, çalışma alanı keşfine güvenmek yerine öncelik kazanması için onu
plugins.entries.<id>aracılığıyla sabitleyin. - Yinelenen bırakmalar kaydedilir; böylece Doctor ve başlatma tanılamaları atılan kopyayı gösterebilir.
- Yapılandırmada seçilen yinelenen geçersiz kılmalar tanılamalarda açık geçersiz kılmalar olarak ifade edilir, ancak eskimiş fork’ların ve yanlışlıkla oluşan gölgelemelerin görünür kalması için yine de uyarır.
JSON Schema gereksinimleri
- Her Plugin bir JSON Schema ile birlikte gelmelidir, yapılandırma kabul etmese bile.
- Boş bir şema kabul edilebilir (örneğin,
{ "type": "object", "additionalProperties": false }). - Şemalar çalışma zamanında değil, yapılandırma okuma/yazma sırasında doğrulanır.
- Paketle gelen bir Plugin'i yeni yapılandırma anahtarlarıyla genişletirken veya fork ederken, aynı anda o Plugin'in
openclaw.plugin.jsonconfigSchemaalanını güncelleyin. Paketle gelen Plugin şemaları katıdır; bu nedenle kullanıcı yapılandırmasınaplugins.entries.<id>.config.myNewKeyekleyipmyNewKeydeğeriniconfigSchema.propertiesiçine eklemezseniz, Plugin çalışma zamanı yüklenmeden önce reddedilir.
Örnek şema uzantısı:
{ "configSchema": { "type": "object", "additionalProperties": false, "properties": { "myNewKey": { "type": "string" } } }}Doğrulama davranışı
- Kanal kimliği bir Plugin manifesti tarafından bildirilmediği sürece, bilinmeyen
channels.*anahtarları hatadır. plugins.entries.<id>,plugins.allow,plugins.denyveplugins.slots.*keşfedilebilir Plugin kimliklerine başvurmalıdır. Bilinmeyen kimlikler hatadır.- Bir Plugin yüklüyse ancak bozuk ya da eksik bir manifeste veya şemaya sahipse, doğrulama başarısız olur ve Doctor Plugin hatasını bildirir.
- Plugin yapılandırması varsa ancak Plugin devre dışıysa, yapılandırma korunur ve Doctor + günlüklerde bir uyarı gösterilir.
Tam plugins.* şeması için Yapılandırma başvurusu bölümüne bakın.
Notlar
- Manifest, yerel dosya sistemi yüklemeleri dahil olmak üzere yerel OpenClaw Plugin'leri için zorunludur. Çalışma zamanı yine de Plugin modülünü ayrıca yükler; manifest yalnızca keşif + doğrulama içindir.
- Yerel manifestler JSON5 ile ayrıştırılır; bu yüzden son değer hâlâ bir nesne olduğu sürece yorumlar, sonda virgüller ve tırnaksız anahtarlar kabul edilir.
- Manifest yükleyicisi yalnızca belgelenmiş manifest alanlarını okur. Özel üst düzey anahtarlardan kaçının.
- Bir Plugin bunlara ihtiyaç duymadığında
channels,providers,cliBackendsveskillsalanlarının tümü atlanabilir. providerCatalogEntryhafif kalmalı ve geniş çalışma zamanı kodunu içe aktarmamalıdır; bunu istek zamanı yürütmesi için değil, statik sağlayıcı katalog meta verileri veya dar keşif tanımlayıcıları için kullanın.- Münhasır Plugin türleri
plugins.slots.*üzerinden seçilir:plugins.slots.memoryaracılığıylakind: "memory",plugins.slots.contextEnginearacılığıylakind: "context-engine"(varsayılanlegacy). - Münhasır Plugin türünü bu manifestte bildirin. Çalışma zamanı girişi
OpenClawPluginDefinition.kindkullanımdan kaldırılmıştır ve yalnızca eski Plugin'ler için uyumluluk geri dönüşü olarak kalır. - Ortam değişkeni meta verileri (
setup.providers[].envVars, kullanımdan kaldırılmışproviderAuthEnvVarsvechannelEnvVars) yalnızca bildirimseldir. Durum, denetim, Cron teslim doğrulaması ve diğer salt okunur yüzeyler, bir ortam değişkenini yapılandırılmış olarak değerlendirmeden önce hâlâ Plugin güvenini ve etkin aktivasyon politikasını uygular. - Sağlayıcı kodu gerektiren çalışma zamanı sihirbazı meta verileri için Sağlayıcı çalışma zamanı kancaları bölümüne bakın.
- Plugin'iniz yerel modüllere bağlıysa, derleme adımlarını ve paket yöneticisi izin listesi gereksinimlerini belgeleyin (örneğin, pnpm
allow-build-scripts+pnpm rebuild <package>).