Перейти до основного вмісту

Огляд Plugin SDK

Plugin SDK — це типізований контракт між plugins і ядром. Ця сторінка є довідником про що імпортувати і що можна реєструвати.
Шукаєте покроковий посібник?

Угода щодо імпорту

Завжди імпортуйте з конкретного підшляху:
import { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry";
import { defineChannelPluginEntry } from "openclaw/plugin-sdk/channel-core";
Кожен підшлях — це невеликий самодостатній модуль. Це забезпечує швидкий запуск і запобігає проблемам із циклічними залежностями. Для специфічних для каналів допоміжних засобів entry/build віддавайте перевагу openclaw/plugin-sdk/channel-core; залишайте openclaw/plugin-sdk/core для ширшої узагальненої поверхні та спільних помічників, таких як buildChannelConfigSchema. Не додавайте й не використовуйте зручні шви, названі на честь постачальників, такі як openclaw/plugin-sdk/slack, openclaw/plugin-sdk/discord, openclaw/plugin-sdk/signal, openclaw/plugin-sdk/whatsapp, або допоміжні шви з брендуванням каналів. Вбудовані plugins мають компонувати узагальнені підшляхи SDK у власних barrel-файлах api.ts або runtime-api.ts, а ядро має або використовувати ці локальні barrel-файли plugin, або додавати вузький узагальнений контракт SDK, коли потреба справді є міжканальною. Згенерована карта експортів усе ще містить невеликий набір допоміжних швів вбудованих plugins, таких як plugin-sdk/feishu, plugin-sdk/feishu-setup, plugin-sdk/zalo, plugin-sdk/zalo-setup і plugin-sdk/matrix*. Ці підшляхи існують лише для підтримки та сумісності вбудованих plugins; вони навмисно не включені до загальної таблиці нижче і не є рекомендованим шляхом імпорту для нових сторонніх plugins.

Довідник підшляхів

Найуживаніші підшляхи, згруповані за призначенням. Згенерований повний список із понад 200 підшляхів міститься у scripts/lib/plugin-sdk-entrypoints.json. Зарезервовані допоміжні підшляхи вбудованих plugins усе ще з’являються в цьому згенерованому списку. Розглядайте їх як поверхні деталей реалізації/сумісності, якщо лише сторінка документації явно не просуває одну з них як публічну.

Entry plugin

ПідшляхКлючові експорти
plugin-sdk/plugin-entrydefinePluginEntry
plugin-sdk/coredefineChannelPluginEntry, createChatChannelPlugin, createChannelPluginBase, defineSetupPluginEntry, buildChannelConfigSchema
plugin-sdk/config-schemaOpenClawSchema
plugin-sdk/provider-entrydefineSingleProviderPluginEntry
ПідшляхКлючові експорти
plugin-sdk/channel-coredefineChannelPluginEntry, defineSetupPluginEntry, createChatChannelPlugin, createChannelPluginBase
plugin-sdk/config-schemaЕкспорт кореневої Zod-схеми openclaw.json (OpenClawSchema)
plugin-sdk/channel-setupcreateOptionalChannelSetupSurface, createOptionalChannelSetupAdapter, createOptionalChannelSetupWizard, а також DEFAULT_ACCOUNT_ID, createTopLevelChannelDmPolicy, setSetupChannelEnabled, splitSetupEntries
plugin-sdk/setupСпільні помічники майстра налаштування, підказки списку дозволених, побудовники статусу налаштування
plugin-sdk/setup-runtimecreatePatchedAccountSetupAdapter, createEnvPatchedAccountSetupAdapter, createSetupInputPresenceValidator, noteChannelLookupFailure, noteChannelLookupSummary, promptResolvedAllowFrom, splitSetupEntries, createAllowlistSetupWizardProxy, createDelegatedSetupWizardProxy
plugin-sdk/setup-adapter-runtimecreateEnvPatchedAccountSetupAdapter
plugin-sdk/setup-toolsformatCliCommand, detectBinary, extractArchive, resolveBrewExecutable, formatDocsLink, CONFIG_DIR
plugin-sdk/account-coreПомічники для конфігурації/обмеження дій для кількох облікових записів, помічники резервного переходу на типовий обліковий запис
plugin-sdk/account-idDEFAULT_ACCOUNT_ID, помічники нормалізації id облікового запису
plugin-sdk/account-resolutionПомічники пошуку облікового запису + резервного переходу до типового
plugin-sdk/account-helpersВузькі помічники для списку облікових записів/дій з обліковими записами
plugin-sdk/channel-pairingcreateChannelPairingController
plugin-sdk/channel-reply-pipelinecreateChannelReplyPipeline
plugin-sdk/channel-config-helperscreateHybridChannelConfigAdapter
plugin-sdk/channel-config-schemaТипи схеми конфігурації каналу
plugin-sdk/telegram-command-configПомічники нормалізації/валідації користувацьких команд Telegram із резервною підтримкою вбудованого контракту
plugin-sdk/channel-policyresolveChannelGroupRequireMention
plugin-sdk/channel-lifecyclecreateAccountStatusSink
plugin-sdk/inbound-envelopeСпільні помічники для маршрутизації вхідних повідомлень + побудови envelope
plugin-sdk/inbound-reply-dispatchСпільні помічники запису й диспетчеризації вхідних повідомлень
plugin-sdk/messaging-targetsПомічники розбору/зіставлення цілей
plugin-sdk/outbound-mediaСпільні помічники завантаження вихідних медіа
plugin-sdk/outbound-runtimeПомічники вихідної ідентичності/делегування надсилання
plugin-sdk/thread-bindings-runtimeПомічники життєвого циклу та адаптерів прив’язок потоків
plugin-sdk/agent-media-payloadЗастарілий побудовник медіа-пейлоаду агента
plugin-sdk/conversation-runtimeПомічники прив’язки розмови/потоку, pairing і configured-binding
plugin-sdk/runtime-config-snapshotПомічник знімка конфігурації часу виконання
plugin-sdk/runtime-group-policyПомічники визначення group-policy під час виконання
plugin-sdk/channel-statusСпільні помічники знімка/зведення статусу каналу
plugin-sdk/channel-config-primitivesВузькі примітиви config-schema каналу
plugin-sdk/channel-config-writesПомічники авторизації запису конфігурації каналу
plugin-sdk/channel-plugin-commonСпільні прелюд-експорти plugin каналу
plugin-sdk/allowlist-config-editПомічники редагування/читання конфігурації списку дозволених
plugin-sdk/group-accessСпільні помічники рішень щодо group-access
plugin-sdk/direct-dmСпільні помічники auth/guard для прямих DM
plugin-sdk/interactive-runtimeПомічники нормалізації/скорочення пейлоаду інтерактивних відповідей
plugin-sdk/channel-inboundDebounce, зіставлення згадок, помічники envelope
plugin-sdk/channel-send-resultТипи результатів відповіді
plugin-sdk/channel-actionscreateMessageToolButtonsSchema, createMessageToolCardSchema
plugin-sdk/channel-targetsПомічники розбору/зіставлення цілей
plugin-sdk/channel-contractТипи контракту каналу
plugin-sdk/channel-feedbackПідключення feedback/reaction
ПідшляхКлючові експорти
plugin-sdk/provider-entrydefineSingleProviderPluginEntry
plugin-sdk/provider-setupДобірні помічники налаштування локальних/self-hosted постачальників
plugin-sdk/self-hosted-provider-setupСфокусовані помічники налаштування self-hosted постачальника, сумісного з OpenAI
plugin-sdk/provider-auth-runtimeПомічники визначення API-ключа під час виконання для plugins постачальників
plugin-sdk/provider-auth-api-keyПомічники онбордингу/запису профілю для API-ключів
plugin-sdk/provider-auth-resultСтандартний побудовник результату OAuth auth
plugin-sdk/provider-auth-loginСпільні помічники інтерактивного входу для plugins постачальників
plugin-sdk/provider-env-varsПомічники пошуку env vars auth постачальника
plugin-sdk/provider-authcreateProviderApiKeyAuthMethod, ensureApiKeyFromOptionEnvOrPrompt, upsertAuthProfile
plugin-sdk/provider-model-sharedProviderReplayFamily, buildProviderReplayFamilyHooks, normalizeModelCompat, спільні побудовники replay-policy, помічники endpoint постачальників і помічники нормалізації model-id, такі як normalizeNativeXaiModelId
plugin-sdk/provider-catalog-sharedfindCatalogTemplate, buildSingleProviderApiKeyCatalog, supportsNativeStreamingUsageCompat, applyProviderNativeStreamingUsageCompat
plugin-sdk/provider-httpУзагальнені помічники HTTP/можливостей endpoint постачальника
plugin-sdk/provider-web-fetchПомічники реєстрації/кешу постачальника web-fetch
plugin-sdk/provider-web-searchПомічники реєстрації/кешу/конфігурації постачальника web-search
plugin-sdk/provider-toolsProviderToolCompatFamily, buildProviderToolCompatFamilyHooks, очищення схеми Gemini + діагностика та помічники сумісності xAI, такі як resolveXaiModelCompatPatch / applyXaiModelCompat
plugin-sdk/provider-usagefetchClaudeUsage та подібне
plugin-sdk/provider-streamProviderStreamFamily, buildProviderStreamFamilyHooks, composeProviderStreamWrappers, типи обгорток потоку та спільні помічники обгорток Anthropic/Bedrock/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot
plugin-sdk/provider-onboardПомічники виправлення конфігурації онбордингу
plugin-sdk/global-singletonПомічники локальних для процесу singleton/map/cache
ПідшляхКлючові експорти
plugin-sdk/command-authresolveControlCommandGate, помічники реєстру команд, помічники авторизації відправника
plugin-sdk/approval-auth-runtimeПомічники визначення approver і auth дій у тому самому чаті
plugin-sdk/approval-client-runtimeПомічники профілю/фільтра native exec approval
plugin-sdk/approval-delivery-runtimeАдаптери native approval capability/delivery
plugin-sdk/approval-native-runtimeПомічники native approval target + прив’язки облікового запису
plugin-sdk/approval-reply-runtimeПомічники пейлоаду відповіді exec/plugin approval
plugin-sdk/command-auth-nativeNative command auth + помічники native session-target
plugin-sdk/command-detectionСпільні помічники визначення команд
plugin-sdk/command-surfaceПомічники нормалізації тіла команди й командної поверхні
plugin-sdk/allow-fromformatAllowFromLowercase
plugin-sdk/security-runtimeСпільні помічники довіри, DM gating, external-content і збору секретів
plugin-sdk/ssrf-policyПомічники allowlist хостів і політики SSRF для приватної мережі
plugin-sdk/ssrf-runtimeПомічники pinned-dispatcher, fetch із захистом SSRF і політики SSRF
plugin-sdk/secret-inputПомічники розбору введення секретів
plugin-sdk/webhook-ingressПомічники запитів/цілей webhook
plugin-sdk/webhook-request-guardsПомічники розміру тіла запиту/timeout
ПідшляхКлючові експорти
plugin-sdk/runtimeШирока поверхня помічників runtime/logging/backup/install plugin
plugin-sdk/runtime-envВузькі помічники env runtime, logger, timeout, retry і backoff
plugin-sdk/runtime-storecreatePluginRuntimeStore
plugin-sdk/plugin-runtimeСпільні помічники команд/hook/http/interactive plugin
plugin-sdk/hook-runtimeСпільні помічники pipeline webhook/internal hook
plugin-sdk/lazy-runtimeПомічники лінивого імпорту/прив’язки runtime, такі як createLazyRuntimeModule, createLazyRuntimeMethod і createLazyRuntimeSurface
plugin-sdk/process-runtimeПомічники виконання процесів
plugin-sdk/cli-runtimeПомічники форматування CLI, очікування та версії
plugin-sdk/gateway-runtimeПомічники клієнта gateway і виправлення статусу каналу
plugin-sdk/config-runtimeПомічники завантаження/запису конфігурації
plugin-sdk/telegram-command-configНормалізація імен/описів команд Telegram та перевірки дублікатів/конфліктів, навіть коли поверхня контракту вбудованого Telegram недоступна
plugin-sdk/approval-runtimeПомічники exec/plugin approval, побудовники approval-capability, помічники auth/profile, native routing/runtime
plugin-sdk/reply-runtimeСпільні помічники runtime для вхідних повідомлень/відповідей, chunking, dispatch, heartbeat, planner відповіді
plugin-sdk/reply-dispatch-runtimeВузькі помічники dispatch/finalize відповіді
plugin-sdk/reply-historyСпільні помічники reply-history для коротких вікон, такі як buildHistoryContext, recordPendingHistoryEntry і clearHistoryEntriesIfEnabled
plugin-sdk/reply-referencecreateReplyReferencePlanner
plugin-sdk/reply-chunkingВузькі помічники chunking тексту/markdown
plugin-sdk/session-store-runtimeПомічники шляху сховища сесії + updated-at
plugin-sdk/state-pathsПомічники шляхів до директорій state/OAuth
plugin-sdk/routingПомічники маршруту/ключа сесії/прив’язки облікового запису, такі як resolveAgentRoute, buildAgentSessionKey і resolveDefaultAgentBoundAccountId
plugin-sdk/status-helpersСпільні помічники зведення статусу каналу/облікового запису, типові значення runtime-state і помічники метаданих проблем
plugin-sdk/target-resolver-runtimeСпільні помічники визначення цілей
plugin-sdk/string-normalization-runtimeПомічники нормалізації slug/рядків
plugin-sdk/request-urlВитягуйте рядкові URL з вхідних даних на кшталт fetch/request
plugin-sdk/run-commandВиконавець команд із таймером і нормалізованими результатами stdout/stderr
plugin-sdk/param-readersЗагальні читачі параметрів tool/CLI
plugin-sdk/tool-sendВитягуйте канонічні поля цілі надсилання з аргументів tool
plugin-sdk/temp-pathСпільні помічники шляхів для тимчасових завантажень
plugin-sdk/logging-coreПомічники logger підсистеми та редагування
plugin-sdk/markdown-table-runtimeПомічники режиму таблиць Markdown
plugin-sdk/json-storeНевеликі помічники читання/запису стану JSON
plugin-sdk/file-lockПомічники повторно вхідного file-lock
plugin-sdk/persistent-dedupeПомічники дискового кешу дедуплікації
plugin-sdk/acp-runtimeПомічники runtime/session ACP і dispatch відповіді
plugin-sdk/agent-config-primitivesВузькі примітиви config-schema runtime агента
plugin-sdk/boolean-paramЧитач параметрів для нестрогих булевих значень
plugin-sdk/dangerous-name-runtimeПомічники визначення збігів небезпечних імен
plugin-sdk/device-bootstrapПомічники bootstrap пристрою і токенів pairing
plugin-sdk/extension-sharedСпільні примітиви для passive-channel і статусних помічників
plugin-sdk/models-provider-runtimeПомічники /models command/provider reply
plugin-sdk/skill-commands-runtimeПомічники переліку команд Skills
plugin-sdk/native-command-registryПомічники реєстру/build/serialize native command
plugin-sdk/provider-zai-endpointПомічники визначення endpoint Z.A.I
plugin-sdk/infra-runtimeПомічники системних подій/heartbeat
plugin-sdk/collection-runtimeНевеликі помічники обмеженого кешу
plugin-sdk/diagnostic-runtimeПомічники діагностичних прапорців і подій
plugin-sdk/error-runtimeГраф помилок, форматування, спільні помічники класифікації помилок, isApprovalNotFoundError
plugin-sdk/fetch-runtimeПомічники обгорнутого fetch, proxy і pinned lookup
plugin-sdk/host-runtimeПомічники нормалізації hostname і SCP host
plugin-sdk/retry-runtimeПомічники конфігурації retry і виконавця retry
plugin-sdk/agent-runtimeПомічники директорії/ідентичності/workspace агента
plugin-sdk/directory-runtimeЗапит/дедуплікація директорій на основі конфігурації
plugin-sdk/keyed-async-queueKeyedAsyncQueue
ПідшляхКлючові експорти
plugin-sdk/media-runtimeСпільні помічники fetch/transform/store медіа, а також побудовники медіа-пейлоаду
plugin-sdk/media-understandingТипи постачальників media understanding, а також експорти помічників зображень/аудіо для постачальників
plugin-sdk/text-runtimeСпільні помічники тексту/markdown/logging, такі як видалення видимого для асистента тексту, render/chunking/table-помічники markdown, помічники редагування, помічники тегів директив і утиліти безпечного тексту
plugin-sdk/text-chunkingПомічник chunking вихідного тексту
plugin-sdk/speechТипи постачальників мовлення, а також помічники директив, реєстру та валідації для постачальників
plugin-sdk/speech-coreСпільні типи постачальників мовлення, реєстр, директиви та помічники нормалізації
plugin-sdk/realtime-transcriptionТипи постачальників realtime transcription і помічники реєстру
plugin-sdk/realtime-voiceТипи постачальників realtime voice і помічники реєстру
plugin-sdk/image-generationТипи постачальників генерації зображень
plugin-sdk/image-generation-coreСпільні типи генерації зображень, failover, auth і помічники реєстру
plugin-sdk/video-generationТипи постачальників/запитів/результатів генерації відео
plugin-sdk/video-generation-coreСпільні типи генерації відео, помічники failover, пошук постачальника і розбір model-ref
plugin-sdk/webhook-targetsПомічники реєстру цілей webhook і встановлення маршрутів
plugin-sdk/webhook-pathПомічники нормалізації шляху webhook
plugin-sdk/web-mediaСпільні помічники завантаження віддалених/локальних медіа
plugin-sdk/zodПовторно експортований zod для користувачів plugin SDK
plugin-sdk/testinginstallCommonResolveTargetErrorCases, shouldAckReaction
ПідшляхКлючові експорти
plugin-sdk/memory-coreПоверхня допоміжних засобів вбудованого memory-core для manager/config/file/CLI
plugin-sdk/memory-core-engine-runtimeФасад runtime індексації/пошуку пам’яті
plugin-sdk/memory-core-host-engine-foundationЕкспорти foundation engine хоста пам’яті
plugin-sdk/memory-core-host-engine-embeddingsЕкспорти embedding engine хоста пам’яті
plugin-sdk/memory-core-host-engine-qmdЕкспорти QMD engine хоста пам’яті
plugin-sdk/memory-core-host-engine-storageЕкспорти storage engine хоста пам’яті
plugin-sdk/memory-core-host-multimodalМультимодальні помічники хоста пам’яті
plugin-sdk/memory-core-host-queryПомічники запитів хоста пам’яті
plugin-sdk/memory-core-host-secretПомічники секретів хоста пам’яті
plugin-sdk/memory-core-host-statusПомічники статусу хоста пам’яті
plugin-sdk/memory-core-host-runtime-cliПомічники runtime CLI хоста пам’яті
plugin-sdk/memory-core-host-runtime-coreПомічники core runtime хоста пам’яті
plugin-sdk/memory-core-host-runtime-filesПомічники файлів/runtime хоста пам’яті
plugin-sdk/memory-lancedbПоверхня допоміжних засобів вбудованого memory-lancedb
СімействоПоточні підшляхиПризначене використання
Browserplugin-sdk/browser-cdp, plugin-sdk/browser-config-support, plugin-sdk/browser-control-auth, plugin-sdk/browser-profiles, plugin-sdk/browser-supportДопоміжні засоби підтримки вбудованого browser plugin
Matrixplugin-sdk/matrix, plugin-sdk/matrix-helper, plugin-sdk/matrix-runtime-heavy, plugin-sdk/matrix-runtime-shared, plugin-sdk/matrix-runtime-surface, plugin-sdk/matrix-surface, plugin-sdk/matrix-thread-bindingsПоверхня helper/runtime вбудованого Matrix
Lineplugin-sdk/line, plugin-sdk/line-core, plugin-sdk/line-runtime, plugin-sdk/line-surfaceПоверхня helper/runtime вбудованого LINE
IRCplugin-sdk/irc, plugin-sdk/irc-surfaceПоверхня допоміжних засобів вбудованого IRC
Специфічні для каналу помічникиplugin-sdk/googlechat, plugin-sdk/zalouser, plugin-sdk/bluebubbles, plugin-sdk/bluebubbles-policy, plugin-sdk/mattermost, plugin-sdk/mattermost-policy, plugin-sdk/feishu-conversation, plugin-sdk/msteams, plugin-sdk/nextcloud-talk, plugin-sdk/nostr, plugin-sdk/tlon, plugin-sdk/twitchШви сумісності/допоміжні шви вбудованих каналів
Специфічні для auth/plugin помічникиplugin-sdk/github-copilot-login, plugin-sdk/github-copilot-token, plugin-sdk/diagnostics-otel, plugin-sdk/diffs, plugin-sdk/llm-task, plugin-sdk/thread-ownership, plugin-sdk/voice-callДопоміжні шви вбудованих можливостей/plugins; plugin-sdk/github-copilot-token наразі експортує DEFAULT_COPILOT_API_BASE_URL, deriveCopilotApiBaseUrlFromToken і resolveCopilotApiToken

API реєстрації

Колбек register(api) отримує об’єкт OpenClawPluginApi з такими методами:

Реєстрація можливостей

МетодЩо реєструє
api.registerProvider(...)Текстовий inference (LLM)
api.registerChannel(...)Канал повідомлень
api.registerSpeechProvider(...)Синтез text-to-speech / STT
api.registerRealtimeTranscriptionProvider(...)Потокова transcription realtime
api.registerRealtimeVoiceProvider(...)Двобічні сесії realtime voice
api.registerMediaUnderstandingProvider(...)Аналіз зображень/аудіо/відео
api.registerImageGenerationProvider(...)Генерація зображень
api.registerVideoGenerationProvider(...)Генерація відео
api.registerWebFetchProvider(...)Постачальник web fetch / scrape
api.registerWebSearchProvider(...)Вебпошук

Tools і команди

МетодЩо реєструє
api.registerTool(tool, opts?)Agent tool (обов’язковий або { optional: true })
api.registerCommand(def)Користувацька команда (обходить LLM)

Інфраструктура

МетодЩо реєструє
api.registerHook(events, handler, opts?)Hook події
api.registerHttpRoute(params)HTTP endpoint gateway
api.registerGatewayMethod(name, handler)RPC-метод gateway
api.registerCli(registrar, opts?)Підкоманду CLI
api.registerService(service)Фоновий сервіс
api.registerInteractiveHandler(registration)Інтерактивний handler
Зарезервовані простори імен core admin (config.*, exec.approvals.*, wizard.*, update.*) завжди залишаються operator.admin, навіть якщо plugin намагається призначити вужчу область gateway method. Для методів, що належать plugin, віддавайте перевагу префіксам, специфічним для plugin.

Метадані реєстрації CLI

api.registerCli(registrar, opts?) приймає два типи метаданих верхнього рівня:
  • commands: явні корені команд, що належать registrar
  • descriptors: дескриптори команд на етапі розбору, що використовуються для довідки кореневого CLI, маршрутизації та лінивої реєстрації CLI plugin
Якщо ви хочете, щоб команда plugin залишалася ліниво завантажуваною в звичайному шляху кореневого CLI, надайте descriptors, які охоплюють кожен корінь команди верхнього рівня, що надається цим registrar.
api.registerCli(
  async ({ program }) => {
    const { registerMatrixCli } = await import("./src/cli.js");
    registerMatrixCli({ program });
  },
  {
    descriptors: [
      {
        name: "matrix",
        description: "Керуйте обліковими записами Matrix, верифікацією, пристроями та станом профілю",
        hasSubcommands: true,
      },
    ],
  },
);
Використовуйте commands окремо лише тоді, коли вам не потрібна лінива реєстрація кореневого CLI. Цей сумісний eager-шлях усе ще підтримується, але він не встановлює placeholders на основі descriptor для лінивого завантаження на етапі розбору.

Ексклюзивні слоти

МетодЩо реєструє
api.registerContextEngine(id, factory)Context engine (одночасно активний лише один)
api.registerMemoryPromptSection(builder)Побудовник секції prompt пам’яті
api.registerMemoryFlushPlan(resolver)Resolver плану скидання пам’яті
api.registerMemoryRuntime(runtime)Адаптер runtime пам’яті

Адаптери embeddings пам’яті

МетодЩо реєструє
api.registerMemoryEmbeddingProvider(adapter)Адаптер embeddings пам’яті для активного plugin
  • registerMemoryPromptSection, registerMemoryFlushPlan і registerMemoryRuntime є ексклюзивними для plugins пам’яті.
  • registerMemoryEmbeddingProvider дозволяє активному plugin пам’яті зареєструвати один або кілька id адаптерів embeddings (наприклад openai, gemini або користувацький id, визначений plugin).
  • Користувацька конфігурація, така як agents.defaults.memorySearch.provider і agents.defaults.memorySearch.fallback, визначається відносно зареєстрованих id цих адаптерів.

Події та життєвий цикл

МетодЩо робить
api.on(hookName, handler, opts?)Типізований hook життєвого циклу
api.onConversationBindingResolved(handler)Колбек прив’язки розмови

Семантика рішень hook

  • before_tool_call: повернення { block: true } є термінальним. Щойно будь-який handler встановлює це значення, handlers із нижчим пріоритетом пропускаються.
  • before_tool_call: повернення { block: false } вважається відсутністю рішення (так само, як пропуск block), а не перевизначенням.
  • before_install: повернення { block: true } є термінальним. Щойно будь-який handler встановлює це значення, handlers із нижчим пріоритетом пропускаються.
  • before_install: повернення { block: false } вважається відсутністю рішення (так само, як пропуск block), а не перевизначенням.
  • reply_dispatch: повернення { handled: true, ... } є термінальним. Щойно будь-який handler бере диспетчеризацію на себе, handlers із нижчим пріоритетом і типовий шлях диспетчеризації моделі пропускаються.
  • message_sending: повернення { cancel: true } є термінальним. Щойно будь-який handler встановлює це значення, handlers із нижчим пріоритетом пропускаються.
  • message_sending: повернення { cancel: false } вважається відсутністю рішення (так само, як пропуск cancel), а не перевизначенням.

Поля об’єкта API

ПолеТипОпис
api.idstringId plugin
api.namestringВідображувана назва
api.versionstring?Версія plugin (необов’язково)
api.descriptionstring?Опис plugin (необов’язково)
api.sourcestringШлях до джерела plugin
api.rootDirstring?Коренева директорія plugin (необов’язково)
api.configOpenClawConfigПоточний знімок конфігурації (активний знімок runtime у пам’яті, коли доступний)
api.pluginConfigRecord<string, unknown>Конфігурація plugin з plugins.entries.<id>.config
api.runtimePluginRuntimeПомічники runtime
api.loggerPluginLoggerLogger з областю видимості (debug, info, warn, error)
api.registrationModePluginRegistrationModeПоточний режим завантаження; "setup-runtime" — це полегшене вікно запуску/налаштування до повного entry
api.resolvePath(input)(string) => stringВизначити шлях відносно кореня plugin

Угода щодо внутрішніх модулів

Усередині вашого plugin використовуйте локальні barrel-файли для внутрішніх імпортів:
my-plugin/
  api.ts            # Публічні експорти для зовнішніх споживачів
  runtime-api.ts    # Лише внутрішні експорти runtime
  index.ts          # Точка входу plugin
  setup-entry.ts    # Полегшений entry лише для налаштування (необов’язково)
Ніколи не імпортуйте власний plugin через openclaw/plugin-sdk/<your-plugin> у production-коді. Спрямовуйте внутрішні імпорти через ./api.ts або ./runtime-api.ts. Шлях SDK є лише зовнішнім контрактом.
Публічні поверхні вбудованих plugins, що завантажуються через facade (api.ts, runtime-api.ts, index.ts, setup-entry.ts та подібні публічні entry-файли), тепер віддають перевагу активному знімку конфігурації runtime, коли OpenClaw уже запущено. Якщо знімка runtime ще немає, вони переходять до резервного варіанту з визначеним файлом конфігурації на диску. Plugins постачальників також можуть надавати вузький локальний barrel-контракт plugin, коли помічник навмисно є специфічним для постачальника і ще не належить до узагальненого підшляху SDK. Поточний вбудований приклад: постачальник Anthropic зберігає свої помічники потоку Claude у власному публічному шві api.ts / contract-api.ts замість того, щоб просувати логіку beta-header і service_tier Anthropic до узагальненого контракту plugin-sdk/*. Інші поточні вбудовані приклади:
  • @openclaw/openai-provider: api.ts експортує побудовники постачальника, помічники типових моделей і побудовники realtime-постачальників
  • @openclaw/openrouter-provider: api.ts експортує побудовник постачальника, а також помічники онбордингу/конфігурації
Production-код extensions також має уникати імпортів openclaw/plugin-sdk/<other-plugin>. Якщо помічник справді є спільним, просуньте його до нейтрального підшляху SDK, такого як openclaw/plugin-sdk/speech, .../provider-model-shared або іншої поверхні, орієнтованої на можливості, замість того щоб жорстко зв’язувати два plugins.

Пов’язане

  • Entry Points — параметри definePluginEntry і defineChannelPluginEntry
  • Runtime Helpers — повний довідник простору імен api.runtime
  • Setup and Config — пакування, маніфести, схеми конфігурації
  • Testing — утиліти тестування та правила lint
  • SDK Migration — міграція із застарілих поверхонь
  • Plugin Internals — глибока архітектура та модель можливостей