Ana içeriğe atla
OpenClaw, geniş bir geriye dönük uyumluluk katmanından odaklı, belgelenmiş içe aktarmalara sahip modern bir Plugin mimarisine geçti. Plugin’iniz yeni mimariden önce oluşturulduysa bu kılavuz geçiş yapmanıza yardımcı olur.

Neler değişiyor

Eski Plugin sistemi, Plugin’lerin ihtiyaç duydukları her şeyi tek bir giriş noktasından içe aktarmasına izin veren iki geniş açık yüzey sağlıyordu:
  • openclaw/plugin-sdk/compat - onlarca yardımcıyı yeniden dışa aktaran tek bir içe aktarma. Yeni Plugin mimarisi oluşturulurken eski hook tabanlı Plugin’lerin çalışmasını sürdürmek için kullanıma sunuldu.
  • 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ıları karıştıran geniş bir çalışma zamanı yardımcı barrel’ı.
  • openclaw/plugin-sdk/config-runtime - geçiş penceresi sırasında hâlâ kullanımdan kaldırılmış doğrudan yükleme/yazma yardımcılarını taşıyan geniş bir yapılandırma uyumluluk barrel’ı.
  • openclaw/extension-api - Plugin’lere gömülü ajan ç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 gömülü çalıştırıcıya yönelik paketli uzantı hook’u.
Geniş içe aktarma yüzeyleri artık kullanımdan kaldırıldı. Çalışma zamanında hâlâ çalışırlar, ancak yeni Plugin’ler bunları kullanmamalıdır ve mevcut Plugin’ler bir sonraki ana sürüm bunları kaldırmadan önce geçiş yapmalıdır. Yalnızca gömülü çalıştırıcıya yönelik uzantı fabrikası kayıt API’si kaldırıldı; bunun yerine araç sonucu ara katmanını kullanın. OpenClaw, belgelenmiş Plugin davranışını bir ikame getiren aynı değişiklikte kaldırmaz veya yeniden yorumlamaz. Sözleşmeyi bozan değişiklikler önce bir uyumluluk adaptöründen, tanılamalardan, belgelerden ve bir kullanımdan kaldırma penceresinden geçmelidir. Bu; SDK içe aktarmaları, manifest alanları, kurulum API’leri, hook’lar ve çalışma zamanı kayıt davranışı için geçerlidir.
Geriye dönük uyumluluk katmanı gelecekteki bir ana sürümde kaldırılacaktır. Hâlâ bu yüzeylerden içe aktarma yapan Plugin’ler, bu gerçekleştiğinde bozulacaktır. Eski gömülü uzantı fabrikası kayıtları artık zaten yüklenmiyor.

Bu neden değişti

Eski yaklaşım sorunlara neden oldu:
  • Yavaş başlatma - bir yardımcıyı içe aktarmak onlarca ilgisiz modülü yüklüyordu
  • Döngüsel bağımlılıklar - geniş yeniden dışa aktarmalar içe aktarma döngüleri oluşturmayı kolaylaştırıyordu
  • Belirsiz API yüzeyi - hangi dışa aktarmaların kararlı, hangilerinin dahili olduğunu anlamanın yolu yoktu
Modern Plugin SDK bunu düzeltir: her içe aktarma yolu (openclaw/plugin-sdk/\<subpath\>) net bir amacı ve belgelenmiş sözleşmesi olan küçük, kendi kendine yeterli bir modüldür. Paketli kanallar için eski sağlayıcı kolaylık dikişleri de kaldırıldı. Kanal markalı yardımcı dikişleri kararlı Plugin sözleşmeleri değil, özel mono-repo kısayollarıydı. Bunun yerine dar genel SDK alt yollarını kullanın. Paketli Plugin çalışma alanı içinde, sağlayıcıya ait yardımcıları o Plugin’in kendi api.ts veya runtime-api.ts dosyasında tutun. Geçerli paketli sağlayıcı örnekleri:
  • Anthropic, Claude’a özgü akış yardımcılarını kendi api.ts / contract-api.ts dikişinde tutar
  • OpenAI, sağlayıcı oluşturucuları, varsayılan model yardımcılarını ve gerçek zamanlı sağlayıcı oluşturucuları kendi api.ts dosyasında tutar
  • OpenRouter, sağlayıcı oluşturucuyu ve onboarding/yapılandırma yardımcılarını kendi api.ts dosyasında tutar

Talk ve gerçek zamanlı ses geçiş planı

Gerçek zamanlı ses, telefon, toplantı ve tarayıcı Talk kodu, yüzey yerel tur defter tutmasından openclaw/plugin-sdk/realtime-voice tarafından dışa aktarılan paylaşılan bir Talk oturum denetleyicisine taşınıyor. Yeni denetleyici ortak Talk olay zarfını, etkin tur durumunu, yakalama durumunu, çıkış sesi durumunu, yakın olay geçmişini ve eski tur reddini sahiplenir. Sağlayıcı Plugin’leri tedarikçiye özgü gerçek zamanlı oturumları sahiplenmeye devam etmelidir; yüzey Plugin’leri ise yakalama, oynatma, telefon ve toplantı özel durumlarını sahiplenmeye devam etmelidir. Bu Talk geçişi bilinçli olarak temiz kırılacak şekilde tasarlanmıştır:
  1. Paylaşılan denetleyici/çalışma zamanı primitiflerini plugin-sdk/realtime-voice içinde tutun.
  2. Paketli yüzeyleri paylaşılan denetleyiciye taşıyın: tarayıcı aktarma, yönetilen oda devri, sesli arama gerçek zamanlı, sesli arama akış STT, Google Meet gerçek zamanlı ve yerel bas-konuş.
  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 gerçek zamanlı HTTP uç noktasını ve istek zamanında talimat geçersiz kılma yollarını silin.
Yeni kod, düşük seviyeli bir adaptör veya test fikstürü uygulamadığı sürece createTalkEventSequencer(...) öğesini doğrudan çağırmamalıdır. Paylaşılan denetleyiciyi tercih edin; böylece tur kapsamlı olaylar tur kimliği olmadan yayılamaz, eski turnEnd / turnCancel çağrıları daha yeni bir etkin turu temizleyemez ve çıkış sesi yaşam döngüsü olayları telefon, toplantılar, tarayıcı aktarma, yönetilen oda devri ve yerel Talk istemcileri genelinde tutarlı kalır. 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: { status: "working" },
  options: { willContinue: true },
});
await gateway.request("talk.session.submitToolResult", {
  sessionId,
  callId,
  result: { status: "already_delivered" },
  options: { suppressResponse: true },
});
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 });
await gateway.request("talk.client.steer", { sessionKey, text, mode: "steer" });
Tarayıcıya ait WebRTC/sağlayıcı websocket oturumları talk.client.create kullanır, çünkü tarayıcı sağlayıcı uzlaşmasını ve medya taşımasını sahiplenirken Gateway kimlik bilgilerini, talimatları ve araç politikasını sahiplenir. talk.session.*, gateway-relay gerçek zamanlı, gateway-relay transkripsiyon ve yönetilen oda yerel STT/TTS oturumları için ortak Gateway tarafından yönetilen yüzeydir. Gerçek zamanlı seçicileri talk.provider / talk.providers yanına yerleştiren eski yapılandırmalar openclaw doctor --fix ile onarılmalıdır; çalışma zamanı Talk, konuşma/TTS sağlayıcı yapılandırmasını gerçek zamanlı sağlayıcı yapılandırması olarak yeniden yorumlamaz. Desteklenen talk.session.create kombinasyonları bilinçli olarak küçüktür:
ModTaşımaBeyinSahipNotlar
realtimegateway-relayagent-consultGatewayGateway üzerinden köprülenen tam çift yönlü sağlayıcı sesi; araç çağrıları agent-consult aracı üzerinden yönlendirilir.
transcriptiongateway-relaynoneGatewayYalnızca akış STT; çağıranlar giriş sesi gönderir ve transkript olayları alır.
stt-ttsmanaged-roomagent-consultYerel/istemci odasıİstemcinin yakalama/oynatmayı, Gateway’in tur durumunu sahip olduğu bas-konuş ve telsiz tarzı odalar.
stt-ttsmanaged-roomdirect-toolsYerel/istemci odasıGateway araç eylemlerini doğrudan yürüten güvenilir birinci taraf yüzeyler için yalnızca yönetici oda modu.
Kaldırılan yöntem haritası:
EskiYeni
talk.realtime.sessiontalk.client.create
talk.realtime.toolCalltalk.client.toolCall
talk.realtime.relayAudiotalk.session.appendAudio
talk.realtime.relayCanceltalk.session.cancelOutput veya talk.session.cancelTurn
talk.realtime.relayToolResulttalk.session.submitToolResult
talk.realtime.relayStoptalk.session.close
talk.transcription.sessiontalk.session.create({ mode: "transcription" })
talk.transcription.relayAudiotalk.session.appendAudio
talk.transcription.relayCanceltalk.session.cancelTurn
talk.transcription.relayStoptalk.session.close
talk.handoff.createtalk.session.create({ transport: "managed-room" })
talk.handoff.jointalk.session.join
talk.handoff.revoketalk.session.close
Birleşik denetim söz varlığı da bilinçli olarak dardır:
YöntemUygulandığı yerSözleşme
talk.session.appendAudiorealtime/gateway-relay, transcription/gateway-relayAynı Gateway bağlantısının sahip olduğu sağlayıcı oturumuna base64 PCM ses parçası ekler.
talk.session.startTurnstt-tts/managed-roomYönetilen oda kullanıcı sırasını başlatır.
talk.session.endTurnstt-tts/managed-roomEski sıra doğrulamasından sonra etkin sırayı sonlandırır.
talk.session.cancelTurntüm Gateway sahipli oturumlarBir sıra için etkin yakalama/sağlayıcı/ajan/TTS işini iptal eder.
talk.session.cancelOutputrealtime/gateway-relayKullanıcı sırasını mutlaka sonlandırmadan asistan ses çıktısını durdurur.
talk.session.submitToolResultrealtime/gateway-relayRelay tarafından yayılan bir sağlayıcı araç çağrısını tamamlar; ara çıktı için options.willContinue veya çağrıyı başka bir asistan yanıtı olmadan karşılamak için options.suppressResponse iletin.
talk.session.steerajan destekli Talk oturumlarıTalk oturumundan çözümlenen etkin gömülü çalıştırmaya sözlü status, steer, cancel veya followup kontrolü gönderir.
talk.session.closetüm birleşik oturumlarRelay oturumlarını durdurur veya yönetilen oda durumunu iptal eder, ardından birleşik oturum kimliğini unutur.
Bunu çalıştırmak için core içine sağlayıcı veya platform özel durumları eklemeyin. Talk oturum semantiği core’a aittir. Sağlayıcı Plugin’leri satıcı oturumu kurulumuna sahiptir. Sesli arama ve Google Meet telefon/meeting adaptörlerine sahiptir. Tarayıcı ve native uygulamalar cihaz yakalama/oynatma UX’ine sahiptir.

Uyumluluk ilkesi

Harici Plugin’ler için uyumluluk işi şu sırayı izler:
  1. yeni sözleşmeyi ekleyin
  2. eski davranışı bir uyumluluk adaptörü üzerinden bağlı tutun
  3. eski yolu ve yerine geçeni adlandıran bir tanılama 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ş penceresinden sonra, genellikle büyük bir sürümde kaldırın
Bakımcılar mevcut geçiş kuyruğunu pnpm plugins:boundary-report ile denetleyebilir. Kompakt 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 gelen uyumluluk kayıtları, sahipler arası ayrılmış SDK import’ları veya kullanılmayan ayrılmış SDK alt yolları nedeniyle 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/docs referanslarını sayar, sahipler arası ayrılmış SDK import’larını ortaya çıkarır ve özel memory-host SDK köprüsünü özetler; böylece uyumluluk temizliği ad hoc aramalara dayanmak yerine açık kalır. Ayrılmış SDK alt yollarında izlenen sahip kullanımı olmalıdır; kullanılmayan ayrılmış yardımcı export’ları genel SDK’dan kaldırılmalıdır. Bir manifest alanı hâlâ kabul ediliyorsa, Plugin yazarları docs ve tanılamalar aksini söyleyene kadar bunu kullanmaya devam edebilir. Yeni kod belgelenmiş yerine geçeni tercih etmelidir, ancak mevcut Plugin’ler olağan küçük sürümlerde bozulmamalıdır.

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

1

Runtime config yükleme/yazma yardımcılarını geçirin

Paketli Plugin’ler doğrudan api.runtime.config.loadConfig() ve api.runtime.config.writeConfigFile(...) çağırmayı bırakmalıdır. Etkin çağrı yoluna zaten iletilmiş config’i tercih edin. Geçerli işlem anlık görüntüsüne ihtiyaç duyan uzun ömürlü handler’lar api.runtime.config.current() kullanabilir. Uzun ömürlü ajan araçları, bir config yazımından önce oluşturulan aracın hâlâ yenilenmiş runtime config’i görmesi için execute içinde araç context’inin ctx.getRuntimeConfig() değerini kullanmalıdır.Config yazımları transaction yardımcılarından geçmeli ve bir yazma 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şine sahip olduğunda ve reload planner’ı bilinçli olarak bastırmak istediğinde afterWrite: { mode: "none", reason: "..." } kullanın. Mutasyon sonuçları testler ve loglama için typed bir followUp özeti içerir; yeniden başlatmayı uygulamak veya zamanlamak Gateway’in sorumluluğunda kalır. loadConfig ve writeConfigFile, geçiş penceresi sırasında harici Plugin’ler için kullanımdan kaldırılmış uyumluluk yardımcıları olarak kalır ve runtime-config-load-write uyumluluk koduyla bir kez uyarır. Paketli Plugin’ler ve repo runtime kodu pnpm check:deprecated-api-usage 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 config yazımları başarısız olur, Gateway sunucu yöntemleri istek runtime anlık görüntüsünü kullanmalıdır, runtime kanal send/action/client yardımcıları config’i kendi sınırlarından almalıdır ve uzun ömürlü runtime modüllerinde 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ı import etmekten kaçınmalıdır. İşe uyan dar SDK alt yolunu kullanın:
İhtiyaçImport
OpenClawConfig gibi config türleriopenclaw/plugin-sdk/config-contracts
Zaten yüklenmiş config doğrulamaları ve plugin-entry config aramasıopenclaw/plugin-sdk/plugin-config-runtime
Geçerli runtime anlık görüntüsü okumalarıopenclaw/plugin-sdk/runtime-config-snapshot
Config yazımlarıopenclaw/plugin-sdk/config-mutation
Oturum deposu yardımcılarıopenclaw/plugin-sdk/session-store-runtime
Markdown tablo config’iopenclaw/plugin-sdk/markdown-table-runtime
Grup ilkesi runtime yardımcılarıopenclaw/plugin-sdk/runtime-group-policy
Secret input çözümlemeopenclaw/plugin-sdk/secret-input-runtime
Model/oturum override’larıopenclaw/plugin-sdk/model-session-runtime
Paketli Plugin’ler ve testleri geniş barrel’a karşı tarayıcı korumalıdır; böylece import’lar ve mock’lar ihtiyaç duydukları davranışa yerel kalır. Geniş barrel harici uyumluluk için hâlâ vardır, ancak yeni kod buna bağımlı olmamalıdır.
2

Gömülü araç sonucu uzantılarını middleware’e geçirin

Paketli Plugin’ler yalnızca embedded-runner’a özgü api.registerEmbeddedExtensionFactory(...) araç sonucu handler’larını runtime’dan bağımsız middleware ile değiştirmelidir.
// OpenClaw and Codex runtime dynamic tools
api.registerAgentToolResultMiddleware(async (event) => {
  return compactToolResult(event);
}, {
  runtimes: ["openclaw", "codex"],
});
Aynı anda Plugin manifest’ini güncelleyin:
{
  "contracts": {
    "agentToolResultMiddleware": ["openclaw", "codex"]
  }
}
Yüklü Plugin’ler, açıkça etkinleştirildiklerinde ve hedeflenen her runtime’ı contracts.agentToolResultMiddleware içinde bildirdiklerinde araç sonucu middleware’i de kaydedebilir. Bildirilmemiş yüklü middleware kayıtları reddedilir.
3

Approval-native handler’ları capability fact’lerine geçirin

Approval yetenekli kanal Plugin’leri artık native approval davranışını approvalCapability.nativeRuntime ve paylaşılan runtime-context registry üzerinden açığa çıkarır.Temel değişiklikler:
  • approvalCapability.handler.loadRuntime(...) yerine approvalCapability.nativeRuntime kullanın
  • Approval’a özgü auth/delivery işlemlerini legacy plugin.auth / plugin.approvals bağlantısından approvalCapability üzerine taşıyın
  • ChannelPlugin.approvals genel channel-plugin sözleşmesinden kaldırıldı; delivery/native/render alanlarını approvalCapability üzerine taşıyın
  • plugin.auth yalnızca kanal login/logout akışları için kalır; oradaki approval auth hook’ları artık core tarafından okunmaz
  • Client’lar, token’lar veya Bolt uygulamaları gibi kanal sahipli runtime nesnelerini openclaw/plugin-sdk/channel-runtime-context üzerinden kaydedin
  • Native approval handler’larından Plugin sahipli yeniden yönlendirme bildirimleri göndermeyin; core artık gerçek teslim sonuçlarından routed-elsewhere bildirimlerine sahiptir
  • createChannelManager(...) içine channelRuntime iletirken gerçek bir createPluginRuntime().channel yüzeyi sağlayın. Kısmi stub’lar reddedilir.
Geçerli approval capability düzeni için /plugins/sdk-channel-plugins bölümüne bakın.
4

Windows wrapper fallback davranışını denetleyin

Plugin’iniz openclaw/plugin-sdk/windows-spawn kullanıyorsa, çözümlenmemiş Windows .cmd/.bat wrapper’ları artık siz açıkça allowShellFallback: true iletmedikçe kapalı 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 fallback’e bilinçli olarak dayanmıyorsa allowShellFallback ayarlamayın ve bunun yerine fırlatılan hatayı işleyin.
5

Kullanımdan kaldırılmış import’ları bulun

Plugin’inizde kullanımdan kaldırılmış iki yüzeyden herhangi birinden import 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/
6

Odaklı import’larla değiştirin

Eski yüzeydeki her export belirli bir modern import 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";
Host tarafı yardımcıları için doğrudan import etmek yerine enjekte edilen Plugin runtime’ını kullanın:
// Before (deprecated extension-api bridge)
import { runEmbeddedAgent } from "openclaw/extension-api";
const result = await runEmbeddedAgent({ sessionId, prompt });

// After (injected runtime)
const result = await api.runtime.agent.runEmbeddedAgent({ sessionId, prompt });
Aynı desen, diğer eski köprü yardımcıları için de geçerlidir:
Eski içe aktarmaModern eşdeğeri
resolveAgentDirapi.runtime.agent.resolveAgentDir
resolveAgentWorkspaceDirapi.runtime.agent.resolveAgentWorkspaceDir
resolveAgentIdentityapi.runtime.agent.resolveAgentIdentity
resolveThinkingDefaultapi.runtime.agent.resolveThinkingDefault
resolveAgentTimeoutMsapi.runtime.agent.resolveAgentTimeoutMs
ensureAgentWorkspaceapi.runtime.agent.ensureAgentWorkspace
oturum deposu yardımcılarıapi.runtime.agent.session.*
7

Geniş infra-runtime içe aktarmalarını değiştir

openclaw/plugin-sdk/infra-runtime, dış uyumluluk için hâlâ vardır, ancak yeni kod gerçekten ihtiyaç duyduğu odaklanmış yardımcı yüzeyi içe aktarmalıdır:
İhtiyaçİçe aktarma
Sistem olay kuyruğu yardımcılarıopenclaw/plugin-sdk/system-event-runtime
Heartbeat uyandırma, olay ve görünürlük yardımcılarıopenclaw/plugin-sdk/heartbeat-runtime
Bekleyen teslimat kuyruğunu boşaltmaopenclaw/plugin-sdk/delivery-queue-runtime
Kanal etkinliği telemetrisiopenclaw/plugin-sdk/channel-activity-runtime
Bellek içi ve kalıcı depolama destekli tekilleştirme önbellekleriopenclaw/plugin-sdk/dedupe-runtime
Güvenli yerel dosya/medya yolu yardımcılarıopenclaw/plugin-sdk/file-access-runtime
Dağıtıcıdan haberdar fetchopenclaw/plugin-sdk/runtime-fetch
Proxy ve korumalı fetch yardımcılarıopenclaw/plugin-sdk/fetch-runtime
SSRF dağıtıcı ilkesi türleriopenclaw/plugin-sdk/ssrf-dispatcher
Onay isteği/çözümleme türleriopenclaw/plugin-sdk/approval-runtime
Onay yanıtı yükü 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 beklemeleriopenclaw/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 dönüştürmeopenclaw/plugin-sdk/number-runtime
Sürece yerel eşzamansız kilitopenclaw/plugin-sdk/async-lock-runtime
Dosya kilitleriopenclaw/plugin-sdk/file-lock
Birlikte gelen Plugin’ler infra-runtime kullanımına karşı tarayıcıyla korunur, bu nedenle repo kodu geniş barrel’a geri dönemez.
8

Kanal rota yardımcılarını taşı

Yeni kanal rota kodu openclaw/plugin-sdk/channel-route kullanmalıdır. Eski route-key ve comparable-target adları, geçiş dönemi boyunca uyumluluk takma adları olarak kalır; ancak yeni Plugin’ler davranışı doğrudan açıklayan rota adlarını kullanmalıdır:
Eski yardımcıModern yardımcı
channelRouteIdentityKey(...)channelRouteDedupeKey(...)
channelRouteKey(...)channelRouteCompactKey(...)
ComparableChannelTargetChannelRouteParsedTarget
comparableChannelTargetsMatch(...)channelRouteTargetsMatchExact(...)
comparableChannelTargetsShareRoute(...)channelRouteTargetsShareConversation(...)
Modern rota yardımcıları { channel, to, accountId, threadId } değerlerini yerel onaylar, yanıt bastırma, gelen tekilleştirme, Cron teslimi ve oturum yönlendirmesi genelinde tutarlı şekilde normalleştirir.ChannelMessagingAdapter.parseExplicitTarget veya ayrıştırıcı destekli yüklü rota yardımcıları (parseExplicitTargetForLoadedChannel ya da resolveRouteTargetForLoadedChannel) veya plugin-sdk/channel-route içinden resolveChannelRouteTargetWithParser(...) için yeni kullanım eklemeyin. Bu hook’lar kullanımdan kaldırılmıştır ve geçiş dönemi boyunca yalnızca eski Plugin’ler için kalır. Yeni kanal Plugin’leri, hedef kimliği normalleştirme ve dizin kaçırma geri dönüşü için messaging.targetResolver.resolveTarget(...), çekirdeğin erken bir eş türüne ihtiyaç duyduğu durumlarda messaging.inferTargetChatType(...) ve sağlayıcıya özgü oturum ile iş parçacığı kimliği için messaging.resolveOutboundSessionRoute(...) kullanmalıdır.
9

Derle ve test et

pnpm build
pnpm test -- my-plugin/

İçe aktarma yolu referansı

İçe aktarma yoluAmaçTemel dışa aktarımlar
plugin-sdk/plugin-entryKanonik Plugin giriş yardımcısıdefinePluginEntry
plugin-sdk/coreKanal giriş tanımları/oluşturucuları için eski şemsiye yeniden dışa aktarımıdefineChannelPluginEntry, createChatChannelPlugin
plugin-sdk/config-schemaKök yapılandırma şeması dışa aktarımıOpenClawSchema
plugin-sdk/provider-entryTek sağlayıcılı giriş yardımcısıdefineSingleProviderPluginEntry
plugin-sdk/channel-coreOdaklanmış kanal giriş tanımları ve oluşturucularıdefineChannelPluginEntry, defineSetupPluginEntry, createChatChannelPlugin, createChannelPluginBase
plugin-sdk/setupPaylaşılan kurulum sihirbazı yardımcılarıKurulum çevirmeni, izin listesi istemleri, kurulum durumu oluşturucuları
plugin-sdk/setup-runtimeKurulum zamanı çalışma zamanı yardımcılarıcreateSetupTranslator, içe aktarma açısından güvenli kurulum yaması bağdaştırıcıları, arama notu yardımcıları, promptResolvedAllowFrom, splitSetupEntries, devredilmiş kurulum proxy’leri
plugin-sdk/setup-adapter-runtimeKullanımdan kaldırılmış kurulum bağdaştırıcısı takma adıplugin-sdk/setup-runtime kullanın
plugin-sdk/setup-toolsKurulum araçları yardımcılarıformatCliCommand, detectBinary, extractArchive, resolveBrewExecutable, formatDocsLink, CONFIG_DIR
plugin-sdk/account-coreÇoklu hesap yardımcılarıHesap listesi/yapılandırma/eylem kapısı yardımcıları
plugin-sdk/account-idHesap kimliği yardımcılarıDEFAULT_ACCOUNT_ID, hesap kimliği normalleştirme
plugin-sdk/account-resolutionHesap arama yardımcılarıHesap arama + varsayılan geri dönüş yardımcıları
plugin-sdk/account-helpersDar kapsamlı hesap yardımcılarıHesap listesi/hesap eylemi yardımcıları
plugin-sdk/channel-setupKurulum sihirbazı bağdaştırıcılarıcreateOptionalChannelSetupSurface, createOptionalChannelSetupAdapter, createOptionalChannelSetupWizard, ayrıca DEFAULT_ACCOUNT_ID, createTopLevelChannelDmPolicy, setSetupChannelEnabled, splitSetupEntries
plugin-sdk/channel-pairingDM eşleştirme ilkel öğelericreateChannelPairingController
plugin-sdk/channel-reply-pipelineYanıt öneki, yazıyor göstergesi ve kaynak teslimatı bağlantılarıcreateChannelReplyPipeline, resolveChannelSourceReplyDeliveryMode
plugin-sdk/channel-config-helpersYapı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-schemaYapılandırma şeması oluşturucularıPaylaşılan kanal yapılandırma şeması ilkel öğeleri ve yalnızca genel oluşturucu
plugin-sdk/bundled-channel-config-schemaPaketlenmiş yapılandırma şemalarıYalnızca OpenClaw tarafından bakımı yapılan paketlenmiş plugin’ler; yeni plugin’ler plugin’e yerel şemalar tanımlamalıdır
plugin-sdk/channel-config-schema-legacyKullanımdan kaldırılmış paketlenmiş yapılandırma şemalarıYalnızca uyumluluk takma adı; bakımı yapılan paketlenmiş plugin’ler için plugin-sdk/bundled-channel-config-schema kullanın
plugin-sdk/telegram-command-configTelegram komut yapılandırması yardımcılarıKomut adı normalleştirme, açıklama kırpma, yinelenen/çakışan doğrulama
plugin-sdk/channel-policyGrup/DM ilkesi çözümlemeresolveChannelGroupRequireMention
plugin-sdk/channel-lifecycleKullanımdan kaldırılmış uyumluluk cephesiplugin-sdk/channel-outbound kullanın
plugin-sdk/inbound-envelopeGelen zarf yardımcılarıPaylaşılan rota + zarf oluşturucu yardımcıları
plugin-sdk/channel-inboundGelen alma yardımcılarıBağlam oluşturma, biçimlendirme, kökler, çalıştırıcılar, hazırlanmış yanıt gönderimi ve gönderim koşulları
plugin-sdk/messaging-targetsKullanımdan kaldırılmış hedef ayrıştırma içe aktarma yoluGenel hedef ayrıştırma yardımcıları için plugin-sdk/channel-targets, rota karşılaştırması için plugin-sdk/channel-route ve sağlayıcıya özgü hedef çözümleme için plugin’in sahip olduğu messaging.targetResolver / messaging.resolveOutboundSessionRoute kullanın
plugin-sdk/outbound-mediaGiden medya yardımcılarıPaylaşılan giden medya yükleme
plugin-sdk/outbound-send-depsKullanımdan kaldırılmış uyumluluk cephesiplugin-sdk/channel-outbound kullanın
plugin-sdk/channel-outboundGiden ileti yaşam döngüsü yardımcılarıİleti bağdaştırıcıları, alındılar, kalıcı gönderme yardımcıları, canlı önizleme/akış yardımcıları, yanıt seçenekleri, yaşam döngüsü yardımcıları, giden kimliği ve yük planlama
plugin-sdk/channel-streamingKullanımdan kaldırılmış uyumluluk cephesiplugin-sdk/channel-outbound kullanın
plugin-sdk/outbound-runtimeKullanımdan kaldırılmış uyumluluk cephesiplugin-sdk/channel-outbound kullanın
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-payloadEski medya yükü yardımcılarıEski alan yerleşimleri için aracı medya yükü oluşturucu
plugin-sdk/channel-runtimeKullanımdan kaldırılmış uyumluluk shim’iYalnızca eski kanal çalışma zamanı yardımcı programları
plugin-sdk/channel-send-resultGönderme sonucu türleriYanıt sonucu türleri
plugin-sdk/runtime-storeKalıcı Plugin depolamasıcreatePluginRuntimeStore
plugin-sdk/runtimeGeniş kapsamlı çalışma zamanı yardımcılarıÇalışma zamanı/günlükleme/yedekleme/plugin kurulum yardımcıları
plugin-sdk/runtime-envDar 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-runtimePaylaşılan Plugin çalışma zamanı yardımcılarıPlugin komutları/hook’ları/http/etkileşimli yardımcıları
plugin-sdk/hook-runtimeHook işlem hattı yardımcılarıPaylaşılan Webhook/dahili hook işlem hattı yardımcıları
plugin-sdk/lazy-runtimeTembel çalışma zamanı yardımcılarıcreateLazyRuntimeModule, createLazyRuntimeMethod, createLazyRuntimeMethodBinder, createLazyRuntimeNamedExport, createLazyRuntimeSurface
plugin-sdk/process-runtimeSüreç yardımcılarıPaylaşılan exec yardımcıları
plugin-sdk/cli-runtimeCLI çalışma zamanı yardımcılarıKomut biçimlendirme, beklemeler, sürüm yardımcıları
plugin-sdk/gateway-runtimeGateway yardımcılarıGateway istemcisi, olay döngüsü hazır başlatma yardımcısı, duyurulan LAN ana makine çözümlemesi ve kanal durumu yaması yardımcıları
plugin-sdk/config-runtimeKullanımdan kaldırılmış yapılandırma uyumluluğu shim’iconfig-contracts, plugin-config-runtime, runtime-config-snapshot ve config-mutation tercih edin
plugin-sdk/telegram-command-configTelegram komut yardımcılarıPaketlenmiş Telegram sözleşme yüzeyi kullanılamadığında geri dönüşte kararlı Telegram komutu doğrulama yardımcıları
plugin-sdk/approval-runtimeOnay istemi yardımcılarıExec/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österim yolu biçimlendirme
plugin-sdk/approval-auth-runtimeOnay kimlik doğrulama yardımcılarıOnaylayan çözümleme, aynı sohbet eylem yetkilendirmesi
plugin-sdk/approval-client-runtimeOnay istemcisi yardımcılarıYerel exec onayı profili/filtre yardımcıları
plugin-sdk/approval-delivery-runtimeOnay teslimatı yardımcılarıYerel onay yeteneği/teslimat bağdaştırıcıları
plugin-sdk/approval-gateway-runtimeOnay Gateway yardımcılarıPaylaşılan onay Gateway çözümleme yardımcısı
plugin-sdk/approval-handler-adapter-runtimeOnay 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-runtimeOnay 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-runtimeOnay hedefi yardımcılarıYerel onay hedefi/hesap bağlama yardımcıları
plugin-sdk/approval-reply-runtimeOnay yanıtı yardımcılarıExec/plugin onay yanıtı yükü yardımcıları
plugin-sdk/channel-runtime-contextKanal çalışma zamanı bağlamı yardımcılarıGenel kanal çalışma zamanı bağlamı kaydet/al/izle yardımcıları
plugin-sdk/security-runtimeGüvenlik yardımcılarıPaylaşılan güven, DM geçitleme, kökle sınırlı dosya/yol yardımcıları, dış içerik ve sır toplama yardımcıları
plugin-sdk/ssrf-policySSRF ilkesi yardımcılarıAna makine izin listesi ve özel ağ ilkesi yardımcıları
plugin-sdk/ssrf-runtimeSSRF çalışma zamanı yardımcılarıSabitlenmiş dispatcher, korumalı fetch, SSRF ilkesi yardımcıları
plugin-sdk/system-event-runtimeSistem olayı yardımcılarıenqueueSystemEvent, peekSystemEventEntries
plugin-sdk/heartbeat-runtimeHeartbeat yardımcılarıHeartbeat uyandırma, olay ve görünürlük yardımcıları
plugin-sdk/delivery-queue-runtimeTeslimat kuyruğu yardımcılarıdrainPendingDeliveries
plugin-sdk/channel-activity-runtimeKanal etkinliği yardımcılarırecordChannelActivity
plugin-sdk/dedupe-runtimeYinelenenleri ayıklama yardımcılarıBellek içi ve kalıcı destekli yinelenenleri ayıklama önbellekleri
plugin-sdk/file-access-runtimeDosya erişimi yardımcılarıGüvenli yerel dosya/medya yolu yardımcıları
plugin-sdk/transport-ready-runtimeTaşıma hazır olma yardımcılarıwaitForTransportReady
plugin-sdk/exec-approvals-runtimeExec onayı ilkesi yardımcılarıloadExecApprovals, resolveExecApprovalsFromFile, ExecApprovalsFile
plugin-sdk/collection-runtimeSınırlı önbellek yardımcılarıpruneMapToMaxSize
plugin-sdk/diagnostic-runtimeTanılama geçitleme yardımcılarıisDiagnosticFlagEnabled, isDiagnosticsEnabled
plugin-sdk/error-runtimeHata biçimlendirme yardımcılarıformatUncaughtError, isApprovalNotFoundError, hata grafiği yardımcıları
plugin-sdk/fetch-runtimeSarmalanmış fetch/proxy yardımcılarıresolveFetch, proxy yardımcıları, EnvHttpProxyAgent seçenek yardımcıları
plugin-sdk/host-runtimeAna makine normalleştirme yardımcılarınormalizeHostname, normalizeScpRemoteHost
plugin-sdk/retry-runtimeYeniden deneme yardımcılarıRetryConfig, retryAsync, ilke çalıştırıcıları
plugin-sdk/allow-fromİzin listesi biçimlendirme ve girdi eşlemeformatAllowFromLowercase, mapAllowlistResolutionInputs
plugin-sdk/command-authKomut geçitleme ve komut yüzeyi yardımcılarıresolveControlCommandGate, gönderici yetkilendirme yardımcıları, dinamik argüman menüsü biçimlendirmeyi de içeren komut kayıt defteri yardımcıları
plugin-sdk/command-statusKomut durumu/yardım işleyicileribuildCommandsMessage, buildCommandsMessagePaginated, buildHelpMessage
plugin-sdk/secret-inputSır girdisi ayrıştırmaSır girdisi yardımcıları
plugin-sdk/webhook-ingressWebhook isteği yardımcılarıWebhook hedef yardımcı programları
plugin-sdk/webhook-request-guardsWebhook gövde koruması yardımcılarıİstek gövdesi okuma/sınır yardımcıları
plugin-sdk/reply-runtimePaylaşılan yanıt çalışma zamanıGelen gönderim, Heartbeat, yanıt planlayıcı, parçalama
plugin-sdk/reply-dispatch-runtimeDar kapsamlı yanıt gönderimi yardımcılarıSonlandırma, sağlayıcı gönderimi ve konuşma etiketi yardımcıları
plugin-sdk/reply-historyYanıt geçmişi yardımcılarıcreateChannelHistoryWindow; buildPendingHistoryContextFromMap, recordPendingHistoryEntry ve clearHistoryEntriesIfEnabled gibi kullanımdan kaldırılmış harita yardımcısı uyumluluk dışa aktarımları
plugin-sdk/reply-referenceYanıt referansı planlamacreateReplyReferencePlanner
plugin-sdk/reply-chunkingYanıt parçalama yardımcılarıMetin/markdown parçalama yardımcıları
plugin-sdk/session-store-runtimeOturum deposu yardımcılarıDepo yolu + güncellenme zamanı yardımcıları
plugin-sdk/state-pathsDurum yolu yardımcılarıDurum ve OAuth dizini yardımcıları
plugin-sdk/routingYönlendirme/oturum anahtarı yardımcılarıresolveAgentRoute, buildAgentSessionKey, resolveDefaultAgentBoundAccountId, oturum anahtarı normalleştirme yardımcıları
plugin-sdk/status-helpersKanal 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-runtimeHedef çözümleyici yardımcılarıPaylaşılan hedef çözümleyici yardımcıları
plugin-sdk/string-normalization-runtimeDize normalleştirme yardımcılarıSlug/dize normalleştirme yardımcıları
plugin-sdk/request-urlİstek URL’si yardımcılarıİstek benzeri girdilerden dize URL’leri çıkarır
plugin-sdk/run-commandZaman sınırlı komut yardımcılarıNormalleştirilmiş stdout/stderr ile zaman sınırlı komut çalıştırıcı
plugin-sdk/param-readersParametre okuyucularıOrtak araç/CLI parametre okuyucuları
plugin-sdk/tool-payloadAraç yükü çıkarımıAraç sonuç nesnelerinden normalleştirilmiş yükleri çıkarır
plugin-sdk/tool-sendAraç gönderim çıkarımıAraç argümanlarından kanonik gönderim hedefi alanlarını çıkarır
plugin-sdk/temp-pathGeçici yol yardımcılarıPaylaşılan geçici indirme yolu yardımcıları
plugin-sdk/logging-coreGünlükleme yardımcılarıAlt sistem günlükleyicisi ve redaksiyon yardımcıları
plugin-sdk/markdown-table-runtimeMarkdown tablo yardımcılarıMarkdown tablo modu yardımcıları
plugin-sdk/reply-payloadİleti yanıt türleriYanıt yükü türleri
plugin-sdk/provider-setupDerlenmiş 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-setupOdaklanmış 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-runtimeSağ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-keySağlayıcı API anahtarı kurulum yardımcılarıAPI anahtarı alıştırma/profil yazma yardımcıları
plugin-sdk/provider-auth-resultSağlayıcı kimlik doğrulama sonucu yardımcılarıStandart OAuth kimlik doğrulama sonucu oluşturucu
plugin-sdk/provider-selection-runtimeSağ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-varsSağ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-sharedPaylaşı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-sharedPaylaşılan sağlayıcı katalog yardımcılarıfindCatalogTemplate, buildSingleProviderApiKeyCatalog, buildManifestModelProviderConfig, supportsNativeStreamingUsageCompat, applyProviderNativeStreamingUsageCompat
plugin-sdk/provider-onboardSağlayıcı alıştırma yamalarıAlıştırma yapılandırma yardımcıları
plugin-sdk/provider-httpSağ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-fetchSağlayıcı web-fetch yardımcılarıWeb-fetch sağlayıcı kayıt/önbellek yardımcıları
plugin-sdk/provider-web-search-config-contractSağlayıcı web arama yapılandırması yardımcılarıPlugin etkinleştirme kablolamasına ihtiyaç duymayan sağlayıcılar için dar web arama yapılandırması/kimlik bilgisi yardımcıları
plugin-sdk/provider-web-search-contractSağ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 web arama yapılandırması/kimlik bilgisi sözleşme yardımcıları
plugin-sdk/provider-web-searchSağlayıcı web arama yardımcılarıWeb arama sağlayıcı kayıt/önbellek/çalışma zamanı yardımcıları
plugin-sdk/provider-toolsSağlayıcı araç/şema uyumluluk yardımcılarıProviderToolCompatFamily, buildProviderToolCompatFamilyHooks ve DeepSeek/Gemini/OpenAI şema temizliği + tanılamalar
plugin-sdk/provider-usageSağlayıcı kullanım yardımcılarıfetchClaudeUsage, fetchGeminiUsage, fetchGithubCopilotUsage ve diğer sağlayıcı kullanım yardımcıları
plugin-sdk/provider-streamSağ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-runtimeSağlayıcı taşıma yardımcılarıKorumalı fetch, araç sonucu metin çıkarımı, taşıma ileti dönüşümleri ve yazılabilir taşıma olay akışları gibi yerel sağlayıcı taşıma yardımcıları
plugin-sdk/keyed-async-queueSıralı eşzamansız kuyrukKeyedAsyncQueue
plugin-sdk/media-runtimePaylaşılan medya yardımcılarıMedya getirme/dönüştürme/depolama yardımcıları, ffprobe destekli video boyutu sondalama ve medya yükü oluşturucuları
plugin-sdk/media-generation-runtimePaylaşılan medya oluşturma yardımcılarıGörsel/video/müzik oluşturma için paylaşılan devretme yardımcıları, aday seçimi ve eksik model iletileri
plugin-sdk/media-understandingMedya anlama yardımcılarıMedya anlama sağlayıcı türleri ve sağlayıcıya yönelik görsel/ses yardımcı dışa aktarımları
plugin-sdk/text-runtimeKullanımdan kaldırılmış geniş metin uyumluluğu dışa aktarımıstring-coerce-runtime, text-chunking, text-utility-runtime ve logging-core kullanın
plugin-sdk/text-chunkingMetin parçalama yardımcılarıGiden metin parçalama yardımcısı
plugin-sdk/speechKonuşma yardımcılarıKonuşma sağlayıcı türleri ve sağlayıcıya yönelik yönerge, kayıt, doğrulama yardımcıları ve OpenAI uyumlu TTS oluşturucu
plugin-sdk/speech-corePaylaşılan konuşma çekirdeğiKonuşma sağlayıcı türleri, kayıt, yönergeler, normalleştirme
plugin-sdk/realtime-transcriptionGerçek zamanlı transkripsiyon yardımcılarıSağlayıcı türleri, kayıt yardımcıları ve paylaşılan WebSocket oturum yardımcısı
plugin-sdk/realtime-voiceGerçek zamanlı ses yardımcılarıSağlayıcı türleri, kayıt/çözümleme yardımcıları, köprü oturumu yardımcıları, paylaşılan aracı geri konuşma kuyrukları, etkin çalışma ses denetimi, transkript/olay sağlığı, yankı bastırma, danışma sorusu eşleştirme, zorunlu danışma koordinasyonu, tur bağlamı takibi, çıktı etkinliği takibi ve hızlı bağlam danışma yardımcıları
plugin-sdk/image-generationGörsel oluşturma yardımcılarıGörsel oluşturma sağlayıcı türleri ve görsel varlık/veri URL’si yardımcıları ile OpenAI uyumlu görsel sağlayıcı oluşturucu
plugin-sdk/image-generation-corePaylaşılan görsel oluşturma çekirdeğiGörsel oluşturma türleri, devretme, kimlik doğrulama ve kayıt yardımcıları
plugin-sdk/music-generationMüzik oluşturma yardımcılarıMüzik oluşturma sağlayıcı/istek/sonuç türleri
plugin-sdk/music-generation-corePaylaşılan müzik oluşturma çekirdeğiMüzik oluşturma türleri, devretme yardımcıları, sağlayıcı arama ve model referansı ayrıştırma
plugin-sdk/video-generationVideo oluşturma yardımcılarıVideo oluşturma sağlayıcı/istek/sonuç türleri
plugin-sdk/video-generation-corePaylaşılan video oluşturma çekirdeğiVideo oluşturma türleri, devretme yardımcıları, sağlayıcı arama ve model referansı ayrıştırma
plugin-sdk/interactive-runtimeEtkileşimli yanıt yardımcılarıEtkileşimli yanıt yükü normalleştirme/indirgeme
plugin-sdk/channel-config-primitivesKanal yapılandırma ilkelleriDar kanal yapılandırma şeması ilkelleri
plugin-sdk/channel-config-writesKanal yapılandırması yazma yardımcılarıKanal yapılandırması yazma yetkilendirme yardımcıları
plugin-sdk/channel-plugin-commonPaylaşılan kanal başlangıcıPaylaşılan kanal Plugin başlangıç dışa aktarımları
plugin-sdk/channel-statusKanal 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-accessGrup erişimi yardımcılarıPaylaşılan grup erişimi karar yardımcıları
plugin-sdk/direct-dm, plugin-sdk/direct-dm-accessKullanımdan kaldırılmış uyumluluk cepheleriplugin-sdk/channel-inbound kullanın
plugin-sdk/direct-dm-guard-policyDoğrudan DM koruma yardımcılarıDar kripto öncesi koruma ilkesi yardımcıları
plugin-sdk/extension-sharedPaylaşılan uzantı yardımcılarıPasif kanal/durum ve ortam proxy yardımcısı ilkelleri
plugin-sdk/webhook-targetsWebhook hedef yardımcılarıWebhook hedef kaydı ve rota kurulum yardımcıları
plugin-sdk/webhook-pathKullanımdan kaldırılmış Webhook yolu takma adıplugin-sdk/webhook-ingress kullanın
plugin-sdk/web-mediaPaylaşılan web medya yardımcılarıUzak/yerel medya yükleme yardımcıları
plugin-sdk/zodKullanımdan kaldırılmış Zod uyumluluk yeniden dışa aktarımızod paketinden doğrudan zod içe aktarın
plugin-sdk/memory-corePaketlenmiş bellek çekirdeği yardımcılarıBellek yöneticisi/yapılandırma/dosya/CLI yardımcı yüzeyi
plugin-sdk/memory-core-engine-runtimeBellek motoru çalışma zamanı cephesiBellek dizin/arama çalışma zamanı cephesi
plugin-sdk/memory-core-host-embedding-registryBellek gömme kaydıHafif bellek gömme sağlayıcısı kayıt yardımcıları
plugin-sdk/memory-core-host-engine-foundationBellek ana makine temel motoruBellek ana makine temel motoru dışa aktarımları
plugin-sdk/memory-core-host-engine-embeddingsBellek ana makine gömme motoruBellek gömme sözleşmeleri, kayıt erişimi, yerel sağlayıcı ve genel toplu/uzak yardımcılar; somut uzak sağlayıcılar sahip oldukları Plugin’lerde bulunur
plugin-sdk/memory-core-host-engine-qmdBellek ana makine QMD motoruBellek ana makine QMD motoru dışa aktarımları
plugin-sdk/memory-core-host-engine-storageBellek ana makine depolama motoruBellek ana makine depolama motoru dışa aktarımları
plugin-sdk/memory-core-host-multimodalBellek ana makine çok modlu yardımcılarıBellek ana makine çok modlu yardımcıları
plugin-sdk/memory-core-host-queryBellek ana makine sorgu yardımcılarıBellek ana makine sorgu yardımcıları
plugin-sdk/memory-core-host-secretBellek ana makine gizli yardımcılarıBellek ana makine gizli yardımcıları
plugin-sdk/memory-core-host-eventsKullanımdan kaldırılmış bellek olay takma adıplugin-sdk/memory-host-events kullanın
plugin-sdk/memory-core-host-statusBellek ana makine durumu yardımcılarıBellek ana makine durumu yardımcıları
plugin-sdk/memory-core-host-runtime-cliBellek ana makine CLI çalışma zamanıBellek ana makine CLI çalışma zamanı yardımcıları
plugin-sdk/memory-core-host-runtime-coreBellek ana makine çekirdek çalışma zamanıBellek ana makine çekirdek çalışma zamanı yardımcıları
plugin-sdk/memory-core-host-runtime-filesBellek ana makine dosya/çalışma zamanı yardımcılarıBellek ana makine dosya/çalışma zamanı yardımcıları
plugin-sdk/memory-host-coreBellek ana makine çekirdek çalışma zamanı takma adıBellek ana makine çekirdek çalışma zamanı yardımcıları için satıcıdan bağımsız takma ad
plugin-sdk/memory-host-eventsBellek ana makine olay günlüğü takma adıBellek ana makine olay günlüğü yardımcıları için satıcıdan bağımsız takma ad
plugin-sdk/memory-host-filesKullanımdan kaldırılmış bellek dosya/çalışma zamanı takma adıplugin-sdk/memory-core-host-runtime-files kullanın
plugin-sdk/memory-host-markdownYönetilen Markdown yardımcılarıBelleğe bitişik Plugin’ler için paylaşılan yönetilen Markdown yardımcıları
plugin-sdk/memory-host-searchActive Memory arama cephesiGeç yüklenen active-memory arama yöneticisi çalışma zamanı cephesi
plugin-sdk/memory-host-statusKullanımdan kaldırılmış bellek ana makine durumu takma adıplugin-sdk/memory-core-host-status kullanın
plugin-sdk/testingTest yardımcı programlarıDepo yerelinde kullanımdan kaldırılmış uyumluluk varili; 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 odaklanmış depo yerel test alt yollarını kullanın
Bu tablo bilerek tam SDK yüzeyi değil, ortak geçiş alt kümesidir. Derleyici giriş noktası envanteri scripts/lib/plugin-sdk-entrypoints.json içinde yaşar; paket dışa aktarımları herkese açık alt kümeden üretilir. Ayrılmış yerleşik Plugin yardımcı birleşim noktaları, yayımlanmış @openclaw/discord@2026.3.13 paketi için tutulan, kullanımdan kaldırılmış plugin-sdk/discord shim’i gibi açıkça belgelenmiş uyumluluk facadeleri dışında herkese açık SDK dışa aktarma haritasından kaldırılmıştır. Sahibe özgü yardımcılar, sahibi 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 taşınmalıdır. İşe uyan en dar import’u kullanın. Bir dışa aktarım bulamıyorsanız, src/plugin-sdk/ içindeki kaynağı kontrol edin veya bakımcılara bunun hangi genel sözleşmeye ait olması gerektiğini sorun.

Etkin kullanımdan kaldırmalar

Plugin SDK, sağlayıcı sözleşmesi, çalışma zamanı yüzeyi ve manifest genelinde geçerli olan 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 karşılığına eşler.
Eski (openclaw/plugin-sdk/command-auth): buildCommandsMessage, buildCommandsMessagePaginated, buildHelpMessage.Yeni (openclaw/plugin-sdk/command-status): aynı imzalar, aynı dışa aktarımlar - yalnızca daha dar alt yoldan import edilir. command-auth bunları uyumluluk stub’ları olarak yeniden dışa aktarır.
// Before
import { buildHelpMessage } from "openclaw/plugin-sdk/command-auth";

// After
import { buildHelpMessage } from "openclaw/plugin-sdk/command-status";
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ış kanal Plugin’leri (Slack, Discord, Matrix, MS Teams) zaten geçiş yaptı.
openclaw/plugin-sdk/channel-runtime, eski kanal Plugin’leri için bir uyumluluk shim’idir. Yeni koddan import etmeyin; çalışma zamanı 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” kanal dışa aktarımlarıyla birlikte kullanımdan kaldırılmıştır. Yetenekleri bunun yerine anlamsal presentation yüzeyi üzerinden açığa çıkarın - kanal Plugin’leri hangi ham eylem adlarını kabul ettiklerini değil, ne render ettiklerini (kartlar, düğmeler, seçimler) bildirir.
Eski: openclaw/plugin-sdk/provider-web-search içinden tool() factory’si.Yeni: doğrudan sağlayıcı Plugin üzerinde createTool(...) uygulayın. OpenClaw artık araç sarmalayıcısını kaydetmek için SDK yardımcısına ihtiyaç duymaz.
Eski: gelen kanal mesajlarından düz bir düz metin prompt zarfı oluşturmak için formatInboundEnvelope(...) (ve ChannelMessageForAgent.channelEnvelope).Yeni: BodyForAgent artı yapılandırılmış kullanıcı bağlamı blokları. Kanal Plugin’leri yönlendirme metadata’sını (thread, konu, yanıtlanan öğe, tepkiler) bir prompt string’ine birleştirmek yerine typed alanlar olarak ekler. formatAgentEnvelope(...) yardımcısı, sentezlenmiş asistan-facing zarflar için hâlâ desteklenir, ancak gelen düz metin zarflar kullanımdan kaldırılma yolundadır.Etkilenen alanlar: inbound_claim, message_received ve channelEnvelope metnini sonradan işleyen özel kanal Plugin’leri.
Eski: api.on("deactivate", handler).Yeni: api.on("gateway_stop", handler). Olay ve bağlam aynı kapanış temizliği sözleşmesidir; yalnızca hook adı değişir.
// Before
api.on("deactivate", async (event, ctx) => {
  await stopPluginService(ctx);
});

// After
api.on("gateway_stop", async (event, ctx) => {
  await stopPluginService(ctx);
});
deactivate, 2026-08-16 sonrasına kadar kullanımdan kaldırılmış bir uyumluluk alias’ı olarak bağlı kalır.
Eski: threadBindingReady veya deliveryOrigin döndüren api.on("subagent_spawning", handler).Yeni: core’un kanal oturum-binding adaptörü üzerinden thread: true subagent binding’leri hazırlamasına izin verin. Yalnızca başlatma sonrası gözlem için api.on("subagent_spawned", handler) kullanın.
// Before
api.on("subagent_spawning", async () => ({
  status: "ok",
  threadBindingReady: true,
  deliveryOrigin: { channel: "discord", to: "channel:123", threadId: "456" },
}));

// After
api.on("subagent_spawned", async (event) => {
  await observeSubagentLaunch(event);
});
subagent_spawning, PluginHookSubagentSpawningEvent, PluginHookSubagentSpawningResult ve SubagentLifecycleHookRunner.runSubagentSpawning(...), external Plugin’ler geçiş yaparken yalnızca kullanımdan kaldırılmış uyumluluk yüzeyleri olarak kalır.
Dört keşif türü alias’ı artık katalog dönemi türleri üzerinde ince sarmalayıcılardır:
Eski aliasYeni tür
ProviderDiscoveryOrderProviderCatalogOrder
ProviderDiscoveryContextProviderCatalogContext
ProviderDiscoveryResultProviderCatalogResult
ProviderPluginDiscoveryProviderPluginCatalog
Ayrıca eski ProviderCapabilities statik paketi - sağlayıcı Plugin’leri statik bir nesne yerine buildReplayPolicy, normalizeToolSchemas ve wrapStreamFn gibi açık sağlayıcı hook’ları kullanmalıdır.
Eski (ProviderThinkingPolicy üzerinde üç ayrı hook): isBinaryThinking(ctx), supportsXHighThinking(ctx) ve resolveDefaultThinkingLevel(ctx).Yeni: kanonik id, isteğe bağlı label ve sıralanmış seviye listesi içeren bir ProviderThinkingProfile döndüren tek bir resolveThinkingProfile(ctx). OpenClaw, eskimiş saklanan değerleri profil sırasına göre otomatik olarak düşürür.Bağlam provider, modelId, isteğe bağlı birleştirilmiş reasoning ve isteğe bağlı birleştirilmiş model compat olgularını içerir. Sağlayıcı Plugin’leri, modele özgü bir profili yalnızca yapılandırılmış istek sözleşmesi desteklediğinde açığa çıkarmak için bu katalog olgularını kullanabilir.Üç hook yerine bir hook uygulayın. Eski hook’lar kullanımdan kaldırma penceresi boyunca çalışmaya devam eder, ancak profil sonucuyla birleştirilmez.
Eski: sağlayıcıyı Plugin manifest’inde bildirmeden external auth hook’ları uygulamak.Yeni: Plugin manifest’inde contracts.externalAuthProviders bildirin ve resolveExternalAuthProfiles(...) uygulayın.
{
  "contracts": {
    "externalAuthProviders": ["anthropic", "openai"]
  }
}
Eski manifest alanı: providerAuthEnvVars: { anthropic: ["ANTHROPIC_API_KEY"] }.Yeni: aynı env-var aramasını manifest üzerinde setup.providers[].envVars içine yansıtın. Bu, setup/status env metadata’sını tek yerde birleştirir ve env-var aramalarına yanıt vermek için Plugin çalışma zamanını başlatma ihtiyacını ortadan kaldırır.providerAuthEnvVars, kullanımdan kaldırma penceresi kapanana kadar bir uyumluluk adaptörü üzerinden desteklenmeye devam eder.
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 prompt ve corpus yardımcıları (registerMemoryPromptSupplement, registerMemoryCorpusSupplement) etkilenmez.
Eski: api.registerMemoryEmbeddingProvider(...) artı contracts.memoryEmbeddingProviders.Yeni: api.registerEmbeddingProvider(...) artı contracts.embeddingProviders.Genel embedding sağlayıcı sözleşmesi memory dışında yeniden kullanılabilir ve yeni sağlayıcılar için desteklenen yoldur. Memory’ye özgü kayıt API’si, mevcut sağlayıcılar geçiş yaparken kullanımdan kaldırılmış uyumluluk olarak bağlı kalır. Plugin incelemesi, yerleşik olmayan kullanımı uyumluluk borcu olarak raporlar.
src/plugins/runtime/types.ts içinden hâlâ dışa aktarılan iki eski tür alias’ı:
EskiYeni
SubagentReadSessionParamsSubagentGetSessionMessagesParams
SubagentReadSessionResultSubagentGetSessionMessagesResult
Çalışma zamanı yöntemi readSession, getSessionMessages lehine kullanımdan kaldırılmıştır. Aynı imza; eski yöntem yeni yönteme çağrı iletir.
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 çalışma zamanını korur. Plugin yalnızca DTO tabanlı okumalar gerektiriyorsa runtime.tasks.flows kullanın.
// Before
const flow = api.runtime.tasks.flow.fromToolContext(ctx);
// After
const flow = api.runtime.tasks.managedFlows.fromToolContext(ctx);
Yukarıdaki “Geçiş nasıl yapılır → Gömülü tool-result extension’larını middleware’e taşıyın” bölümünde ele alınmıştır. Tamlık için burada da yer alır: kaldırılan yalnızca embedded-runner’a ait api.registerEmbeddedExtensionFactory(...) yolu, contracts.agentToolResultMiddleware içinde açık bir çalışma zamanı listesiyle api.registerAgentToolResultMiddleware(...) tarafından değiştirilir.
openclaw/plugin-sdk içinden yeniden dışa aktarılan 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";
extensions/ altındaki yerleşik kanal/sağlayıcı Plugin’ler içindeki extension düzeyi kullanımdan kaldırmalar, kendi api.ts ve runtime-api.ts barrel’larında izlenir. Üçüncü taraf Plugin sözleşmelerini etkilemezler ve burada listelenmezler. Bir yerleşik Plugin’in yerel barrel’ını doğrudan tüketiyorsanız, yükseltmeden önce o barrel’daki kullanımdan kaldırma yorumlarını okuyun.

Kaldırma zaman çizelgesi

Ne zamanNe olur
ŞimdiKullanımdan kaldırılmış yüzeyler çalışma zamanı uyarıları yayınlar
Sonraki ana sürümKullanımdan kaldırılmış yüzeyler kaldırılacak; bunları hâlâ kullanan Plugin’ler başarısız olacak
Tüm çekirdek Plugin’ler zaten taşındı. Harici Plugin’ler sonraki ana sürümden önce taşınmalıdır.

Uyarıları geçici olarak bastırma

Taşıma ü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çış yoludur, kalıcı bir çözüm değildir.

İlgili