Ana içeriğe atla

Plugin manifesti (openclaw.plugin.json)

Bu sayfa yalnızca yerel OpenClaw plugin manifesti içindir. Uyumlu paket düzenleri için bkz. Plugin bundles. Uyumlu paket biçimleri farklı manifest dosyaları kullanır:
  • Codex paketi: .codex-plugin/plugin.json
  • Claude paketi: .claude-plugin/plugin.json veya manifestsiz varsayılan Claude bileşeni 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 paket meta verilerini, bildirilen skill köklerini, Claude komut köklerini, Claude paketi settings.json varsayılanlarını, Claude paketi LSP varsayılanlarını ve düzen OpenClaw çalışma zamanı beklentileriyle eşleştiğinde desteklenen hook paketlerini okur. Her yerel OpenClaw plugin’i plugin kökünde bir openclaw.plugin.json dosyası göndermek zorundadır. OpenClaw bu manifesti, plugin kodunu çalıştırmadan yapılandırmayı doğrulamak için kullanır. Eksik veya geçersiz manifestler plugin hatası olarak değerlendirilir ve yapılandırma doğrulamasını engeller. Tam plugin sistemi kılavuzu için bkz.: Plugins. Yerel yetenek modeli ve güncel dış uyumluluk rehberi için: Capability model.

Bu dosya ne yapar

openclaw.plugin.json, OpenClaw’un plugin kodunuzu yüklemeden önce okuduğu meta verilerdir. Şunlar için kullanın:
  • plugin kimliği
  • yapılandırma doğrulaması
  • plugin çalışma zamanını başlatmadan kullanılabilir olması gereken auth ve onboarding meta verileri
  • plugin çalışma zamanı yüklenmeden çözülmesi gereken takma ad ve otomatik etkinleştirme meta verileri
  • çalışma zamanı yüklenmeden önce plugin’i otomatik etkinleştirmesi gereken kısa model ailesi sahipliği meta verileri
  • paketlenmiş uyumluluk bağlantıları ve sözleşme kapsamı için kullanılan statik yetenek sahipliği anlık görüntüleri
  • çalışma zamanı yüklenmeden katalog ve doğrulama yüzeylerine birleştirilmesi gereken kanala özgü yapılandırma meta verileri
  • yapılandırma UI ipuçları
Şunlar için kullanmayın:
  • çalışma zamanı davranışını kaydetme
  • kod giriş noktalarını bildirme
  • npm kurulum meta verileri
Bunlar plugin kodunuz ve package.json içine aittir.

Asgari örnek

{
  "id": "voice-call",
  "configSchema": {
    "type": "object",
    "additionalProperties": false,
    "properties": {}
  }
}

Zengin örnek

{
  "id": "openrouter",
  "name": "OpenRouter",
  "description": "OpenRouter sağlayıcı plugin'i",
  "version": "1.0.0",
  "providers": ["openrouter"],
  "modelSupport": {
    "modelPrefixes": ["router-"]
  },
  "cliBackends": ["openrouter-cli"],
  "providerAuthEnvVars": {
    "openrouter": ["OPENROUTER_API_KEY"]
  },
  "providerAuthChoices": [
    {
      "provider": "openrouter",
      "method": "api-key",
      "choiceId": "openrouter-api-key",
      "choiceLabel": "OpenRouter API anahtarı",
      "groupId": "openrouter",
      "groupLabel": "OpenRouter",
      "optionKey": "openrouterApiKey",
      "cliFlag": "--openrouter-api-key",
      "cliOption": "--openrouter-api-key <key>",
      "cliDescription": "OpenRouter API anahtarı",
      "onboardingScopes": ["text-inference"]
    }
  ],
  "uiHints": {
    "apiKey": {
      "label": "API anahtarı",
      "placeholder": "sk-or-v1-...",
      "sensitive": true
    }
  },
  "configSchema": {
    "type": "object",
    "additionalProperties": false,
    "properties": {
      "apiKey": {
        "type": "string"
      }
    }
  }
}

Üst düzey alan başvurusu

FieldRequiredTypeWhat it means
idEvetstringKanonik plugin kimliği. plugins.entries.<id> içinde kullanılan kimlik budur.
configSchemaEvetobjectBu plugin’in yapılandırması için satır içi JSON Şeması.
enabledByDefaultHayırtruePaketlenmiş bir plugin’i varsayılan olarak etkin olarak işaretler. Varsayılan olarak devre dışı bırakmak için bunu atlayın veya true dışındaki bir değer ayarlayın.
legacyPluginIdsHayırstring[]Bu kanonik plugin kimliğine normalize edilen eski kimlikler.
autoEnableWhenConfiguredProvidersHayırstring[]Auth, yapılandırma veya model başvuruları bunlardan söz ettiğinde bu plugin’i otomatik etkinleştirmesi gereken sağlayıcı kimlikleri.
kindHayır"memory" | "context-engine"plugins.slots.* tarafından kullanılan dışlayıcı plugin türünü 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.
modelSupportHayırobjectÇalışma zamanından önce plugin’i otomatik yüklemek için kullanılan, manifest sahipliğindeki kısa model ailesi meta verileri.
cliBackendsHayırstring[]Bu plugin’in sahip olduğu CLI çıkarım arka uç kimlikleri. Açık yapılandırma başvurularından başlangıçta otomatik etkinleştirme için kullanılır.
providerAuthEnvVarsHayırRecord<string, string[]>Plugin kodu yüklenmeden OpenClaw’un inceleyebileceği, düşük maliyetli sağlayıcı auth ortam meta verileri.
providerAuthChoicesHayırobject[]Onboarding seçicileri, tercih edilen sağlayıcı çözümleme ve basit CLI bayrak bağlantıları için düşük maliyetli auth-seçimi meta verileri.
contractsHayırobjectKonuşma, gerçek zamanlı transkripsiyon, gerçek zamanlı ses, medya anlama, görüntü üretimi, video üretimi, web getirme, web arama ve araç sahipliği için statik paketlenmiş yetenek anlık görüntüsü.
channelConfigsHayırRecord<string, object>Çalışma zamanı yüklenmeden önce keşif ve doğrulama yüzeylerine birleştirilen, manifest sahipliğindeki kanal yapılandırma meta verileri.
skillsHayırstring[]Plugin köküne göre göreli olarak yüklenecek Skills 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ı.

providerAuthChoices başvurusu

Her providerAuthChoices girdisi bir onboarding veya auth seçimini açıklar. OpenClaw bunu sağlayıcı çalışma zamanı yüklenmeden önce okur.
FieldRequiredTypeWhat it means
providerEvetstringBu seçimin ait olduğu sağlayıcı kimliği.
methodEvetstringYönlendirilecek auth yöntemi kimliği.
choiceIdEvetstringOnboarding ve CLI akışlarında kullanılan kararlı auth-seçimi kimliği.
choiceLabelHayırstringKullanıcıya dönük 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 tarafından yönlendirilen etkileşimli seçicilerde önce sıralanır.
assistantVisibilityHayır"visible" | "manual-only"Elle CLI seçimine izin vermeye devam ederken 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ırstringO grup için kullanıcıya dönük etiket.
groupHintHayırstringGrup için kısa yardımcı metin.
optionKeyHayırstringBasit tek bayraklı auth akışları için iç seçenek anahtarı.
cliFlagHayırstring--openrouter-api-key gibi CLI bayrak adı.
cliOptionHayırstring--openrouter-api-key <key> gibi tam CLI seçenek biçimi.
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"] kullanılır.

uiHints başvurusu

uiHints, yapılandırma alanı adlarından küçük işleme ipuçlarına giden bir eşlemdir.
{
  "uiHints": {
    "apiKey": {
      "label": "API anahtarı",
      "help": "OpenRouter istekleri için kullanılır",
      "placeholder": "sk-or-v1-...",
      "sensitive": true
    }
  }
}
Her alan ipucu şunları içerebilir:
FieldTypeWhat it means
labelstringKullanıcıya dönük 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’un plugin çalışma zamanını içe aktarmadan okuyabileceği statik yetenek sahipliği meta verileri için kullanın.
{
  "contracts": {
    "speechProviders": ["openai"],
    "realtimeTranscriptionProviders": ["openai"],
    "realtimeVoiceProviders": ["openai"],
    "mediaUnderstandingProviders": ["openai", "openai-codex"],
    "imageGenerationProviders": ["openai"],
    "videoGenerationProviders": ["qwen"],
    "webFetchProviders": ["firecrawl"],
    "webSearchProviders": ["gemini"],
    "tools": ["firecrawl_search", "firecrawl_scrape"]
  }
}
Her liste isteğe bağlıdır:
FieldTypeWhat it means
speechProvidersstring[]Bu plugin’in sahip olduğu konuşma sağlayıcısı kimlikleri.
realtimeTranscriptionProvidersstring[]Bu plugin’in sahip olduğu gerçek zamanlı transkripsiyon sağlayıcısı kimlikleri.
realtimeVoiceProvidersstring[]Bu plugin’in sahip olduğu gerçek zamanlı ses sağlayıcısı kimlikleri.
mediaUnderstandingProvidersstring[]Bu plugin’in sahip olduğu medya-anlama sağlayıcısı kimlikleri.
imageGenerationProvidersstring[]Bu plugin’in sahip olduğu görüntü-üretimi sağlayıcısı kimlikleri.
videoGenerationProvidersstring[]Bu plugin’in sahip olduğu video-üretimi sağlayıcısı kimlikleri.
webFetchProvidersstring[]Bu plugin’in sahip olduğu web-getirme sağlayıcısı kimlikleri.
webSearchProvidersstring[]Bu plugin’in sahip olduğu web-arama sağlayıcısı kimlikleri.
toolsstring[]Paketlenmiş sözleşme denetimleri için bu plugin’in sahip olduğu ajan araç adları.

channelConfigs başvurusu

Bir kanal plugin’i çalışma zamanı yüklenmeden önce düşük maliyetli yapılandırma meta verilerine ihtiyaç duyuyorsa channelConfigs kullanın.
{
  "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 bağlantısı",
      "preferOver": ["matrix-legacy"]
    }
  }
}
Her kanal girdisi şunları içerebilir:
FieldTypeWhat it means
schemaobjectchannels.<id> için JSON Şeması. Bildirilen her kanal yapılandırma girdisi için zorunludur.
uiHintsRecord<string, object>O kanal yapılandırma bölümü için isteğe bağlı UI etiketleri/yer tutucular/hassasiyet 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ı.
preferOverstring[]Bu kanalın seçim yüzeylerinde önüne geçmesi gereken eski veya daha düşük öncelikli plugin kimlikleri.

modelSupport başvurusu

OpenClaw, sağlayıcı plugin’inizi gpt-5.4 veya claude-sonnet-4.6 gibi kısa model kimliklerinden, plugin çalışma zamanı yüklenmeden önce çıkarsamalıysa 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 providers manifest meta verilerini kullanır
  • modelPatterns, modelPrefixes üzerinde önceliklidir
  • paketlenmemiş bir plugin ile paketlenmiş bir plugin birlikte eşleşirse, paketlenmemiş plugin kazanır
  • kalan belirsizlik, kullanıcı veya yapılandırma bir sağlayıcı belirtinceye kadar yok sayılır
Alanlar:
FieldTypeWhat it means
modelPrefixesstring[]Kısa model kimliklerine karşı startsWith ile eşleştirilen ön ekler.
modelPatternsstring[]Profil soneki kaldırıldıktan sonra kısa model kimliklerine karşı eşleştirilen regex kaynakları.
Eski üst düzey yetenek anahtarları kullanımdan kaldırılmıştır. speechProviders, realtimeTranscriptionProviders, realtimeVoiceProviders, mediaUnderstandingProviders, imageGenerationProviders, videoGenerationProviders, webFetchProviders ve webSearchProviders alanlarını 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 değerlendirmez.

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

İki dosya farklı görevler üstlenir:
FileUse it for
openclaw.plugin.jsonKeşif, yapılandırma doğrulaması, auth-seçimi meta verileri ve plugin kodu çalışmadan önce var olması gereken UI ipuçları
package.jsonnpm meta verileri, bağımlılık kurulumu ve giriş noktaları, kurulum kısıtlaması, 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 bunu plugin kodunu yüklemeden önce bilmek zorundaysa, openclaw.plugin.json içine koyun
  • paketleme, giriş dosyaları veya npm kurulum davranışı ile ilgiliyse, package.json içine koyun

Keşfi etkileyen package.json alanları

Çalışma zamanı öncesi bazı plugin meta verileri, kasıtlı olarak openclaw.plugin.json yerine package.json içindeki openclaw bloğunda bulunur. Önemli örnekler:
FieldWhat it means
openclaw.extensionsYerel plugin giriş noktalarını bildirir.
openclaw.setupEntryOnboarding ve ertelenmiş kanal başlangıcı sırasında kullanılan hafif, yalnızca kurulum amaçlı giriş noktası.
openclaw.channelEtiketler, belge yolları, takma adlar ve seçim metni gibi düşük maliyetli kanal katalog meta verileri.
openclaw.install.npmSpec / openclaw.install.localPathPaketlenmiş ve dışarıda yayımlanan plugin’ler için kurulum/güncelleme ipuçları.
openclaw.install.defaultChoiceBirden çok kurulum kaynağı bulunduğunda tercih edilen kurulum yolu.
openclaw.install.minHostVersion>=2026.3.22 gibi semver taban çizgisi kullanan, desteklenen en düşük OpenClaw ana makine sürümü.
openclaw.install.allowInvalidConfigRecoveryYapılandırma geçersiz olduğunda dar bir paketlenmiş-plugin yeniden kurulum kurtarma yoluna izin verir.
openclaw.startup.deferConfiguredChannelFullLoadUntilAfterListenBaşlangıç sırasında tam kanal plugin’inden önce yalnızca kurulum amaçlı kanal yüzeylerinin yüklenmesine izin verir.
openclaw.install.minHostVersion, kurulum ve manifest kayıt yükleme sırasında zorunlu kılınır. Geçersiz değerler reddedilir; daha yeni ama geçerli değerler eski ana makinelerde plugin’i atlar. openclaw.install.allowInvalidConfigRecovery kasıtlı olarak dardır. Keyfi olarak bozuk yapılandırmaları kurulabilir hale getirmez. Bugün yalnızca belirli eski paketlenmiş-plugin yükseltme hatalarından kurtulmaya izin verir; örneğin eksik bir paketlenmiş plugin yolu veya aynı paketlenmiş plugin için eski bir channels.<id> girdisi gibi. İlgisiz yapılandırma hataları hâlâ kurulumu engeller ve operatörleri openclaw doctor --fix komutuna yönlendirir.

JSON Şeması gereksinimleri

  • Her plugin bir JSON Şeması göndermelidir, hiç 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.

Doğrulama davranışı

  • Bilinmeyen channels.* anahtarları, kanal kimliği bir plugin manifesti tarafından bildirilmedikçe hatadır.
  • plugins.entries.<id>, plugins.allow, plugins.deny ve plugins.slots.* keşfedilebilir plugin kimliklerine başvurmak zorundadır. Bilinmeyen kimlikler hatadır.
  • Bir plugin kuruluysa ancak bozuk veya eksik bir manifest ya da ş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 Configuration reference bölümüne bakın.

Notlar

  • Manifest, yerel dosya sistemi yüklemeleri dahil yerel OpenClaw plugin’leri için zorunludur.
  • Çalışma zamanı yine de 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â nesne olduğu sürece yorumlar, sondaki virgüller ve tırnaksız anahtarlar kabul edilir.
  • Manifest yükleyicisi yalnızca belgelenmiş manifest alanlarını okur. Buraya özel üst düzey anahtarlar eklemekten kaçının.
  • providerAuthEnvVars, env adlarını incelemek için plugin çalışma zamanını başlatmaması gereken auth yoklamaları, env-işaretleyici doğrulaması ve benzeri sağlayıcı-auth yüzeyleri için düşük maliyetli meta veri yoludur.
  • providerAuthChoices, auth-seçimi seçicileri, --auth-choice çözümleme, tercih edilen sağlayıcı eşleme ve sağlayıcı çalışma zamanı yüklenmeden önce basit onboarding CLI bayrağı kaydı için düşük maliyetli meta veri yoludur. Sağlayıcı kodu gerektiren çalışma zamanı sihirbazı meta verileri için bkz. Provider runtime hooks.
  • Dışlayıcı plugin türleri plugins.slots.* üzerinden seçilir.
    • kind: "memory", plugins.slots.memory tarafından seçilir.
    • kind: "context-engine", plugins.slots.contextEngine tarafından seçilir (varsayılan: yerleşik legacy).
  • channels, providers, cliBackends ve skills, bir plugin bunlara ihtiyaç duymadığında atlanabilir.
  • Plugin’iniz yerel modüllere bağlıysa, derleme adımlarını ve olası paket yöneticisi izin listesi gereksinimlerini belgeleyin (örneğin pnpm allow-build-scripts
    • pnpm rebuild <package>).

İlgili