Что меняется
Старая система 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.
Почему это изменилось
Старый подход создавал проблемы:- Медленный запуск - импорт одной вспомогательной функции загружал десятки несвязанных модулей
- Циклические зависимости - широкие повторные экспорты упрощали создание циклов импортов
- Неясная поверхность API - нельзя было понять, какие экспорты стабильны, а какие внутренние
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 намеренно выполняется как чистое ломающие изменение:
- Держите общий контроллер/runtime-примитивы в
plugin-sdk/realtime-voice. - Переведите bundled-поверхности на общий контроллер: browser relay, managed-room handoff, voice-call realtime, voice-call streaming STT, Google Meet realtime и native push-to-talk.
- Замените старые семейства Talk RPC финальными API
talk.session.*иtalk.client.*. - Объявите один live-канал событий Talk в Gateway
hello-ok.features.events:talk.event. - Удалите старый realtime HTTP endpoint и любой путь переопределения инструкций во время запроса.
createTalkEventSequencer(...) напрямую, если только он
не реализует низкоуровневый adapter или test fixture. Предпочитайте общий контроллер,
чтобы события в области хода нельзя было отправить без turn id, устаревшие вызовы turnEnd /
turnCancel не могли очистить более новый активный ход, а события жизненного цикла output-audio
оставались согласованными в телефонии, встречах, browser relay, managed-room
handoff и native Talk client.
Целевая форма публичного API:
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 | Владелец | Примечания |
|---|---|---|---|---|
realtime | gateway-relay | agent-consult | Gateway | Full-duplex аудио провайдера передается через Gateway; вызовы инструментов маршрутизируются через инструмент agent-consult. |
transcription | gateway-relay | none | Gateway | Только streaming STT; вызывающие стороны отправляют входное аудио и получают события transcript. |
stt-tts | managed-room | agent-consult | Native/client room | Комнаты в стиле push-to-talk и walkie-talkie, где client владеет захватом/воспроизведением, а Gateway владеет состоянием хода. |
stt-tts | managed-room | direct-tools | Native/client room | Режим комнаты только для администраторов для доверенных first-party поверхностей, которые напрямую выполняют действия инструментов Gateway. |
| Старый | Новый |
|---|---|
talk.realtime.session | talk.client.create |
talk.realtime.toolCall | talk.client.toolCall |
talk.realtime.relayAudio | talk.session.appendAudio |
talk.realtime.relayCancel | talk.session.cancelOutput или talk.session.cancelTurn |
talk.realtime.relayToolResult | talk.session.submitToolResult |
talk.realtime.relayStop | talk.session.close |
talk.transcription.session | talk.session.create({ mode: "transcription" }) |
talk.transcription.relayAudio | talk.session.appendAudio |
talk.transcription.relayCancel | talk.session.cancelTurn |
talk.transcription.relayStop | talk.session.close |
talk.handoff.create | talk.session.create({ transport: "managed-room" }) |
talk.handoff.join | talk.session.join |
talk.handoff.revoke | talk.session.close |
| Метод | Применяется к | Контракт |
|---|---|---|
talk.session.appendAudio | realtime/gateway-relay, transcription/gateway-relay | Добавляет фрагмент аудио PCM в base64 в сеанс провайдера, принадлежащий тому же подключению Gateway. |
talk.session.startTurn | stt-tts/managed-room | Запускает пользовательский ход managed-room. |
talk.session.endTurn | stt-tts/managed-room | Завершает активный ход после проверки устаревшего хода. |
talk.session.cancelTurn | все сеансы, принадлежащие Gateway | Отменяет активную работу захвата, провайдера, агента и TTS для хода. |
talk.session.cancelOutput | realtime/gateway-relay | Останавливает аудиовывод ассистента, не обязательно завершая пользовательский ход. |
talk.session.submitToolResult | realtime/gateway-relay | Завершает вызов инструмента провайдера, выданный ретранслятором; передайте options.willContinue для промежуточного вывода или options.suppressResponse, чтобы удовлетворить вызов без еще одного ответа ассистента. |
talk.session.steer | сеансы Talk с поддержкой агента | Отправляет речевой управляющий сигнал status, steer, cancel или followup в активный встроенный запуск, разрешенный из сеанса Talk. |
talk.session.close | все унифицированные сеансы | Останавливает сеансы ретранслятора или отзывает состояние managed-room, затем забывает идентификатор унифицированного сеанса. |
Политика совместимости
Для внешних plugins работа над совместимостью выполняется в таком порядке:- добавить новый контракт
- сохранить старое поведение, подключенное через адаптер совместимости
- вывести диагностическое сообщение или предупреждение, называющее старый путь и замену
- покрыть оба пути тестами
- задокументировать устаревание и путь миграции
- удалить только после объявленного окна миграции, обычно в мажорном выпуске
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 не должны ломаться во время обычных минорных
релизов.
Как выполнить миграцию
Мигрируйте вспомогательные функции загрузки и записи конфигурации runtime
api.runtime.config.loadConfig() и
api.runtime.config.writeConfigFile(...). Предпочитайте конфигурацию, которая уже была
передана в активный путь вызова. Долгоживущие обработчики, которым нужен
текущий снимок процесса, могут использовать api.runtime.config.current(). Долгоживущие
инструменты агента должны использовать ctx.getRuntimeConfig() из контекста инструмента внутри
execute, чтобы инструмент, созданный до записи конфигурации, все равно видел обновленную
runtime-конфигурацию.Записи конфигурации должны проходить через транзакционные вспомогательные функции и выбирать
политику после записи: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, соответствующий задаче:| Потребность | Импорт |
|---|---|
Типы конфигурации, такие как OpenClawConfig | openclaw/plugin-sdk/config-contracts |
| Проверки уже загруженной конфигурации и поиск конфигурации точки входа Plugin | openclaw/plugin-sdk/plugin-config-runtime |
| Чтение текущего runtime-снимка | openclaw/plugin-sdk/runtime-config-snapshot |
| Записи конфигурации | openclaw/plugin-sdk/config-mutation |
| Вспомогательные функции хранилища сеансов | openclaw/plugin-sdk/session-store-runtime |
| Конфигурация таблиц Markdown | openclaw/plugin-sdk/markdown-table-runtime |
| Runtime-вспомогательные функции групповой политики | openclaw/plugin-sdk/runtime-group-policy |
| Разрешение секретного ввода | openclaw/plugin-sdk/secret-input-runtime |
| Переопределения модели и сеанса | openclaw/plugin-sdk/model-session-runtime |
Мигрируйте встроенные расширения результатов инструментов в middleware
api.registerEmbeddedExtensionFactory(...), предназначенные только для embedded-runner,
на runtime-нейтральное middleware.contracts.agentToolResultMiddleware. Необъявленные регистрации middleware установленных Plugin
отклоняются.Мигрируйте approval-native обработчики на факты возможностей
approvalCapability.nativeRuntime и общий реестр runtime-контекста.Ключевые изменения:- Замените
approvalCapability.handler.loadRuntime(...)наapprovalCapability.nativeRuntime - Перенесите auth/delivery для подтверждений со старой проводки
plugin.auth/plugin.approvalsнаapprovalCapability ChannelPlugin.approvalsудален из публичного контракта channel-plugin; перенесите поля delivery/native/render наapprovalCapabilityplugin.authостается только для потоков входа и выхода канала; хуки auth подтверждений там больше не читаются ядром- Регистрируйте runtime-объекты, принадлежащие каналу, такие как клиенты, токены или приложения Bolt,
через
openclaw/plugin-sdk/channel-runtime-context - Не отправляйте уведомления о перенаправлении, принадлежащие Plugin, из нативных обработчиков подтверждений; теперь ядро владеет уведомлениями о доставке в другое место на основе фактических результатов доставки
- При передаче
channelRuntimeвcreateChannelManager(...)предоставляйте настоящий интерфейсcreatePluginRuntime().channel. Частичные заглушки отклоняются.
/plugins/sdk-channel-plugins для текущей структуры возможностей подтверждений.Проверьте fallback-поведение обертки Windows
openclaw/plugin-sdk/windows-spawn, неразрешенные обертки Windows
.cmd/.bat теперь fail closed, если вы явно не передадите
allowShellFallback: true.allowShellFallback и вместо этого обработайте выброшенную ошибку.Замените на сфокусированные импорты
| Старый импорт | Современный эквивалент |
|---|---|
resolveAgentDir | api.runtime.agent.resolveAgentDir |
resolveAgentWorkspaceDir | api.runtime.agent.resolveAgentWorkspaceDir |
resolveAgentIdentity | api.runtime.agent.resolveAgentIdentity |
resolveThinkingDefault | api.runtime.agent.resolveThinkingDefault |
resolveAgentTimeoutMs | api.runtime.agent.resolveAgentTimeoutMs |
ensureAgentWorkspace | api.runtime.agent.ensureAgentWorkspace |
| вспомогательные функции хранилища сессий | api.runtime.agent.session.* |
Замените широкие импорты infra-runtime
openclaw/plugin-sdk/infra-runtime по-прежнему существует для внешней
совместимости, но новый код должен импортировать специализированную поверхность
вспомогательных функций, которая ему действительно нужна:| Потребность | Импорт |
|---|---|
| Вспомогательные функции очереди системных событий | openclaw/plugin-sdk/system-event-runtime |
| Вспомогательные функции пробуждения, событий и видимости Heartbeat | openclaw/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 |
| Вспомогательные функции прокси и защищенного fetch | openclaw/plugin-sdk/fetch-runtime |
| Типы политики диспетчера SSRF | openclaw/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 |
infra-runtime, поэтому код репозитория
не может вернуться к широкому barrel.Перенесите вспомогательные функции маршрутов каналов
openclaw/plugin-sdk/channel-route.
Старые имена route-key и comparable-target остаются как псевдонимы
совместимости на время окна миграции, но новые plugins должны использовать имена
маршрутов, которые напрямую описывают поведение:| Старая вспомогательная функция | Современная вспомогательная функция |
|---|---|
channelRouteIdentityKey(...) | channelRouteDedupeKey(...) |
channelRouteKey(...) | channelRouteCompactKey(...) |
ComparableChannelTarget | ChannelRouteParsedTarget |
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(...)
для нативной для провайдера сессии и идентичности треда.Справочник путей импорта
Таблица распространенных путей импорта
Таблица распространенных путей импорта
| Путь импорта | Назначение | Ключевые экспорты |
|---|---|---|
plugin-sdk/plugin-entry | Каноническая вспомогательная функция точки входа Plugin | definePluginEntry |
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 | Примитивы связывания DM | createChannelPairingController |
plugin-sdk/channel-reply-pipeline | Префикс ответа, индикация набора и привязка доставки источника | createChannelReplyPipeline, resolveChannelSourceReplyDeliveryMode |
plugin-sdk/channel-config-helpers | Фабрики адаптеров конфигурации и вспомогательные функции доступа к DM | createHybridChannelConfigAdapter, 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 | Разрешение политики групп/DM | resolveChannelGroupRequireMention |
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 | Постоянное хранилище Plugin | createPluginRuntimeStore |
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 | Вспомогательные функции политики подтверждений exec | loadExecApprovals, resolveExecApprovalsFromFile, ExecApprovalsFile |
plugin-sdk/collection-runtime | Вспомогательные функции ограниченного кэша | pruneMapToMaxSize |
plugin-sdk/diagnostic-runtime | Вспомогательные функции ограничения диагностики | isDiagnosticFlagEnabled, isDiagnosticsEnabled |
plugin-sdk/error-runtime | Вспомогательные функции форматирования ошибок | formatUncaughtError, isApprovalNotFoundError, вспомогательные функции графа ошибок |
plugin-sdk/fetch-runtime | Обернутые вспомогательные функции fetch/proxy | resolveFetch, вспомогательные функции 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-foundation | Foundation-движок хоста памяти | Экспорты foundation-движка хоста памяти |
plugin-sdk/memory-core-host-engine-embeddings | Движок embedding хоста памяти | Контракты embedding памяти, доступ к реестру, локальный провайдер и общие вспомогательные средства пакетной/удаленной обработки; конкретные удаленные провайдеры находятся в своих владеющих plugins |
plugin-sdk/memory-core-host-engine-qmd | QMD-движок хоста памяти | Экспорты 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 |
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 с его канонической заменой.Помощники построения справки command-auth → command-status
Помощники построения справки command-auth → command-status
openclaw/plugin-sdk/command-auth): buildCommandsMessage,
buildCommandsMessagePaginated, buildHelpMessage.Новое (openclaw/plugin-sdk/command-status): те же сигнатуры, те же
экспорты - просто импортируются из более узкого подпути. command-auth
реэкспортирует их как заглушки совместимости.Помощники проверки упоминаний → resolveInboundMentionDecision
Помощники проверки упоминаний → resolveInboundMentionDecision
resolveInboundMentionRequirement({ facts, policy }) и
shouldDropInboundForMention(...) из
openclaw/plugin-sdk/channel-inbound или
openclaw/plugin-sdk/channel-mention-gating.Новое: resolveInboundMentionDecision({ facts, policy }) - возвращает
единый объект решения вместо двух раздельных вызовов.Нижестоящие плагины каналов (Slack, Discord, Matrix, MS Teams) уже
переключились.Shim runtime канала и помощники действий канала
Shim runtime канала и помощники действий канала
openclaw/plugin-sdk/channel-runtime - это shim совместимости для старых
плагинов каналов. Не импортируйте его из нового кода; используйте
openclaw/plugin-sdk/channel-runtime-context для регистрации runtime-
объектов.Помощники channelActions* в openclaw/plugin-sdk/channel-actions
устарели вместе с сырыми экспортами канальных “actions”. Вместо этого
выставляйте возможности через семантическую поверхность presentation -
плагины каналов объявляют, что они отображают (карточки, кнопки, выборы), а
не какие сырые имена действий они принимают.Помощник tool() провайдера веб-поиска → createTool() в Plugin
Помощник tool() провайдера веб-поиска → createTool() в Plugin
tool() из openclaw/plugin-sdk/provider-web-search.Новое: реализуйте createTool(...) напрямую в Plugin провайдера.
OpenClaw больше не нужен помощник SDK для регистрации обертки инструмента.Plaintext-конверты канала → BodyForAgent
Plaintext-конверты канала → BodyForAgent
formatInboundEnvelope(...) (и
ChannelMessageForAgent.channelEnvelope) для построения плоского plaintext-
конверта промпта из входящих сообщений канала.Новое: BodyForAgent плюс структурированные блоки пользовательского
контекста. Плагины каналов прикрепляют метаданные маршрутизации (поток,
тема, ответ-на, реакции) как типизированные поля, а не объединяют их в
строку промпта. Помощник formatAgentEnvelope(...) все еще поддерживается
для синтезированных конвертов, обращенных к ассистенту, но входящие
plaintext-конверты постепенно выводятся.Затронутые области: inbound_claim, message_received и любой
пользовательский Plugin канала, который постобрабатывал текст
channelEnvelope.Хук deactivate → gateway_stop
Хук deactivate → gateway_stop
api.on("deactivate", handler).Новое: api.on("gateway_stop", handler). Событие и контекст являются
тем же контрактом очистки при завершении работы; меняется только имя хука.deactivate остается подключенным как устаревший псевдоним совместимости
до периода после 2026-08-16.Хук subagent_spawning → привязка потока в core
Хук subagent_spawning → привязка потока в core
api.on("subagent_spawning", handler), возвращающий
threadBindingReady или deliveryOrigin.Новое: позвольте core подготавливать привязки субагентов thread: true
через адаптер привязки сессий канала. Используйте
api.on("subagent_spawned", handler) только для наблюдения после запуска.subagent_spawning, PluginHookSubagentSpawningEvent,
PluginHookSubagentSpawningResult и
SubagentLifecycleHookRunner.runSubagentSpawning(...) остаются только как
устаревшие поверхности совместимости, пока внешние плагины мигрируют.Типы обнаружения провайдеров → типы каталога провайдеров
Типы обнаружения провайдеров → типы каталога провайдеров
| Старый псевдоним | Новый тип |
|---|---|
ProviderDiscoveryOrder | ProviderCatalogOrder |
ProviderDiscoveryContext | ProviderCatalogContext |
ProviderDiscoveryResult | ProviderCatalogResult |
ProviderPluginDiscovery | ProviderPluginCatalog |
ProviderCapabilities - плагины
провайдеров должны использовать явные хуки провайдера, такие как
buildReplayPolicy, normalizeToolSchemas и wrapStreamFn, а не
статический объект.Хуки политики thinking → resolveThinkingProfile
Хуки политики thinking → resolveThinkingProfile
ProviderThinkingPolicy):
isBinaryThinking(ctx), supportsXHighThinking(ctx) и
resolveDefaultThinkingLevel(ctx).Новое: единый resolveThinkingProfile(ctx), который возвращает
ProviderThinkingProfile с каноническим id, необязательным label и
ранжированным списком уровней. OpenClaw автоматически понижает устаревшие
сохраненные значения по рангу профиля.Контекст включает provider, modelId, необязательные объединенные факты
reasoning и необязательные объединенные факты compat модели. Плагины
провайдеров могут использовать эти факты каталога, чтобы выставлять профиль,
специфичный для модели, только когда настроенный контракт запроса это
поддерживает.Реализуйте один хук вместо трех. Устаревшие хуки продолжают работать в
течение окна устаревания, но не компонуются с результатом профиля.Внешние провайдеры auth → contracts.externalAuthProviders
Внешние провайдеры auth → contracts.externalAuthProviders
contracts.externalAuthProviders в манифесте Plugin
и реализуйте resolveExternalAuthProfiles(...).Поиск env-var провайдера → setup.providers[].envVars
Поиск env-var провайдера → setup.providers[].envVars
providerAuthEnvVars: { anthropic: ["ANTHROPIC_API_KEY"] }.Новое: отзеркальте тот же поиск env-var в setup.providers[].envVars
в манифесте. Это объединяет метаданные env для setup/status в одном месте и
позволяет не запускать runtime Plugin только для ответа на запросы поиска
env-var.providerAuthEnvVars остается поддерживаемым через адаптер совместимости,
пока окно устаревания не закроется.Регистрация Plugin памяти → registerMemoryCapability
Регистрация Plugin памяти → registerMemoryCapability
api.registerMemoryPromptSection(...),
api.registerMemoryFlushPlan(...),
api.registerMemoryRuntime(...).Новое: один вызов в API memory-state -
registerMemoryCapability(pluginId, { promptBuilder, flushPlanResolver, runtime }).Те же слоты, один вызов регистрации. Аддитивные помощники промпта и корпуса
(registerMemoryPromptSupplement, registerMemoryCorpusSupplement) не
затронуты.API провайдера эмбеддингов памяти
API провайдера эмбеддингов памяти
api.registerMemoryEmbeddingProvider(...) плюс
contracts.memoryEmbeddingProviders.Новое: api.registerEmbeddingProvider(...) плюс
contracts.embeddingProviders.Универсальный контракт провайдера эмбеддингов можно повторно использовать
вне памяти, и это поддерживаемый путь для новых провайдеров. Специфичный
для памяти API регистрации остается подключенным как устаревшая
совместимость, пока существующие провайдеры мигрируют. Отчеты инспекции
Plugin помечают небандлированное использование как долг совместимости.Типы сообщений сессий субагентов переименованы
Типы сообщений сессий субагентов переименованы
src/plugins/runtime/types.ts:| Старое | Новое |
|---|---|
SubagentReadSessionParams | SubagentGetSessionMessagesParams |
SubagentReadSessionResult | SubagentGetSessionMessagesResult |
readSession устарел в пользу getSessionMessages. Та же
сигнатура; старый метод вызывает новый.runtime.tasks.flow → runtime.tasks.managedFlows
runtime.tasks.flow → runtime.tasks.managedFlows
runtime.tasks.flow (в единственном числе) возвращал live-
accessor task-flow.Новое: runtime.tasks.managedFlows сохраняет управляемый runtime
мутаций TaskFlow для плагинов, которые создают, обновляют, отменяют или
запускают дочерние задачи из flow. Используйте runtime.tasks.flows, когда
Plugin нужны только чтения на основе DTO.Фабрики встроенных расширений → middleware agent tool-result
Фабрики встроенных расширений → middleware agent tool-result
api.registerEmbeddedExtensionFactory(...), предназначенный только для
embedded-runner, заменен на api.registerAgentToolResultMiddleware(...) с
явным списком runtime в contracts.agentToolResultMiddleware.Псевдоним OpenClawSchemaType → OpenClawConfig
Псевдоним OpenClawSchemaType → OpenClawConfig
OpenClawSchemaType, реэкспортируемый из openclaw/plugin-sdk, теперь
является однострочным псевдонимом для OpenClawConfig. Предпочитайте
каноническое имя.extensions/) отслеживаются внутри их собственных barrels
api.ts и runtime-api.ts. Они не влияют на контракты сторонних плагинов и не
перечислены здесь. Если вы напрямую используете локальный barrel бандлированного
Plugin, прочитайте комментарии об устаревании в этом barrel перед обновлением.График удаления
| Когда | Что происходит |
|---|---|
| Сейчас | Устаревшие интерфейсы выводят предупреждения во время выполнения |
| Следующий мажорный релиз | Устаревшие интерфейсы будут удалены; Plugin, которые все еще их используют, перестанут работать |
Временное подавление предупреждений
Задайте эти переменные окружения, пока работаете над миграцией:Связанные материалы
- Начало работы - создайте свой первый Plugin
- Обзор SDK - полный справочник импортов по подпутям
- Канальные Plugin - создание канальных Plugin
- Провайдерские Plugin - создание провайдерских Plugin
- Внутреннее устройство Plugin - подробный разбор архитектуры
- Манифест Plugin - справочник схемы манифеста