Plugin SDK, Plugin’ler ile çekirdek arasındaki türlendirilmiş sözleşmedir. Bu sayfa, neyi içe aktaracağınız ve neyi kaydedebileceğiniz için başvuru kaynağıdır.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, OpenClaw içinde
openclaw/plugin-sdk/* kullanan Plugin yazarları
içindir. Gateway üzerinden aracıları çalıştırmak isteyen harici uygulamalar,
betikler, panolar, CI işleri ve IDE uzantıları için bunun yerine
OpenClaw App SDK ve @openclaw/sdk paketini
kullanın.İçe aktarma kuralı
Her zaman belirli bir alt yoldan içe aktarın:openclaw/plugin-sdk/channel-core tercih edin; daha geniş şemsiye yüzey ve
buildChannelConfigSchema gibi paylaşılan yardımcılar için
openclaw/plugin-sdk/core kullanın.
Kanal yapılandırması için kanalın sahip olduğu JSON Schema’yı
openclaw.plugin.json#channelConfigs üzerinden yayımlayın. plugin-sdk/channel-config-schema
alt yolu, paylaşılan şema ilkelleri ve genel oluşturucu içindir. OpenClaw’ın
paketli Plugin’leri, korunmuş paketli kanal şemaları için
plugin-sdk/bundled-channel-config-schema kullanır. Kullanımdan kaldırılmış
uyumluluk dışa aktarımları plugin-sdk/channel-config-schema-legacy üzerinde kalır;
paketli şema alt yollarının hiçbiri yeni Plugin’ler için bir kalıp değildir.
Alt yol başvurusu
Plugin SDK; Plugin girişi, kanal, sağlayıcı, auth, çalışma zamanı, yetenek, bellek ve ayrılmış paketli Plugin yardımcılarına göre gruplanmış dar alt yollar kümesi olarak sunulur. Gruplanmış ve bağlantılanmış tam katalog için Plugin SDK alt yolları bölümüne bakın. Derleyici giriş noktası envanteriscripts/lib/plugin-sdk-entrypoints.json
içinde bulunur; paket dışa aktarımları, scripts/lib/plugin-sdk-private-local-only-subpaths.json
içinde listelenen repo-yerel test/dahili alt yollar çıkarıldıktan sonra herkese
açık alt kümeden oluşturulur. Herkese açık dışa aktarım sayısını denetlemek için
pnpm plugin-sdk:surface çalıştırın. Yeterince eski olan ve paketli uzantı
üretim kodu tarafından kullanılmayan kullanımdan kaldırılmış herkese açık alt
yollar scripts/lib/plugin-sdk-deprecated-public-subpaths.json içinde izlenir;
geniş kullanımdan kaldırılmış yeniden dışa aktarma barrel’ları
scripts/lib/plugin-sdk-deprecated-barrel-subpaths.json içinde izlenir.
Kayıt API’si
register(api) callback’i, şu yöntemlere sahip bir OpenClawPluginApi nesnesi
alır:
Yetenek kaydı
| Yöntem | Kaydettiği şey |
|---|---|
api.registerProvider(...) | Metin çıkarımı (LLM) |
api.registerAgentHarness(...) | Deneysel düşük seviyeli aracı yürütücü |
api.registerCliBackend(...) | Yerel CLI çıkarım arka ucu |
api.registerChannel(...) | Mesajlaşma kanalı |
api.registerSpeechProvider(...) | Metinden sese / STT sentezi |
api.registerRealtimeTranscriptionProvider(...) | Akışlı gerçek zamanlı transkripsiyon |
api.registerRealtimeVoiceProvider(...) | Çift yönlü gerçek zamanlı ses oturumları |
api.registerMediaUnderstandingProvider(...) | Görüntü/ses/video analizi |
api.registerImageGenerationProvider(...) | Görüntü üretimi |
api.registerMusicGenerationProvider(...) | Müzik üretimi |
api.registerVideoGenerationProvider(...) | Video üretimi |
api.registerWebFetchProvider(...) | Web getirme / kazıma sağlayıcısı |
api.registerWebSearchProvider(...) | Web araması |
Araçlar ve komutlar
| Yöntem | Kaydettiği şey |
|---|---|
api.registerTool(tool, opts?) | Aracı aracı (zorunlu veya { optional: true }) |
api.registerCommand(def) | Özel komut (LLM’yi atlar) |
agentPromptGuidance ayarlayabilir. Bu metni komutun kendisi
hakkında tutun; çekirdek prompt oluşturuculara sağlayıcıya veya Plugin’e özgü
politika eklemeyin.
Altyapı
| Yöntem | Kaydettiği şey |
|---|---|
api.registerHook(events, handler, opts?) | Olay hook’u |
api.registerHttpRoute(params) | Gateway HTTP uç noktası |
api.registerGatewayMethod(name, handler) | Gateway RPC yöntemi |
api.registerGatewayDiscoveryService(service) | Yerel Gateway keşif duyurucusu |
api.registerCli(registrar, opts?) | CLI alt komutu |
api.registerNodeCliFeature(registrar, opts?) | openclaw nodes altında Node özelliği CLI |
api.registerService(service) | Arka plan servisi |
api.registerInteractiveHandler(registration) | Etkileşimli işleyici |
api.registerAgentToolResultMiddleware(...) | Çalışma zamanı araç sonucu ara yazılımı |
api.registerMemoryPromptSupplement(builder) | Eklemeli bellek komşu prompt bölümü |
api.registerMemoryCorpusSupplement(adapter) | Eklemeli bellek arama/okuma korpusu |
İş akışı Plugin’leri için ana makine hook’ları
Ana makine hook’ları, yalnızca sağlayıcı, kanal veya araç eklemek yerine ana makine yaşam döngüsüne katılması gereken Plugin’ler için SDK seam’leridir. Bunlar genel sözleşmelerdir; Plan Mode bunları kullanabilir, ancak onay iş akışları, çalışma alanı politika kapıları, arka plan izleyicileri, kurulum sihirbazları ve UI yardımcı Plugin’leri de kullanabilir.| Yöntem | Sahip olduğu sözleşme |
|---|---|
api.session.state.registerSessionExtension(...) | Gateway oturumları üzerinden yansıtılan, Plugin’e ait, JSON uyumlu oturum durumu |
api.session.workflow.enqueueNextTurnInjection(...) | Bir oturum için sonraki aracı turuna enjekte edilen dayanıklı, tam olarak bir kez bağlam |
api.registerTrustedToolPolicy(...) | Araç parametrelerini engelleyebilen veya yeniden yazabilen paketli/güvenilir ön Plugin araç politikası |
api.registerToolMetadata(...) | Araç uygulamasını değiştirmeden araç katalog görüntüleme meta verileri |
api.registerCommand(...) | Kapsamlı Plugin komutları; komut sonuçları continueAgent: true ayarlayabilir; Discord yerel komutları descriptionLocalizations destekler |
api.session.controls.registerControlUiDescriptor(...) | Oturum, araç, çalıştırma veya ayarlar yüzeyleri için kontrol UI katkı tanımlayıcıları |
api.lifecycle.registerRuntimeLifecycle(...) | Reset/delete/reload yollarında Plugin’e ait çalışma zamanı kaynakları için temizleme callback’leri |
api.agent.events.registerAgentEventSubscription(...) | İş akışı durumu ve izleyiciler için sanitize edilmiş olay abonelikleri |
api.runContext.setRunContext(...) / getRunContext(...) / clearRunContext(...) | Terminal çalıştırma yaşam döngüsünde temizlenen, çalıştırma başına Plugin geçici durumu |
api.session.workflow.registerSessionSchedulerJob(...) | Plugin’e ait zamanlayıcı işleri için temizleme meta verileri; işi zamanlamaz veya görev kayıtları oluşturmaz |
api.session.workflow.sendSessionAttachment(...) | Etkin doğrudan giden oturum rotasına yalnızca paketli, ana makine aracılı dosya eki teslimi |
api.session.workflow.scheduleSessionTurn(...) / unscheduleSessionTurnsByTag(...) | Yalnızca paketli Cron destekli zamanlanmış oturum turları ve etiket tabanlı temizleme |
api.session.controls.registerSessionAction(...) | İstemcilerin Gateway üzerinden gönderebileceği türlendirilmiş oturum eylemleri |
api.session.state.registerSessionExtension(...)api.session.workflow.enqueueNextTurnInjection(...)api.session.workflow.registerSessionSchedulerJob(...)api.session.workflow.sendSessionAttachment(...)api.session.workflow.scheduleSessionTurn(...)api.session.workflow.unscheduleSessionTurnsByTag(...)api.session.controls.registerSessionAction(...)api.session.controls.registerControlUiDescriptor(...)api.agent.events.registerAgentEventSubscription(...)api.agent.events.emitAgentEvent(...)api.runContext.setRunContext(...)/getRunContext(...)/clearRunContext(...)api.lifecycle.registerRuntimeLifecycle(...)
api.registerSessionExtension, api.enqueueNextTurnInjection,
api.registerControlUiDescriptor, api.registerRuntimeLifecycle,
api.registerAgentEventSubscription, api.emitAgentEvent,
api.setRunContext, api.getRunContext, api.clearRunContext,
api.registerSessionSchedulerJob, api.registerSessionAction,
api.sendSessionAttachment, api.scheduleSessionTurn veya
api.unscheduleSessionTurnsByTag çağıran yeni Plugin kodu eklemeyin.
scheduleSessionTurn(...), Gateway Cron zamanlayıcısı üzerinde oturum kapsamlı bir kolaylık katmanıdır. Cron zamanlamayı sahiplenir ve turn çalıştığında arka plan görev kaydını oluşturur; Plugin SDK yalnızca hedef oturumu, Plugin’e ait adlandırmayı ve temizlemeyi sınırlar. İşin kendisi dayanıklı çok adımlı Task Flow durumu gerektirdiğinde, zamanlanmış turn içinde api.runtime.tasks.managedFlows kullanın.
Sözleşmeler yetkiyi bilinçli olarak ayırır:
- Harici Plugin’ler oturum uzantılarını, UI tanımlayıcılarını, komutları, araç meta verilerini, sonraki turn enjeksiyonlarını ve normal hook’ları sahiplenebilir.
- Güvenilir araç ilkeleri sıradan
before_tool_callhook’larından önce çalışır ve ana makine güvenlik ilkesine katıldıkları için yalnızca paketlenmiş olanlara özeldir. - Ayrılmış komut sahipliği yalnızca paketlenmiş olanlara özeldir. Harici Plugin’ler kendi komut adlarını veya diğer adlarını kullanmalıdır.
allowPromptInjection=false,agent_turn_prepare,before_prompt_build,heartbeat_prompt_contribution, eskibefore_agent_startiçindeki prompt alanları veenqueueNextTurnInjectiondahil olmak üzere prompt’u değiştiren hook’ları devre dışı bırakır.
| Plugin arketipi | Kullanılan hook’lar |
|---|---|
| Onay iş akışı | Oturum uzantısı, komut devamı, sonraki turn enjeksiyonu, UI tanımlayıcısı |
| Bütçe/çalışma alanı ilke kapısı | Güvenilir araç ilkesi, araç meta verisi, oturum projeksiyonu |
| Arka plan yaşam döngüsü izleyicisi | Çalışma zamanı yaşam döngüsü temizliği, agent olay aboneliği, oturum zamanlayıcısı sahipliği/temizliği, Heartbeat prompt katkısı, UI tanımlayıcısı |
| Kurulum veya ilk kullanım sihirbazı | Oturum uzantısı, kapsamlı komutlar, Kontrol UI tanımlayıcısı |
Ayrılmış çekirdek yönetici ad alanları (
config.*, exec.approvals.*, wizard.*,
update.*), bir Plugin daha dar bir gateway yöntem kapsamı atamaya çalışsa bile
her zaman operator.admin olarak kalır. Plugin’e ait yöntemler için Plugin’e
özgü önekleri tercih edin.Araç sonucu ara katmanı ne zaman kullanılır
Araç sonucu ara katmanı ne zaman kullanılır
Paketlenmiş Plugin’ler, yürütmeden sonra ve çalışma zamanı bu sonucu modele
geri beslemeden önce bir araç sonucunu yeniden yazmaları gerektiğinde
api.registerAgentToolResultMiddleware(...) kullanabilir. Bu, tokenjuice gibi
async çıktı indirgeyicileri için güvenilir, çalışma zamanından bağımsız
seam’dir.Paketlenmiş Plugin’ler hedeflenen her çalışma zamanı için
contracts.agentToolResultMiddleware bildirmelidir; örneğin ["pi", "codex"].
Harici Plugin’ler bu ara katmanı kaydedemez; model öncesi araç sonucu
zamanlaması gerektirmeyen işler için normal OpenClaw Plugin hook’larını kullanın.
Eski, yalnızca Pi’ye özgü gömülü uzantı factory kayıt yolu kaldırıldı.Gateway keşif kaydı
api.registerGatewayDiscoveryService(...), bir Plugin’in etkin Gateway’i
mDNS/Bonjour gibi yerel bir keşif aktarımı üzerinde duyurmasını sağlar. OpenClaw,
yerel keşif etkin olduğunda Gateway başlatılırken servisi çağırır, geçerli
Gateway portlarını ve gizli olmayan TXT ipucu verilerini iletir ve Gateway
kapatılırken döndürülen stop işleyicisini çağırır.
CLI kayıt meta verisi
api.registerCli(registrar, opts?) iki tür komut meta verisi kabul eder:
commands: registrar tarafından sahiplenilen açık komut adlarıdescriptors: CLI yardımı, yönlendirme ve tembel Plugin CLI kaydı için kullanılan ayrıştırma zamanı komut tanımlayıcılarıparentPath:["nodes"]gibi iç içe komut grupları için isteğe bağlı üst komut yolu
api.registerNodeCliFeature(registrar, opts?) tercih edin. Bu,
api.registerCli(..., { parentPath: ["nodes"] }) etrafında küçük bir sarmalayıcıdır
ve openclaw nodes canvas gibi komutları açıkça Plugin’e ait node özellikleri yapar.
Bir Plugin komutunun normal kök CLI yolunda tembel yüklemeli kalmasını istiyorsanız,
o registrar’ın açığa çıkardığı her üst düzey komut kökünü kapsayan descriptors
sağlayın.
program olarak alır:
commands değerini tek başına yalnızca tembel kök CLI kaydına ihtiyacınız yoksa
kullanın. Bu istekli uyumluluk yolu desteklenmeye devam eder, ancak ayrıştırma
zamanı tembel yükleme için tanımlayıcı destekli yer tutucular kurmaz.
CLI arka uç kaydı
api.registerCliBackend(...), bir Plugin’in codex-cli gibi yerel bir AI CLI
arka ucu için varsayılan yapılandırmayı sahiplenmesini sağlar.
- Arka uç
iddeğeri,codex-cli/gpt-5gibi model referanslarında provider öneki olur. - Arka uç
configdeğeriagents.defaults.cliBackends.<id>ile aynı şekli kullanır. - Kullanıcı yapılandırması hâlâ önceliklidir. OpenClaw, CLI’ı çalıştırmadan önce
agents.defaults.cliBackends.<id>değerini Plugin varsayılanının üzerine birleştirir. - Bir arka uç birleştirme sonrasında uyumluluk yeniden yazımları gerektiriyorsa
normalizeConfigkullanın (örneğin eski flag şekillerini normalleştirmek için). - OpenClaw düşünme düzeylerini yerel effort flag’ine eşlemek gibi CLI lehçesine ait istek kapsamlı argv yeniden yazımları için
resolveExecutionArgskullanın.
Özel slotlar
| Yöntem | Ne kaydeder |
|---|---|
api.registerContextEngine(id, factory) | Context engine (tek seferde bir etkin). assemble() geri çağrısı availableTools ve citationsMode alır, böylece engine prompt eklemelerini uyarlayabilir. |
api.registerMemoryCapability(capability) | Birleşik bellek capability’si |
api.registerMemoryPromptSection(builder) | Bellek prompt bölümü builder’ı |
api.registerMemoryFlushPlan(resolver) | Bellek flush plan resolver’ı |
api.registerMemoryRuntime(runtime) | Bellek çalışma zamanı adapter’ı |
Bellek embedding adapter’ları
| Yöntem | Ne kaydeder |
|---|---|
api.registerMemoryEmbeddingProvider(adapter) | Etkin Plugin için bellek embedding adapter’ı |
registerMemoryCapability, tercih edilen özel bellek Plugin API’sidir.registerMemoryCapability, eşlik eden Plugin’lerin belirli bir bellek Plugin’inin özel düzenine erişmek yerine dışa aktarılan bellek artifact’leriniopenclaw/plugin-sdk/memory-host-coreüzerinden tüketebilmesi içinpublicArtifacts.listArtifacts(...)de açığa çıkarabilir.registerMemoryPromptSection,registerMemoryFlushPlanveregisterMemoryRuntimeeskiyle uyumlu özel bellek Plugin API’leridir.MemoryFlushPlan.model, flush turn’ünü etkin fallback zincirini devralmadanollama/qwen3:8bgibi tam birprovider/modelreferansına sabitleyebilir.registerMemoryEmbeddingProvider, etkin bellek Plugin’inin bir veya daha fazla embedding adapter kimliği kaydetmesini sağlar (örneğinopenai,geminiveya özel Plugin tanımlı bir kimlik).agents.defaults.memorySearch.providerveagents.defaults.memorySearch.fallbackgibi kullanıcı yapılandırması, bu kayıtlı adapter kimliklerine göre çözümlenir.
Olaylar ve yaşam döngüsü
| Yöntem | Ne yapar |
|---|---|
api.on(hookName, handler, opts?) | Türlü yaşam döngüsü hook’u |
api.onConversationBindingResolved(handler) | Konuşma bağlama geri çağrısı |
Hook karar semantiği
before_tool_call:{ block: true }döndürmek sonlandırıcıdır. Herhangi bir işleyici bunu ayarladığında, daha düşük öncelikli işleyiciler atlanır.before_tool_call:{ block: false }döndürmek karar yok olarak ele alınır (blockdeğerini atlamakla aynıdır), override olarak değil.before_install:{ block: true }döndürmek sonlandırıcıdır. Herhangi bir işleyici bunu ayarladığında, daha düşük öncelikli işleyiciler atlanır.before_install:{ block: false }döndürmek karar yok olarak ele alınır (blockdeğerini atlamakla aynıdır), override olarak değil.reply_dispatch:{ handled: true, ... }döndürmek sonlandırıcıdır. Herhangi bir işleyici dispatch’i üstlendiğinde, daha düşük öncelikli işleyiciler ve varsayılan model dispatch yolu atlanır.message_sending:{ cancel: true }döndürmek sonlandırıcıdır. Herhangi bir işleyici bunu ayarladığında, daha düşük öncelikli işleyiciler atlanır.message_sending:{ cancel: false }döndürmek karar yok olarak ele alınır (canceldeğerini atlamakla aynıdır), override olarak değil.message_received: gelen thread/konu yönlendirmesine ihtiyacınız olduğunda türlüthreadIdalanını kullanın.metadataalanını kanala özgü ekler için saklayın.message_sending: kanala özgümetadatadeğerine dönmeden önce türlüreplyToId/threadIdyönlendirme alanlarını kullanın.gateway_start: içgateway:startuphook’larına güvenmek yerine gateway’e ait başlatma durumu içinctx.config,ctx.workspaceDirvectx.getCron?.()kullanın.cron_changed: gateway’e ait Cron yaşam döngüsü değişikliklerini gözlemleyin. Harici uyandırma zamanlayıcılarını eşitlerkenevent.job?.state?.nextRunAtMsvectx.getCron?.()kullanın; süresi gelen denetimleri ve yürütme için OpenClaw’ı doğruluk kaynağı olarak tutun.
API nesnesi alanları
| Alan | Tür | Açıklama |
|---|---|---|
api.id | string | Plugin kimliği |
api.name | string | Görünen ad |
api.version | string? | Plugin sürümü (isteğe bağlı) |
api.description | string? | Plugin açıklaması (isteğe bağlı) |
api.source | string | Plugin kaynak yolu |
api.rootDir | string? | Plugin kök dizini (isteğe bağlı) |
api.config | OpenClawConfig | Geçerli yapılandırma anlık görüntüsü (varsa bellekte etkin çalışma zamanı anlık görüntüsü) |
api.pluginConfig | Record<string, unknown> | plugins.entries.<id>.config üzerinden Plugin’e özgü yapılandırma |
api.runtime | PluginRuntime | Çalışma zamanı yardımcıları |
api.logger | PluginLogger | Kapsamlı günlükleyici (debug, info, warn, error) |
api.registrationMode | PluginRegistrationMode | Geçerli yükleme modu; "setup-runtime" hafif, tam giriş öncesi başlangıç/kurulum penceresidir |
api.resolvePath(input) | (string) => string | Plugin köküne göre yolu çözümle |
Dahili modül kuralı
Plugin’inizin içinde, dahili içe aktarmalar için yerel barrel dosyalarını kullanın:api.ts, runtime-api.ts,
index.ts, setup-entry.ts ve benzer genel giriş dosyaları), OpenClaw zaten
çalışıyorken etkin çalışma zamanı yapılandırma anlık görüntüsünü tercih eder.
Henüz çalışma zamanı anlık görüntüsü yoksa, diskte çözümlenen yapılandırma
dosyasına geri dönerler. Paketlenmiş Plugin facade’ları OpenClaw’ın Plugin
facade yükleyicileri üzerinden yüklenmelidir; dist/extensions/... üzerinden
doğrudan içe aktarmalar, paketli kurulumların Plugin’e ait kod için kullandığı
manifest ve çalışma zamanı sidecar denetimlerini atlar.
Sağlayıcı Plugin’leri, bir yardımcı kasıtlı olarak sağlayıcıya özgüyse ve henüz
genel bir SDK alt yoluna ait değilse, dar bir Plugin yerel sözleşme barrel’ı
sunabilir. Paketlenmiş örnekler:
- Anthropic: Claude beta-header ve
service_tierakış yardımcıları için genelapi.ts/contract-api.tssınırı. @openclaw/openai-provider:api.ts, sağlayıcı oluşturucularını, varsayılan model yardımcılarını ve gerçek zamanlı sağlayıcı oluşturucularını dışa aktarır.@openclaw/openrouter-provider:api.ts, sağlayıcı oluşturucusunu ve onboarding/yapılandırma yardımcılarını dışa aktarır.
İlgili
Giriş noktaları
definePluginEntry ve defineChannelPluginEntry seçenekleri.Çalışma zamanı yardımcıları
Tam
api.runtime ad alanı referansı.Kurulum ve yapılandırma
Paketleme, manifestler ve yapılandırma şemaları.
Test
Test yardımcı programları ve lint kuralları.
SDK geçişi
Kullanımdan kaldırılmış yüzeylerden geçiş.
Plugin dahili yapısı
Derin mimari ve yetenek modeli.