Plugins

Plugin SDK geçişi

OpenClaw, geniş bir geriye dönük uyumluluk katmanından odaklı, belgelenmiş import'lara sahip modern bir Plugin mimarisine geçti. Plugin'iniz yeni mimariden önce oluşturulduysa, bu kılavuz geçiş yapmanıza yardımcı olur.

Değişenler

Eski Plugin sistemi, Plugin'lerin tek bir giriş noktasından ihtiyaç duydukları her şeyi import etmesine olanak tanıyan iki çok geniş yüzey sağlıyordu:

  • openclaw/plugin-sdk/compat - onlarca yardımcıyı yeniden dışa aktaran tek bir import. Yeni Plugin mimarisi inşa edilirken eski hook tabanlı Plugin'lerin çalışmaya devam etmesi için sunulmuştu.
  • openclaw/plugin-sdk/infra-runtime - sistem olaylarını, heartbeat durumunu, teslim kuyruklarını, fetch/proxy yardımcılarını, dosya yardımcılarını, onay türlerini ve ilgisiz yardımcı programları karıştıran geniş bir runtime yardımcı barrel'i.
  • openclaw/plugin-sdk/config-runtime - geçiş aralığı sırasında artık kullanımdan kaldırılmış doğrudan yükleme/yazma yardımcılarını hâlâ taşıyan geniş bir config uyumluluk barrel'i.
  • openclaw/extension-api - Plugin'lere gömülü agent çalıştırıcısı gibi host tarafı yardımcılara doğrudan erişim veren bir köprü.
  • api.registerEmbeddedExtensionFactory(...) - tool_result gibi gömülü çalıştırıcı olaylarını gözlemleyebilen, kaldırılmış, yalnızca Pi'ye özgü paketli extension hook'u.

Geniş import yüzeyleri artık kullanımdan kaldırılmıştır. Runtime sırasında hâlâ çalışırlar, ancak yeni Plugin'ler bunları kullanmamalıdır ve mevcut Plugin'ler, bir sonraki major release bunları kaldırmadan önce geçiş yapmalıdır. Yalnızca Pi'ye özgü gömülü extension factory kayıt API'si kaldırılmıştır; bunun yerine araç sonucu middleware'i kullanın.

OpenClaw, yerine geçecek bir seçenek sunan değişiklikle aynı anda belgelenmiş Plugin davranışını kaldırmaz veya yeniden yorumlamaz. Kırıcı contract değişiklikleri önce bir uyumluluk adapter'ından, tanılardan, dokümanlardan ve bir kullanımdan kaldırma aralığından geçmelidir. Bu, SDK import'ları, manifest alanları, kurulum API'leri, hook'lar ve runtime kayıt davranışı için geçerlidir.

Bu neden değişti

Eski yaklaşım sorunlara neden oldu:

  • Yavaş başlangıç - tek bir yardımcıyı import etmek onlarca ilgisiz modülü yüklüyordu
  • Döngüsel bağımlılıklar - geniş yeniden dışa aktarımlar import döngüleri oluşturmayı kolaylaştırıyordu
  • Belirsiz API yüzeyi - hangi export'ların kararlı, hangilerinin internal olduğunu anlamanın yolu yoktu

Modern Plugin SDK bunu düzeltir: her import yolu (openclaw/plugin-sdk/\<subpath\>), net bir amacı ve belgelenmiş contract'ı olan küçük, kendi içinde bağımsız bir modüldür.

Paketli kanallar için eski provider kolaylık seam'leri de kaldırıldı. Kanal markalı yardımcı seam'ler kararlı Plugin contract'ları değil, özel mono-repo kısayollarıydı. Bunun yerine dar ve genel SDK subpath'leri kullanın. Paketli Plugin çalışma alanında, provider'a ait yardımcıları o Plugin'in kendi api.ts veya runtime-api.ts dosyasında tutun.

Mevcut paketli provider örnekleri:

  • Anthropic, Claude'a özgü stream yardımcılarını kendi api.ts / contract-api.ts seam'inde tutar
  • OpenAI, provider builder'ları, varsayılan model yardımcılarını ve realtime provider builder'larını kendi api.ts dosyasında tutar
  • OpenRouter, provider builder'ını ve onboarding/config yardımcılarını kendi api.ts dosyasında tutar

Talk ve realtime ses geçiş planı

Realtime ses, telefon, toplantı ve tarayıcı Talk kodu, yüzeye yerel turn kayıt tutmadan openclaw/plugin-sdk/realtime-voice tarafından dışa aktarılan paylaşılan bir Talk oturum controller'ına taşınıyor. Yeni controller ortak Talk olay envelope'unu, aktif turn durumunu, capture durumunu, output-audio durumunu, yakın olay geçmişini ve eski turn reddini yönetir. Provider Plugin'leri tedarikçiye özgü realtime oturumları yönetmeye devam etmelidir; yüzey Plugin'leri capture, playback, telefon ve toplantı ayrıntılarını yönetmeye devam etmelidir.

Bu Talk geçişi bilinçli olarak temiz bir kırılma olacak şekilde tasarlanmıştır:

  1. Paylaşılan controller/runtime primitives'lerini plugin-sdk/realtime-voice içinde tutun.
  2. Paketli yüzeyleri paylaşılan controller'a taşıyın: tarayıcı relay, managed-room handoff, voice-call realtime, voice-call streaming STT, Google Meet realtime ve native push-to-talk.
  3. Eski Talk RPC ailelerini nihai talk.session.* ve talk.client.* API'siyle değiştirin.
  4. Gateway hello-ok.features.events içinde tek bir canlı Talk olay kanalını duyurun: talk.event.
  5. Eski realtime HTTP endpoint'ini ve request-time instruction override yolunu silin.

Yeni kod, düşük seviyeli bir adapter veya test fixture uygulamadığı sürece createTalkEventSequencer(...) öğesini doğrudan çağırmamalıdır. Turn kapsamlı olayların turn id olmadan yayımlanamaması, eski turnEnd / turnCancel çağrılarının daha yeni bir aktif turn'ü temizleyememesi ve output-audio lifecycle olaylarının telefon, toplantılar, tarayıcı relay'i, managed-room handoff ve native Talk istemcileri genelinde tutarlı kalması için paylaşılan controller'ı tercih edin.

Hedef genel API şekli şöyledir:

// Gateway-owned Talk session API.
await gateway.request("talk.session.create", {
  mode: "realtime",
  transport: "gateway-relay",
  brain: "agent-consult",
  sessionKey: "main",
});
await gateway.request("talk.session.appendAudio", { sessionId, audioBase64 });
await gateway.request("talk.session.cancelOutput", { sessionId, reason: "barge-in" });
await gateway.request("talk.session.submitToolResult", { sessionId, callId, result });
await gateway.request("talk.session.close", { sessionId });

// Client-owned provider session API.
await gateway.request("talk.client.create", {
  mode: "realtime",
  transport: "webrtc",
  brain: "agent-consult",
  sessionKey: "main",
});
await gateway.request("talk.client.toolCall", { sessionKey, callId, name, args });

Tarayıcıya ait WebRTC/provider-websocket oturumları talk.client.create kullanır, çünkü tarayıcı provider negotiation'ı ve media transport'u yönetirken Gateway kimlik bilgilerini, talimatları ve araç policy'sini yönetir. talk.session.*, gateway-relay realtime, gateway-relay transcription ve managed-room native STT/TTS oturumları için ortak Gateway yönetimli yüzeydir.

Realtime selector'ları talk.provider / talk.providers yanına yerleştiren eski config'ler openclaw doctor --fix ile onarılmalıdır; runtime Talk, speech/TTS provider config'ini realtime provider config'i olarak yeniden yorumlamaz.

Desteklenen talk.session.create kombinasyonları bilinçli olarak küçüktür:

Mod Transport Brain Sahip Notlar
realtime gateway-relay agent-consult Gateway Gateway üzerinden köprülenen full-duplex provider sesi; tool call'lar agent-consult aracı üzerinden yönlendirilir.
transcription gateway-relay none Gateway Yalnızca streaming STT; çağıranlar giriş sesi gönderir ve transcript olayları alır.
stt-tts managed-room agent-consult Native/client room İstemcinin capture/playback'i, Gateway'in turn durumunu yönettiği push-to-talk ve walkie-talkie tarzı odalar.
stt-tts managed-room direct-tools Native/client room Gateway araç eylemlerini doğrudan yürüten güvenilir birinci taraf yüzeyler için yalnızca admin oda modu.

Kaldırılan method haritası:

Eski Yeni
talk.realtime.session talk.client.create
talk.realtime.toolCall talk.client.toolCall
talk.realtime.relayAudio talk.session.appendAudio
talk.realtime.relayCancel talk.session.cancelOutput veya talk.session.cancelTurn
talk.realtime.relayToolResult talk.session.submitToolResult
talk.realtime.relayStop talk.session.close
talk.transcription.session talk.session.create({ mode: "transcription" })
talk.transcription.relayAudio talk.session.appendAudio
talk.transcription.relayCancel talk.session.cancelTurn
talk.transcription.relayStop talk.session.close
talk.handoff.create talk.session.create({ transport: "managed-room" })
talk.handoff.join talk.session.join
talk.handoff.revoke talk.session.close

Birleşik kontrol sözlüğü de bilinçli olarak dardır:

Method Geçerli olduğu yer Contract
talk.session.appendAudio realtime/gateway-relay, transcription/gateway-relay Aynı Gateway bağlantısının sahip olduğu provider oturumuna base64 PCM ses parçası ekler.
talk.session.startTurn stt-tts/managed-room Managed-room kullanıcı turn'ünü başlatır.
talk.session.endTurn stt-tts/managed-room Eski turn doğrulamasından sonra aktif turn'ü bitirir.
talk.session.cancelTurn tüm Gateway-owned oturumlar Bir turn için aktif capture/provider/agent/TTS işini iptal eder.
talk.session.cancelOutput realtime/gateway-relay Kullanıcı turn'ünü mutlaka bitirmeden asistan ses çıktısını durdurur.
talk.session.submitToolResult realtime/gateway-relay Relay tarafından yayımlanan provider tool call'u tamamlar.
talk.session.close tüm birleşik oturumlar Relay oturumlarını durdurur veya managed-room durumunu revoke eder, ardından birleşik session id'yi unutur.

Bunu çalıştırmak için core içinde provider veya platform özel durumları sunmayın. Core, Talk session semantiğine sahiptir. Provider Plugin'leri vendor session kurulumuna sahiptir. Voice-call ve Google Meet telefon/toplantı adapter'larına sahiptir. Tarayıcı ve native uygulamalar cihaz capture/playback UX'ine sahiptir.

Uyumluluk policy'si

Harici Plugin'ler için uyumluluk çalışması şu sırayı izler:

  1. yeni contract'ı ekleyin
  2. eski davranışı bir uyumluluk adapter'ı üzerinden bağlı tutun
  3. eski yolu ve yerine geçeni adlandıran bir tanı veya uyarı yayımlayın
  4. testlerde iki yolu da kapsayın
  5. kullanımdan kaldırmayı ve geçiş yolunu belgeleyin
  6. yalnızca duyurulan geçiş aralığından sonra, genellikle bir major release'te kaldırın

Bakımcılar mevcut geçiş kuyruğunu pnpm plugins:boundary-report ile denetleyebilir. Kısa sayımlar için pnpm plugins:boundary-report:summary, tek bir plugin veya uyumluluk sahibi için --owner <id> ve bir CI kapısının süresi gelmiş uyumluluk kayıtlarında, sahipler arası ayrılmış SDK içe aktarmalarında veya kullanılmayan ayrılmış SDK alt yollarında başarısız olması gerektiğinde pnpm plugins:boundary-report:ci kullanın. Rapor, kullanımdan kaldırılmış uyumluluk kayıtlarını kaldırma tarihine göre gruplar, yerel kod/belge referanslarını sayar, sahipler arası ayrılmış SDK içe aktarmalarını görünür kılar ve özel bellek sunucusu SDK köprüsünü özetler; böylece uyumluluk temizliği geçici aramalara dayanmak yerine açık kalır. Ayrılmış SDK alt yollarının izlenen sahip kullanımı olmalıdır; kullanılmayan ayrılmış yardımcı dışa aktarımları genel SDK'dan kaldırılmalıdır.

Bir manifest alanı hâlâ kabul ediliyorsa, plugin yazarları belgeler ve tanılar aksini söyleyene kadar onu kullanmaya devam edebilir. Yeni kod belgelenmiş değişimi tercih etmelidir, ancak mevcut pluginler olağan minor sürümler sırasında bozulmamalıdır.

Nasıl geçiş yapılır

  • Çalışma zamanı yapılandırma yükleme/yazma yardımcılarını geçirin

    Paketli pluginler api.runtime.config.loadConfig() ve api.runtime.config.writeConfigFile(...) çağrılarını doğrudan yapmayı bırakmalıdır. Etkin çağrı yoluna zaten geçirilmiş yapılandırmayı tercih edin. Geçerli süreç anlık görüntüsüne ihtiyaç duyan uzun ömürlü işleyiciler api.runtime.config.current() kullanabilir. Uzun ömürlü aracı araçları, bir yapılandırma yazımından önce oluşturulmuş bir aracın yine de yenilenmiş çalışma zamanı yapılandırmasını görmesi için execute içinde araç bağlamının ctx.getRuntimeConfig() yöntemini kullanmalıdır.

    Yapılandırma yazımları işlemsel yardımcılar üzerinden gitmeli ve bir yazım sonrası ilkesi seçmelidir:

    await api.runtime.config.mutateConfigFile({
      afterWrite: { mode: "auto" },
      mutate(draft) {
        draft.plugins ??= {};
      },
    });
    

    Çağıran taraf değişikliğin temiz bir gateway yeniden başlatması gerektirdiğini bildiğinde afterWrite: { mode: "restart", reason: "..." } kullanın; yalnızca çağıran taraf takip işinin sahibiyse ve yeniden yükleme planlayıcısını bilinçli olarak bastırmak istiyorsa afterWrite: { mode: "none", reason: "..." } kullanın. Mutasyon sonuçları testler ve günlükleme için tipli bir followUp özeti içerir; yeniden başlatmayı uygulama veya zamanlama sorumluluğu gateway'de kalır. loadConfig ve writeConfigFile, geçiş penceresi sırasında harici pluginler için kullanımdan kaldırılmış uyumluluk yardımcıları olarak kalır ve runtime-config-load-write uyumluluk koduyla bir kez uyarı verir. Paketli pluginler ve repo çalışma zamanı kodu, pnpm check:deprecated-internal-config-api ve pnpm check:no-runtime-action-load-config içindeki tarayıcı korumalarıyla korunur: yeni üretim plugin kullanımı doğrudan başarısız olur, doğrudan yapılandırma yazımları başarısız olur, gateway sunucu yöntemleri istek çalışma zamanı anlık görüntüsünü kullanmalıdır, çalışma zamanı kanal gönderme/eylem/ istemci yardımcıları yapılandırmayı kendi sınırlarından almalıdır ve uzun ömürlü çalışma zamanı modüllerinin izin verilen ortam loadConfig() çağrısı sıfırdır.

    Yeni plugin kodu ayrıca geniş openclaw/plugin-sdk/config-runtime uyumluluk barrel'ını içe aktarmaktan kaçınmalıdır. İşe uyan dar SDK alt yolunu kullanın:

    Gereksinim İçe aktarma
    OpenClawConfig gibi yapılandırma tipleri openclaw/plugin-sdk/config-types
    Zaten yüklenmiş yapılandırma doğrulamaları ve plugin giriş yapılandırma araması openclaw/plugin-sdk/plugin-config-runtime
    Geçerli çalışma zamanı anlık görüntüsü okumaları openclaw/plugin-sdk/runtime-config-snapshot
    Yapılandırma yazımları openclaw/plugin-sdk/config-mutation
    Oturum deposu yardımcıları openclaw/plugin-sdk/session-store-runtime
    Markdown tablo yapılandırması openclaw/plugin-sdk/markdown-table-runtime
    Grup ilkesi çalışma zamanı yardımcıları openclaw/plugin-sdk/runtime-group-policy
    Gizli girdi çözümleme openclaw/plugin-sdk/secret-input-runtime
    Model/oturum geçersiz kılmaları openclaw/plugin-sdk/model-session-runtime

    Paketli pluginler ve testleri geniş barrel'a karşı tarayıcıyla korunur; böylece içe aktarmalar ve mock'lar yalnızca ihtiyaç duydukları davranışa yerel kalır. Geniş barrel harici uyumluluk için hâlâ vardır, ancak yeni kod ona bağlı olmamalıdır.

  • Pi araç sonucu uzantılarını middleware'e geçirin

    Paketli pluginler, yalnızca Pi'ye özgü api.registerEmbeddedExtensionFactory(...) araç sonucu işleyicilerini çalışma zamanı bağımsız middleware ile değiştirmelidir.

    // Pi and Codex runtime dynamic tools
    api.registerAgentToolResultMiddleware(async (event) => {
      return compactToolResult(event);
    }, {
      runtimes: ["pi", "codex"],
    });
    

    Plugin manifestini aynı zamanda güncelleyin:

    {
      "contracts": {
        "agentToolResultMiddleware": ["pi", "codex"]
      }
    }
    

    Harici pluginler araç sonucu middleware'i kaydedemez, çünkü model görmeden önce yüksek güvenilirlikli araç çıktısını yeniden yazabilir.

  • Onay-yerel işleyicileri yetenek olgularına geçirin

    Onay özellikli kanal pluginleri artık yerel onay davranışını approvalCapability.nativeRuntime ve paylaşılan çalışma zamanı bağlamı kayıt defteri üzerinden sunar.

    Temel değişiklikler:

    • approvalCapability.handler.loadRuntime(...) yerine approvalCapability.nativeRuntime kullanın
    • Onaya özel kimlik doğrulama/teslimatı eski plugin.auth / plugin.approvals bağlantısından approvalCapability üzerine taşıyın
    • ChannelPlugin.approvals genel kanal-plugin sözleşmesinden kaldırıldı; teslimat/yerel/işleme alanlarını approvalCapability üzerine taşıyın
    • plugin.auth yalnızca kanal giriş/çıkış akışları için kalır; buradaki onay kimlik doğrulama hook'ları artık core tarafından okunmaz
    • İstemciler, token'lar veya Bolt uygulamaları gibi kanalın sahip olduğu çalışma zamanı nesnelerini openclaw/plugin-sdk/channel-runtime-context üzerinden kaydedin
    • Yerel onay işleyicilerinden pluginin sahip olduğu yeniden yönlendirme bildirimleri göndermeyin; core artık gerçek teslimat sonuçlarından gelen başka yere yönlendirildi bildirimlerinin sahibidir
    • createChannelManager(...) içine channelRuntime geçirirken gerçek bir createPluginRuntime().channel yüzeyi sağlayın. Kısmi stub'lar reddedilir.

    Geçerli onay yeteneği düzeni için /plugins/sdk-channel-plugins bölümüne bakın.

  • Windows sarmalayıcı geri dönüş davranışını denetleyin

    Plugininiz openclaw/plugin-sdk/windows-spawn kullanıyorsa, çözümlenemeyen Windows .cmd/.bat sarmalayıcıları artık allowShellFallback: true değerini açıkça geçmediğiniz sürece kapalı şekilde başarısız olur.

    // Before
    const program = applyWindowsSpawnProgramPolicy({ candidate });
    
    // After
    const program = applyWindowsSpawnProgramPolicy({
      candidate,
      // Only set this for trusted compatibility callers that intentionally
      // accept shell-mediated fallback.
      allowShellFallback: true,
    });
    

    Çağıran tarafınız shell geri dönüşüne bilinçli olarak dayanmıyorsa allowShellFallback ayarlamayın ve bunun yerine fırlatılan hatayı ele alın.

  • Kullanımdan kaldırılmış içe aktarmaları bulun

    Plugininizde kullanımdan kaldırılmış yüzeylerden birinden yapılan içe aktarmaları arayın:

    grep -r "plugin-sdk/compat" my-plugin/
    grep -r "plugin-sdk/infra-runtime" my-plugin/
    grep -r "plugin-sdk/config-runtime" my-plugin/
    grep -r "openclaw/extension-api" my-plugin/
    
  • Odaklı içe aktarmalarla değiştirin

    Eski yüzeyden yapılan her dışa aktarım belirli bir modern içe aktarma yoluna eşlenir:

    // Before (deprecated backwards-compatibility layer)
    import {
      createChannelReplyPipeline,
      createPluginRuntimeStore,
      resolveControlCommandGate,
    } from "openclaw/plugin-sdk/compat";
    
    // After (modern focused imports)
    import { createChannelReplyPipeline } from "openclaw/plugin-sdk/channel-reply-pipeline";
    import { createPluginRuntimeStore } from "openclaw/plugin-sdk/runtime-store";
    import { resolveControlCommandGate } from "openclaw/plugin-sdk/command-auth";
    

    Sunucu tarafı yardımcıları için doğrudan içe aktarmak yerine enjekte edilen plugin çalışma zamanını kullanın:

    // Before (deprecated extension-api bridge)
    import { runEmbeddedPiAgent } from "openclaw/extension-api";
    const result = await runEmbeddedPiAgent({ sessionId, prompt });
    
    // After (injected runtime)
    const result = await api.runtime.agent.runEmbeddedPiAgent({ sessionId, prompt });
    

    Aynı desen diğer eski köprü yardımcıları için de geçerlidir:

    Eski içe aktarma Modern eşdeğer
    resolveAgentDir api.runtime.agent.resolveAgentDir
    resolveAgentWorkspaceDir api.runtime.agent.resolveAgentWorkspaceDir
    resolveAgentIdentity api.runtime.agent.resolveAgentIdentity
    resolveThinkingDefault api.runtime.agent.resolveThinkingDefault
    resolveAgentTimeoutMs api.runtime.agent.resolveAgentTimeoutMs
    ensureAgentWorkspace api.runtime.agent.ensureAgentWorkspace
    oturum deposu yardımcıları api.runtime.agent.session.*
  • Geniş infra-runtime içe aktarmalarını değiştirin

    openclaw/plugin-sdk/infra-runtime harici uyumluluk için hâlâ vardır, ancak yeni kod gerçekten ihtiyaç duyduğu odaklı yardımcı yüzeyi içe aktarmalıdır:

    Gereksinim İçe aktarma
    Sistem olay kuyruğu yardımcıları openclaw/plugin-sdk/system-event-runtime
    Heartbeat olayı ve görünürlük yardımcıları openclaw/plugin-sdk/heartbeat-runtime
    Bekleyen teslimat kuyruğu boşaltma openclaw/plugin-sdk/delivery-queue-runtime
    Kanal etkinliği telemetrisi openclaw/plugin-sdk/channel-activity-runtime
    Bellek içi tekilleştirme önbellekleri openclaw/plugin-sdk/dedupe-runtime
    Güvenli yerel dosya/medya yolu yardımcıları openclaw/plugin-sdk/file-access-runtime
    Dispatcher uyumlu fetch openclaw/plugin-sdk/runtime-fetch
    Proxy ve korumalı fetch yardımcıları openclaw/plugin-sdk/fetch-runtime
    SSRF dispatcher ilkesi tipleri openclaw/plugin-sdk/ssrf-dispatcher
    Onay isteği/çözümleme tipleri openclaw/plugin-sdk/approval-runtime
    Onay yanıtı payload'u ve komut yardımcıları openclaw/plugin-sdk/approval-reply-runtime
    Hata biçimlendirme yardımcıları openclaw/plugin-sdk/error-runtime
    Taşıma hazır olma beklemeleri openclaw/plugin-sdk/transport-ready-runtime
    Güvenli token yardımcıları openclaw/plugin-sdk/secure-random-runtime
    Sınırlı eşzamansız görev eşzamanlılığı openclaw/plugin-sdk/concurrency-runtime
    Sayısal zorlama openclaw/plugin-sdk/number-runtime
    Süreç-yerel eşzamansız kilit openclaw/plugin-sdk/async-lock-runtime
    Dosya kilitleri openclaw/plugin-sdk/file-lock

    Paketli pluginler infra-runtime kullanımına karşı tarayıcıyla korunur; bu nedenle repo kodu geniş barrel'a geri dönemez.

  • Kanal rota yardımcılarını geçirin

    Yeni kanal rota kodu openclaw/plugin-sdk/channel-route kullanmalıdır. Eski route-key ve comparable-target adları geçiş penceresi sırasında uyumluluk alias'ları olarak kalır, ancak yeni pluginler davranışı doğrudan tanımlayan rota adlarını kullanmalıdır:

    Eski yardımcı Modern yardımcı
    channelRouteIdentityKey(...) channelRouteDedupeKey(...)
    channelRouteKey(...) channelRouteCompactKey(...)
    ComparableChannelTarget ChannelRouteParsedTarget
    resolveComparableTargetForChannel(...) resolveRouteTargetForChannel(...)
    resolveComparableTargetForLoadedChannel(...) resolveRouteTargetForLoadedChannel(...)
    comparableChannelTargetsMatch(...) channelRouteTargetsMatchExact(...)
    comparableChannelTargetsShareRoute(...) channelRouteTargetsShareConversation(...)

    Modern rota yardımcıları { channel, to, accountId, threadId } değerlerini yerel onaylar, yanıt bastırma, gelen yinelenenleri ayıklama, Cron teslimi ve oturum yönlendirmesi genelinde tutarlı şekilde normalleştirir. Plugin'iniz özel hedef gramerine sahipse, bu ayrıştırıcıyı aynı rota hedefi sözleşmesine uyarlamak için resolveChannelRouteTargetWithParser(...) kullanın.

  • Derle ve test et

    pnpm build
    pnpm test -- my-plugin/
    
  • İçe aktarma yolu başvurusu

    Common import path table
    İçe aktarma yolu Amaç Ana dışa aktarımlar
    plugin-sdk/plugin-entry Kanonik Plugin giriş yardımcısı definePluginEntry
    plugin-sdk/core Kanal giriş tanımları/oluşturucuları için eski çatı yeniden dışa aktarımı defineChannelPluginEntry, createChatChannelPlugin
    plugin-sdk/config-schema Kök yapılandırma şeması dışa aktarımı OpenClawSchema
    plugin-sdk/provider-entry Tek sağlayıcılı giriş yardımcısı defineSingleProviderPluginEntry
    plugin-sdk/channel-core Odaklanmış kanal giriş tanımları ve oluşturucuları defineChannelPluginEntry, defineSetupPluginEntry, createChatChannelPlugin, createChannelPluginBase
    plugin-sdk/setup Paylaşılan kurulum sihirbazı yardımcıları İzin listesi istemleri, kurulum durumu oluşturucuları
    plugin-sdk/setup-runtime Kurulum zamanı çalışma zamanı yardımcıları İçe aktarma açısından güvenli kurulum yama bağdaştırıcıları, arama notu yardımcıları, promptResolvedAllowFrom, splitSetupEntries, yetkilendirilmiş kurulum proxy'leri
    plugin-sdk/setup-adapter-runtime Kurulum bağdaştırıcısı yardımcıları createEnvPatchedAccountSetupAdapter
    plugin-sdk/setup-tools Kurulum araçları yardımcıları formatCliCommand, detectBinary, extractArchive, resolveBrewExecutable, formatDocsLink, CONFIG_DIR
    plugin-sdk/account-core Çok hesaplı yardımcılar Hesap listesi/yapılandırma/eylem kapısı yardımcıları
    plugin-sdk/account-id Hesap kimliği yardımcıları DEFAULT_ACCOUNT_ID, hesap kimliği normalleştirmesi
    plugin-sdk/account-resolution Hesap arama yardımcıları Hesap arama + varsayılana geri dönüş yardımcıları
    plugin-sdk/account-helpers Dar kapsamlı hesap yardımcıları Hesap listesi/hesap eylemi yardımcıları
    plugin-sdk/channel-setup Kurulum sihirbazı bağdaştırıcıları createOptionalChannelSetupSurface, createOptionalChannelSetupAdapter, createOptionalChannelSetupWizard, ayrıca DEFAULT_ACCOUNT_ID, createTopLevelChannelDmPolicy, setSetupChannelEnabled, splitSetupEntries
    plugin-sdk/channel-pairing DM eşleştirme ilkelleri createChannelPairingController
    plugin-sdk/channel-reply-pipeline Yanıt öneki, yazıyor durumu ve kaynak teslimi bağlantıları createChannelReplyPipeline, resolveChannelSourceReplyDeliveryMode
    plugin-sdk/channel-config-helpers Yapılandırma bağdaştırıcısı fabrikaları ve DM erişim yardımcıları createHybridChannelConfigAdapter, resolveChannelDmAccess, resolveChannelDmAllowFrom, resolveChannelDmPolicy, normalizeChannelDmPolicy, normalizeLegacyDmAliases
    plugin-sdk/channel-config-schema Yapılandırma şeması oluşturucuları Yalnızca paylaşılan kanal yapılandırma şeması ilkelleri ve genel oluşturucu
    plugin-sdk/bundled-channel-config-schema Paketli yapılandırma şemaları Yalnızca OpenClaw tarafından bakımı yapılan paketli plugins; yeni plugins Plugin yerel şemalar tanımlamalıdır
    plugin-sdk/channel-config-schema-legacy Kullanımdan kaldırılmış paketli yapılandırma şemaları Yalnızca uyumluluk takma adı; bakımı yapılan paketli plugins için plugin-sdk/bundled-channel-config-schema kullanın
    plugin-sdk/telegram-command-config Telegram komut yapılandırması yardımcıları Komut adı normalleştirmesi, açıklama kırpma, yinelenen/çakışan doğrulaması
    plugin-sdk/channel-policy Grup/DM ilkesi çözümleme resolveChannelGroupRequireMention
    plugin-sdk/channel-lifecycle Hesap durumu ve taslak akış yaşam döngüsü yardımcıları createAccountStatusSink, taslak önizleme sonlandırma yardımcıları
    plugin-sdk/inbound-envelope Gelen zarf yardımcıları Paylaşılan rota + zarf oluşturucu yardımcıları
    plugin-sdk/inbound-reply-dispatch Gelen yanıt yardımcıları Paylaşılan kaydet ve dağıt yardımcıları
    plugin-sdk/messaging-targets Mesajlaşma hedefi ayrıştırma Hedef ayrıştırma/eşleştirme yardımcıları
    plugin-sdk/outbound-media Giden medya yardımcıları Paylaşılan giden medya yükleme
    plugin-sdk/outbound-send-deps Giden gönderim bağımlılığı yardımcıları Tam giden çalışma zamanını içe aktarmadan hafif resolveOutboundSendDep araması
    plugin-sdk/outbound-runtime Giden çalışma zamanı yardımcıları Giden teslim, kimlik/gönderim yetkilendirmesi, oturum, biçimlendirme ve yük planlama yardımcıları
    plugin-sdk/thread-bindings-runtime İş parçacığı bağlama yardımcıları İş parçacığı bağlama yaşam döngüsü ve bağdaştırıcı yardımcıları
    plugin-sdk/agent-media-payload Eski medya yükü yardımcıları Eski alan düzenleri için ajan medya yükü oluşturucu
    plugin-sdk/channel-runtime Kullanımdan kaldırılmış uyumluluk ara katmanı Yalnızca eski kanal çalışma zamanı yardımcı programları
    plugin-sdk/channel-send-result Gönderim sonucu türleri Yanıt sonucu türleri
    plugin-sdk/runtime-store Kalıcı Plugin depolama createPluginRuntimeStore
    plugin-sdk/runtime Geniş çalışma zamanı yardımcıları Çalışma zamanı/günlükleme/yedekleme/Plugin kurulumu yardımcıları
    plugin-sdk/runtime-env Dar kapsamlı çalışma zamanı ortamı yardımcıları Günlükleyici/çalışma zamanı ortamı, zaman aşımı, yeniden deneme ve geri çekilme yardımcıları
    plugin-sdk/plugin-runtime Paylaşılan Plugin çalışma zamanı yardımcıları Plugin komutları/hook'ları/http/etkileşimli yardımcıları
    plugin-sdk/hook-runtime Hook işlem hattı yardımcıları Paylaşılan Webhook/dahili hook işlem hattı yardımcıları
    plugin-sdk/lazy-runtime Tembel çalışma zamanı yardımcıları createLazyRuntimeModule, createLazyRuntimeMethod, createLazyRuntimeMethodBinder, createLazyRuntimeNamedExport, createLazyRuntimeSurface
    plugin-sdk/process-runtime Süreç yardımcıları Paylaşılan yürütme yardımcıları
    plugin-sdk/cli-runtime CLI çalışma zamanı yardımcıları Komut biçimlendirme, beklemeler, sürüm yardımcıları
    plugin-sdk/gateway-runtime Gateway yardımcıları Gateway istemcisi, olay döngüsü hazır başlatma yardımcısı ve kanal durumu yama yardımcıları
    plugin-sdk/config-runtime Kullanımdan kaldırılmış yapılandırma uyumluluğu ara katmanı config-types, plugin-config-runtime, runtime-config-snapshot ve config-mutation tercih edin
    plugin-sdk/telegram-command-config Telegram komut yardımcıları Paketli Telegram sözleşme yüzeyi kullanılamadığında geri dönüş açısından kararlı Telegram komut doğrulama yardımcıları
    plugin-sdk/approval-runtime Onay istemi yardımcıları Yürütme/Plugin onay yükü, onay yeteneği/profil yardımcıları, yerel onay yönlendirme/çalışma zamanı yardımcıları ve yapılandırılmış onay görüntüleme yolu biçimlendirmesi
    plugin-sdk/approval-auth-runtime Onay kimlik doğrulama yardımcıları Onaylayıcı çözümleme, aynı sohbet eylem kimlik doğrulaması
    plugin-sdk/approval-client-runtime Onay istemcisi yardımcıları Yerel yürütme onay profili/filtre yardımcıları
    plugin-sdk/approval-delivery-runtime Onay teslimi yardımcıları Yerel onay yeteneği/teslim bağdaştırıcıları
    plugin-sdk/approval-gateway-runtime Onay Gateway yardımcıları Paylaşılan onay Gateway çözümleme yardımcısı
    plugin-sdk/approval-handler-adapter-runtime Onay bağdaştırıcısı yardımcıları Sıcak kanal giriş noktaları için hafif yerel onay bağdaştırıcısı yükleme yardımcıları
    plugin-sdk/approval-handler-runtime Onay işleyici yardımcıları Daha geniş onay işleyici çalışma zamanı yardımcıları; yeterli olduklarında daha dar bağdaştırıcı/Gateway arayüzlerini tercih edin
    plugin-sdk/approval-native-runtime Onay hedefi yardımcıları Yerel onay hedefi/hesap bağlama yardımcıları
    plugin-sdk/approval-reply-runtime Onay yanıtı yardımcıları Yürütme/Plugin onay yanıtı yükü yardımcıları
    plugin-sdk/channel-runtime-context Kanal çalışma zamanı bağlamı yardımcıları Genel kanal çalışma zamanı bağlamı kaydet/al/izle yardımcıları
    plugin-sdk/security-runtime Güvenlik yardımcıları Paylaşılan güven, DM kapılama, kökle sınırlı dosya/yol yardımcıları, dış içerik ve gizli bilgi toplama yardımcıları
    plugin-sdk/ssrf-policy SSRF ilkesi yardımcıları Ana makine izin listesi ve özel ağ ilkesi yardımcıları
    plugin-sdk/ssrf-runtime SSRF çalışma zamanı yardımcıları Sabitlenmiş dağıtıcı, korumalı fetch, SSRF ilkesi yardımcıları
    plugin-sdk/system-event-runtime Sistem olayı yardımcıları enqueueSystemEvent, peekSystemEventEntries
    plugin-sdk/heartbeat-runtime Heartbeat yardımcıları Heartbeat olayı ve görünürlük yardımcıları
    plugin-sdk/delivery-queue-runtime Teslim kuyruğu yardımcıları drainPendingDeliveries
    plugin-sdk/channel-activity-runtime Kanal etkinliği yardımcıları recordChannelActivity
    plugin-sdk/dedupe-runtime Yinelenenleri ayıklama yardımcıları Bellek içi yinelenenleri ayıklama önbellekleri
    plugin-sdk/file-access-runtime Dosya erişimi yardımcıları Güvenli yerel dosya/medya yolu yardımcıları
    plugin-sdk/transport-ready-runtime Taşıma hazır olma yardımcıları waitForTransportReady
    plugin-sdk/collection-runtime Sınırlı önbellek yardımcıları pruneMapToMaxSize
    plugin-sdk/diagnostic-runtime Tanılama kapılama yardımcıları isDiagnosticFlagEnabled, isDiagnosticsEnabled
    plugin-sdk/error-runtime Hata biçimlendirme yardımcıları formatUncaughtError, isApprovalNotFoundError, hata grafiği yardımcıları
    plugin-sdk/fetch-runtime Sarmalanmış fetch/proxy yardımcıları resolveFetch, proxy yardımcıları, EnvHttpProxyAgent seçenek yardımcıları
    plugin-sdk/host-runtime Ana makine normalleştirme yardımcıları normalizeHostname, normalizeScpRemoteHost
    plugin-sdk/retry-runtime Yeniden deneme yardımcıları RetryConfig, retryAsync, ilke çalıştırıcıları
    plugin-sdk/allow-from İzin listesi biçimlendirme formatAllowFromLowercase
    plugin-sdk/allowlist-resolution İzin listesi girdisi eşleme mapAllowlistResolutionInputs
    plugin-sdk/command-auth Komut kapılama ve komut yüzeyi yardımcıları resolveControlCommandGate, gönderen yetkilendirme yardımcıları, dinamik argüman menüsü biçimlendirmesi dahil komut kayıt defteri yardımcıları
    plugin-sdk/command-status Komut durumu/yardım işleyicileri buildCommandsMessage, buildCommandsMessagePaginated, buildHelpMessage
    plugin-sdk/secret-input Gizli bilgi girdisi ayrıştırma Gizli bilgi girdisi yardımcıları
    plugin-sdk/webhook-ingress Webhook isteği yardımcıları Webhook hedef yardımcı programları
    plugin-sdk/webhook-request-guards Webhook gövdesi koruma yardımcıları İstek gövdesi okuma/sınır yardımcıları
    plugin-sdk/reply-runtime Paylaşılan yanıt çalışma zamanı Gelen dağıtım, Heartbeat, yanıt planlayıcı, parçalara ayırma
    plugin-sdk/reply-dispatch-runtime Dar kapsamlı yanıt dağıtım yardımcıları Sonlandırma, sağlayıcı dağıtımı ve konuşma etiketi yardımcıları
    plugin-sdk/reply-history Yanıt geçmişi yardımcıları buildHistoryContext, buildPendingHistoryContextFromMap, recordPendingHistoryEntry, clearHistoryEntriesIfEnabled
    plugin-sdk/reply-reference Yanıt başvurusu planlama createReplyReferencePlanner
    plugin-sdk/reply-chunking Yanıt parçası yardımcıları Metin/markdown parçalara ayırma yardımcıları
    plugin-sdk/session-store-runtime Oturum deposu yardımcıları Depo yolu + güncellenme zamanı yardımcıları
    plugin-sdk/state-paths Durum yolu yardımcıları Durum ve OAuth dizini yardımcıları
    plugin-sdk/routing Yönlendirme/oturum anahtarı yardımcıları resolveAgentRoute, buildAgentSessionKey, resolveDefaultAgentBoundAccountId, oturum anahtarı normalleştirme yardımcıları
    plugin-sdk/status-helpers Kanal durumu yardımcıları Kanal/hesap durumu özeti oluşturucuları, çalışma zamanı durumu varsayılanları, sorun meta verisi yardımcıları
    plugin-sdk/target-resolver-runtime Hedef çözümleyici yardımcıları Paylaşılan hedef çözümleyici yardımcıları
    plugin-sdk/string-normalization-runtime Dize normalleştirme yardımcıları Slug/dize normalleştirme yardımcıları
    plugin-sdk/request-url İstek URL yardımcıları İstek benzeri girdilerden dize URL'leri çıkarma
    plugin-sdk/run-command Zamanlanmış komut yardımcıları Normalleştirilmiş stdout/stderr ile zamanlanmış komut çalıştırıcı
    plugin-sdk/param-readers Parametre okuyucuları Ortak araç/CLI parametre okuyucuları
    plugin-sdk/tool-payload Araç yükü çıkarma Araç sonuç nesnelerinden normalleştirilmiş yükleri çıkarır
    plugin-sdk/tool-send Araç gönderimi çıkarma Araç argümanlarından kanonik gönderim hedefi alanlarını çıkarır
    plugin-sdk/temp-path Geçici yol yardımcıları Paylaşılan geçici indirme yolu yardımcıları
    plugin-sdk/logging-core Günlükleme yardımcıları Alt sistem günlükleyicisi ve redaksiyon yardımcıları
    plugin-sdk/markdown-table-runtime Markdown tablo yardımcıları Markdown tablo modu yardımcıları
    plugin-sdk/reply-payload İleti yanıt türleri Yanıt yükü türleri
    plugin-sdk/provider-setup Küratörlü yerel/kendi barındırılan sağlayıcı kurulum yardımcıları Kendi barındırılan sağlayıcı keşif/yapılandırma yardımcıları
    plugin-sdk/self-hosted-provider-setup Odaklı OpenAI uyumlu kendi barındırılan sağlayıcı kurulum yardımcıları Aynı kendi barındırılan sağlayıcı keşif/yapılandırma yardımcıları
    plugin-sdk/provider-auth-runtime Sağlayıcı çalışma zamanı kimlik doğrulama yardımcıları Çalışma zamanı API anahtarı çözümleme yardımcıları
    plugin-sdk/provider-auth-api-key Sağlayıcı API anahtarı kurulum yardımcıları API anahtarı ilk kurulum/profil yazma yardımcıları
    plugin-sdk/provider-auth-result Sağlayıcı kimlik doğrulama sonucu yardımcıları Standart OAuth kimlik doğrulama sonucu oluşturucu
    plugin-sdk/provider-auth-login Sağlayıcı etkileşimli oturum açma yardımcıları Paylaşılan etkileşimli oturum açma yardımcıları
    plugin-sdk/provider-selection-runtime Sağlayıcı seçimi yardımcıları Yapılandırılmış veya otomatik sağlayıcı seçimi ve ham sağlayıcı yapılandırması birleştirme
    plugin-sdk/provider-env-vars Sağlayıcı ortam değişkeni yardımcıları Sağlayıcı kimlik doğrulama ortam değişkeni arama yardımcıları
    plugin-sdk/provider-model-shared Paylaşılan sağlayıcı model/yeniden oynatma yardımcıları ProviderReplayFamily, buildProviderReplayFamilyHooks, normalizeModelCompat, paylaşılan yeniden oynatma ilkesi oluşturucuları, sağlayıcı uç noktası yardımcıları ve model kimliği normalleştirme yardımcıları
    plugin-sdk/provider-catalog-shared Paylaşılan sağlayıcı katalog yardımcıları findCatalogTemplate, buildSingleProviderApiKeyCatalog, buildManifestModelProviderConfig, supportsNativeStreamingUsageCompat, applyProviderNativeStreamingUsageCompat
    plugin-sdk/provider-onboard Sağlayıcı ilk kurulum yamaları İlk kurulum yapılandırma yardımcıları
    plugin-sdk/provider-http Sağlayıcı HTTP yardımcıları Ses transkripsiyonu multipart form yardımcıları dahil genel sağlayıcı HTTP/uç nokta yetenek yardımcıları
    plugin-sdk/provider-web-fetch Sağlayıcı web-fetch yardımcıları Web-fetch sağlayıcı kayıt/önbellek yardımcıları
    plugin-sdk/provider-web-search-config-contract Sağlayıcı web arama yapılandırma yardımcıları Plugin etkinleştirme bağlantısına ihtiyaç duymayan sağlayıcılar için dar kapsamlı web arama yapılandırma/kimlik bilgisi yardımcıları
    plugin-sdk/provider-web-search-contract Sağlayıcı web arama sözleşmesi yardımcıları createWebSearchProviderContractFields, enablePluginInConfig, resolveProviderWebSearchPluginConfig ve kapsamlı kimlik bilgisi ayarlayıcıları/alıcıları gibi dar kapsamlı web arama yapılandırma/kimlik bilgisi sözleşmesi yardımcıları
    plugin-sdk/provider-web-search Sağlayıcı web arama yardımcıları Web arama sağlayıcı kayıt/önbellek/çalışma zamanı yardımcıları
    plugin-sdk/provider-tools Sağlayıcı araç/şema uyumluluk yardımcıları ProviderToolCompatFamily, buildProviderToolCompatFamilyHooks, Gemini şema temizliği + tanılama ve resolveXaiModelCompatPatch / applyXaiModelCompat gibi xAI uyumluluk yardımcıları
    plugin-sdk/provider-usage Sağlayıcı kullanım yardımcıları fetchClaudeUsage, fetchGeminiUsage, fetchGithubCopilotUsage ve diğer sağlayıcı kullanım yardımcıları
    plugin-sdk/provider-stream Sağlayıcı akış sarmalayıcı yardımcıları ProviderStreamFamily, buildProviderStreamFamilyHooks, composeProviderStreamWrappers, akış sarmalayıcı türleri ve paylaşılan Anthropic/Bedrock/DeepSeek V4/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot sarmalayıcı yardımcıları
    plugin-sdk/provider-transport-runtime Sağlayıcı aktarım yardımcıları Korumalı fetch, aktarım iletisi dönüşümleri ve yazılabilir aktarım olay akışları gibi yerel sağlayıcı aktarım yardımcıları
    plugin-sdk/keyed-async-queue Sıralı zaman uyumsuz kuyruk KeyedAsyncQueue
    plugin-sdk/media-runtime Paylaşılan medya yardımcıları Medya getirme/dönüştürme/depolama yardımcıları, ffprobe destekli video boyutu yoklama ve medya yükü oluşturucuları
    plugin-sdk/media-generation-runtime Paylaşılan medya üretimi yardımcıları Görüntü/video/müzik üretimi için paylaşılan yük devretme yardımcıları, aday seçimi ve eksik model iletileri
    plugin-sdk/media-understanding Medya anlama yardımcıları Medya anlama sağlayıcı türleri ve sağlayıcıya yönelik görüntü/ses yardımcı dışa aktarımları
    plugin-sdk/text-runtime Paylaşılan metin yardımcıları Asistan tarafından görülebilir metin ayıklama, markdown işleme/parçalama/tablo yardımcıları, redaksiyon yardımcıları, yönerge etiketi yardımcıları, güvenli metin yardımcı programları ve ilgili metin/günlükleme yardımcıları
    plugin-sdk/text-chunking Metin parçalama yardımcıları Giden metin parçalama yardımcısı
    plugin-sdk/speech Konuşma yardımcıları Konuşma sağlayıcı türleri ve sağlayıcıya yönelik yönerge, kayıt defteri, doğrulama yardımcıları ve OpenAI uyumlu TTS oluşturucu
    plugin-sdk/speech-core Paylaşılan konuşma çekirdeği Konuşma sağlayıcı türleri, kayıt defteri, yönergeler, normalleştirme
    plugin-sdk/realtime-transcription Gerçek zamanlı transkripsiyon yardımcıları Sağlayıcı türleri, kayıt defteri yardımcıları ve paylaşılan WebSocket oturumu yardımcısı
    plugin-sdk/realtime-voice Gerçek zamanlı ses yardımcıları Sağlayıcı türleri, kayıt defteri/çözümleme yardımcıları, köprü oturumu yardımcıları, paylaşılan ajan geri konuşma kuyrukları, transkript/olay sağlığı, yankı bastırma ve hızlı bağlam danışma yardımcıları
    plugin-sdk/image-generation Görüntü üretimi yardımcıları Görüntü üretimi sağlayıcı türleri, görüntü varlığı/veri URL'si yardımcıları ve OpenAI uyumlu görüntü sağlayıcı oluşturucu
    plugin-sdk/image-generation-core Paylaşılan görüntü üretimi çekirdeği Görüntü üretimi türleri, yük devretme, kimlik doğrulama ve kayıt defteri yardımcıları
    plugin-sdk/music-generation Müzik üretimi yardımcıları Müzik üretimi sağlayıcı/istek/sonuç türleri
    plugin-sdk/music-generation-core Paylaşılan müzik üretimi çekirdeği Müzik üretimi türleri, yük devretme yardımcıları, sağlayıcı arama ve model-ref ayrıştırma
    plugin-sdk/video-generation Video üretimi yardımcıları Video üretimi sağlayıcı/istek/sonuç türleri
    plugin-sdk/video-generation-core Paylaşılan video üretimi çekirdeği Video üretimi türleri, yük devretme yardımcıları, sağlayıcı arama ve model-ref ayrıştırma
    plugin-sdk/interactive-runtime Etkileşimli yanıt yardımcıları Etkileşimli yanıt yükü normalleştirme/azaltma
    plugin-sdk/channel-config-primitives Kanal yapılandırması ilkel öğeleri Dar kapsamlı kanal yapılandırma şeması ilkel öğeleri
    plugin-sdk/channel-config-writes Kanal yapılandırması yazma yardımcıları Kanal yapılandırması yazma yetkilendirme yardımcıları
    plugin-sdk/channel-plugin-common Paylaşılan kanal başlangıcı Paylaşılan kanal Plugin başlangıcı dışa aktarımları
    plugin-sdk/channel-status Kanal durumu yardımcıları Paylaşılan kanal durumu anlık görüntü/özet yardımcıları
    plugin-sdk/allowlist-config-edit İzin listesi yapılandırma yardımcıları İzin listesi yapılandırma düzenleme/okuma yardımcıları
    plugin-sdk/group-access Grup erişimi yardımcıları Paylaşılan grup erişimi karar yardımcıları
    plugin-sdk/direct-dm Doğrudan DM yardımcıları Paylaşılan doğrudan DM kimlik doğrulama/koruma yardımcıları
    plugin-sdk/extension-shared Paylaşılan uzantı yardımcıları Pasif kanal/durum ve ortam proxy yardımcısı ilkel öğeleri
    plugin-sdk/webhook-targets Webhook hedef yardımcıları Webhook hedef kayıt defteri ve rota kurulum yardımcıları
    plugin-sdk/webhook-path Webhook yolu yardımcıları Webhook yolu normalleştirme yardımcıları
    plugin-sdk/web-media Paylaşılan web medya yardımcıları Uzak/yerel medya yükleme yardımcıları
    plugin-sdk/zod Zod yeniden dışa aktarımı Plugin SDK tüketicileri için yeniden dışa aktarılan zod
    plugin-sdk/memory-core Paketlenmiş memory-core yardımcıları Bellek yöneticisi/yapılandırma/dosya/CLI yardımcı yüzeyi
    plugin-sdk/memory-core-engine-runtime Bellek motoru çalışma zamanı cephesi Bellek dizin/arama çalışma zamanı cephesi
    plugin-sdk/memory-core-host-engine-foundation Bellek host temel motoru Bellek host temel motoru dışa aktarımları
    plugin-sdk/memory-core-host-engine-embeddings Bellek host embedding motoru Bellek embedding sözleşmeleri, kayıt defteri erişimi, yerel sağlayıcı ve genel toplu/uzak yardımcılar; somut uzak sağlayıcılar kendi sahip Plugin'lerinde bulunur
    plugin-sdk/memory-core-host-engine-qmd Bellek host QMD motoru Bellek host QMD motoru dışa aktarımları
    plugin-sdk/memory-core-host-engine-storage Bellek host depolama motoru Bellek host depolama motoru dışa aktarımları
    plugin-sdk/memory-core-host-multimodal Bellek host çok modlu yardımcıları Bellek host çok modlu yardımcıları
    plugin-sdk/memory-core-host-query Bellek host sorgu yardımcıları Bellek host sorgu yardımcıları
    plugin-sdk/memory-core-host-secret Bellek host gizli bilgi yardımcıları Bellek host gizli bilgi yardımcıları
    plugin-sdk/memory-core-host-events Bellek host olay günlüğü yardımcıları Bellek host olay günlüğü yardımcıları
    plugin-sdk/memory-core-host-status Bellek host durumu yardımcıları Bellek host durumu yardımcıları
    plugin-sdk/memory-core-host-runtime-cli Bellek host CLI çalışma zamanı Bellek host CLI çalışma zamanı yardımcıları
    plugin-sdk/memory-core-host-runtime-core Bellek host çekirdek çalışma zamanı Bellek host çekirdek çalışma zamanı yardımcıları
    plugin-sdk/memory-core-host-runtime-files Bellek host dosya/çalışma zamanı yardımcıları Bellek host dosya/çalışma zamanı yardımcıları
    plugin-sdk/memory-host-core Bellek host çekirdek çalışma zamanı takma adı Bellek host çekirdek çalışma zamanı yardımcıları için tedarikçiden bağımsız takma ad
    plugin-sdk/memory-host-events Bellek host olay günlüğü takma adı Bellek host olay günlüğü yardımcıları için tedarikçiden bağımsız takma ad
    plugin-sdk/memory-host-files Bellek host dosya/çalışma zamanı takma adı Bellek host dosya/çalışma zamanı yardımcıları için tedarikçiden bağımsız takma ad
    plugin-sdk/memory-host-markdown Yönetilen markdown yardımcıları Belleğe komşu Plugin'ler için paylaşılan yönetilen markdown yardımcıları
    plugin-sdk/memory-host-search Active Memory arama cephesi Tembel Active Memory arama yöneticisi çalışma zamanı cephesi
    plugin-sdk/memory-host-status Bellek host durumu takma adı Bellek host durumu yardımcıları için tedarikçiden bağımsız takma ad
    plugin-sdk/testing Test yardımcı programları Eski geniş uyumluluk barrel'i; plugin-sdk/plugin-test-runtime, plugin-sdk/channel-test-helpers, plugin-sdk/channel-target-testing, plugin-sdk/test-env ve plugin-sdk/test-fixtures gibi odaklı test alt yollarını tercih edin

    Bu tablo, tam SDK yüzeyi değil, bilerek ortak geçiş alt kümesidir. 200+ giriş noktasının tam listesi scripts/lib/plugin-sdk-entrypoints.json içinde bulunur.

    Açıkça belgelenmiş uyumluluk cepheleri, örneğin yayımlanmış @openclaw/[email protected] paketi için korunan kullanım dışı plugin-sdk/discord shim’i dışında, ayrılmış paketli Plugin yardımcı seams’leri genel SDK export map’inden kaldırılmıştır. Sahibe özgü yardımcılar, sahip olan Plugin paketinin içinde yaşar; paylaşılan host davranışı plugin-sdk/gateway-runtime, plugin-sdk/security-runtime ve plugin-sdk/plugin-config-runtime gibi genel SDK sözleşmeleri üzerinden ilerlemelidir.

    İşe uyan en dar import’u kullanın. Bir export bulamıyorsanız, src/plugin-sdk/ içindeki kaynağı kontrol edin veya bunun hangi genel sözleşmeye ait olması gerektiğini bakımcılara sorun.

    Etkin kullanımdan kaldırmalar

    Plugin SDK, provider sözleşmesi, runtime yüzeyi ve manifest genelinde geçerli daha dar kullanımdan kaldırmalar. Her biri bugün hâlâ çalışır, ancak gelecekteki bir major sürümde kaldırılacaktır. Her öğenin altındaki giriş, eski API’yi kanonik yedeğiyle eşler.

    command-auth help builders → command-status

    Eski (openclaw/plugin-sdk/command-auth): buildCommandsMessage, buildCommandsMessagePaginated, buildHelpMessage.

    Yeni (openclaw/plugin-sdk/command-status): aynı imzalar, aynı export’lar - yalnızca daha dar alt yoldan import edilir. command-auth bunları uyumluluk stub’ları olarak yeniden export eder.

    // Before
    import { buildHelpMessage } from "openclaw/plugin-sdk/command-auth";
    
    // After
    import { buildHelpMessage } from "openclaw/plugin-sdk/command-status";
    
    Mention gating helpers → resolveInboundMentionDecision

    Eski: openclaw/plugin-sdk/channel-inbound veya openclaw/plugin-sdk/channel-mention-gating içinden resolveInboundMentionRequirement({ facts, policy }) ve shouldDropInboundForMention(...).

    Yeni: resolveInboundMentionDecision({ facts, policy }) - iki ayrı çağrı yerine tek bir karar nesnesi döndürür.

    Aşağı akış channel Plugin’leri (Slack, Discord, Matrix, MS Teams) zaten geçiş yaptı.

    Channel runtime shim and channel actions helpers

    openclaw/plugin-sdk/channel-runtime, eski channel Plugin’leri için bir uyumluluk shim’idir. Yeni koddan import etmeyin; runtime nesnelerini kaydetmek için openclaw/plugin-sdk/channel-runtime-context kullanın.

    openclaw/plugin-sdk/channel-actions içindeki channelActions* yardımcıları, ham "actions" channel export’larıyla birlikte kullanımdan kaldırılmıştır. Yetenekleri bunun yerine semantik presentation yüzeyi üzerinden sunun - channel Plugin’leri hangi ham action adlarını kabul ettiklerini değil, ne render ettiklerini (kartlar, düğmeler, seçimler) bildirir.

    Web search provider tool() helper → createTool() on the plugin

    Eski: openclaw/plugin-sdk/provider-web-search içinden tool() factory’si.

    Yeni: createTool(...) öğesini doğrudan provider Plugin üzerinde uygulayın. OpenClaw artık araç sarmalayıcısını kaydetmek için SDK yardımcısına ihtiyaç duymaz.

    Plaintext channel envelopes → BodyForAgent

    Eski: inbound channel mesajlarından düz plaintext prompt envelope oluşturmak için formatInboundEnvelope(...) (ve ChannelMessageForAgent.channelEnvelope).

    Yeni: BodyForAgent artı yapılandırılmış kullanıcı bağlamı blokları. Channel Plugin’leri yönlendirme metadata’sını (iş parçacığı, konu, yanıtlanan öğe, tepkiler) bir prompt string’ine birleştirmek yerine türlenmiş alanlar olarak ekler. formatAgentEnvelope(...) yardımcısı, sentezlenmiş assistant-facing envelope’lar için hâlâ desteklenir, ancak inbound plaintext envelope’lar kullanımdan kaldırılma yolundadır.

    Etkilenen alanlar: inbound_claim, message_received ve channelEnvelope metnini sonradan işleyen herhangi bir özel channel Plugin’i.

    Provider discovery types → provider catalog types

    Dört discovery type alias artık catalog dönemi türlerinin ince sarmalayıcılarıdır:

    Eski alias Yeni tür
    ProviderDiscoveryOrder ProviderCatalogOrder
    ProviderDiscoveryContext ProviderCatalogContext
    ProviderDiscoveryResult ProviderCatalogResult
    ProviderPluginDiscovery ProviderPluginCatalog

    Ayrıca eski ProviderCapabilities statik torbası - provider Plugin’leri statik bir nesne yerine buildReplayPolicy, normalizeToolSchemas ve wrapStreamFn gibi açık provider hook’larını kullanmalıdır.

    Thinking policy hooks → resolveThinkingProfile

    Eski (ProviderThinkingPolicy üzerinde üç ayrı hook): isBinaryThinking(ctx), supportsXHighThinking(ctx) ve resolveDefaultThinkingLevel(ctx).

    Yeni: kanonik id, isteğe bağlı label ve sıralı seviye listesini içeren bir ProviderThinkingProfile döndüren tek bir resolveThinkingProfile(ctx). OpenClaw, bayat saklanmış değerleri profil sıralamasına göre otomatik olarak düşürür.

    Üç yerine tek bir hook uygulayın. Eski hook’lar kullanımdan kaldırma penceresi boyunca çalışmaya devam eder, ancak profil sonucuyla birleştirilmez.

    External OAuth provider fallback → contracts.externalAuthProviders

    Eski: provider’ı Plugin manifest’inde bildirmeden resolveExternalOAuthProfiles(...) uygulamak.

    Yeni: Plugin manifest’inde contracts.externalAuthProviders bildirin ve resolveExternalAuthProfiles(...) uygulayın. Eski "auth fallback" yolu runtime’da bir uyarı yayar ve kaldırılacaktır.

    {
      "contracts": {
        "externalAuthProviders": ["anthropic", "openai"]
      }
    }
    
    Provider env-var lookup → setup.providers[].envVars

    Eski manifest alanı: providerAuthEnvVars: { anthropic: ["ANTHROPIC_API_KEY"] }.

    Yeni: aynı env-var lookup’ını manifest üzerindeki setup.providers[].envVars içine yansıtın. Bu, setup/status env metadata’sını tek bir yerde birleştirir ve env-var lookup’larına yanıt vermek için Plugin runtime’ını başlatma gereğini ortadan kaldırır.

    providerAuthEnvVars, kullanımdan kaldırma penceresi kapanana kadar bir uyumluluk adapter’ı üzerinden desteklenmeye devam eder.

    Memory plugin registration → registerMemoryCapability

    Eski: üç ayrı çağrı - api.registerMemoryPromptSection(...), api.registerMemoryFlushPlan(...), api.registerMemoryRuntime(...).

    Yeni: memory-state API üzerinde tek çağrı - registerMemoryCapability(pluginId, { promptBuilder, flushPlanResolver, runtime }).

    Aynı slot’lar, tek kayıt çağrısı. Eklemeli memory yardımcıları (registerMemoryPromptSupplement, registerMemoryCorpusSupplement, registerMemoryEmbeddingProvider) etkilenmez.

    Subagent session messages types renamed

    src/plugins/runtime/types.ts içinden hâlâ export edilen iki eski type alias:

    Eski Yeni
    SubagentReadSessionParams SubagentGetSessionMessagesParams
    SubagentReadSessionResult SubagentGetSessionMessagesResult

    readSession runtime metodu, getSessionMessages lehine kullanımdan kaldırılmıştır. Aynı imza; eski metot yenisine çağrı geçirir.

    runtime.tasks.flow → runtime.tasks.managedFlows

    Eski: runtime.tasks.flow (tekil) canlı bir task-flow erişimcisi döndürürdü.

    Yeni: runtime.tasks.managedFlows, bir flow’dan alt görevler oluşturan, güncelleyen, iptal eden veya çalıştıran Plugin’ler için yönetilen TaskFlow mutasyon runtime’ını korur. Plugin yalnızca DTO tabanlı okumalara ihtiyaç duyuyorsa runtime.tasks.flows kullanın.

    // Before
    const flow = api.runtime.tasks.flow.fromToolContext(ctx);
    // After
    const flow = api.runtime.tasks.managedFlows.fromToolContext(ctx);
    
    Embedded extension factories → agent tool-result middleware

    Yukarıdaki "Nasıl geçiş yapılır → Pi tool-result extension’larını middleware’e taşıma" bölümünde ele alındı. Eksiksizlik için burada da dahil edilmiştir: kaldırılan yalnızca Pi’ye özgü api.registerEmbeddedExtensionFactory(...) yolu, contracts.agentToolResultMiddleware içinde açık bir runtime listesiyle api.registerAgentToolResultMiddleware(...) ile değiştirilir.

    OpenClawSchemaType alias → OpenClawConfig

    openclaw/plugin-sdk içinden yeniden export edilen OpenClawSchemaType artık OpenClawConfig için tek satırlık bir alias’tır. Kanonik adı tercih edin.

    // Before
    import type { OpenClawSchemaType } from "openclaw/plugin-sdk";
    // After
    import type { OpenClawConfig } from "openclaw/plugin-sdk/config-schema";
    

    Kaldırma zaman çizelgesi

    Ne zaman Ne olur
    Şimdi Kullanımdan kaldırılmış yüzeyler runtime uyarıları yayar
    Sonraki major sürüm Kullanımdan kaldırılmış yüzeyler kaldırılır; hâlâ bunları kullanan Plugin’ler başarısız olur

    Tüm core Plugin’ler zaten taşındı. Harici Plugin’ler bir sonraki major sürümden önce geçiş yapmalıdır.

    Uyarıları geçici olarak susturma

    Geçiş üzerinde çalışırken şu ortam değişkenlerini ayarlayın:

    OPENCLAW_SUPPRESS_PLUGIN_SDK_COMPAT_WARNING=1 openclaw gateway run
    OPENCLAW_SUPPRESS_EXTENSION_API_WARNING=1 openclaw gateway run
    

    Bu geçici bir kaçış kapağıdır, kalıcı bir çözüm değildir.

    İlgili