Ana içeriğe atla

Documentation Index

Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt

Use this file to discover all available pages before exploring further.

Bu sayfa yalnızca yerel OpenClaw Plugin manifesti içindir. Uyumlu paket düzenleri için bkz. Plugin paketleri. Uyumlu paket biçimleri farklı manifest dosyaları kullanır:
  • Codex paketi: .codex-plugin/plugin.json
  • Claude paketi: .claude-plugin/plugin.json veya manifest olmadan varsayılan Claude bileşen düzeni
  • Cursor paketi: .cursor-plugin/plugin.json
OpenClaw bu paket düzenlerini de otomatik algılar, ancak bunlar burada açıklanan openclaw.plugin.json şemasına göre doğrulanmaz. Uyumlu paketler için OpenClaw şu anda düzen OpenClaw çalışma zamanı beklentileriyle eşleştiğinde paket meta verilerini ve bildirilen beceri köklerini, Claude komut köklerini, Claude paketi settings.json varsayılanlarını, Claude paketi LSP varsayılanlarını ve desteklenen hook paketlerini okur. Her yerel OpenClaw Plugin, Plugin kökünde bir openclaw.plugin.json dosyasıyla gelmelidir. OpenClaw bu manifesti, Plugin kodunu çalıştırmadan yapılandırmayı doğrulamak için kullanır. Eksik veya geçersiz manifestler Plugin hataları olarak ele alınır ve yapılandırma doğrulamasını engeller. Tam Plugin sistemi kılavuzuna bakın: Plugins. Yerel yetenek modeli ve güncel dış uyumluluk kılavuzu 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. Şunlar için kullanın:
  • Plugin kimliği, yapılandırma doğrulaması ve yapılandırma UI ipuçları
  • kimlik doğrulama, ilk kullanım ve kurulum meta verileri (takma ad, otomatik etkinleştirme, sağlayıcı ortam değişkenleri, kimlik doğrulama seçenekleri)
  • kontrol 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 qa ana makinesinin inceleyebileceği QA çalıştırıcısı meta verileri
  • katalog ve doğrulama yüzeylerine birleştirilen kanala özgü yapılandırma meta verileri
Şunlar için kullanmayın: çalışma zamanı davranışını kaydetme, kod giriş noktalarını bildirme veya npm kurulum meta verileri. Bunlar Plugin kodunuza ve package.json dosyanıza 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"],
  "providerAuthEnvVars": {
    "openrouter": ["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

AlanGerekliTürNe anlama gelir
idEvetstringKanonik Plugin kimliği. Bu, plugins.entries.<id> içinde kullanılan kimliktir.
configSchemaEvetobjectBu Plugin’in yapılandırması için satır içi JSON Schema.
enabledByDefaultHayırtruePaketle gelen bir Plugin’i varsayılan olarak etkin 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.
enabledByDefaultOnPlatformsHayırstring[]Paketle gelen bir Plugin’i yalnızca listelenen Node.js platformlarında varsayılan olarak etkin işaretler; örneğin ["darwin"]. Açık yapılandırma yine de önceliklidir.
legacyPluginIdsHayırstring[]Bu kanonik Plugin kimliğine normalize edilen eski kimlikler.
autoEnableWhenConfiguredProvidersHayırstring[]Kimlik doğrulama, yapılandırma veya model referansları bunlardan bahsettiğinde bu Plugin’i otomatik olarak etkinleştirmesi gereken sağlayıcı kimlikleri.
kindHayır"memory" | "context-engine"plugins.slots.* tarafından kullanılan özel bir Plugin türü bildirir.
channelsHayırstring[]Bu Plugin’in sahip olduğu kanal kimlikleri. Keşif ve yapılandırma doğrulaması için kullanılır.
providersHayırstring[]Bu Plugin’in sahip olduğu sağlayıcı kimlikleri.
providerCatalogEntryHayırstringTam Plugin çalışma zamanını etkinleştirmeden yüklenebilen, manifest kapsamlı sağlayıcı katalog meta verileri için Plugin köküne göre göreli hafif sağlayıcı katalog modülü yolu.
modelSupportHayırobjectÇalışma zamanından önce Plugin’i otomatik yüklemek için kullanılan, manifestin sahip olduğu kısa model ailesi meta verileri.
modelCatalogHayırobjectBu Plugin’in sahip 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, onboarding, model seçiciler, takma adlar ve bastırma için kontrol düzlemi sözleşmesidir.
modelPricingHayırobjectSağlayıcının sahip olduğu harici fiyatlandırma arama ilkesi. Yerel/kendi barındırılan sağlayıcıları uzak fiyatlandırma kataloglarının dışında bırakmak veya çekirdekte sağlayıcı kimliklerini sabit kodlamadan sağlayıcı referanslarını OpenRouter/LiteLLM katalog kimliklerine eşlemek için kullanın.
modelIdNormalizationHayırobjectSağlayıcı çalışma zamanı yüklenmeden önce çalışması gereken, sağlayıcının sahip olduğu model kimliği takma adı/önek temizliği.
providerEndpointsHayırobject[]Sağlayıcı çalışma zamanı yüklenmeden önce çekirdeğin sınıflandırması gereken sağlayıcı rotaları için manifestin sahip olduğu endpoint host/baseUrl meta verileri.
providerRequestHayırobjectSağlayıcı çalışma zamanı yüklenmeden önce genel istek ilkesi tarafından kullanılan ucuz sağlayıcı ailesi ve istek uyumluluğu meta verileri.
cliBackendsHayırstring[]Bu Plugin’in sahip 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.
syntheticAuthRefsHayırstring[]Plugin’in sahip olduğu sentetik kimlik doğrulama hook’unun, çalışma zamanı yüklenmeden önce soğuk model keşfi sırasında yoklanması gereken sağlayıcı veya CLI arka uç referansları.
nonSecretAuthMarkersHayırstring[]Gizli olmayan yerel, OAuth veya ortamdaki kimlik bilgisi durumunu temsil eden, paketle gelen Plugin’e ait yer tutucu API anahtarı değerleri.
commandAliasesHayırobject[]Çalışma zamanı yüklenmeden önce Plugin farkındalıklı yapılandırma ve CLI tanılamaları üretmesi gereken, bu Plugin’in sahip olduğu komut adları.
providerAuthEnvVarsHayırRecord<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 penceresi boyunca okumaya devam eder.
providerAuthAliasesHayırRecord<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ı.
channelEnvVarsHayırRecord<string, string[]>OpenClaw’ın Plugin kodunu yüklemeden inceleyebileceği ucuz kanal ortam meta verileri. Bunu, genel başlangıç/yapılandırma yardımcılarının görmesi gereken ortam değişkeniyle yönlendirilen kanal kurulumu veya kimlik doğrulama yüzeyleri için kullanın.
providerAuthChoicesHayırobject[]Onboarding seçicileri, tercih edilen sağlayıcı çözümlemesi ve basit CLI bayrağı bağlama için ucuz kimlik doğrulama seçeneği meta verileri.
activationHayırobjectBaşlangıç, sağlayıcı, komut, kanal, rota ve yetenekle tetiklenen yükleme için ucuz etkinleştirme planlayıcı meta verileri. Yalnızca meta veridir; gerçek davranış yine Plugin çalışma zamanına aittir.
setupHayırobjectKeşif ve kurulum yüzeylerinin Plugin çalışma zamanını yüklemeden inceleyebileceği ucuz kurulum/onboarding tanımlayıcıları.
qaRunnersHayırobject[]Plugin çalışma zamanı yüklenmeden önce paylaşılan openclaw qa ana makinesi tarafından kullanılan ucuz QA çalıştırıcı tanımlayıcıları.
contractsHayırobjectHarici kimlik doğrulama hook’ları, 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ü.
mediaUnderstandingProviderMetadataHayırRecord<string, object>contracts.mediaUnderstandingProviders içinde bildirilen sağlayıcı kimlikleri için ucuz medya anlama varsayılanları.
imageGenerationProviderMetadataHayırRecord<string, object>contracts.imageGenerationProviders içinde bildirilen sağlayıcı kimlikleri için, sağlayıcının sahip olduğu kimlik doğrulama takma adları ve temel URL korumaları dahil ucuz görüntü üretimi kimlik doğrulama meta verileri.
videoGenerationProviderMetadataHayırRecord<string, object>contracts.videoGenerationProviders içinde bildirilen sağlayıcı kimlikleri için, sağlayıcının sahip olduğu kimlik doğrulama takma adları ve temel URL korumaları dahil ucuz video üretimi kimlik doğrulama meta verileri.
musicGenerationProviderMetadataHayırRecord<string, object>contracts.musicGenerationProviders içinde bildirilen sağlayıcı kimlikleri için, sağlayıcının sahip olduğu kimlik doğrulama takma adları ve temel URL korumaları dahil ucuz müzik üretimi kimlik doğrulama meta verileri.
toolMetadataHayırRecord<string, object>contracts.tools içinde bildirilen, Plugin’in sahip olduğu araçlar için ucuz kullanılabilirlik meta verileri. Bir aracın yapılandırma, ortam veya kimlik doğrulama kanıtı olmadıkça çalışma zamanını yüklememesi gerektiğinde bunu kullanın.
channelConfigsHayırRecord<string, object>Çalışma zamanı yüklenmeden önce keşif ve doğrulama yüzeyleriyle birleştirilen, manifestin sahip olduğu kanal yapılandırma meta verileri.
skillsHayırstring[]Plugin köküne göre göreli olarak yüklenecek Skill dizinleri.
nameHayırstringİnsan tarafından okunabilir Plugin adı.
descriptionHayırstringPlugin yüzeylerinde gösterilen kısa özet.
versionHayırstringBilgilendirme amaçlı Plugin sürümü.
uiHintsHayırRecord<string, object>Yapılandırma alanları için UI etiketleri, yer tutucular ve hassasiyet ipuçları.

Üretim sağlayıcısı metadata başvurusu

Üretim sağlayıcısı metadata alanları, eşleşen contracts.*GenerationProviders listesinde bildirilen sağlayıcılar için statik kimlik doğrulama sinyallerini tanımlar. 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 metadata girdisi şunları destekler:
AlanGerekliTürAnlamı
aliasesHayırstring[]Üretim sağlayıcısı için statik kimlik doğrulama takma adları olarak sayılması gereken ek sağlayıcı kimlikleri.
authProvidersHayırstring[]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.
configSignalsHayırobject[]Kimlik doğrulama profilleri veya env 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 kullanılabilirlik sinyalleri.
authSignalsHayırobject[]Açık kimlik doğrulama sinyalleri. Mevcut olduklarında, sağlayıcı kimliğinden, aliases ve authProviders alanlarından gelen varsayılan sinyal kümesinin yerini alırlar.
Her configSignals girdisi şunları destekler:
AlanGerekliTürAnlamı
rootPathEvetstringİncelenecek, Plugin’e ait yapılandırma nesnesine noktalı yol; örneğin plugins.entries.example.config.
overlayPathHayırstringSinyal değerlendirilmeden önce kök nesnenin üzerine bindirilecek nesnenin kök yapılandırma içindeki noktalı yolu. Bunu image, video veya music gibi yeteneklere özgü yapılandırma için kullanın.
requiredHayırstring[]Etkili yapılandırma içinde yapılandırılmış değerlere sahip olması gereken noktalı yollar. Dizeler boş olmamalıdır; nesneler ve diziler boş olmamalıdır.
requiredAnyHayırstring[]Etkili yapılandırma içinde en az birinin yapılandırılmış değere sahip olması gereken noktalı yollar.
modeHayırobjectEtkili yapılandırma içinde isteğe bağlı dize modu koruması. Bunu, yalnızca yapılandırmaya dayalı kullanılabilirlik sadece tek bir moda uygulanıyorsa kullanın.
Her mode koruması şunları destekler:
AlanGerekliTürAnlamı
pathHayırstringEtkili yapılandırma içindeki noktalı yol. Varsayılan değer mode olur.
defaultHayırstringYapılandırma yolu atladığında kullanılacak mod değeri.
allowedHayırstring[]Mevcutsa sinyal yalnızca etkili mod bu değerlerden biri olduğunda geçer.
disallowedHayırstring[]Mevcutsa sinyal, etkili mod bu değerlerden biri olduğunda başarısız olur.
Her authSignals girdisi şunları destekler:
AlanGerekliTürAnlamı
providerEvetstringYapılandırılmış kimlik doğrulama profillerinde denetlenecek sağlayıcı kimliği.
providerBaseUrlHayırobjectSinyalin yalnızca başvurulan yapılandırılmış sağlayıcı izin verilen bir temel 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:
AlanGerekliTürAnlamı
providerEvetstringbaseUrl değeri denetlenecek sağlayıcı yapılandırma kimliği.
defaultBaseUrlHayırstringSağlayıcı yapılandırması baseUrl değerini atladığında varsayılacak temel URL.
allowedBaseUrlsEvetstring[]Bu kimlik doğrulama sinyali için izin verilen temel URL’ler. Yapılandırılmış veya varsayılan temel URL bu normalize edilmiş değerlerden biriyle eşleşmediğinde sinyal yok sayılır.

Araç metadata başvurusu

toolMetadata, araç adına göre anahtarlanmış olarak üretim sağlayıcısı metadata’sı ile 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.
{
  "providerAuthEnvVars": {
    "example": ["EXAMPLE_API_KEY"]
  },
  "contracts": {
    "tools": ["example_search"]
  },
  "toolMetadata": {
    "example_search": {
      "authSignals": [
        {
          "provider": "example"
        }
      ],
      "configSignals": [
        {
          "rootPath": "plugins.entries.example.config",
          "overlayPath": "search",
          "required": ["apiKey"]
        }
      ]
    }
  }
}
Bir araçta toolMetadata yoksa OpenClaw mevcut davranışı korur ve araç sözleşmesi ilkeyle eşleştiğinde sahibi olan 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 onboarding veya kimlik doğrulama seçimini 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çimlerini, tanımlayıcıdan türetilmiş kurulum seçimlerini ve kurulum kataloğu metadata’sını kullanır.
AlanGerekliTürAnlamı
providerEvetstringBu seçimin ait olduğu sağlayıcı kimliği.
methodEvetstringYönlendirilecek kimlik doğrulama yöntemi kimliği.
choiceIdEvetstringOnboarding ve CLI akışları tarafından kullanılan kararlı kimlik doğrulama seçimi kimliği.
choiceLabelHayırstringKullanıcıya gösterilen etiket. Atlanırsa OpenClaw choiceId değerine geri döner.
choiceHintHayırstringSeçici için kısa yardımcı metin.
assistantPriorityHayırnumberDaha düşük değerler, asistan odaklı etkileşimli seçicilerde daha önce sıralanır.
assistantVisibilityHayır"visible" | "manual-only"Manuel CLI seçimine yine de izin verirken seçimi asistan seçicilerinden gizler.
deprecatedChoiceIdsHayırstring[]Kullanıcıları bu yedek seçime yönlendirmesi gereken eski seçim kimlikleri.
groupIdHayırstringİlgili seçimleri gruplamak için isteğe bağlı grup kimliği.
groupLabelHayırstringBu grup için kullanıcıya gösterilen etiket.
groupHintHayırstringGrup için kısa yardımcı metin.
optionKeyHayırstringBasit tek bayraklı kimlik doğrulama akışları için dahili seçenek anahtarı.
cliFlagHayırstring--openrouter-api-key gibi CLI bayrağı adı.
cliOptionHayırstring--openrouter-api-key <key> gibi tam CLI seçenek şekli.
cliDescriptionHayırstringCLI yardımında kullanılan açıklama.
onboardingScopesHayırArray<"text-inference" | "image-generation">Bu seçimin hangi onboarding yüzeylerinde görünmesi gerektiği. Atlanırsa varsayılan olarak ["text-inference"] olur.

commandAliases başvurusu

commandAliases öğesini, 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 kullanın. OpenClaw bu üst veriyi, Plugin çalışma zamanı kodunu içe aktarmadan tanılama için kullanır.
{
  "commandAliases": [
    {
      "name": "dreaming",
      "kind": "runtime-slash",
      "cliCommand": "memory"
    }
  ]
}
AlanGerekliTürNe anlama gelir
nameEvetstringBu Plugin’e ait komut adı.
kindHayır"runtime-slash"Alias’ı kök CLI komutu yerine sohbet slash komutu olarak işaretler.
cliCommandHayırstringVarsa, CLI işlemleri için önerilecek ilişkili kök CLI komutu.

activation başvurusu

Plugin hangi denetim düzlemi olaylarının onu bir etkinleştirme/yükleme planına dahil etmesi gerektiğini düşük maliyetle bildirebiliyorsa activation kullanın. Bu blok bir planlayıcı üst verisidir, yaşam döngüsü API’si değildir. Ç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 sahiplik üst verilerine, örneğin providers, channels, commandAliases, setup.providers, contracts.tools ve hook’lara geri dönmeden önce aday Plugin’leri daraltmak için bu alanları kullanır. Sahipliği zaten açıklayan en dar üst veriyi tercih edin. İlişkiyi bu alanlar ifade ediyorsa providers, channels, commandAliases, setup 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, codex-cli veya google-gemini-cli gibi CLI çalışma zamanı alias’ları için üst düzey cliBackends kullanın; activation.onAgentHarnesses yalnızca zaten bir sahiplik alanı bulunmayan gömülü ajan harness kimlikleri içindir. Bu blok yalnızca üst veridir. Çalışma zamanı davranışı kaydetmez ve register(...), setupEntry ya da diğer çalışma zamanı/Plugin giriş noktalarının yerine geçmez. Geçerli tüketiciler bunu daha geniş Plugin yüklemesinden önce daraltıcı bir ipucu olarak kullanır; bu nedenle startup dışı etkinleştirme üst verisinin eksik olması genellikle yalnızca performansa mal olur; manifest sahiplik fallback’leri hâlâ mevcutken doğruluğu değiştirmemelidir. Her Plugin activation.onStartup değerini bilinçli olarak ayarlamalıdır. Yalnızca Plugin’in Gateway startup sırasında çalışması gerekiyorsa true olarak ayarlayın. Plugin startup sırasında etkisizse ve yalnızca daha dar tetikleyicilerden yüklenmesi gerekiyorsa false olarak ayarlayın. onStartup öğesinin atlanması artık Plugin’i startup sırasında örtük olarak yüklemez; startup, kanal, yapılandırma, ajan harness, bellek veya diğer daha dar etkinleştirme tetikleyicileri için açık etkinleştirme üst verisi kullanın.
{
  "activation": {
    "onStartup": false,
    "onProviders": ["openai"],
    "onCommands": ["models"],
    "onChannels": ["web"],
    "onRoutes": ["gateway-webhook"],
    "onConfigPaths": ["browser"],
    "onCapabilities": ["provider", "tool"]
  }
}
AlanGerekliTürNe anlama gelir
onStartupHayırbooleanAçık Gateway startup etkinleştirmesi. Her Plugin bunu ayarlamalıdır. true startup sırasında Plugin’i içe aktarır; false, başka bir eşleşen tetikleyici yükleme gerektirmedikçe startup sırasında tembel bırakır.
onProvidersHayırstring[]Bu Plugin’i etkinleştirme/yükleme planlarına dahil etmesi gereken sağlayıcı kimlikleri.
onAgentHarnessesHayırstring[]Bu Plugin’i etkinleştirme/yükleme planlarına dahil etmesi gereken gömülü ajan harness çalışma zamanı kimlikleri. CLI backend alias’ları için üst düzey cliBackends kullanın.
onCommandsHayırstring[]Bu Plugin’i etkinleştirme/yükleme planlarına dahil etmesi gereken komut kimlikleri.
onChannelsHayırstring[]Bu Plugin’i etkinleştirme/yükleme planlarına dahil etmesi gereken kanal kimlikleri.
onRoutesHayırstring[]Bu Plugin’i etkinleştirme/yükleme planlarına dahil etmesi gereken rota türleri.
onConfigPathsHayırstring[]Yol mevcut olduğunda ve açıkça devre dışı bırakılmadığında bu Plugin’i startup/yükleme planlarına dahil etmesi gereken köke göre yapılandırma yolları.
onCapabilitiesHayırArray<"provider" | "channel" | "tool" | "hook">Denetim düzlemi etkinleştirme planlaması tarafından kullanılan geniş yetenek ipuçları. Mümkün olduğunda daha dar alanları tercih edin.
Geçerli canlı tüketiciler:
  • Gateway startup planlaması, açık startup içe aktarması için activation.onStartup kullanır
  • komutla tetiklenen CLI planlaması, eski commandAliases[].cliCommand veya commandAliases[].name değerlerine geri döner
  • ajan çalışma zamanı startup planlaması, gömülü harness’ler için activation.onAgentHarnesses ve CLI çalışma zamanı alias’ları için üst düzey cliBackends[] kullanır
  • kanalla tetiklenen setup/kanal planlaması, açık kanal etkinleştirme üst verisi eksik olduğunda eski channels[] sahipliğine geri döner
  • startup Plugin planlaması, paketli tarayıcı Plugin’inin browser bloğu gibi kanal dışı kök yapılandırma yüzeyleri için activation.onConfigPaths kullanır
  • sağlayıcıyla tetiklenen setup/çalışma zamanı planlaması, açık sağlayıcı etkinleştirme üst verisi eksik olduğunda eski providers[] ve üst düzey cliBackends[] sahipliğine geri döner
Planlayıcı tanılamaları, açık etkinleştirme ipuçlarını manifest sahiplik fallback’inden 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 testleri içindir; Plugin yazarları sahipliği en iyi açıklayan üst 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 üst 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"
    }
  ]
}
AlanGerekliTürNe anlama gelir
commandNameEvetstringopenclaw qa altına bağlanan alt komut, örneğin matrix.
descriptionHayırstringPaylaşılan ana makinenin stub komuta ihtiyaç duyduğunda kullandığı fallback yardım metni.

setup başvurusu

Setup ve onboarding yüzeyleri çalışma zamanı yüklenmeden önce düşük maliyetli, Plugin’in sahibi olduğu üst veriye ihtiyaç duyduğunda 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 backend’lerini açıklamaya devam eder. setup.cliBackends, yalnızca üst veri olarak kalması gereken denetim düzlemi/setup akışları için setup’a özgü tanımlayıcı yüzeyidir. Mevcut olduğunda setup.providers ve setup.cliBackends, setup keşfi için tercih edilen tanımlayıcı öncelikli arama yüzeyidir. Tanımlayıcı yalnızca aday Plugin’i daraltıyorsa ve setup hâlâ daha zengin setup zamanı çalışma zamanı hook’larına ihtiyaç duyuyorsa requiresRuntime: true ayarlayın ve fallback yürütme yolu olarak setup-api öğesini yerinde tutun. OpenClaw ayrıca genel sağlayıcı kimlik doğrulaması ve env-var aramalarına setup.providers[].envVars öğesini dahil eder. providerAuthEnvVars, kullanımdan kaldırma penceresi sırasında uyumluluk adaptörü üzerinden desteklenmeye devam eder, ancak bunu hâlâ kullanan paketli olmayan Plugin’ler bir manifest tanılaması alır. Yeni Plugin’ler setup/durum env üst verisini setup.providers[].envVars üzerine koymalıdır. OpenClaw, setup girişi bulunmadığında veya setup.requiresRuntime: false setup çalışma zamanının gereksiz olduğunu bildirdiğinde setup.providers[].authMethods üzerinden basit setup seçenekleri de türetebilir. Açık providerAuthChoices girdileri özel etiketler, CLI flag’leri, onboarding kapsamı ve asistan üst verisi için tercih edilmeye devam eder. requiresRuntime: false değerini yalnızca bu tanımlayıcılar setup yüzeyi için yeterliyse ayarlayın. OpenClaw açık false değerini yalnızca tanımlayıcı sözleşmesi olarak ele alır ve setup araması için setup-api veya openclaw.setupEntry çalıştırmaz. Yalnızca tanımlayıcı kullanan bir Plugin hâlâ bu setup çalışma zamanı girişlerinden birini gönderiyorsa OpenClaw eklemeli bir tanılama raporlar ve onu yok saymaya devam eder. requiresRuntime öğesinin atlanması eski fallback davranışını korur, böylece flag olmadan tanımlayıcı ekleyen mevcut Plugin’ler bozulmaz. Setup araması Plugin’in sahibi olduğu setup-api kodunu çalıştırabildiğinden, normalize edilmiş setup.providers[].id ve setup.cliBackends[] değerleri keşfedilen Plugin’ler genelinde benzersiz kalmalıdır. Belirsiz sahiplik, keşif sırasından bir kazanan seçmek yerine kapalı olarak başarısız olur. Setup çalışma zamanı çalıştığında, setup kayıt defteri tanılamaları setup-api manifest tanımlayıcılarının bildirmediği bir sağlayıcı veya CLI backend kaydederse ya da bir tanımlayıcının eşleşen çalışma zamanı kaydı yoksa tanımlayıcı sapması raporlar. Bu tanılamalar eklemelidir ve eski Plugin’leri reddetmez.

setup.providers başvurusu

AlanGerekliTürNe anlama gelir
idEvetstringSetup veya onboarding sırasında açığa çıkarılan sağlayıcı kimliği. Normalize edilmiş kimlikleri genel olarak benzersiz tutun.
authMethodsHayırstring[]Bu sağlayıcının tam çalışma zamanını yüklemeden desteklediği setup/kimlik doğrulama yöntemi kimlikleri.
envVarsHayırstring[]Genel setup/durum yüzeylerinin Plugin çalışma zamanı yüklenmeden önce denetleyebileceği env var’lar.
authEvidenceHayırobject[]Gizli olmayan işaretler üzerinden kimlik doğrulayabilen sağlayıcılar için düşük maliyetli yerel kimlik doğrulama kanıtı denetimleri.
authEvidence, çalışma zamanı kodu yüklenmeden doğrulanabilen, sağlayıcıya ait yerel kimlik bilgisi işaretçileri içindir. Bu kontroller ucuz ve yerel kalmalıdır: ağ çağrısı yok, anahtar zinciri veya gizli dizi yöneticisi okuması yok, kabuk komutu yok ve sağlayıcı API yoklaması yok. Desteklenen kanıt girdileri:
AlanGerekliTürNe anlama gelir
typeEvetstringŞu anda local-file-with-env.
fileEnvVarHayırstringAçık bir kimlik bilgisi dosya yolu içeren env var.
fallbackPathsHayırstring[]fileEnvVar yokken veya boşken kontrol edilen yerel kimlik bilgisi dosya yolları. ${HOME} ve ${APPDATA} desteklenir.
requiresAnyEnvHayırstring[]Kanıt geçerli olmadan önce listelenen env var değerlerinden en az biri boş olmamalıdır.
requiresAllEnvHayırstring[]Kanıt geçerli olmadan önce listelenen her env var boş olmamalıdır.
credentialMarkerEvetstringKanıt mevcut olduğunda döndürülen gizli olmayan işaretçi.
sourceHayırstringKimlik doğrulama/durum çıktısı için kullanıcıya görünen kaynak etiketi.

setup alanları

AlanGerekliTürNe anlama gelir
providersHayırobject[]Kurulum ve alıştırma sırasında gösterilen sağlayıcı kurulum tanımlayıcıları.
cliBackendsHayırstring[]Tanımlayıcı öncelikli kurulum araması için kurulum zamanı backend kimlikleri. Normalleştirilmiş kimlikleri genel olarak benzersiz tutun.
configMigrationsHayırstring[]Bu plugin’in kurulum yüzeyine ait yapılandırma geçiş kimlikleri.
requiresRuntimeHayırbooleanTanımlayıcı aramasından sonra kurulumun 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 uzanan 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:
AlanTürNe anlama gelir
labelstringKullanıcıya görünen alan etiketi.
helpstringKısa yardımcı metin.
tagsstring[]İsteğe bağlı UI etiketleri.
advancedbooleanAlanı gelişmiş olarak işaretler.
sensitivebooleanAlanı gizli veya hassas olarak işaretler.
placeholderstringForm girişleri için yer tutucu metin.

contracts başvurusu

contracts öğesini yalnızca OpenClaw’ın plugin çalışma zamanını içe aktarmadan okuyabileceği statik yetenek sahipliği meta verileri için kullanın.
{
  "contracts": {
    "agentToolResultMiddleware": ["pi", "codex"],
    "externalAuthProviders": ["acme-ai"],
    "speechProviders": ["openai"],
    "realtimeTranscriptionProviders": ["openai"],
    "realtimeVoiceProviders": ["openai"],
    "memoryEmbeddingProviders": ["local"],
    "mediaUnderstandingProviders": ["openai", "openai-codex"],
    "imageGenerationProviders": ["openai"],
    "videoGenerationProviders": ["qwen"],
    "webFetchProviders": ["firecrawl"],
    "webSearchProviders": ["gemini"],
    "migrationProviders": ["hermes"],
    "tools": ["firecrawl_search", "firecrawl_scrape"]
  }
}
Her liste isteğe bağlıdır:
AlanTürNe anlama gelir
embeddedExtensionFactoriesstring[]Codex app-server extension factory kimlikleri, şu anda codex-app-server.
agentToolResultMiddlewarestring[]Paketli bir plugin’in araç sonucu middleware’i kaydedebileceği çalışma zamanı kimlikleri.
externalAuthProvidersstring[]Dış kimlik doğrulama profili hook’u bu plugin’e ait olan sağlayıcı kimlikleri.
speechProvidersstring[]Bu plugin’e ait konuşma sağlayıcısı kimlikleri.
realtimeTranscriptionProvidersstring[]Bu plugin’e ait gerçek zamanlı transkripsiyon sağlayıcısı kimlikleri.
realtimeVoiceProvidersstring[]Bu plugin’e ait gerçek zamanlı ses sağlayıcısı kimlikleri.
memoryEmbeddingProvidersstring[]Bu plugin’e ait bellek gömme sağlayıcısı kimlikleri.
mediaUnderstandingProvidersstring[]Bu plugin’e ait medya anlama sağlayıcısı kimlikleri.
imageGenerationProvidersstring[]Bu plugin’e ait görüntü oluşturma sağlayıcısı kimlikleri.
videoGenerationProvidersstring[]Bu plugin’e ait video oluşturma sağlayıcısı kimlikleri.
webFetchProvidersstring[]Bu plugin’e ait web getirme sağlayıcısı kimlikleri.
webSearchProvidersstring[]Bu plugin’e ait web arama sağlayıcısı kimlikleri.
migrationProvidersstring[]openclaw migrate için bu plugin’e ait içe aktarma sağlayıcısı kimlikleri.
toolsstring[]Bu plugin’e ait ajan araç adları.
contracts.embeddedExtensionFactories, paketli ve yalnızca Codex app-server için olan extension factory’ler için tutulur. Paketli araç sonucu dönüşümleri bunun yerine contracts.agentToolResultMiddleware bildirmeli ve api.registerAgentToolResultMiddleware(...) ile kaydolmalıdır. Dış plugin’ler araç sonucu middleware’i kaydedemez, çünkü bu seam, model görmeden önce yüksek güvenli araç çıktısını yeniden yazabilir. Çalışma zamanı api.registerTool(...) kayıtları contracts.tools ile eşleşmelidir. Araç keşfi, istenen araçlara sahip olabilecek yalnızca plugin çalışma zamanlarını yüklemek için bu listeyi kullanır. resolveExternalAuthProfiles uygulayan sağlayıcı plugin’leri contracts.externalAuthProviders bildirmelidir. Bildirimi olmayan plugin’ler hâlâ kullanımdan kaldırılmış bir uyumluluk fallback’i üzerinden çalışır, ancak bu fallback daha yavaştır ve geçiş penceresinden sonra kaldırılacaktır. Paketli bellek gömme sağlayıcıları, local gibi yerleşik adapter’lar dahil olmak üzere sundukları her adapter kimliği için contracts.memoryEmbeddingProviders bildirmelidir. Bağımsız CLI yolları, sağlayıcılar tam Gateway çalışma zamanı tarafından kaydedilmeden önce yalnızca sahip plugin’i yüklemek için bu manifest sözleşmesini kullanır.

mediaUnderstandingProviderMetadata başvurusu

Bir medya anlama sağlayıcısının varsayılan modelleri, otomatik kimlik doğrulama fallback önceliği veya genel çekirdek yardımcıların çalışma zamanı yüklenmeden önce ihtiyaç duyduğu yerel belge desteği olduğunda 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:
AlanTürNe anlama gelir
capabilities("image" | "audio" | "video")[]Bu sağlayıcı tarafından sunulan medya yetenekleri.
defaultModelsRecord<string, string>Yapılandırma bir model belirtmediğinde kullanılan yetenekten modele varsayılanları.
autoPriorityRecord<string, number>Otomatik kimlik bilgisi tabanlı sağlayıcı fallback’i için düşük sayılar daha erken 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 ucuz yapılandırma meta verilerine ihtiyaç duyduğu durumlarda channelConfigs kullanın. Salt okunur kanal kurulum/durum keşfi, kurulum girdisi yoksa veya setup.requiresRuntime: false kurulum çalışma zamanının gereksiz olduğunu bildiriyorsa, yapılandırılmış dış 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ış kanala hangi plugin’in sahip olduğunu belirlemek için manifest meta verilerini okur. Bir kanal plugin’i için configSchema ve channelConfigs farklı yolları tanımlar:
  • configSchema, plugins.entries.<plugin-id>.config değerini doğrular
  • channelConfigs.<channel-id>.schema, channels.<channel-id> değerini doğrular
channels[] bildiren paketli olmayan 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 kanalın sahip olduğu seçenek şeklini bilemez. channelConfigs.<channel-id>.commands.nativeCommandsAutoEnabled ve nativeSkillsAutoEnabled, kanal çalışma zamanı yüklenmeden önce çalışan komut yapılandırması kontrolleri için statik auto varsayılanları bildirebilir. Paketli kanallar, diğer pakete ait kanal katalog meta verilerinin yanında aynı varsayılanları package.json#openclaw.channel.commands üzerinden de yayımlayabilir.
{
  "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:
AlanTürAnlamı
schemaobjectchannels.<id> için JSON Schema. Bildirilen her kanal yapılandırma girdisi için gereklidir.
uiHintsRecord<string, object>Bu kanal yapılandırma bölümü için isteğe bağlı UI etiketleri/yer tutucuları/hassas ipuçları.
labelstringÇalışma zamanı meta verileri hazır olmadığında seçici ve inceleme yüzeylerine birleştirilen kanal etiketi.
descriptionstringİnceleme ve katalog yüzeyleri için kısa kanal açıklaması.
commandsobjectÇalışma zamanı öncesi yapılandırma kontrolleri için statik yerel komut ve yerel Skills otomatik varsayılanları.
preferOverstring[]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, paketlenmiş bir Plugin’in yerine geçen bağımsız bir Plugin veya yapılandırma uyumluluğu için aynı kanal kimliğini koruyan bakımı yapılan bir fork’tur.
{
  "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 paketlenmiş olduğu veya varsayılan olarak etkinleştirildiği için seçildiyse, OpenClaw etkili çalışma zamanı yapılandırmasında onu devre dışı bırakır; böylece kanalın ve araçlarının sahibi tek bir Plugin olur. Açık kullanıcı seçimi yine önceliklidir: 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 kapsamını 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’ın Plugin çalışma zamanı yüklenmeden önce sağlayıcı Plugin’inizi gpt-5.5 veya claude-sonnet-4.6 gibi kısa model kimliklerinden çıkarması gerektiğinde modelSupport kullanın.
{
  "modelSupport": {
    "modelPrefixes": ["gpt-", "o1", "o3", "o4"],
    "modelPatterns": ["^computer-use-preview"]
  }
}
OpenClaw şu önceliği uygular:
  • açık provider/model başvuruları sahip olan providers manifest meta verilerini kullanır
  • modelPatterns, modelPrefixes karşısında üstün gelir
  • paketlenmemiş bir Plugin ve paketlenmiş bir Plugin 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:
AlanTürAnlamı
modelPrefixesstring[]Kısa model kimliklerine karşı startsWith ile eşleştirilen önekler.
modelPatternsstring[]Profil soneki kaldırıldıktan sonra kısa model kimliklerine karşı eşleştirilen regex kaynakları.

modelCatalog başvurusu

OpenClaw’ın Plugin çalışma zamanını yüklemeden önce sağlayıcı model meta verilerini 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 manifest’e ait kaynaktır. Çalışma zamanı yenilemesi yine sağlayıcı çalışma zamanı koduna aittir, ancak manifest çekirdeğe çalışma zamanının ne zaman gerektiğini bildirir.
{
  "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:
AlanTürAnlamı
providersRecord<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.
aliasesRecord<string, object>Katalog veya bastırma planlaması için sahip olunan bir sağlayıcıya çözümlenmesi gereken sağlayıcı takma adları.
suppressionsobject[]Bu Plugin’in sağlayıcıya özgü bir nedenle bastırdığı başka bir kaynaktan gelen model satırları.
discoveryRecord<string, "static" | "refreshable" | "runtime">Sağlayıcı kataloğunun manifest meta verilerinden okunup okunamayacağı, önbelleğe yenilenip yenilenemeyeceği veya çalışma zamanı gerektirip gerektirmediği.
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ıyla filtrelenmiş bir liste bir takma ad kullandığında OpenClaw sahip olan manifest’i okuyabilir ve sağlayıcı çalışma zamanını yüklemeden takma ad API/base URL geçersiz kılmalarını uygulayabilir. Takma adlar filtrelenmemiş katalog listelerini 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 hook’unun 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. Model çözümleme sırasında çalışma zamanı bastırma hook’ları artık çağrılmaz. Sağlayıcı alanları:
AlanTürAnlamı
baseUrlstringBu sağlayıcı kataloğundaki modeller için isteğe bağlı varsayılan base URL.
apiModelApiBu sağlayıcı kataloğundaki modeller için isteğe bağlı varsayılan API bağdaştırıcısı.
headersRecord<string, string>Bu sağlayıcı kataloğuna uygulanan isteğe bağlı statik headers.
modelsobject[]Gerekli model satırları. id olmadan satırlar yok sayılır.
Model alanları:
AlanTürAnlamı
idstringprovider/ öneki olmadan, sağlayıcıya yerel model kimliği.
namestringİsteğe bağlı görüntüleme adı.
apiModelApiİsteğe bağlı model başına API geçersiz kılması.
baseUrlstringİsteğe bağlı model başına base URL geçersiz kılması.
headersRecord<string, string>İsteğe bağlı model başına statik headers.
inputArray<"text" | "image" | "document" | "audio" | "video">Modelin kabul ettiği modaliteler.
reasoningbooleanModelin reasoning davranışı sunup sunmadığı.
contextWindownumberYerel sağlayıcı bağlam penceresi.
contextTokensnumbercontextWindow değerinden farklı olduğunda isteğe bağlı etkili çalışma zamanı bağlam sınırı.
maxTokensnumberBilindiğinde maksimum çıktı token’ları.
costobjectİsteğe bağlı tieredPricing dahil, milyon token başına isteğe bağlı USD fiyatlandırması.
compatobjectOpenClaw 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ın hiç görünmemesi gerektiğinde bastırın.
statusReasonstringKullanılamayan durumla birlikte gösterilen isteğe bağlı neden.
replacesstring[]Bu modelin yerini aldığı eski sağlayıcıya yerel model kimlikleri.
replacedBystringKullanımdan kaldırılmış satırlar için yedek sağlayıcıya yerel model kimliği.
tagsstring[]Seçiciler ve filtreler tarafından kullanılan kararlı etiketler.
Bastırma alanları:
AlanTürAnlamı
providerstringBastırılacak üst kaynak satırı için sağlayıcı kimliği. Bu Plugin’e ait olmalı veya sahip olunan bir takma ad olarak bildirilmelidir.
modelstringBastırılacak sağlayıcıya yerel model kimliği.
reasonstringBastırılan satır doğrudan istendiğinde gösterilen isteğe bağlı mesaj.
when.baseUrlHostsstring[]Bastırma uygulanmadan önce gereken isteğe bağlı etkili sağlayıcı base URL host’ları listesi.
when.providerConfigApiInstring[]Bastırma uygulanmadan önce gereken tam sağlayıcı yapılandırması api değerlerinin isteğe bağlı listesi.
Yalnızca çalışma zamanına ait verileri modelCatalog içine koymayın. static değerini yalnızca manifest satırları, sağlayıcıya göre filtrelenmiş liste ve seçici yüzeylerinin kayıt defteri/çalışma zamanı keşfini atlaması için yeterince eksiksiz olduğunda kullanın. Manifest satırları yararlı listelenebilir başlangıç verileri veya tamamlayıcılar olduğunda, ancak yenileme/önbellek daha sonra daha fazla satır ekleyebildiğinde refreshable kullanın; refreshable satırlar tek başlarına yetkili değildir. OpenClaw listeyi bilmek için sağlayıcı çalışma zamanını yüklemek zorunda olduğunda 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 sahibi olan Plugin manifestinde tutar.
{
  "providers": ["anthropic", "openrouter"],
  "modelIdNormalization": {
    "providers": {
      "anthropic": {
        "aliases": {
          "sonnet-4.6": "claude-sonnet-4-6"
        }
      },
      "openrouter": {
        "prefixWhenBare": "openrouter"
      }
    }
  }
}
Sağlayıcı alanları:
AlanTürNe anlama gelir
aliasesRecord<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.
stripPrefixesstring[]Takma ad aramasından önce kaldırılacak önekler; eski sağlayıcı/model yinelemeleri için kullanışlıdır.
prefixWhenBarestringNormalleştirilmiş model kimliği zaten / içermiyorsa eklenecek önek.
prefixWhenBareAfterAliasStartsWithobject[]Takma ad aramasından sonra, modelPrefix ve prefix ile anahtarlanan koşullu çıplak kimlik önek kuralları.

providerEndpoints başvurusu

Sağlayıcı çalışma zamanı yüklenmeden önce genel istek ilkesinin bilmesi gereken uç nokta sınıflandırması için providerEndpoints kullanın. Çekirdek hâlâ her endpointClass değerinin anlamına sahiptir; Plugin manifestleri ana makine ve temel URL meta verilerine sahiptir. Uç nokta alanları:
AlanTürNe anlama gelir
endpointClassstringopenrouter, moonshot-native veya google-vertex gibi bilinen çekirdek uç nokta sınıfı.
hostsstring[]Uç nokta sınıfına eşlenen tam ana makine adları.
hostSuffixesstring[]Uç nokta sınıfına eşlenen ana makine sonekleri. Yalnızca alan adı soneki eşleştirmesi için . ile önekleyin.
baseUrlsstring[]Uç nokta sınıfına eşlenen tam normalleştirilmiş HTTP(S) temel URL’leri.
googleVertexRegionstringTam global ana makineler için statik Google Vertex bölgesi.
googleVertexRegionHostSuffixstringGoogle Vertex bölge önekini açığa çıkarmak için eşleşen ana makinelerden çıkarılacak sonek.

providerRequest başvurusu

Sağlayıcı çalışma zamanını yüklemeden genel istek ilkesinin ihtiyaç duyduğu ucuz istek uyumluluğu meta verileri için providerRequest kullanın. Davranışa özel yük 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ı:
AlanTürNe anlama gelir
familystringGenel 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 kovası.
openAICompletionsobjectOpenAI uyumlu completions istek bayrakları, şu anda supportsStreamingUsage.

modelPricing başvurusu

Bir sağlayıcı çalışma zamanı yüklenmeden önce denetim düzlemi fiyatlandırma davranışı üzerinde denetime ihtiyaç duyduğunda modelPricing kullanın. Gateway fiyatlandırma önbelleği bu meta verileri sağlayıcı çalışma zamanı kodunu içe aktarmadan okur.
{
  "providers": ["ollama", "openrouter"],
  "modelPricing": {
    "providers": {
      "ollama": {
        "external": false
      },
      "openrouter": {
        "openRouter": {
          "passthroughProviderModel": true
        },
        "liteLLM": false
      }
    }
  }
}
Sağlayıcı alanları:
AlanTürNe anlama gelir
externalbooleanOpenRouter veya LiteLLM fiyatlandırmasını asla getirmemesi gereken yerel/kendi barındırılan sağlayıcılar için false olarak ayarlayın.
openRouterfalse | objectOpenRouter fiyatlandırma araması eşlemesi. false, bu sağlayıcı için OpenRouter aramasını devre dışı bırakır.
liteLLMfalse | objectLiteLLM fiyatlandırma araması eşlemesi. false, bu sağlayıcı için LiteLLM aramasını devre dışı bırakır.
Kaynak alanları:
AlanTürNe anlama gelir
providerstringOpenClaw sağlayıcı kimliğinden farklı olduğunda harici katalog sağlayıcı kimliği; örneğin bir zai sağlayıcısı için z-ai.
passthroughProviderModelbooleanEğik çizgi içeren model kimliklerini 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 kimliği varyantları. version-dots, claude-opus-4.6 gibi noktalı sürüm kimliklerini dener.

OpenClaw Sağlayıcı Dizini

OpenClaw Sağlayıcı Dizini, Pluginleri henüz kurulu olmayabilecek sağlayıcılar için OpenClaw’a ait önizleme meta verileridir. Bir Plugin manifestinin parçası değildir. Plugin manifestleri, kurulu Plugin yetkisi olmaya devam eder. Sağlayıcı Dizini, gelecekteki kurulabilir sağlayıcı ve kurulum öncesi model seçici yüzeylerinin, bir sağlayıcı Plugin’i kurulu olmadığında kullanacağı dahili yedek sözleşmedir. Katalog yetkisi sırası:
  1. Kullanıcı yapılandırması.
  2. Kurulu Plugin manifesti modelCatalog.
  3. Açık yenilemeden gelen model kataloğu önbelleği.
  4. OpenClaw Sağlayıcı Dizini önizleme satırları.
Sağlayıcı Dizini; sırlar, 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ıkça kararlı görüntüleme meta verileriyle sınırlı kalmalıdır. Canlı /models keşfine sahip sağlayıcılar, normal listeleme veya onboarding işleminin sağlayıcı API’lerini çağırmasını sağlamak yerine açık model kataloğu önbellek yolu üzerinden yenilenmiş satırlar yazmalıdır. Sağlayıcı Dizini girdileri, Plugin’i çekirdekten çıkarılmış veya başka bir şekilde henüz kurulmamış sağlayıcılar için kurulabilir Plugin meta verileri de taşıyabilir. Bu meta veriler kanal kataloğu desenini yansıtır: paket adı, npm kurulum belirtimi, beklenen bütünlük ve ucuz kimlik doğrulama 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ı Dizini girdisi o sağlayıcı için yok sayılır. Eski üst düzey yetenek 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ı yetenek sahipliği olarak ele almaz.

Manifest ve package.json karşılaştırması

İki dosya farklı işler görür:
DosyaNe için kullanılır
openclaw.plugin.jsonPlugin kodu çalışmadan önce mevcut olması gereken keşif, yapılandırma doğrulaması, kimlik doğrulama seçimi meta verileri ve UI ipuçları
package.jsonnpm meta verileri, bağımlılık kurulumu ve giriş noktaları, kurulum kapısı, kurulum veya katalog meta verileri için kullanılan openclaw bloğu
Bir meta veri parçasının nereye ait olduğundan emin değilseniz şu kuralı kullanın:
  • OpenClaw’ın bunu Plugin kodunu yüklemeden önce bilmesi gerekiyorsa openclaw.plugin.json içine koyun
  • paketleme, giriş dosyaları veya npm kurulum davranışıyla ilgiliyse package.json içine koyun

Keşfi etkileyen package.json alanları

Bazı çalışma zamanı öncesi Plugin meta verileri, bilerek openclaw.plugin.json yerine package.json içindeki openclaw bloğunda yaşar. openclaw.bundle ve openclaw.bundle.json OpenClaw Plugin sözleşmeleri değildir; yerel Pluginler openclaw.plugin.json artı aşağıdaki desteklenen package.json#openclaw alanlarını kullanmalıdır. Önemli örnekler:
AlanNe anlama gelir
openclaw.extensionsYerel Plugin giriş noktalarını bildirir. Plugin paket dizininin içinde kalmalıdır.
openclaw.runtimeExtensionsYüklü paketler için derlenmiş JavaScript runtime giriş noktalarını bildirir. Plugin paket dizininin içinde kalmalıdır.
openclaw.setupEntryOnboarding, 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.runtimeSetupEntryYüklü paketler için derlenmiş JavaScript kurulum giriş noktasını bildirir. setupEntry gerektirir, mevcut olmalı ve Plugin paket dizininin içinde kalmalıdır.
openclaw.channelEtiketler, belge yolları, takma adlar ve seçim metni gibi ucuz kanal katalog meta verileri.
openclaw.channel.commandsKanal runtime yüklenmeden önce config, audit ve komut listesi yüzeyleri tarafından kullanılan statik yerel komut ve yerel skill otomatik varsayılan meta verileri.
openclaw.channel.configuredStateTam kanal runtime yüklenmeden “yalnızca env kurulumu zaten var mı?” sorusunu yanıtlayabilen hafif configured-state denetleyici meta verileri.
openclaw.channel.persistedAuthStateTam kanal runtime yüklenmeden “halihazırda oturum açılmış bir şey var mı?” sorusunu yanıtlayabilen hafif kalıcı kimlik doğrulama denetleyici meta verileri.
openclaw.install.clawhubSpec / openclaw.install.npmSpec / openclaw.install.localPathPaketlenmiş ve harici yayımlanmış Plugin’ler için yükleme/güncelleme ipuçları.
openclaw.install.defaultChoiceBirden çok yükleme kaynağı kullanılabilir olduğunda tercih edilen yükleme yolu.
openclaw.install.minHostVersion>=2026.3.22 veya >=2026.5.1-beta.1 gibi bir semver alt sınırı kullanan, desteklenen minimum OpenClaw host sürümü.
openclaw.install.expectedIntegritysha512-... gibi beklenen npm dist bütünlük dizesi; yükleme ve güncelleme akışları alınan artifact’i buna göre doğrular.
openclaw.install.allowInvalidConfigRecoveryConfig geçersiz olduğunda dar kapsamlı bir paketlenmiş-Plugin yeniden yükleme kurtarma yoluna izin verir.
openclaw.startup.deferConfiguredChannelFullLoadUntilAfterListenBaşlatma sırasında tam kanal Plugin’inden önce yalnızca kurulum kanal yüzeylerinin yüklenmesine izin verir.
Manifest meta verileri, runtime yüklenmeden önce onboarding içinde 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 onboarding’e o Plugin’i nasıl alacağını veya etkinleştireceğini söyler. Yükleme ipuçlarını openclaw.plugin.json içine taşımayın. openclaw.install.minHostVersion, paketlenmemiş Plugin kaynakları için yükleme ve manifest registry yükleme sırasında uygulanır. Geçersiz değerler reddedilir; daha yeni ama geçerli değerler, eski host’larda harici Plugin’leri atlar. Paketlenmiş kaynak Plugin’lerinin host checkout ile aynı sürümde olduğu varsayılır. Resmi isteğe bağlı yükleme meta verileri, Plugin ClawHub üzerinde yayımlanıyorsa clawhubSpec kullanmalıdır; onboarding bunu tercih edilen uzak kaynak olarak ele alır ve yükleme sonrasında ClawHub artifact bilgilerini kaydeder. npmSpec, henüz ClawHub’a taşınmamış paketler için uyumluluk fallback’i olarak kalır. Kesin npm sürüm sabitlemesi zaten npmSpec içinde yer alır; örneğin "npmSpec": "@wecom/wecom-openclaw-plugin@1.2.3". Resmi harici katalog girdileri, alınan npm artifact’i artık sabitlenmiş sürümle eşleşmiyorsa güncelleme akışlarının kapalı şekilde başarısız olması için kesin spec’leri expectedIntegrity ile eşleştirmelidir. Etkileşimli onboarding, uyumluluk için çıplak paket adları ve dist-tag’ler dahil olmak üzere güvenilir registry npm spec’lerini sunmaya devam eder. Katalog tanılamaları kesin, kayan, bütünlükle sabitlenmiş, eksik bütünlüklü, paket adı uyuşmazlığı olan ve geçersiz varsayılan seçim kaynaklarını ayırt edebilir. Ayrıca expectedIntegrity mevcutken sabitleyebileceği geçerli bir npm kaynağı yoksa uyarır. expectedIntegrity mevcut olduğunda yükleme/güncelleme akışları bunu uygular; atlandığında registry çözümlemesi bütünlük sabitlemesi olmadan kaydedilir. Kanal Plugin’leri, durum, kanal listesi veya SecretRef taramaları tam runtime yüklenmeden yapılandırılmış hesapları tanımlamak zorunda olduğunda openclaw.setupEntry sağlamalıdır. Kurulum girişi kanal meta verilerini ve kurulum açısından güvenli config, durum ve secrets adapter’larını açığa çıkarmalıdır; ağ istemcilerini, Gateway dinleyicilerini ve transport runtime’larını ana extension giriş noktasında tutun. Runtime giriş noktası alanları, kaynak giriş noktası alanları için paket sınırı denetimlerini geçersiz kılmaz. Örneğin, openclaw.runtimeExtensions dışarı kaçan bir openclaw.extensions yolunu yüklenebilir hale getiremez. openclaw.install.allowInvalidConfigRecovery bilinçli olarak dar kapsamlıdır. Rastgele bozuk config’leri yüklenebilir hale getirmez. Bugün yalnızca eksik paketlenmiş Plugin yolu veya aynı paketlenmiş Plugin için eski bir channels.<id> girdisi gibi belirli eski paketlenmiş-Plugin yükseltme hatalarından yükleme akışlarının kurtulmasına izin verir. İlgisiz config hataları yüklemeyi yine 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 veriyi Plugin’leri otomatik etkinleştirmek, runtime bağımlılıklarını onarmak veya bir kanal runtime’ı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 runtime barrel’ı üzerinden yönlendirmeyin. openclaw.channel.configuredState, ucuz yalnızca env configured denetimleri için aynı şekli izler:
{
  "openclaw": {
    "channel": {
      "id": "telegram",
      "configuredState": {
        "specifier": "./configured-state",
        "exportName": "hasTelegramConfiguredState"
      }
    }
  }
}
Bir kanal configured-state’i env veya diğer küçük runtime dışı girdilerden yanıtlayabiliyorsa bunu kullanın. Denetim tam config çözümlemesi veya gerçek kanal runtime’ı gerektiriyorsa bu mantığı Plugin config.hasConfiguredState hook’unda tutun.

Keşif önceliği (yinelenen Plugin id’leri)

OpenClaw, Plugin’leri birkaç kökten keşfeder (paketlenmiş, global yükleme, workspace, explicit config-selected yollar). İki keşif aynı id değerini paylaşıyorsa yalnızca en yüksek öncelikli manifest tutulur; daha düşük öncelikli yinelenenler yanına yüklenmek yerine düşürülür. Öncelik, en yüksekten en düşüğe:
  1. Config-selectedplugins.entries.<id> içinde açıkça sabitlenmiş bir yol
  2. Paketlenmiş — OpenClaw ile birlikte gelen Plugin’ler
  3. Global yükleme — global OpenClaw Plugin köküne yüklenen Plugin’ler
  4. Workspace — geçerli workspace’e göre keşfedilen Plugin’ler
Sonuçlar:
  • Workspace içinde duran paketlenmiş bir Plugin’in fork’lanmış veya eski bir kopyası, paketlenmiş build’i gölgelemez.
  • Paketlenmiş bir Plugin’i yerel bir Plugin ile gerçekten geçersiz kılmak için workspace keşfine güvenmek yerine onu plugins.entries.<id> aracılığıyla sabitleyin; böylece öncelik sayesinde kazanır.
  • Yinelenen düşürmeler loglanır, böylece Doctor ve başlatma tanılamaları atılan kopyayı gösterebilir.
  • Config-selected yinelenen geçersiz kılmaları, tanılamalarda açık geçersiz kılmalar olarak ifade edilir, ancak eski fork’lar ve yanlışlıkla oluşan gölgeler görünür kalsın diye yine de uyarır.

JSON Schema gereksinimleri

  • Her Plugin bir JSON Schema ile gelmelidir, config kabul etmese bile.
  • Boş bir schema kabul edilebilir (örneğin, { "type": "object", "additionalProperties": false }).
  • Schema’lar runtime’da değil, config okuma/yazma zamanında doğrulanır.
  • Paketlenmiş bir Plugin’i yeni config anahtarlarıyla genişletirken veya fork’larken aynı anda o Plugin’in openclaw.plugin.json configSchema değerini güncelleyin. Paketlenmiş Plugin schema’ları strict’tir, bu yüzden kullanıcı config’ine configSchema.properties içine myNewKey eklemeden plugins.entries.<id>.config.myNewKey eklemek, Plugin runtime yüklenmeden önce reddedilir.
Örnek schema extension:
{
  "configSchema": {
    "type": "object",
    "additionalProperties": false,
    "properties": {
      "myNewKey": {
        "type": "string"
      }
    }
  }
}

Doğrulama davranışı

  • Kanal id’si bir Plugin manifest tarafından bildirilmemişse bilinmeyen channels.* anahtarları hatadır.
  • plugins.entries.<id>, plugins.allow, plugins.deny ve plugins.slots.* keşfedilebilir Plugin id’lerine başvurmalıdır. Bilinmeyen id’ler hatadır.
  • Bir Plugin yüklüyse ancak bozuk veya eksik manifest ya da schema içeriyorsa doğrulama başarısız olur ve Doctor Plugin hatasını raporlar.
  • Plugin config’i mevcut ama Plugin devre dışı ise config korunur ve Doctor + log’larda bir uyarı gösterilir.
Tam plugins.* schema’sı için Yapılandırma referansı bölümüne bakın.

Notlar

  • Manifest, yerel dosya sistemi yüklemeleri dahil yerel OpenClaw Plugin’leri için zorunludur. Runtime yine Plugin modülünü ayrı olarak yükler; manifest yalnızca keşif + doğrulama içindir.
  • Yerel manifestler JSON5 ile ayrıştırılır; bu nedenle son değer hâlâ bir nesne olduğu sürece yorumlar, sonda kalan virgüller ve tırnaksız anahtarlar kabul edilir.
  • Manifest yükleyici yalnızca belgelenmiş manifest alanlarını okur. Özel üst düzey anahtarlardan kaçının.
  • Bir Plugin bunlara ihtiyaç duymadığında channels, providers, cliBackends ve skills alanlarının tümü atlanabilir.
  • providerCatalogEntry hafif kalmalı ve geniş runtime kodunu içe aktarmamalıdır; bunu istek zamanı yürütmesi için değil, statik sağlayıcı katalog metadatası veya dar keşif tanımlayıcıları için kullanın. providerDiscoveryEntry eski yazımdır ve mevcut Plugin’ler için hâlâ çalışır.
  • Ayrıcalıklı Plugin türleri plugins.slots.* üzerinden seçilir: plugins.slots.memory ile kind: "memory", plugins.slots.contextEngine ile kind: "context-engine" (varsayılan legacy).
  • Ayrıcalıklı Plugin türünü bu manifestte bildirin. Runtime girişi OpenClawPluginDefinition.kind kullanımdan kaldırılmıştır ve yalnızca eski Plugin’ler için uyumluluk yedeği olarak kalır.
  • Ortam değişkeni metadatası (setup.providers[].envVars, kullanımdan kaldırılmış providerAuthEnvVars ve channelEnvVars) 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üveni ve etkinleştirme politikasını uygular.
  • Sağlayıcı kodu gerektiren runtime sihirbazı metadatası için bkz. Sağlayıcı runtime hook’ları.
  • Plugin’iniz yerel modüllere bağlıysa derleme adımlarını ve tüm paket yöneticisi izin listesi gereksinimlerini belgeleyin (örneğin, pnpm allow-build-scripts + pnpm rebuild <package>).

İlgili

Plugin Oluşturma

Plugin’lerle başlangıç.

Plugin mimarisi

İç mimari ve yetenek modeli.

SDK genel bakışı

Plugin SDK referansı ve alt yol içe aktarmaları.