Перейти до основного вмісту
OpenClaw перейшов від широкого шару зворотної сумісності до сучасної архітектури Plugin із цільовими, задокументованими імпортами. Якщо ваш Plugin було створено до нової архітектури, цей посібник допоможе вам мігрувати.

Що змінюється

Стара система Plugin надавала дві широко відкриті поверхні, які давали змогу Plugin імпортувати все потрібне з однієї точки входу:
  • openclaw/plugin-sdk/compat - один імпорт, який повторно експортував десятки допоміжних засобів. Його було запроваджено, щоб старіші Plugin на основі хуків працювали, поки будувалася нова архітектура Plugin.
  • openclaw/plugin-sdk/infra-runtime - широкий barrel runtime-допоміжних засобів, який змішував системні події, стан Heartbeat, черги доставлення, допоміжні засоби fetch/proxy, допоміжні засоби для файлів, типи схвалення та непов’язані утиліти.
  • openclaw/plugin-sdk/config-runtime - широкий barrel сумісності конфігурації, який досі містить застарілі прямі допоміжні засоби завантаження/запису протягом вікна міграції.
  • openclaw/extension-api - міст, який давав Plugin прямий доступ до допоміжних засобів на боці хоста, як-от вбудований runner агента.
  • api.registerEmbeddedExtensionFactory(...) - видалений хук bundled розширення лише для embedded-runner, який міг спостерігати події embedded-runner, такі як tool_result.
Широкі поверхні імпорту тепер застарілі. Вони досі працюють під час виконання, але нові Plugin не повинні їх використовувати, а наявні Plugin мають мігрувати до того, як наступний major-реліз їх видалить. API реєстрації фабрики розширення лише для embedded-runner було видалено; натомість використовуйте middleware для результатів інструментів. OpenClaw не видаляє й не переінтерпретовує задокументовану поведінку Plugin у тій самій зміні, яка вводить заміну. Зміни контракту, що порушують сумісність, мають спершу пройти через адаптер сумісності, діагностику, документацію та вікно застарівання. Це стосується імпортів SDK, полів маніфесту, API налаштування, хуків і поведінки реєстрації під час виконання.
Шар зворотної сумісності буде видалено в майбутньому major-релізі. Plugin, які досі імпортують із цих поверхонь, після цього зламаються. Застарілі реєстрації фабрик вбудованих розширень уже більше не завантажуються.

Чому це змінилося

Старий підхід створював проблеми:
  • Повільний запуск - імпорт одного допоміжного засобу завантажував десятки непов’язаних модулів
  • Циклічні залежності - широкі повторні експорти спрощували створення циклів імпорту
  • Нечітка поверхня API - не було способу визначити, які експорти стабільні, а які внутрішні
Сучасний SDK Plugin це виправляє: кожен шлях імпорту (openclaw/plugin-sdk/\<subpath\>) є малим, самодостатнім модулем із чітким призначенням і задокументованим контрактом. Застарілі зручні шви provider для bundled каналів також видалено. Допоміжні шви з брендингом каналу були приватними скороченнями mono-repo, а не стабільними контрактами Plugin. Натомість використовуйте вузькі generic підшляхи SDK. Усередині bundled робочого простору Plugin тримайте допоміжні засоби, що належать provider, у власному api.ts або runtime-api.ts цього Plugin. Поточні bundled приклади provider:
  • Anthropic тримає допоміжні засоби потоків, специфічні для Claude, у власному шві api.ts / contract-api.ts
  • OpenAI тримає builders provider, допоміжні засоби default-model і builders realtime provider у власному api.ts
  • OpenRouter тримає builder provider і допоміжні засоби onboarding/config у власному api.ts

План міграції Talk і голосу реального часу

Код Talk для голосу реального часу, телефонії, зустрічей і браузера переходить від локального для поверхні обліку ходів до спільного контролера сесії Talk, який експортує openclaw/plugin-sdk/realtime-voice. Новий контролер володіє спільним envelope подій Talk, станом активного ходу, станом захоплення, станом вихідного аудіо, нещодавньою історією подій і відхиленням застарілих ходів. Plugin provider мають і далі володіти realtime-сесіями, специфічними для постачальника; Plugin поверхонь мають і далі володіти нюансами захоплення, відтворення, телефонії та зустрічей. Ця міграція Talk навмисно є чистою зі змінами, що порушують сумісність:
  1. Тримайте спільний контролер/runtime-примітиви в plugin-sdk/realtime-voice.
  2. Переведіть bundled поверхні на спільний контролер: browser relay, managed-room handoff, voice-call realtime, voice-call streaming STT, Google Meet realtime і native push-to-talk.
  3. Замініть старі сімейства RPC Talk на фінальний API talk.session.* і talk.client.*.
  4. Оголосіть один live-канал подій Talk у Gateway hello-ok.features.events: talk.event.
  5. Видаліть старий realtime HTTP endpoint і будь-який шлях перевизначення інструкцій під час запиту.
Новий код не повинен викликати createTalkEventSequencer(...) напряму, якщо тільки він не реалізує низькорівневий adapter або тестову fixture. Віддавайте перевагу спільному контролеру, щоб події в межах ходу не могли бути emitted без id ходу, застарілі виклики turnEnd / turnCancel не могли очистити новіший активний хід, а події життєвого циклу вихідного аудіо лишалися узгодженими в телефонії, зустрічах, browser relay, managed-room handoff і native клієнтах Talk. Цільова форма публічного API:
// 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" });
Сесії WebRTC/provider-websocket, якими володіє браузер, використовують talk.client.create, бо браузер володіє узгодженням provider і медіатранспортом, тоді як Gateway володіє credentials, інструкціями та політикою інструментів. talk.session.* є спільною керованою Gateway поверхнею для gateway-relay realtime, gateway-relay transcription і managed-room native STT/TTS сесій. Застарілі конфігурації, які розміщували realtime selectors поруч із talk.provider / talk.providers, слід виправити за допомогою openclaw doctor --fix; runtime Talk не переінтерпретовує конфігурацію speech/TTS provider як конфігурацію realtime provider. Підтримувані комбінації talk.session.create навмисно невеликі:
РежимТранспортBrainВласникПримітки
realtimegateway-relayagent-consultGatewayПовнодуплексне аудіо provider передається через Gateway; виклики інструментів маршрутизуються через інструмент agent-consult.
transcriptiongateway-relaynoneGatewayЛише streaming STT; callers надсилають вхідне аудіо й отримують події транскрипту.
stt-ttsmanaged-roomagent-consultNative/client roomКімнати в стилі push-to-talk і walkie-talkie, де client володіє захопленням/відтворенням, а Gateway володіє станом ходу.
stt-ttsmanaged-roomdirect-toolsNative/client roomРежим кімнати лише для admin для довірених first-party поверхонь, які виконують дії інструментів Gateway напряму.
Мапа видалених методів:
СтарийНовий
talk.realtime.sessiontalk.client.create
talk.realtime.toolCalltalk.client.toolCall
talk.realtime.relayAudiotalk.session.appendAudio
talk.realtime.relayCanceltalk.session.cancelOutput or 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
Уніфікований контрольний словник також навмисно вузький:
МетодЗастосовується доКонтракт
talk.session.appendAudiorealtime/gateway-relay, transcription/gateway-relayДодати фрагмент аудіо PCM у base64 до сеансу провайдера, що належить тому самому підключенню Gateway.
talk.session.startTurnstt-tts/managed-roomПочати користувацький хід managed-room.
talk.session.endTurnstt-tts/managed-roomЗавершити активний хід після перевірки на застарілий хід.
talk.session.cancelTurnусі сеанси, що належать GatewayСкасувати активну роботу захоплення/провайдера/агента/TTS для ходу.
talk.session.cancelOutputrealtime/gateway-relayЗупинити аудіовихід асистента, не обов’язково завершуючи користувацький хід.
talk.session.submitToolResultrealtime/gateway-relayЗавершити виклик інструмента провайдера, згенерований relay; передайте options.willContinue для проміжного виводу або options.suppressResponse, щоб виконати виклик без ще однієї відповіді асистента.
talk.session.steerсеанси Talk із підтримкою агентаНадіслати усне керування status, steer, cancel або followup до активного вбудованого запуску, визначеного із сеансу Talk.
talk.session.closeусі уніфіковані сеансиЗупинити relay-сеанси або відкликати стан managed-room, а потім забути уніфікований ідентифікатор сеансу.
Не додавайте в core спеціальні випадки для провайдерів або платформ, щоб це працювало. Core володіє семантикою сеансів Talk. Plugin провайдерів володіють налаштуванням сеансів постачальників. Голосові виклики та Google Meet володіють адаптерами телефонії/зустрічей. Браузерні й нативні застосунки володіють UX захоплення/відтворення пристроїв.

Політика сумісності

Для зовнішніх Plugin робота із сумісністю відбувається в такому порядку:
  1. додати новий контракт
  2. зберегти стару поведінку, підключену через адаптер сумісності
  3. видати діагностику або попередження, що називає старий шлях і заміну
  4. покрити обидва шляхи тестами
  5. задокументувати застарівання та шлях міграції
  6. видаляти лише після оголошеного вікна міграції, зазвичай у major-релізі
Мейнтейнери можуть перевірити поточну чергу міграції за допомогою pnpm plugins:boundary-report. Використовуйте pnpm plugins:boundary-report:summary для компактних підрахунків, --owner <id> для одного Plugin або власника сумісності, і pnpm plugins:boundary-report:ci, коли CI-гейт має падати через прострочені записи сумісності, міжвласницькі зарезервовані імпорти SDK або невикористані зарезервовані підшляхи SDK. Звіт групує застарілі записи сумісності за датою видалення, рахує локальні посилання в коді/документації, показує міжвласницькі зарезервовані імпорти SDK і підсумовує приватний міст SDK memory-host, щоб очищення сумісності залишалося явним, а не покладалося на ситуативні пошуки. Зарезервовані підшляхи SDK повинні мати відстежене використання власником; невикористані зарезервовані експорти helper слід видалити з публічного SDK. Якщо поле маніфесту все ще приймається, автори Plugin можуть продовжувати його використовувати, доки документація й діагностика не скажуть інакше. Новий код має віддавати перевагу задокументованій заміні, але наявні Plugin не повинні ламатися під час звичайних minor-релізів.

Як мігрувати

1

Мігруйте helper для завантаження/запису runtime-конфігурації

Вбудовані Plugin мають припинити напряму викликати api.runtime.config.loadConfig() і api.runtime.config.writeConfigFile(...). Віддавайте перевагу конфігурації, яку вже передано в активний шлях виклику. Довготривалі обробники, яким потрібен поточний знімок процесу, можуть використовувати api.runtime.config.current(). Довготривалі інструменти агента мають використовувати ctx.getRuntimeConfig() з контексту інструмента всередині execute, щоб інструмент, створений до запису конфігурації, все одно бачив оновлену runtime-конфігурацію.Записи конфігурації повинні проходити через транзакційні helper і вибирати політику після запису:
await api.runtime.config.mutateConfigFile({
  afterWrite: { mode: "auto" },
  mutate(draft) {
    draft.plugins ??= {};
  },
});
Використовуйте afterWrite: { mode: "restart", reason: "..." }, коли викликач знає, що зміна потребує чистого перезапуску Gateway, і afterWrite: { mode: "none", reason: "..." } лише тоді, коли викликач володіє подальшою дією й навмисно хоче придушити планувальник перезавантаження. Результати мутації містять типізований підсумок followUp для тестів і логування; Gateway залишається відповідальним за застосування або планування перезапуску. loadConfig і writeConfigFile залишаються застарілими helper сумісності для зовнішніх Plugin протягом вікна міграції й один раз попереджають із кодом сумісності runtime-config-load-write. Вбудовані Plugin і runtime-код репозиторію захищені scanner-обмеженнями в pnpm check:deprecated-api-usage і pnpm check:no-runtime-action-load-config: нове production-використання Plugin одразу падає, прямі записи конфігурації падають, методи сервера Gateway повинні використовувати runtime-знімок запиту, runtime-helper надсилання/action/client каналів повинні отримувати конфігурацію зі своєї межі, а довготривалі runtime-модулі мають нуль дозволених ambient-викликів loadConfig().Новий код Plugin також має уникати імпорту широкого compatibility-barrel openclaw/plugin-sdk/config-runtime. Використовуйте вузький підшлях SDK, що відповідає завданню:
ПотребаІмпорт
Типи конфігурації, як-от OpenClawConfigopenclaw/plugin-sdk/config-contracts
Перевірки вже завантаженої конфігурації та пошук конфігурації plugin-entryopenclaw/plugin-sdk/plugin-config-runtime
Читання поточного runtime-знімкаopenclaw/plugin-sdk/runtime-config-snapshot
Записи конфігураціїopenclaw/plugin-sdk/config-mutation
Helper сховища сеансівopenclaw/plugin-sdk/session-store-runtime
Конфігурація таблиць Markdownopenclaw/plugin-sdk/markdown-table-runtime
Runtime-helper групової політикиopenclaw/plugin-sdk/runtime-group-policy
Визначення секретного вводуopenclaw/plugin-sdk/secret-input-runtime
Перевизначення моделі/сеансуopenclaw/plugin-sdk/model-session-runtime
Вбудовані Plugin та їхні тести захищені scanner від широкого barrel, щоб імпорти й моки залишалися локальними до потрібної їм поведінки. Широкий barrel усе ще існує для зовнішньої сумісності, але новий код не повинен від нього залежати.
2

Мігруйте вбудовані розширення результатів інструментів до middleware

Вбудовані Plugin повинні замінити обробники результатів інструментів api.registerEmbeddedExtensionFactory(...), призначені лише для embedded-runner, на runtime-нейтральне middleware.
// OpenClaw and Codex runtime dynamic tools
api.registerAgentToolResultMiddleware(async (event) => {
  return compactToolResult(event);
}, {
  runtimes: ["openclaw", "codex"],
});
Одночасно оновіть маніфест Plugin:
{
  "contracts": {
    "agentToolResultMiddleware": ["openclaw", "codex"]
  }
}
Установлені Plugin також можуть реєструвати middleware результатів інструментів, коли вони явно ввімкнені й оголошують кожен цільовий runtime у contracts.agentToolResultMiddleware. Неоголошені реєстрації middleware встановлених Plugin відхиляються.
3

Мігруйте approval-native обробники до фактів capability

Channel Plugin із підтримкою approval тепер показують нативну поведінку approval через approvalCapability.nativeRuntime плюс спільний реєстр runtime-context.Ключові зміни:
  • Замініть approvalCapability.handler.loadRuntime(...) на approvalCapability.nativeRuntime
  • Перенесіть специфічні для approval auth/delivery зі старої прив’язки plugin.auth / plugin.approvals на approvalCapability
  • ChannelPlugin.approvals видалено з публічного контракту channel-plugin; перенесіть поля delivery/native/render на approvalCapability
  • plugin.auth залишається лише для потоків входу/виходу каналу; approval auth hooks там більше не читаються core
  • Реєструйте runtime-об’єкти, що належать каналу, як-от клієнти, токени або Bolt apps, через openclaw/plugin-sdk/channel-runtime-context
  • Не надсилайте повідомлення про reroute, що належать Plugin, із native approval handlers; core тепер володіє повідомленнями routed-elsewhere на основі фактичних результатів доставки
  • Передаючи channelRuntime у createChannelManager(...), надайте справжню поверхню createPluginRuntime().channel. Часткові stubs відхиляються.
Див. /plugins/sdk-channel-plugins для поточної структури approval capability.
4

Перевірте fallback-поведінку Windows wrapper

Якщо ваш Plugin використовує openclaw/plugin-sdk/windows-spawn, нерозв’язані Windows .cmd/.bat wrappers тепер fail closed, якщо ви явно не передасте allowShellFallback: true.
// 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,
});
Якщо ваш викликач не покладається навмисно на shell fallback, не встановлюйте allowShellFallback і натомість обробіть викинуту помилку.
5

Знайдіть застарілі імпорти

Знайдіть у своєму Plugin імпорти з будь-якої із застарілих поверхонь:
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

Замініть на сфокусовані імпорти

Кожен експорт зі старої поверхні відповідає конкретному сучасному шляху імпорту:
// 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-side helper використовуйте інжектований runtime Plugin замість прямого імпорту:
// 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 });
Той самий шаблон застосовується до інших застарілих допоміжних bridge-функцій:
Старий імпортСучасний еквівалент
resolveAgentDirapi.runtime.agent.resolveAgentDir
resolveAgentWorkspaceDirapi.runtime.agent.resolveAgentWorkspaceDir
resolveAgentIdentityapi.runtime.agent.resolveAgentIdentity
resolveThinkingDefaultapi.runtime.agent.resolveThinkingDefault
resolveAgentTimeoutMsapi.runtime.agent.resolveAgentTimeoutMs
ensureAgentWorkspaceapi.runtime.agent.ensureAgentWorkspace
допоміжні функції сховища сесійapi.runtime.agent.session.*
7

Replace broad infra-runtime imports

openclaw/plugin-sdk/infra-runtime досі існує для зовнішньої сумісності, але новий код має імпортувати зосереджену допоміжну поверхню, яка йому фактично потрібна:
ПотребаІмпорт
Допоміжні функції черги системних подійopenclaw/plugin-sdk/system-event-runtime
Допоміжні функції пробудження, подій і видимості Heartbeatopenclaw/plugin-sdk/heartbeat-runtime
Спорожнення черги очікуваної доставкиopenclaw/plugin-sdk/delivery-queue-runtime
Телеметрія активності каналуopenclaw/plugin-sdk/channel-activity-runtime
Кеші дедуплікації в пам’яті та з постійним бекендомopenclaw/plugin-sdk/dedupe-runtime
Допоміжні функції безпечних локальних шляхів файлів/медіаopenclaw/plugin-sdk/file-access-runtime
Fetch з урахуванням диспетчераopenclaw/plugin-sdk/runtime-fetch
Допоміжні функції проксі та захищеного fetchopenclaw/plugin-sdk/fetch-runtime
Типи політики диспетчера SSRFopenclaw/plugin-sdk/ssrf-dispatcher
Типи запиту/вирішення схваленняopenclaw/plugin-sdk/approval-runtime
Допоміжні функції payload відповіді на схвалення та командopenclaw/plugin-sdk/approval-reply-runtime
Допоміжні функції форматування помилокopenclaw/plugin-sdk/error-runtime
Очікування готовності транспортуopenclaw/plugin-sdk/transport-ready-runtime
Допоміжні функції захищених токенівopenclaw/plugin-sdk/secure-random-runtime
Обмежена конкурентність асинхронних завданьopenclaw/plugin-sdk/concurrency-runtime
Числове приведенняopenclaw/plugin-sdk/number-runtime
Локальний для процесу асинхронний lockopenclaw/plugin-sdk/async-lock-runtime
Файлові locksopenclaw/plugin-sdk/file-lock
Вбудовані плагіни захищені сканером від infra-runtime, тому код репозиторію не може повернутися до широкого barrel-імпорту.
8

Migrate channel route helpers

Новий код маршрутів каналів має використовувати openclaw/plugin-sdk/channel-route. Старі назви route-key і comparable-target залишаються як псевдоніми сумісності протягом вікна міграції, але нові плагіни мають використовувати назви маршрутів, які безпосередньо описують поведінку:
Старий helperСучасний helper
channelRouteIdentityKey(...)channelRouteDedupeKey(...)
channelRouteKey(...)channelRouteCompactKey(...)
ComparableChannelTargetChannelRouteParsedTarget
comparableChannelTargetsMatch(...)channelRouteTargetsMatchExact(...)
comparableChannelTargetsShareRoute(...)channelRouteTargetsShareConversation(...)
Сучасні допоміжні функції маршрутизації узгоджено нормалізують { channel, to, accountId, threadId } для нативних схвалень, приглушення відповідей, вхідної дедуплікації, доставки Cron і маршрутизації сесій.Не додавайте нові використання ChannelMessagingAdapter.parseExplicitTarget або parser-backed допоміжних функцій завантажених маршрутів (parseExplicitTargetForLoadedChannel чи resolveRouteTargetForLoadedChannel) або resolveChannelRouteTargetWithParser(...) з plugin-sdk/channel-route. Ці hooks застаріли й залишаються лише для старіших плагінів протягом вікна міграції. Нові канальні плагіни мають використовувати messaging.targetResolver.resolveTarget(...) для нормалізації target id і fallback у разі directory-miss, messaging.inferTargetChatType(...), коли core потребує раннього типу peer, і messaging.resolveOutboundSessionRoute(...) для provider-native сесії та ідентичності thread.
9

Build and test

pnpm build
pnpm test -- my-plugin/

Довідник шляхів імпорту

Шлях імпортуПризначенняКлючові експорти
plugin-sdk/plugin-entryКанонічний допоміжний засіб для точки входу PlugindefinePluginEntry
plugin-sdk/coreЗастарілий узагальнений реекспорт для визначень/будівників точок входу каналівdefineChannelPluginEntry, createChatChannelPlugin
plugin-sdk/config-schemaЕкспорт кореневої схеми конфігураціїOpenClawSchema
plugin-sdk/provider-entryДопоміжний засіб точки входу для одного провайдераdefineSingleProviderPluginEntry
plugin-sdk/channel-coreСфокусовані визначення та будівники точок входу каналівdefineChannelPluginEntry, defineSetupPluginEntry, createChatChannelPlugin, createChannelPluginBase
plugin-sdk/setupСпільні допоміжні засоби майстра налаштуванняПерекладач налаштування, підказки списку дозволених, будівники стану налаштування
plugin-sdk/setup-runtimeДопоміжні засоби середовища виконання під час налаштуванняcreateSetupTranslator, безпечні для імпорту адаптери патчів налаштування, допоміжні засоби нотаток пошуку, promptResolvedAllowFrom, splitSetupEntries, делеговані проксі налаштування
plugin-sdk/setup-adapter-runtimeЗастарілий псевдонім адаптера налаштуванняВикористовуйте plugin-sdk/setup-runtime
plugin-sdk/setup-toolsДопоміжні засоби інструментів налаштуванняformatCliCommand, detectBinary, extractArchive, resolveBrewExecutable, formatDocsLink, CONFIG_DIR
plugin-sdk/account-coreДопоміжні засоби для кількох облікових записівДопоміжні засоби списку облікових записів/конфігурації/шлюзу дій
plugin-sdk/account-idДопоміжні засоби ідентифікатора облікового записуDEFAULT_ACCOUNT_ID, нормалізація ідентифікатора облікового запису
plugin-sdk/account-resolutionДопоміжні засоби пошуку облікового записуДопоміжні засоби пошуку облікового запису та резервного типового значення
plugin-sdk/account-helpersВузькі допоміжні засоби облікового записуДопоміжні засоби списку облікових записів/дій облікового запису
plugin-sdk/channel-setupАдаптери майстра налаштуванняcreateOptionalChannelSetupSurface, createOptionalChannelSetupAdapter, createOptionalChannelSetupWizard, а також DEFAULT_ACCOUNT_ID, createTopLevelChannelDmPolicy, setSetupChannelEnabled, splitSetupEntries
plugin-sdk/channel-pairingПримітиви сполучення DMcreateChannelPairingController
plugin-sdk/channel-reply-pipelineЗв’язування префікса відповіді, індикації набору та доставки джерелаcreateChannelReplyPipeline, resolveChannelSourceReplyDeliveryMode
plugin-sdk/channel-config-helpersФабрики адаптерів конфігурації та допоміжні засоби доступу DMcreateHybridChannelConfigAdapter, resolveChannelDmAccess, resolveChannelDmAllowFrom, resolveChannelDmPolicy, normalizeChannelDmPolicy, normalizeLegacyDmAliases
plugin-sdk/channel-config-schemaБудівники схем конфігураціїЛише спільні примітиви схеми конфігурації каналів і універсальний будівник
plugin-sdk/bundled-channel-config-schemaВбудовані схеми конфігураціїЛише вбудовані Plugin-и, які підтримує OpenClaw; нові Plugin-и мають визначати локальні схеми Plugin
plugin-sdk/channel-config-schema-legacyЗастарілі вбудовані схеми конфігураціїЛише псевдонім сумісності; використовуйте plugin-sdk/bundled-channel-config-schema для підтримуваних вбудованих Plugin-ів
plugin-sdk/telegram-command-configДопоміжні засоби конфігурації команд TelegramНормалізація назв команд, обрізання описів, перевірка дублікатів/конфліктів
plugin-sdk/channel-policyВизначення політики груп/DMresolveChannelGroupRequireMention
plugin-sdk/channel-lifecycleЗастарілий фасад сумісностіВикористовуйте plugin-sdk/channel-outbound
plugin-sdk/inbound-envelopeДопоміжні засоби вхідного конвертаСпільні допоміжні засоби маршруту та будівника конверта
plugin-sdk/channel-inboundДопоміжні засоби приймання вхідних данихПобудова контексту, форматування, корені, виконавці, підготовлена диспетчеризація відповідей і предикати диспетчеризації
plugin-sdk/messaging-targetsЗастарілий шлях імпорту розбору цілейВикористовуйте plugin-sdk/channel-targets для універсальних допоміжних засобів розбору цілей, plugin-sdk/channel-route для порівняння маршрутів і належні Plugin messaging.targetResolver / messaging.resolveOutboundSessionRoute для визначення цілей, специфічного для провайдера
plugin-sdk/outbound-mediaДопоміжні засоби вихідних медіаСпільне завантаження вихідних медіа
plugin-sdk/outbound-send-depsЗастарілий фасад сумісностіВикористовуйте plugin-sdk/channel-outbound
plugin-sdk/channel-outboundДопоміжні засоби життєвого циклу вихідних повідомленьАдаптери повідомлень, квитанції, допоміжні засоби надійного надсилання, допоміжні засоби live preview/потокового передавання, параметри відповіді, допоміжні засоби життєвого циклу, вихідна ідентичність і планування корисного навантаження
plugin-sdk/channel-streamingЗастарілий фасад сумісностіВикористовуйте plugin-sdk/channel-outbound
plugin-sdk/outbound-runtimeЗастарілий фасад сумісностіВикористовуйте plugin-sdk/channel-outbound
plugin-sdk/thread-bindings-runtimeДопоміжні засоби прив’язування потоківЖиттєвий цикл прив’язування потоків і допоміжні засоби адаптерів
plugin-sdk/agent-media-payloadЗастарілі допоміжні засоби корисного навантаження медіаБудівник корисного навантаження медіа агента для застарілих компонувань полів
plugin-sdk/channel-runtimeЗастаріла прокладка сумісностіЛише застарілі утиліти середовища виконання каналу
plugin-sdk/channel-send-resultТипи результатів надсиланняТипи результатів відповіді
plugin-sdk/runtime-storeПостійне сховище PlugincreatePluginRuntimeStore
plugin-sdk/runtimeШирокі допоміжні засоби середовища виконанняДопоміжні засоби середовища виконання/журналювання/резервного копіювання/встановлення Plugin
plugin-sdk/runtime-envВузькі допоміжні засоби середовища виконанняДопоміжні засоби журналера/середовища виконання, тайм-ауту, повторних спроб і backoff
plugin-sdk/plugin-runtimeСпільні допоміжні засоби середовища виконання PluginДопоміжні засоби команд/хуків/http/інтерактивності Plugin
plugin-sdk/hook-runtimeДопоміжні засоби конвеєра хуківСпільні допоміжні засоби конвеєра webhook/внутрішніх хуків
plugin-sdk/lazy-runtimeДопоміжні засоби ледачого середовища виконанняcreateLazyRuntimeModule, createLazyRuntimeMethod, createLazyRuntimeMethodBinder, createLazyRuntimeNamedExport, createLazyRuntimeSurface
plugin-sdk/process-runtimeДопоміжні засоби процесівСпільні допоміжні засоби exec
plugin-sdk/cli-runtimeДопоміжні засоби середовища виконання CLIФорматування команд, очікування, допоміжні засоби версій
plugin-sdk/gateway-runtimeДопоміжні засоби GatewayКлієнт Gateway, допоміжний засіб запуску з готовим циклом подій, визначення рекламованого хоста LAN і допоміжні засоби патчів стану каналу
plugin-sdk/config-runtimeЗастаріла прокладка сумісності конфігураціїВіддавайте перевагу config-contracts, plugin-config-runtime, runtime-config-snapshot і config-mutation
plugin-sdk/telegram-command-configДопоміжні засоби команд TelegramРезервно-стабільні допоміжні засоби перевірки команд Telegram, коли поверхня контракту вбудованого Telegram недоступна
plugin-sdk/approval-runtimeДопоміжні засоби підказок затвердженняКорисне навантаження затвердження exec/Plugin, допоміжні засоби можливостей/профілів затвердження, нативна маршрутизація/середовище виконання затвердження та форматування структурованого шляху відображення затвердження
plugin-sdk/approval-auth-runtimeДопоміжні засоби автентифікації затвердженняВизначення затверджувача, автентифікація дій у тому самому чаті
plugin-sdk/approval-client-runtimeДопоміжні засоби клієнта затвердженняДопоміжні засоби нативного профілю/фільтра затвердження exec
plugin-sdk/approval-delivery-runtimeДопоміжні засоби доставки затвердженняНативні адаптери можливостей/доставки затвердження
plugin-sdk/approval-gateway-runtimeДопоміжні засоби Gateway затвердженняСпільний допоміжний засіб визначення Gateway затвердження
plugin-sdk/approval-handler-adapter-runtimeДопоміжні засоби адаптера затвердженняЛегкі допоміжні засоби завантаження нативного адаптера затвердження для гарячих точок входу каналів
plugin-sdk/approval-handler-runtimeДопоміжні засоби обробника затвердженняШирші допоміжні засоби середовища виконання обробника затвердження; віддавайте перевагу вужчим межам адаптера/Gateway, коли їх достатньо
plugin-sdk/approval-native-runtimeДопоміжні засоби цілей затвердженняНативні допоміжні засоби прив’язування цілі/облікового запису затвердження
plugin-sdk/approval-reply-runtimeДопоміжні засоби відповіді затвердженняДопоміжні засоби корисного навантаження відповіді затвердження exec/Plugin
plugin-sdk/channel-runtime-contextДопоміжні засоби контексту середовища виконання каналуУніверсальні допоміжні засоби реєстрації/отримання/відстеження контексту середовища виконання каналу
plugin-sdk/security-runtimeДопоміжні засоби безпекиСпільні допоміжні засоби довіри, шлюзування DM, обмежених коренем файлів/шляхів, зовнішнього вмісту та збирання секретів
plugin-sdk/ssrf-policyДопоміжні засоби політики SSRFДопоміжні засоби списку дозволених хостів і політики приватної мережі
plugin-sdk/ssrf-runtimeДопоміжні засоби середовища виконання SSRFЗакріплений диспетчер, захищений fetch, допоміжні засоби політики SSRF
plugin-sdk/system-event-runtimeДопоміжні засоби системних подійenqueueSystemEvent, peekSystemEventEntries
plugin-sdk/heartbeat-runtimeДопоміжні засоби HeartbeatДопоміжні засоби пробудження, подій і видимості Heartbeat
plugin-sdk/delivery-queue-runtimeДопоміжні засоби черги доставкиdrainPendingDeliveries
plugin-sdk/channel-activity-runtimeДопоміжні засоби активності каналуrecordChannelActivity
plugin-sdk/dedupe-runtimeДопоміжні засоби дедуплікаціїКеші дедуплікації в пам’яті та з підтримкою постійного сховища
plugin-sdk/file-access-runtimeДопоміжні засоби доступу до файлівДопоміжні засоби безпечних локальних шляхів файлів/медіа
plugin-sdk/transport-ready-runtimeДопоміжні засоби готовності транспортуwaitForTransportReady
plugin-sdk/exec-approvals-runtimeДопоміжні засоби політики затвердження execloadExecApprovals, resolveExecApprovalsFromFile, ExecApprovalsFile
plugin-sdk/collection-runtimeДопоміжні засоби обмеженого кешуpruneMapToMaxSize
plugin-sdk/diagnostic-runtimeДопоміжні засоби шлюзування діагностикиisDiagnosticFlagEnabled, isDiagnosticsEnabled
plugin-sdk/error-runtimeДопоміжні засоби форматування помилокformatUncaughtError, isApprovalNotFoundError, допоміжні засоби графа помилок
plugin-sdk/fetch-runtimeОбгорнуті допоміжні засоби fetch/проксіresolveFetch, допоміжні засоби проксі, допоміжні засоби параметрів EnvHttpProxyAgent
plugin-sdk/host-runtimeДопоміжні засоби нормалізації хостаnormalizeHostname, normalizeScpRemoteHost
plugin-sdk/retry-runtimeДопоміжні засоби повторних спробRetryConfig, retryAsync, виконавці політик
plugin-sdk/allow-fromФорматування списку дозволених і зіставлення введенняformatAllowFromLowercase, mapAllowlistResolutionInputs
plugin-sdk/command-authШлюзування команд і допоміжні засоби поверхні командresolveControlCommandGate, допоміжні засоби авторизації відправника, допоміжні засоби реєстру команд, зокрема форматування динамічного меню аргументів
plugin-sdk/command-statusРендерери стану/довідки командbuildCommandsMessage, buildCommandsMessagePaginated, buildHelpMessage
plugin-sdk/secret-inputРозбір введення секретівДопоміжні засоби введення секретів
plugin-sdk/webhook-ingressДопоміжні засоби запитів WebhookУтиліти цілей Webhook
plugin-sdk/webhook-request-guardsДопоміжні засоби захисту тіла WebhookДопоміжні засоби читання/обмеження тіла запиту
plugin-sdk/reply-runtimeСпільне середовище виконання відповідейВхідна диспетчеризація, heartbeat, планувальник відповідей, розбиття на фрагменти
plugin-sdk/reply-dispatch-runtimeВузькі допоміжні засоби диспетчеризації відповідейФіналізація, диспетчеризація провайдера та допоміжні засоби міток розмов
plugin-sdk/reply-historyДопоміжні засоби історії відповідейcreateChannelHistoryWindow; застарілі експорти сумісності допоміжних засобів map, як-от buildPendingHistoryContextFromMap, recordPendingHistoryEntry і clearHistoryEntriesIfEnabled
plugin-sdk/reply-referenceПланування посилань відповідіcreateReplyReferencePlanner
plugin-sdk/reply-chunkingДопоміжні засоби фрагментів відповідіДопоміжні засоби фрагментації тексту/markdown
plugin-sdk/session-store-runtimeДопоміжні засоби сховища сеансівДопоміжні засоби шляху сховища та updated-at
plugin-sdk/state-pathsДопоміжні засоби шляхів стануДопоміжні засоби каталогів стану та OAuth
plugin-sdk/routingДопоміжні засоби маршрутизації/session-keyresolveAgentRoute, buildAgentSessionKey, resolveDefaultAgentBoundAccountId, допоміжні засоби нормалізації session-key
plugin-sdk/status-helpersДопоміжні засоби статусу каналуПобудовники зведень статусу каналу/облікового запису, типові значення runtime-state, допоміжні засоби метаданих проблем
plugin-sdk/target-resolver-runtimeДопоміжні засоби розпізнавача ціліСпільні допоміжні засоби розпізнавача цілі
plugin-sdk/string-normalization-runtimeДопоміжні засоби нормалізації рядківДопоміжні засоби нормалізації slug/рядків
plugin-sdk/request-urlДопоміжні засоби URL запитуВитягують рядкові URL з подібних до запиту вхідних даних
plugin-sdk/run-commandДопоміжні засоби команд із тайм-аутомЗапускач команд із тайм-аутом і нормалізованими stdout/stderr
plugin-sdk/param-readersЗчитувачі параметрівСпільні зчитувачі параметрів інструментів/CLI
plugin-sdk/tool-payloadВитяг payload інструментаВитягує нормалізовані payload з об’єктів результатів інструмента
plugin-sdk/tool-sendВитяг надсилання інструментаВитягує канонічні поля цілі надсилання з аргументів інструмента
plugin-sdk/temp-pathДопоміжні засоби тимчасових шляхівСпільні допоміжні засоби шляхів тимчасового завантаження
plugin-sdk/logging-coreДопоміжні засоби журналюванняРеєстратор підсистеми та допоміжні засоби редагування чутливих даних
plugin-sdk/markdown-table-runtimeДопоміжні засоби Markdown-таблицьДопоміжні засоби режиму Markdown-таблиць
plugin-sdk/reply-payloadТипи відповідей повідомленьТипи payload відповіді
plugin-sdk/provider-setupДобірні допоміжні засоби налаштування локального/self-hosted провайдераДопоміжні засоби виявлення/конфігурації self-hosted провайдера
plugin-sdk/self-hosted-provider-setupСфокусовані допоміжні засоби налаштування OpenAI-сумісного self-hosted провайдераТі самі допоміжні засоби виявлення/конфігурації self-hosted провайдера
plugin-sdk/provider-auth-runtimeДопоміжні засоби runtime-автентифікації провайдераДопоміжні засоби розв’язання API-ключа під час виконання
plugin-sdk/provider-auth-api-keyДопоміжні засоби налаштування API-ключа провайдераДопоміжні засоби онбордингу/API-ключа та запису профілю
plugin-sdk/provider-auth-resultДопоміжні засоби auth-result провайдераСтандартний побудовник auth-result OAuth
plugin-sdk/provider-selection-runtimeДопоміжні засоби вибору провайдераВибір налаштованого або автоматичного провайдера та злиття сирої конфігурації провайдера
plugin-sdk/provider-env-varsДопоміжні засоби env-var провайдераДопоміжні засоби пошуку env-var автентифікації провайдера
plugin-sdk/provider-model-sharedСпільні допоміжні засоби моделі/відтворення провайдераProviderReplayFamily, buildProviderReplayFamilyHooks, normalizeModelCompat, спільні побудовники replay-policy, допоміжні засоби provider-endpoint і допоміжні засоби нормалізації model-id
plugin-sdk/provider-catalog-sharedСпільні допоміжні засоби каталогу провайдерівfindCatalogTemplate, buildSingleProviderApiKeyCatalog, buildManifestModelProviderConfig, supportsNativeStreamingUsageCompat, applyProviderNativeStreamingUsageCompat
plugin-sdk/provider-onboardПатчі онбордингу провайдераДопоміжні засоби конфігурації онбордингу
plugin-sdk/provider-httpДопоміжні засоби HTTP провайдераЗагальні допоміжні засоби HTTP/endpoint capability провайдера, зокрема допоміжні засоби multipart-форми для транскрипції аудіо
plugin-sdk/provider-web-fetchДопоміжні засоби web-fetch провайдераДопоміжні засоби реєстрації/кешу провайдера web-fetch
plugin-sdk/provider-web-search-config-contractДопоміжні засоби конфігурації web-search провайдераВузькі допоміжні засоби конфігурації/облікових даних web-search для провайдерів, яким не потрібне підключення plugin-enable
plugin-sdk/provider-web-search-contractДопоміжні засоби контракту web-search провайдераВузькі допоміжні засоби контракту конфігурації/облікових даних web-search, як-от createWebSearchProviderContractFields, enablePluginInConfig, resolveProviderWebSearchPluginConfig і scoped setter/getter облікових даних
plugin-sdk/provider-web-searchДопоміжні засоби web-search провайдераДопоміжні засоби реєстрації/кешу/runtime провайдера web-search
plugin-sdk/provider-toolsДопоміжні засоби сумісності інструментів/схем провайдераProviderToolCompatFamily, buildProviderToolCompatFamilyHooks і очищення схеми DeepSeek/Gemini/OpenAI + діагностика
plugin-sdk/provider-usageДопоміжні засоби використання провайдераfetchClaudeUsage, fetchGeminiUsage, fetchGithubCopilotUsage та інші допоміжні засоби використання провайдера
plugin-sdk/provider-streamДопоміжні засоби обгорток потоків провайдераProviderStreamFamily, buildProviderStreamFamilyHooks, composeProviderStreamWrappers, типи обгорток потоків і спільні допоміжні засоби обгорток Anthropic/Bedrock/DeepSeek V4/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot
plugin-sdk/provider-transport-runtimeДопоміжні засоби транспорту провайдераДопоміжні засоби нативного транспорту провайдера, як-от захищений fetch, витяг тексту tool-result, перетворення транспортних повідомлень і записувані потоки транспортних подій
plugin-sdk/keyed-async-queueУпорядкована асинхронна чергаKeyedAsyncQueue
plugin-sdk/media-runtimeСпільні допоміжні засоби медіаДопоміжні засоби отримання/перетворення/збереження медіа, визначення розмірів відео через ffprobe і побудовники медіа-payload
plugin-sdk/media-generation-runtimeСпільні допоміжні засоби генерації медіаСпільні допоміжні засоби failover, вибір кандидатів і повідомлення про відсутню модель для генерації зображень/відео/музики
plugin-sdk/media-understandingДопоміжні засоби розуміння медіаТипи провайдера розуміння медіа плюс експортовані для провайдерів допоміжні засоби зображень/аудіо
plugin-sdk/text-runtimeЗастарілий широкий експорт сумісності текстуВикористовуйте string-coerce-runtime, text-chunking, text-utility-runtime і logging-core
plugin-sdk/text-chunkingДопоміжні засоби поділу тексту на фрагментиДопоміжний засіб поділу вихідного тексту на фрагменти
plugin-sdk/speechДопоміжні засоби мовленняТипи провайдера мовлення плюс експортовані для провайдерів допоміжні засоби директив, реєстру, валідації та OpenAI-сумісний побудовник TTS
plugin-sdk/speech-coreСпільне ядро мовленняТипи провайдера мовлення, реєстр, директиви, нормалізація
plugin-sdk/realtime-transcriptionДопоміжні засоби транскрипції в реальному часіТипи провайдера, допоміжні засоби реєстру та спільний допоміжний засіб WebSocket-сесії
plugin-sdk/realtime-voiceДопоміжні засоби голосу в реальному часіТипи провайдера, допоміжні засоби реєстру/розв’язання, допоміжні засоби мостової сесії, спільні черги agent talk-back, голосове керування active-run, стан transcript/event, приглушення відлуння, зіставлення consult-питань, координація forced-consult, відстеження turn-context, відстеження активності виводу та швидкі допоміжні засоби context consult
plugin-sdk/image-generationДопоміжні засоби генерації зображеньТипи провайдера генерації зображень плюс допоміжні засоби image asset/data URL і OpenAI-сумісний побудовник провайдера зображень
plugin-sdk/image-generation-coreСпільне ядро генерації зображеньТипи генерації зображень, failover, автентифікація та допоміжні засоби реєстру
plugin-sdk/music-generationДопоміжні засоби генерації музикиТипи провайдера/запиту/результату генерації музики
plugin-sdk/music-generation-coreСпільне ядро генерації музикиТипи генерації музики, допоміжні засоби failover, пошук провайдера та розбір model-ref
plugin-sdk/video-generationДопоміжні засоби генерації відеоТипи провайдера/запиту/результату генерації відео
plugin-sdk/video-generation-coreСпільне ядро генерації відеоТипи генерації відео, допоміжні засоби failover, пошук провайдера та розбір model-ref
plugin-sdk/interactive-runtimeДопоміжні засоби інтерактивної відповідіНормалізація/скорочення payload інтерактивної відповіді
plugin-sdk/channel-config-primitivesПримітиви конфігурації каналуВузькі примітиви config-schema каналу
plugin-sdk/channel-config-writesДопоміжні засоби запису конфігурації каналуДопоміжні засоби авторизації запису конфігурації каналу
plugin-sdk/channel-plugin-commonСпільна прелюдія каналуСпільні експорти прелюдії Plugin каналу
plugin-sdk/channel-statusДопоміжні засоби статусу каналуСпільні допоміжні засоби snapshot/summary статусу каналу
plugin-sdk/allowlist-config-editДопоміжні засоби конфігурації списку дозволенихДопоміжні засоби редагування/читання конфігурації списку дозволених
plugin-sdk/group-accessДопоміжні засоби групового доступуСпільні допоміжні засоби рішень щодо групового доступу
plugin-sdk/direct-dm, plugin-sdk/direct-dm-accessЗастарілі фасади сумісностіВикористовуйте plugin-sdk/channel-inbound
plugin-sdk/direct-dm-guard-policyДопоміжні засоби захисту Direct-DMВузькі допоміжні засоби політики докриптографічного захисту
plugin-sdk/extension-sharedСпільні допоміжні засоби розширенняПримітиви passive-channel/status і допоміжні примітиви ambient proxy
plugin-sdk/webhook-targetsДопоміжні засоби цілей WebhookРеєстр цілей Webhook і допоміжні засоби встановлення маршрутів
plugin-sdk/webhook-pathЗастарілий псевдонім шляху WebhookВикористовуйте plugin-sdk/webhook-ingress
plugin-sdk/web-mediaСпільні допоміжні засоби web-медіаДопоміжні засоби завантаження віддалених/локальних медіа
plugin-sdk/zodЗастарілий повторний експорт сумісності ZodІмпортуйте zod з zod напряму
plugin-sdk/memory-coreДопоміжні засоби bundled memory-coreПоверхня допоміжних засобів менеджера пам’яті/конфігурації/файлів/CLI
plugin-sdk/memory-core-engine-runtimeRuntime-фасад рушія пам’ятіRuntime-фасад індексу/пошуку пам’яті
plugin-sdk/memory-core-host-embedding-registryРеєстр embedding пам’ятіЛегкі допоміжні засоби реєстру провайдерів embedding пам’яті
plugin-sdk/memory-core-host-engine-foundationFoundation-рушій хоста пам’ятіЕкспорти foundation-рушія хоста пам’яті
plugin-sdk/memory-core-host-engine-embeddingsРушій embedding хоста пам’ятіКонтракти embedding пам’яті, доступ до реєстру, локальний провайдер і загальні допоміжні засоби batch/remote; конкретні віддалені провайдери живуть у своїх Plugins-власниках
plugin-sdk/memory-core-host-engine-qmdQMD-рушій хоста пам’ятіЕкспорти QMD-рушія хоста пам’яті
plugin-sdk/memory-core-host-engine-storageРушій сховища хоста пам’ятіЕкспорти рушія сховища хоста пам’яті
plugin-sdk/memory-core-host-multimodalМультимодальні допоміжні засоби хоста пам’ятіМультимодальні допоміжні засоби хоста пам’яті
plugin-sdk/memory-core-host-queryДопоміжні засоби запитів хоста пам’ятіДопоміжні засоби запитів хоста пам’яті
plugin-sdk/memory-core-host-secretДопоміжні засоби secret хоста пам’ятіДопоміжні засоби secret хоста пам’яті
plugin-sdk/memory-core-host-eventsЗастарілий псевдонім подій пам’ятіВикористовуйте plugin-sdk/memory-host-events
plugin-sdk/memory-core-host-statusДопоміжні засоби статусу хоста пам’ятіДопоміжні засоби статусу хоста пам’яті
plugin-sdk/memory-core-host-runtime-cliCLI runtime хоста пам’ятіДопоміжні засоби CLI runtime хоста пам’яті
plugin-sdk/memory-core-host-runtime-coreCore runtime хоста пам’ятіДопоміжні засоби core runtime хоста пам’яті
plugin-sdk/memory-core-host-runtime-filesДопоміжні засоби файлів/runtime хоста пам’ятіДопоміжні засоби файлів/runtime хоста пам’яті
plugin-sdk/memory-host-coreПсевдонім core runtime хоста пам’ятіVendor-neutral псевдонім для допоміжних засобів core runtime хоста пам’яті
plugin-sdk/memory-host-eventsПсевдонім журналу подій хоста пам’ятіVendor-neutral псевдонім для допоміжних засобів журналу подій хоста пам’яті
plugin-sdk/memory-host-filesЗастарілий псевдонім файлів/runtime пам’ятіВикористовуйте plugin-sdk/memory-core-host-runtime-files
plugin-sdk/memory-host-markdownДопоміжні засоби керованого MarkdownСпільні допоміжні засоби managed-markdown для суміжних із пам’яттю Plugins
plugin-sdk/memory-host-searchФасад пошуку Active MemoryЛінивий runtime-фасад search-manager Active Memory
plugin-sdk/memory-host-statusЗастарілий псевдонім статусу хоста пам’ятіВикористовуйте plugin-sdk/memory-core-host-status
plugin-sdk/testingТестові утилітиЛокальний для репозиторію застарілий barrel сумісності; використовуйте сфокусовані локальні для репозиторію тестові підшляхи, як-от plugin-sdk/plugin-test-runtime, plugin-sdk/channel-test-helpers, plugin-sdk/channel-target-testing, plugin-sdk/test-env і plugin-sdk/test-fixtures
Ця таблиця навмисно є спільною підмножиною міграції, а не повною поверхнею SDK. Інвентар точок входу компілятора міститься в scripts/lib/plugin-sdk-entrypoints.json; експорти пакета генеруються з публічної підмножини. Зарезервовані допоміжні шви bundled-плагінів вилучено з мапи експортів публічного SDK, за винятком явно задокументованих фасадів сумісності, як-от застарілої прокладки plugin-sdk/discord, збереженої для опублікованого пакета @openclaw/discord@2026.3.13. Допоміжні засоби, специфічні для власника, містяться всередині пакета плагіна-власника; спільна поведінка хоста має проходити через загальні контракти SDK, такі як plugin-sdk/gateway-runtime, plugin-sdk/security-runtime і plugin-sdk/plugin-config-runtime. Використовуйте найвужчий імпорт, який відповідає завданню. Якщо не можете знайти експорт, перевірте джерело в src/plugin-sdk/ або запитайте супровідників, який загальний контракт має ним володіти.

Активні застаріння

Вужчі застаріння, що застосовуються в усьому SDK плагінів, контракті провайдера, runtime-поверхні та маніфесті. Кожне з них досі працює сьогодні, але буде вилучене в майбутньому мажорному випуску. Запис під кожним елементом зіставляє старий API з його канонічною заміною.
Старе (openclaw/plugin-sdk/command-auth): buildCommandsMessage, buildCommandsMessagePaginated, buildHelpMessage.Нове (openclaw/plugin-sdk/command-status): ті самі сигнатури, ті самі експорти - просто імпортовані з вужчого підшляху. command-auth реекспортує їх як заглушки сумісності.
// Before
import { buildHelpMessage } from "openclaw/plugin-sdk/command-auth";

// After
import { buildHelpMessage } from "openclaw/plugin-sdk/command-status";
Старе: resolveInboundMentionRequirement({ facts, policy }) і shouldDropInboundForMention(...) з openclaw/plugin-sdk/channel-inbound або openclaw/plugin-sdk/channel-mention-gating.Нове: resolveInboundMentionDecision({ facts, policy }) - повертає один об’єкт рішення замість двох окремих викликів.Нижчі за потоком channel-плагіни (Slack, Discord, Matrix, MS Teams) уже перейшли на нього.
openclaw/plugin-sdk/channel-runtime є прокладкою сумісності для старіших channel-плагінів. Не імпортуйте її з нового коду; використовуйте openclaw/plugin-sdk/channel-runtime-context для реєстрації runtime- об’єктів.Допоміжні засоби channelActions* в openclaw/plugin-sdk/channel-actions застаріли разом із сирими channel-експортами “actions”. Натомість виставляйте можливості через семантичну поверхню presentation - channel- плагіни оголошують, що вони рендерять (картки, кнопки, списки вибору), а не які сирі назви дій вони приймають.
Старе: фабрика tool() з openclaw/plugin-sdk/provider-web-search.Нове: реалізуйте createTool(...) безпосередньо в provider-плагіні. OpenClaw більше не потребує допоміжного засобу SDK для реєстрації обгортки інструмента.
Старе: formatInboundEnvelope(...)ChannelMessageForAgent.channelEnvelope) для побудови плаского plaintext- конверта prompt з вхідних повідомлень каналу.Нове: BodyForAgent плюс структуровані блоки контексту користувача. Channel-плагіни прикріплюють метадані маршрутизації (тред, тема, відповідь на, реакції) як типізовані поля замість конкатенації їх у рядок prompt. Допоміжний засіб formatAgentEnvelope(...) досі підтримується для синтезованих конвертів, спрямованих до асистента, але вхідні plaintext- конверти поступово вилучаються.Зачеплені області: inbound_claim, message_received і будь-який кастомний channel-плагін, який постобробляв текст channelEnvelope.
Старе: api.on("deactivate", handler).Нове: api.on("gateway_stop", handler). Подія та контекст є тим самим контрактом очищення під час завершення роботи; змінюється лише назва хука.
// 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.
Старе: api.on("subagent_spawning", handler), що повертає threadBindingReady або deliveryOrigin.Нове: дозвольте core підготувати прив’язки субагента thread: true через адаптер прив’язки сесії каналу. Використовуйте api.on("subagent_spawned", handler) лише для спостереження після запуску.
// 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 і SubagentLifecycleHookRunner.runSubagentSpawning(...) залишаються лише як застарілі поверхні сумісності, доки зовнішні плагіни мігрують.
Чотири псевдоніми типів виявлення тепер є тонкими обгортками над типами епохи каталогу:
Старий псевдонімНовий тип
ProviderDiscoveryOrderProviderCatalogOrder
ProviderDiscoveryContextProviderCatalogContext
ProviderDiscoveryResultProviderCatalogResult
ProviderPluginDiscoveryProviderPluginCatalog
Плюс застарілий статичний набір ProviderCapabilities - provider-плагіни мають використовувати явні хуки провайдера, такі як buildReplayPolicy, normalizeToolSchemas і wrapStreamFn, а не статичний об’єкт.
Старе (три окремі хуки в ProviderThinkingPolicy): isBinaryThinking(ctx), supportsXHighThinking(ctx) і resolveDefaultThinkingLevel(ctx).Нове: один resolveThinkingProfile(ctx), що повертає ProviderThinkingProfile з канонічним id, необов’язковим label і ранжованим списком рівнів. OpenClaw автоматично понижує застарілі збережені значення за рангом профілю.Контекст містить provider, modelId, необов’язково об’єднаний reasoning і необов’язково об’єднані факти compat моделі. Provider- плагіни можуть використовувати ці факти каталогу, щоб виставляти профіль, специфічний для моделі, лише коли налаштований контракт запиту це підтримує.Реалізуйте один хук замість трьох. Застарілі хуки продовжують працювати протягом вікна застаріння, але не компонуються з результатом профілю.
Старе: реалізація зовнішніх auth-хуків без оголошення провайдера в маніфесті плагіна.Нове: оголосіть contracts.externalAuthProviders у маніфесті плагіна і реалізуйте resolveExternalAuthProfiles(...).
{
  "contracts": {
    "externalAuthProviders": ["anthropic", "openai"]
  }
}
Старе поле маніфесту: providerAuthEnvVars: { anthropic: ["ANTHROPIC_API_KEY"] }.Нове: віддзеркальте той самий пошук env-var у setup.providers[].envVars у маніфесті. Це консолідує метадані env для setup/status в одному місці та уникає запуску runtime плагіна лише для відповіді на пошуки env-var.providerAuthEnvVars залишається підтримуваним через адаптер сумісності, доки вікно застаріння не закриється.
Старе: три окремі виклики - api.registerMemoryPromptSection(...), api.registerMemoryFlushPlan(...), api.registerMemoryRuntime(...).Нове: один виклик в API memory-state - registerMemoryCapability(pluginId, { promptBuilder, flushPlanResolver, runtime }).Ті самі слоти, один виклик реєстрації. Адитивні допоміжні засоби prompt і корпусу (registerMemoryPromptSupplement, registerMemoryCorpusSupplement) не зачеплені.
Старе: api.registerMemoryEmbeddingProvider(...) плюс contracts.memoryEmbeddingProviders.Нове: api.registerEmbeddingProvider(...) плюс contracts.embeddingProviders.Загальний контракт embedding-провайдера придатний для повторного використання поза memory і є підтримуваним шляхом для нових провайдерів. API реєстрації, специфічний для memory, залишається підключеним як застаріла сумісність, доки наявні провайдери мігрують. Інспекція плагінів повідомляє про використання не-bundled плагінами як борг сумісності.
Два застарілі псевдоніми типів досі експортуються з src/plugins/runtime/types.ts:
СтареНове
SubagentReadSessionParamsSubagentGetSessionMessagesParams
SubagentReadSessionResultSubagentGetSessionMessagesResult
Runtime-метод readSession застарів на користь getSessionMessages. Та сама сигнатура; старий метод викликає новий.
Старе: runtime.tasks.flow (однина) повертав live-аксесор task-flow.Нове: runtime.tasks.managedFlows зберігає runtime мутацій керованого TaskFlow для плагінів, які створюють, оновлюють, скасовують або запускають дочірні задачі з flow. Використовуйте runtime.tasks.flows, коли плагіну потрібні лише читання на основі DTO.
// Before
const flow = api.runtime.tasks.flow.fromToolContext(ctx);
// After
const flow = api.runtime.tasks.managedFlows.fromToolContext(ctx);
Описано вище в “Як мігрувати → Мігруйте вбудовані розширення результатів інструментів на middleware”. Додано тут для повноти: вилучений шлях лише для embedded-runner api.registerEmbeddedExtensionFactory(...) замінено на api.registerAgentToolResultMiddleware(...) з явним списком runtime у contracts.agentToolResultMiddleware.
OpenClawSchemaType, реекспортований з openclaw/plugin-sdk, тепер є однорядковим псевдонімом для OpenClawConfig. Надавайте перевагу канонічній назві.
// Before
import type { OpenClawSchemaType } from "openclaw/plugin-sdk";
// After
import type { OpenClawConfig } from "openclaw/plugin-sdk/config-schema";
Застаріння рівня розширень (усередині bundled channel/provider-плагінів у extensions/) відстежуються всередині їхніх власних barrel-файлів api.ts і runtime-api.ts. Вони не впливають на контракти сторонніх плагінів і тут не перелічені. Якщо ви споживаєте локальний barrel bundled-плагіна напряму, прочитайте коментарі про застаріння в цьому barrel перед оновленням.

Графік вилучення

КолиЩо відбувається
ЗаразЗастарілі інтерфейси видають попередження під час виконання
Наступний мажорний релізЗастарілі інтерфейси буде вилучено; Plugin-и, які досі їх використовують, не працюватимуть
Усі основні Plugin-и вже мігровано. Зовнішні Plugin-и мають мігрувати до наступного мажорного релізу.

Тимчасове приглушення попереджень

Установіть ці змінні середовища під час роботи над міграцією:
OPENCLAW_SUPPRESS_PLUGIN_SDK_COMPAT_WARNING=1 openclaw gateway run
OPENCLAW_SUPPRESS_EXTENSION_API_WARNING=1 openclaw gateway run
Це тимчасовий запасний вихід, а не постійне рішення.

Пов’язане