Перейти к основному содержанию
OpenClaw перешел от широкого слоя обратной совместимости к современной Plugin архитектуре с узкими, документированными импортами. Если ваш Plugin был создан до новой архитектуры, это руководство поможет выполнить миграцию.

Что меняется

Старая система Plugin предоставляла две широкие поверхности, которые позволяли Plugin импортировать все необходимое из одной точки входа:
  • openclaw/plugin-sdk/compat - единый импорт, который повторно экспортировал десятки вспомогательных функций. Он был введен, чтобы старые Plugin на основе хуков продолжали работать, пока создавалась новая Plugin архитектура.
  • openclaw/plugin-sdk/infra-runtime - широкий runtime-barrel вспомогательных средств, который смешивал системные события, состояние Heartbeat, очереди доставки, вспомогательные средства fetch/proxy, файловые вспомогательные средства, типы утверждений и несвязанные утилиты.
  • openclaw/plugin-sdk/config-runtime - широкий barrel совместимости конфигурации, который в период миграции все еще содержит устаревшие прямые вспомогательные средства загрузки/записи.
  • openclaw/extension-api - мост, который давал Plugin прямой доступ к вспомогательным средствам на стороне хоста, например встроенному запускателю агента.
  • api.registerEmbeddedExtensionFactory(...) - удаленный bundled-хук расширений только для embedded-runner, который мог наблюдать события embedded-runner, такие как tool_result.
Широкие поверхности импорта теперь устарели. Они все еще работают во время выполнения, но новые Plugin не должны их использовать, а существующим Plugin следует мигрировать до того, как следующий мажорный релиз удалит их. API регистрации фабрики расширений только для embedded-runner был удален; вместо него используйте middleware результатов инструментов. OpenClaw не удаляет и не переинтерпретирует документированное поведение Plugin в том же изменении, которое вводит замену. Ломающие изменения контракта сначала должны пройти через адаптер совместимости, диагностику, документацию и окно устаревания. Это относится к импортам SDK, полям манифеста, setup API, хукам и поведению регистрации во время выполнения.
Слой обратной совместимости будет удален в будущем мажорном релизе. Plugin, которые все еще импортируют из этих поверхностей, после этого сломаются. Legacy-регистрации фабрик embedded extension уже больше не загружаются.

Почему это изменилось

Старый подход создавал проблемы:
  • Медленный запуск - импорт одной вспомогательной функции загружал десятки несвязанных модулей
  • Циклические зависимости - широкие повторные экспорты упрощали создание циклов импортов
  • Неясная поверхность API - нельзя было понять, какие экспорты стабильны, а какие внутренние
Современный plugin SDK исправляет это: каждый путь импорта (openclaw/plugin-sdk/\<subpath\>) представляет собой небольшой, самодостаточный модуль с понятным назначением и документированным контрактом. Legacy-поверхности удобства провайдеров для bundled-каналов также удалены. Вспомогательные поверхности с брендингом каналов были приватными ярлыками mono-repo, а не стабильными контрактами Plugin. Используйте вместо них узкие универсальные подпути SDK. Внутри рабочей области bundled Plugin держите вспомогательные средства, принадлежащие провайдеру, в собственном api.ts или runtime-api.ts этого Plugin. Текущие примеры bundled-провайдеров:
  • Anthropic держит потоковые вспомогательные средства, специфичные для Claude, в собственной поверхности api.ts / contract-api.ts
  • OpenAI держит builder-функции провайдера, вспомогательные средства моделей по умолчанию и builder-функции realtime-провайдера в собственном api.ts
  • OpenRouter держит builder-функцию провайдера и вспомогательные средства onboarding/config в собственном api.ts

План миграции Talk и realtime-голоса

Код realtime-голоса, телефонии, встреч и браузерного Talk перемещается от локального для поверхности учета ходов к общему контроллеру Talk-сессии, экспортируемому из openclaw/plugin-sdk/realtime-voice. Новый контроллер владеет общей оболочкой событий Talk, состоянием активного хода, состоянием захвата, состоянием output-audio, недавней историей событий и отклонением устаревших ходов. Provider Plugin должны продолжать владеть realtime-сессиями конкретного вендора; surface 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. Замените старые семейства Talk RPC финальными API talk.session.* и talk.client.*.
  4. Объявите один live-канал событий Talk в Gateway hello-ok.features.events: talk.event.
  5. Удалите старый realtime HTTP endpoint и любой путь переопределения инструкций во время запроса.
Новый код не должен вызывать createTalkEventSequencer(...) напрямую, если только он не реализует низкоуровневый adapter или test fixture. Предпочитайте общий контроллер, чтобы события в области хода нельзя было отправить без turn id, устаревшие вызовы turnEnd / turnCancel не могли очистить более новый активный ход, а события жизненного цикла output-audio оставались согласованными в телефонии, встречах, browser relay, managed-room handoff и native Talk client. Целевая форма публичного 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, поскольку браузер владеет согласованием с провайдером и медиатранспортом, а Gateway владеет учетными данными, инструкциями и политикой инструментов. talk.session.* - это общая управляемая Gateway поверхность для gateway-relay realtime, gateway-relay transcription и managed-room native STT/TTS сессий. Legacy-конфигурации, которые размещали realtime-селекторы рядом с talk.provider / talk.providers, следует исправить с помощью openclaw doctor --fix; runtime Talk не переинтерпретирует конфигурацию провайдера speech/TTS как конфигурацию realtime-провайдера. Поддерживаемые комбинации talk.session.create намеренно ограничены:
РежимТранспортBrainВладелецПримечания
realtimegateway-relayagent-consultGatewayFull-duplex аудио провайдера передается через Gateway; вызовы инструментов маршрутизируются через инструмент agent-consult.
transcriptiongateway-relaynoneGatewayТолько streaming STT; вызывающие стороны отправляют входное аудио и получают события transcript.
stt-ttsmanaged-roomagent-consultNative/client roomКомнаты в стиле push-to-talk и walkie-talkie, где client владеет захватом/воспроизведением, а Gateway владеет состоянием хода.
stt-ttsmanaged-roomdirect-toolsNative/client roomРежим комнаты только для администраторов для доверенных first-party поверхностей, которые напрямую выполняют действия инструментов Gateway.
Карта удаленных методов:
СтарыйНовый
talk.realtime.sessiontalk.client.create
talk.realtime.toolCalltalk.client.toolCall
talk.realtime.relayAudiotalk.session.appendAudio
talk.realtime.relayCanceltalk.session.cancelOutput или 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Завершает вызов инструмента провайдера, выданный ретранслятором; передайте options.willContinue для промежуточного вывода или options.suppressResponse, чтобы удовлетворить вызов без еще одного ответа ассистента.
talk.session.steerсеансы Talk с поддержкой агентаОтправляет речевой управляющий сигнал status, steer, cancel или followup в активный встроенный запуск, разрешенный из сеанса Talk.
talk.session.closeвсе унифицированные сеансыОстанавливает сеансы ретранслятора или отзывает состояние managed-room, затем забывает идентификатор унифицированного сеанса.
Не добавляйте в ядро особые случаи для провайдеров или платформ, чтобы это работало. Ядро владеет семантикой сеансов Talk. Provider plugins владеют настройкой сеансов поставщиков. Голосовые вызовы и Google Meet владеют адаптерами телефонии и встреч. Браузерные и нативные приложения владеют UX захвата и воспроизведения на устройстве.

Политика совместимости

Для внешних plugins работа над совместимостью выполняется в таком порядке:
  1. добавить новый контракт
  2. сохранить старое поведение, подключенное через адаптер совместимости
  3. вывести диагностическое сообщение или предупреждение, называющее старый путь и замену
  4. покрыть оба пути тестами
  5. задокументировать устаревание и путь миграции
  6. удалить только после объявленного окна миграции, обычно в мажорном выпуске
Сопровождающие могут проверить текущую очередь миграции с помощью pnpm plugins:boundary-report. Используйте pnpm plugins:boundary-report:summary для компактных счетчиков, --owner <id> для одного Plugin или владельца совместимости и pnpm plugins:boundary-report:ci, когда CI-гейт должен падать из-за просроченных записей совместимости, межвладельческих зарезервированных импортов SDK или неиспользуемых зарезервированных подпутей SDK. Отчет группирует устаревшие записи совместимости по дате удаления, подсчитывает локальные ссылки в коде и документации, показывает межвладельческие зарезервированные импорты SDK и суммирует приватный мост SDK для хоста памяти, чтобы очистка совместимости оставалась явной, а не полагалась на разовые поиски. Зарезервированные подпути SDK должны иметь отслеживаемое использование владельцем; неиспользуемые экспортируемые зарезервированные вспомогательные функции следует удалять из публичного SDK. Если поле манифеста все еще принимается, авторы plugins могут продолжать его использовать, пока документация и диагностика не скажут иного. Новый код должен предпочитать задокументированную замену, но существующие plugins не должны ломаться во время обычных минорных релизов.

Как выполнить миграцию

1

Мигрируйте вспомогательные функции загрузки и записи конфигурации runtime

Bundled plugins должны перестать напрямую вызывать api.runtime.config.loadConfig() и api.runtime.config.writeConfigFile(...). Предпочитайте конфигурацию, которая уже была передана в активный путь вызова. Долгоживущие обработчики, которым нужен текущий снимок процесса, могут использовать api.runtime.config.current(). Долгоживущие инструменты агента должны использовать ctx.getRuntimeConfig() из контекста инструмента внутри execute, чтобы инструмент, созданный до записи конфигурации, все равно видел обновленную runtime-конфигурацию.Записи конфигурации должны проходить через транзакционные вспомогательные функции и выбирать политику после записи:
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 остаются устаревшими вспомогательными функциями совместимости для внешних plugins на период окна миграции и один раз предупреждают с кодом совместимости runtime-config-load-write. Bundled plugins и runtime-код репозитория защищены ограничителями сканера в pnpm check:deprecated-api-usage и pnpm check:no-runtime-action-load-config: новое использование в production-коде Plugin сразу завершается ошибкой, прямые записи конфигурации завершаются ошибкой, методы gateway-сервера должны использовать runtime-снимок запроса, runtime-вспомогательные функции отправки, действия и клиента канала должны получать конфигурацию со своей границы, а долгоживущие runtime-модули имеют ноль разрешенных фоновых вызовов loadConfig().Новый код Plugin также должен избегать импорта широкого barrel совместимости openclaw/plugin-sdk/config-runtime. Используйте узкий подпуть SDK, соответствующий задаче:
ПотребностьИмпорт
Типы конфигурации, такие как OpenClawConfigopenclaw/plugin-sdk/config-contracts
Проверки уже загруженной конфигурации и поиск конфигурации точки входа Pluginopenclaw/plugin-sdk/plugin-config-runtime
Чтение текущего runtime-снимкаopenclaw/plugin-sdk/runtime-config-snapshot
Записи конфигурацииopenclaw/plugin-sdk/config-mutation
Вспомогательные функции хранилища сеансовopenclaw/plugin-sdk/session-store-runtime
Конфигурация таблиц Markdownopenclaw/plugin-sdk/markdown-table-runtime
Runtime-вспомогательные функции групповой политикиopenclaw/plugin-sdk/runtime-group-policy
Разрешение секретного вводаopenclaw/plugin-sdk/secret-input-runtime
Переопределения модели и сеансаopenclaw/plugin-sdk/model-session-runtime
Bundled plugins и их тесты защищены сканером от широкого barrel, чтобы импорты и моки оставались локальными для нужного им поведения. Широкий barrel все еще существует для внешней совместимости, но новый код не должен от него зависеть.
2

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

Bundled plugins должны заменить обработчики результатов инструментов 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"]
  }
}
Установленные plugins также могут регистрировать middleware результатов инструментов, когда они явно включены и объявляют каждый целевой runtime в contracts.agentToolResultMiddleware. Необъявленные регистрации middleware установленных Plugin отклоняются.
3

Мигрируйте approval-native обработчики на факты возможностей

Plugins каналов с поддержкой подтверждений теперь раскрывают нативное поведение подтверждений через approvalCapability.nativeRuntime и общий реестр runtime-контекста.Ключевые изменения:
  • Замените approvalCapability.handler.loadRuntime(...) на approvalCapability.nativeRuntime
  • Перенесите auth/delivery для подтверждений со старой проводки plugin.auth / plugin.approvals на approvalCapability
  • ChannelPlugin.approvals удален из публичного контракта channel-plugin; перенесите поля delivery/native/render на approvalCapability
  • plugin.auth остается только для потоков входа и выхода канала; хуки auth подтверждений там больше не читаются ядром
  • Регистрируйте runtime-объекты, принадлежащие каналу, такие как клиенты, токены или приложения Bolt, через openclaw/plugin-sdk/channel-runtime-context
  • Не отправляйте уведомления о перенаправлении, принадлежащие Plugin, из нативных обработчиков подтверждений; теперь ядро владеет уведомлениями о доставке в другое место на основе фактических результатов доставки
  • При передаче channelRuntime в createChannelManager(...) предоставляйте настоящий интерфейс createPluginRuntime().channel. Частичные заглушки отклоняются.
См. /plugins/sdk-channel-plugins для текущей структуры возможностей подтверждений.
4

Проверьте fallback-поведение обертки Windows

Если ваш Plugin использует openclaw/plugin-sdk/windows-spawn, неразрешенные обертки Windows .cmd/.bat теперь 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";
Для вспомогательных функций на стороне хоста используйте внедренный runtime Plugin вместо прямого импорта:
// До (устаревший мост extension-api)
import { runEmbeddedAgent } from "openclaw/extension-api";
const result = await runEmbeddedAgent({ sessionId, prompt });

// После (внедренная среда выполнения)
const result = await api.runtime.agent.runEmbeddedAgent({ sessionId, prompt });
Тот же шаблон применяется к другим устаревшим вспомогательным функциям моста:
Старый импортСовременный эквивалент
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

Замените широкие импорты infra-runtime

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
Вспомогательные функции полезной нагрузки ответа на утверждение и команд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
Локальная для процесса асинхронная блокировкаopenclaw/plugin-sdk/async-lock-runtime
Файловые блокировкиopenclaw/plugin-sdk/file-lock
Встроенные plugins защищены сканером от infra-runtime, поэтому код репозитория не может вернуться к широкому barrel.
8

Перенесите вспомогательные функции маршрутов каналов

Новый код маршрутов каналов должен использовать openclaw/plugin-sdk/channel-route. Старые имена route-key и comparable-target остаются как псевдонимы совместимости на время окна миграции, но новые plugins должны использовать имена маршрутов, которые напрямую описывают поведение:
Старая вспомогательная функцияСовременная вспомогательная функция
channelRouteIdentityKey(...)channelRouteDedupeKey(...)
channelRouteKey(...)channelRouteCompactKey(...)
ComparableChannelTargetChannelRouteParsedTarget
comparableChannelTargetsMatch(...)channelRouteTargetsMatchExact(...)
comparableChannelTargetsShareRoute(...)channelRouteTargetsShareConversation(...)
Современные вспомогательные функции маршрутов последовательно нормализуют { channel, to, accountId, threadId } для нативных утверждений, подавления ответов, входящей дедупликации, доставки cron и маршрутизации сессий.Не добавляйте новые использования ChannelMessagingAdapter.parseExplicitTarget или вспомогательных функций загруженных маршрутов на основе парсера (parseExplicitTargetForLoadedChannel или resolveRouteTargetForLoadedChannel), а также resolveChannelRouteTargetWithParser(...) из plugin-sdk/channel-route. Эти хуки устарели и остаются только для старых plugins на время окна миграции. Новые plugins каналов должны использовать messaging.targetResolver.resolveTarget(...) для нормализации id цели и fallback при промахе в каталоге, messaging.inferTargetChatType(...), когда ядру рано нужен тип peer, и messaging.resolveOutboundSessionRoute(...) для нативной для провайдера сессии и идентичности треда.
9

Соберите и протестируйте

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Встроенные схемы конфигурацииТолько поддерживаемые OpenClaw встроенные плагины; новые плагины должны определять локальные схемы плагина
plugin-sdk/channel-config-schema-legacyУстаревшие встроенные схемы конфигурацииТолько псевдоним совместимости; используйте plugin-sdk/bundled-channel-config-schema для поддерживаемых встроенных плагинов
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/streaming, параметры ответа, вспомогательные функции жизненного цикла, исходящая идентичность и планирование полезной нагрузки
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-sdk/runtime-envУзкие вспомогательные функции окружения среды выполненияВспомогательные функции логгера/окружения среды выполнения, тайм-аута, повторной попытки и экспоненциальной задержки
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, вспомогательная функция запуска с готовым циклом событий и вспомогательные функции патчей статуса канала
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Вспомогательные функции runtime-контекста каналаУниверсальные вспомогательные функции регистрации/получения/наблюдения runtime-контекста канала
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/proxyresolveFetch, вспомогательные функции proxy, вспомогательные функции параметров 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-helper, такие как 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Вспомогательные средства маршрутизации/ключей сессийresolveAgentRoute, buildAgentSessionKey, resolveDefaultAgentBoundAccountId, вспомогательные средства нормализации ключей сессий
plugin-sdk/status-helpersВспомогательные средства статуса каналаПостроители сводок статуса канала/аккаунта, значения по умолчанию состояния среды выполнения, вспомогательные средства метаданных проблем
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Извлечение полезной нагрузки инструментаИзвлекает нормализованные полезные нагрузки из объектов результата инструмента
plugin-sdk/tool-sendИзвлечение отправки инструментаИзвлекает канонические поля цели отправки из аргументов инструмента
plugin-sdk/temp-pathВспомогательные средства временных путейОбщие вспомогательные средства путей временной загрузки
plugin-sdk/logging-coreВспомогательные средства журналированияПодсистемный журналировщик и вспомогательные средства редактирования чувствительных данных
plugin-sdk/markdown-table-runtimeВспомогательные средства Markdown-таблицВспомогательные средства режимов Markdown-таблиц
plugin-sdk/reply-payloadТипы ответа на сообщениеТипы полезной нагрузки ответа
plugin-sdk/provider-setupКурируемые вспомогательные средства настройки локальных/самостоятельно размещаемых провайдеровВспомогательные средства обнаружения/настройки самостоятельно размещаемых провайдеров
plugin-sdk/self-hosted-provider-setupСпециализированные вспомогательные средства настройки OpenAI-совместимых самостоятельно размещаемых провайдеровТе же вспомогательные средства обнаружения/настройки самостоятельно размещаемых провайдеров
plugin-sdk/provider-auth-runtimeВспомогательные средства аутентификации провайдера в среде выполненияВспомогательные средства разрешения API-ключей в среде выполнения
plugin-sdk/provider-auth-api-keyВспомогательные средства настройки API-ключей провайдераВспомогательные средства онбординга API-ключей/записи профилей
plugin-sdk/provider-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, общие построители политик повтора, вспомогательные средства конечных точек провайдера и вспомогательные средства нормализации идентификаторов моделей
plugin-sdk/provider-catalog-sharedОбщие вспомогательные средства каталога провайдеровfindCatalogTemplate, buildSingleProviderApiKeyCatalog, buildManifestModelProviderConfig, supportsNativeStreamingUsageCompat, applyProviderNativeStreamingUsageCompat
plugin-sdk/provider-onboardПатчи онбординга провайдераВспомогательные средства конфигурации онбординга
plugin-sdk/provider-httpВспомогательные средства HTTP провайдераОбщие вспомогательные средства возможностей HTTP/конечных точек провайдера, включая вспомогательные средства multipart-формы для транскрипции аудио
plugin-sdk/provider-web-fetchВспомогательные средства web-fetch провайдераВспомогательные средства регистрации/кэша провайдера web-fetch
plugin-sdk/provider-web-search-config-contractВспомогательные средства конфигурации веб-поиска провайдераУзкие вспомогательные средства конфигурации/учетных данных веб-поиска для провайдеров, которым не нужна связка включения Plugin
plugin-sdk/provider-web-search-contractВспомогательные средства контракта веб-поиска провайдераУзкие вспомогательные средства контракта конфигурации/учетных данных веб-поиска, такие как createWebSearchProviderContractFields, enablePluginInConfig, resolveProviderWebSearchPluginConfig, и ограниченные по области сеттеры/геттеры учетных данных
plugin-sdk/provider-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, преобразования транспортных сообщений и записываемые потоки транспортных событий
plugin-sdk/keyed-async-queueУпорядоченная асинхронная очередьKeyedAsyncQueue
plugin-sdk/media-runtimeОбщие вспомогательные средства медиаВспомогательные средства получения/преобразования/хранения медиа, определение размеров видео на базе ffprobe и построители полезных нагрузок медиа
plugin-sdk/media-generation-runtimeОбщие вспомогательные средства генерации медиаОбщие вспомогательные средства переключения при сбоях, выбор кандидатов и сообщения об отсутствующей модели для генерации изображений/видео/музыки
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Вспомогательные средства голоса в реальном времениТипы провайдеров, вспомогательные средства реестра/разрешения, вспомогательные средства мостовых сессий, общие очереди ответной речи агента, голосовое управление активным запуском, состояние здоровья транскрипта/событий, подавление эха, сопоставление консультационных вопросов, координация принудительной консультации, отслеживание контекста хода, отслеживание активности вывода и вспомогательные средства быстрой консультации по контексту
plugin-sdk/image-generationВспомогательные средства генерации изображенийТипы провайдеров генерации изображений, а также вспомогательные средства ресурсов изображений/data URL и OpenAI-совместимый построитель провайдера изображений
plugin-sdk/image-generation-coreОбщее ядро генерации изображенийТипы генерации изображений, переключение при сбоях, аутентификация и вспомогательные средства реестра
plugin-sdk/music-generationВспомогательные средства генерации музыкиТипы провайдеров/запросов/результатов генерации музыки
plugin-sdk/music-generation-coreОбщее ядро генерации музыкиТипы генерации музыки, вспомогательные средства переключения при сбоях, поиск провайдера и разбор model-ref
plugin-sdk/video-generationВспомогательные средства генерации видеоТипы провайдеров/запросов/результатов генерации видео
plugin-sdk/video-generation-coreОбщее ядро генерации видеоТипы генерации видео, вспомогательные средства переключения при сбоях, поиск провайдера и разбор model-ref
plugin-sdk/interactive-runtimeВспомогательные средства интерактивных ответовНормализация/сокращение полезной нагрузки интерактивного ответа
plugin-sdk/channel-config-primitivesПримитивы конфигурации каналаУзкие примитивы схемы конфигурации канала
plugin-sdk/channel-config-writesВспомогательные средства записи конфигурации каналаВспомогательные средства авторизации записи конфигурации канала
plugin-sdk/channel-plugin-commonОбщая преамбула каналаОбщие экспорты преамбулы Plugin канала
plugin-sdk/channel-statusВспомогательные средства статуса каналаОбщие вспомогательные средства снимка/сводки статуса канала
plugin-sdk/allowlist-config-editВспомогательные средства конфигурации allowlistВспомогательные средства редактирования/чтения конфигурации allowlist
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Общие вспомогательные средства расширенийПримитивы пассивного канала/статуса и вспомогательных средств ambient proxy
plugin-sdk/webhook-targetsВспомогательные средства целей WebhookРеестр целей Webhook и вспомогательные средства установки маршрутов
plugin-sdk/webhook-pathУстаревший псевдоним пути WebhookИспользуйте plugin-sdk/webhook-ingress
plugin-sdk/web-mediaОбщие вспомогательные средства веб-медиаВспомогательные средства загрузки удаленных/локальных медиа
plugin-sdk/zodУстаревший реэкспорт совместимости ZodИмпортируйте zod из zod напрямую
plugin-sdk/memory-coreВстроенные вспомогательные средства memory-coreПоверхность вспомогательных средств менеджера памяти/конфигурации/файлов/CLI
plugin-sdk/memory-core-engine-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 памяти, доступ к реестру, локальный провайдер и общие вспомогательные средства пакетной/удаленной обработки; конкретные удаленные провайдеры находятся в своих владеющих 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Вспомогательные средства секретов хоста памятиВспомогательные средства секретов хоста памяти
plugin-sdk/memory-core-host-eventsУстаревший псевдоним событий памятиИспользуйте plugin-sdk/memory-host-events
plugin-sdk/memory-core-host-statusВспомогательные средства статуса хоста памятиВспомогательные средства статуса хоста памяти
plugin-sdk/memory-core-host-runtime-cliСреда выполнения CLI хоста памятиВспомогательные средства среды выполнения CLI хоста памяти
plugin-sdk/memory-core-host-runtime-coreОсновная среда выполнения хоста памятиВспомогательные средства основной среды выполнения хоста памяти
plugin-sdk/memory-core-host-runtime-filesВспомогательные средства файлов/среды выполнения хоста памятиВспомогательные средства файлов/среды выполнения хоста памяти
plugin-sdk/memory-host-coreПсевдоним основной среды выполнения хоста памятиНейтральный к поставщику псевдоним вспомогательных средств основной среды выполнения хоста памяти
plugin-sdk/memory-host-eventsПсевдоним журнала событий хоста памятиНейтральный к поставщику псевдоним вспомогательных средств журнала событий хоста памяти
plugin-sdk/memory-host-filesУстаревший псевдоним файлов/среды выполнения памятиИспользуйте plugin-sdk/memory-core-host-runtime-files
plugin-sdk/memory-host-markdownВспомогательные средства управляемого MarkdownОбщие вспомогательные средства управляемого Markdown для plugins, смежных с памятью
plugin-sdk/memory-host-searchФасад поиска Active MemoryЛенивый фасад среды выполнения менеджера поиска Active Memory
plugin-sdk/memory-host-statusУстаревший псевдоним статуса хоста памятиИспользуйте plugin-sdk/memory-core-host-status
plugin-sdk/testingТестовые утилитыЛокальный для репозитория устаревший баррель совместимости; используйте специализированные локальные для репозитория тестовые подпути, такие как 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-plugin были удалены из карты экспортов публичного SDK, за исключением явно документированных фасадов совместимости, таких как устаревший shim plugin-sdk/discord, сохраненный для опубликованного пакета @openclaw/discord@2026.3.13. Вспомогательные средства, специфичные для владельца, находятся внутри пакета Plugin-владельца; общее поведение хоста должно проходить через универсальные контракты SDK, такие как plugin-sdk/gateway-runtime, plugin-sdk/security-runtime и plugin-sdk/plugin-config-runtime. Используйте самый узкий импорт, который соответствует задаче. Если вы не можете найти экспорт, проверьте исходный код в src/plugin-sdk/ или спросите сопровождающих, какому универсальному контракту он должен принадлежать.

Активные устаревания

Более узкие устаревания, которые применяются ко всему SDK Plugin, контракту провайдера, 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 }) - возвращает единый объект решения вместо двух раздельных вызовов.Нижестоящие плагины каналов (Slack, Discord, Matrix, MS Teams) уже переключились.
openclaw/plugin-sdk/channel-runtime - это shim совместимости для старых плагинов каналов. Не импортируйте его из нового кода; используйте openclaw/plugin-sdk/channel-runtime-context для регистрации runtime- объектов.Помощники channelActions* в openclaw/plugin-sdk/channel-actions устарели вместе с сырыми экспортами канальных “actions”. Вместо этого выставляйте возможности через семантическую поверхность presentation - плагины каналов объявляют, что они отображают (карточки, кнопки, выборы), а не какие сырые имена действий они принимают.
Старое: фабрика tool() из openclaw/plugin-sdk/provider-web-search.Новое: реализуйте createTool(...) напрямую в Plugin провайдера. OpenClaw больше не нужен помощник SDK для регистрации обертки инструмента.
Старое: formatInboundEnvelope(...)ChannelMessageForAgent.channelEnvelope) для построения плоского plaintext- конверта промпта из входящих сообщений канала.Новое: BodyForAgent плюс структурированные блоки пользовательского контекста. Плагины каналов прикрепляют метаданные маршрутизации (поток, тема, ответ-на, реакции) как типизированные поля, а не объединяют их в строку промпта. Помощник formatAgentEnvelope(...) все еще поддерживается для синтезированных конвертов, обращенных к ассистенту, но входящие plaintext-конверты постепенно выводятся.Затронутые области: inbound_claim, message_received и любой пользовательский Plugin канала, который постобрабатывал текст 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 - плагины провайдеров должны использовать явные хуки провайдера, такие как buildReplayPolicy, normalizeToolSchemas и wrapStreamFn, а не статический объект.
Старое (три отдельных хука в ProviderThinkingPolicy): isBinaryThinking(ctx), supportsXHighThinking(ctx) и resolveDefaultThinkingLevel(ctx).Новое: единый resolveThinkingProfile(ctx), который возвращает ProviderThinkingProfile с каноническим id, необязательным label и ранжированным списком уровней. OpenClaw автоматически понижает устаревшие сохраненные значения по рангу профиля.Контекст включает provider, modelId, необязательные объединенные факты reasoning и необязательные объединенные факты compat модели. Плагины провайдеров могут использовать эти факты каталога, чтобы выставлять профиль, специфичный для модели, только когда настроенный контракт запроса это поддерживает.Реализуйте один хук вместо трех. Устаревшие хуки продолжают работать в течение окна устаревания, но не компонуются с результатом профиля.
Старое: реализация внешних хуков auth без объявления провайдера в манифесте Plugin.Новое: объявите contracts.externalAuthProviders в манифесте Plugin и реализуйте resolveExternalAuthProfiles(...).
{
  "contracts": {
    "externalAuthProviders": ["anthropic", "openai"]
  }
}
Старое поле манифеста: providerAuthEnvVars: { anthropic: ["ANTHROPIC_API_KEY"] }.Новое: отзеркальте тот же поиск env-var в setup.providers[].envVars в манифесте. Это объединяет метаданные env для setup/status в одном месте и позволяет не запускать runtime Plugin только для ответа на запросы поиска env-var.providerAuthEnvVars остается поддерживаемым через адаптер совместимости, пока окно устаревания не закроется.
Старое: три отдельных вызова - api.registerMemoryPromptSection(...), api.registerMemoryFlushPlan(...), api.registerMemoryRuntime(...).Новое: один вызов в API memory-state - registerMemoryCapability(pluginId, { promptBuilder, flushPlanResolver, runtime }).Те же слоты, один вызов регистрации. Аддитивные помощники промпта и корпуса (registerMemoryPromptSupplement, registerMemoryCorpusSupplement) не затронуты.
Старое: api.registerMemoryEmbeddingProvider(...) плюс contracts.memoryEmbeddingProviders.Новое: api.registerEmbeddingProvider(...) плюс contracts.embeddingProviders.Универсальный контракт провайдера эмбеддингов можно повторно использовать вне памяти, и это поддерживаемый путь для новых провайдеров. Специфичный для памяти API регистрации остается подключенным как устаревшая совместимость, пока существующие провайдеры мигрируют. Отчеты инспекции Plugin помечают небандлированное использование как долг совместимости.
Два устаревших псевдонима типов все еще экспортируются из src/plugins/runtime/types.ts:
СтароеНовое
SubagentReadSessionParamsSubagentGetSessionMessagesParams
SubagentReadSessionResultSubagentGetSessionMessagesResult
Метод runtime readSession устарел в пользу getSessionMessages. Та же сигнатура; старый метод вызывает новый.
Старое: runtime.tasks.flow (в единственном числе) возвращал live- accessor task-flow.Новое: runtime.tasks.managedFlows сохраняет управляемый runtime мутаций TaskFlow для плагинов, которые создают, обновляют, отменяют или запускают дочерние задачи из flow. Используйте runtime.tasks.flows, когда Plugin нужны только чтения на основе DTO.
// Before
const flow = api.runtime.tasks.flow.fromToolContext(ctx);
// After
const flow = api.runtime.tasks.managedFlows.fromToolContext(ctx);
Рассмотрено выше в “Как мигрировать → Миграция встроенных расширений tool-result на middleware”. Включено здесь для полноты: удаленный путь api.registerEmbeddedExtensionFactory(...), предназначенный только для embedded-runner, заменен на 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";
Устаревания уровня расширений (внутри бандлированных плагинов каналов/ провайдеров в extensions/) отслеживаются внутри их собственных barrels api.ts и runtime-api.ts. Они не влияют на контракты сторонних плагинов и не перечислены здесь. Если вы напрямую используете локальный barrel бандлированного Plugin, прочитайте комментарии об устаревании в этом barrel перед обновлением.

График удаления

КогдаЧто происходит
СейчасУстаревшие интерфейсы выводят предупреждения во время выполнения
Следующий мажорный релизУстаревшие интерфейсы будут удалены; Plugin, которые все еще их используют, перестанут работать
Все основные Plugin уже перенесены. Внешним Plugin следует выполнить миграцию до следующего мажорного релиза.

Временное подавление предупреждений

Задайте эти переменные окружения, пока работаете над миграцией:
OPENCLAW_SUPPRESS_PLUGIN_SDK_COMPAT_WARNING=1 openclaw gateway run
OPENCLAW_SUPPRESS_EXTENSION_API_WARNING=1 openclaw gateway run
Это временная аварийная мера, а не постоянное решение.

Связанные материалы