Плагины (расширения)
Быстрый старт (если вы впервые работаете с плагинами)
Плагин — это просто небольшой модуль кода, который расширяет OpenClaw дополнительными возможностями (команды, инструменты и RPC шлюза Gateway). Чаще всего плагины используются, когда нужна функция, которой пока нет в ядре OpenClaw (или когда вы хотите держать необязательные возможности вне основной установки). Быстрый путь:- Посмотреть, что уже загружено:
- Установить официальный плагин (пример: Voice Call):
- Перезапустите Gateway (шлюз), затем настройте в разделе
plugins.entries.<id>.config.
Доступные плагины (официальные)
- Microsoft Teams доступен только через плагин по состоянию на 2026.1.15; установите
@openclaw/msteams, если используете Teams. - Memory (Core) — встроенный плагин поиска памяти (включён по умолчанию через
plugins.slots.memory) - Memory (LanceDB) — встроенный плагин долгосрочной памяти (автовосстановление/захват; установите
plugins.slots.memory = "memory-lancedb") - Voice Call —
@openclaw/voice-call - Zalo Personal —
@openclaw/zalouser - Matrix —
@openclaw/matrix - Nostr —
@openclaw/nostr - Zalo —
@openclaw/zalo - Microsoft Teams —
@openclaw/msteams - Google Antigravity OAuth (аутентификация провайдера) — в комплекте как
google-antigravity-auth(по умолчанию отключено) - Gemini CLI OAuth (аутентификация провайдера) — в комплекте как
google-gemini-cli-auth(по умолчанию отключено) - Qwen OAuth (аутентификация провайдера) — в комплекте как
qwen-portal-auth(по умолчанию отключено) - Copilot Proxy (аутентификация провайдера) — локальный мост VS Code Copilot Proxy; отличается от встроенного входа устройства
github-copilot(в комплекте, по умолчанию отключено)
- методы RPC шлюза Gateway
- HTTP‑обработчики шлюза Gateway
- инструменты агента
- команды CLI
- фоновые сервисы
- Необязательная проверка конфигурации
- Skills (путём перечисления каталогов
skillsв манифесте плагина) - Команды автоответа (выполняются без вызова AI‑агента)
Вспомогательные функции времени выполнения
Плагины могут получать доступ к выбранным вспомогательным функциям ядра черезapi.runtime. Для телефонного TTS:
- Использует конфигурацию ядра
messages.tts(OpenAI или ElevenLabs). - Возвращает PCM‑буфер аудио + частоту дискретизации. Плагины должны выполнять ресэмплинг/кодирование для провайдеров.
- Edge TTS не поддерживается для телефонии.
Обнаружение и приоритеты
OpenClaw сканирует, по порядку:- Пути конфига
plugins.load.paths(файл или каталог)
- Расширения рабочего пространства
<workspace>/.openclaw/extensions/*.ts<workspace>/.openclaw/extensions/*/index.ts
- Глобальные расширения
~/.openclaw/extensions/*.ts~/.openclaw/extensions/*/index.ts
- Встроенные расширения (поставляются с OpenClaw, по умолчанию отключены)
<openclaw>/extensions/*
plugins.entries.<id>.enabled
или openclaw plugins enable <id>. Установленные плагины включены по умолчанию,
но могут быть отключены тем же способом.
Каждый плагин должен содержать файл openclaw.plugin.json в корне. Если путь
указывает на файл, корнем плагина считается каталог этого файла и он должен
содержать манифест.
Если несколько плагинов разрешаются к одному и тому же id, побеждает первый
найденный согласно порядку выше, а копии с более низким приоритетом игнорируются.
Пакеты‑наборы
Каталог плагина может содержатьpackage.json с openclaw.extensions:
name/<fileBase>.
Если ваш плагин импортирует npm‑зависимости, установите их в этом каталоге,
чтобы node_modules был доступен (npm install / pnpm install).
Примечание по безопасности: openclaw plugins install устанавливает зависимости плагина с помощью
npm install --ignore-scripts (без lifecycle-скриптов). Поддерживайте дерево зависимостей плагина
«чистым JS/TS» и избегайте пакетов, требующих сборки через postinstall.
Метаданные каталога каналов
Плагины каналов могут объявлять метаданные онбординга черезopenclaw.channel и
подсказки по установке через openclaw.install. Это позволяет держать ядро без данных каталога.
Пример:
~/.openclaw/mpm/plugins.json~/.openclaw/mpm/catalog.json~/.openclaw/plugins/catalog.json
OPENCLAW_PLUGIN_CATALOG_PATHS (или OPENCLAW_MPM_CATALOG_PATHS), ссылаясь
на один или несколько JSON‑файлов (разделённых запятой/точкой с запятой/PATH). Каждый файл должен
содержать { "entries": [ { "name": "@scope/pkg", "openclaw": { "channel": {...}, "install": {...} } } ] }.
ID плагинов
ID плагинов по умолчанию:- Пакеты‑наборы:
package.jsonname - Отдельный файл: базовое имя файла (
~/.../voice-call.ts→voice-call)
id, OpenClaw использует его, но выдаёт предупреждение,
если он не совпадает с настроенным id.
Конфигурация
enabled: главный переключатель (по умолчанию: true)allow: список разрешённых (необязательно)отказать: отклонить список (опционально; запретить победы)load.paths: дополнительные файлы/каталоги плагиновentries.<id>: переключатели и конфиг для каждого плагина
- Неизвестные id плагинов в
entries,allow,denyилиslotsсчитаются ошибками. - Неизвестные ключи
channels.<id>считаются ошибками, если только манифест плагина не объявляет id канала. - Конфиг плагина валидируется с использованием JSON Schema, встроенной в
openclaw.plugin.json(configSchema). - Если плагин отключён, его конфиг сохраняется и выдаётся предупреждение.
Слоты плагинов (эксклюзивные категории)
Некоторые категории плагинов являются эксклюзивными (одновременно активен только один). Используйтеplugins.slots, чтобы выбрать, какой плагин владеет слотом:
kind: "memory", загружается только выбранный. Остальные
отключаются с диагностикой.
UI управления (схема + метки)
UI управления используетconfig.schema (JSON Schema + uiHints) для отображения более удобных форм.
OpenClaw дополняет uiHints во время выполнения на основе обнаруженных плагинов:
- Добавляет метки для каждого плагина для
plugins.entries.<id>/.enabled/.config - Объединяет необязательные подсказки полей конфига, предоставленные плагином, в:
plugins.entries.<id>.config.<field>
uiHints
рядом с вашей JSON Schema в манифесте плагина.
Пример:
CLI
plugins update работает только для npm‑установок, отслеживаемых в plugins.installs.
Плагины также могут регистрировать собственные команды верхнего уровня
(пример: openclaw voicecall).
API плагинов (обзор)
Плагины экспортируют либо:- Функцию:
(api) => { ... } - Объект:
{ id, name, configSchema, register(api) { ... } }
Хуки плагинов
Плагины могут поставлять хуки и регистрировать их во время выполнения. Это позволяет плагину включать событийную автоматизацию без отдельной установки набора хуков.Пример
- Каталоги хуков следуют обычной структуре хуков (
HOOK.md+handler.ts). - Правила применимости хуков по‑прежнему действуют (ОС/bins/переменные окружения/требования конфига).
- Хуки, управляемые плагином, отображаются в
openclaw hooks listсplugin:<id>. - Вы не можете включать/отключать хуки, управляемые плагином, через
openclaw hooks; вместо этого включайте/отключайте сам плагин.
Плагины провайдеров (аутентификация моделей)
Плагины могут регистрировать потоки аутентификации провайдеров моделей, чтобы пользователи могли выполнять настройку OAuth или API‑ключей внутри OpenClaw (без внешних скриптов). Зарегистрируйте провайдера черезapi.registerProvider(...). Каждый провайдер предоставляет один
или несколько методов аутентификации (OAuth, API‑ключ, код устройства и т. д.). Эти методы обеспечивают работу:
openclaw models auth login --provider <id> [--method <id>]
runполучаетProviderAuthContextс вспомогательными функциямиprompter,runtime,openUrlиoauth.createVpsAwareHandlers.- Возвращайте
configPatch, когда нужно добавить модели по умолчанию или конфиг провайдера. - Возвращайте
defaultModel, чтобы--set-defaultмог обновить значения по умолчанию агента.
Регистрация канала обмена сообщениями
Плагины могут регистрировать плагины каналов, которые ведут себя как встроенные каналы (WhatsApp, Telegram и т. д.). Конфигурация канала размещается подchannels.<id> и
валидируется кодом вашего плагина канала.
- Размещайте конфиг под
channels.<id>(а не подplugins.entries). meta.labelиспользуется для меток в списках CLI/UI.meta.aliasesдобавляет альтернативные id для нормализации и ввода в CLI.meta.preferOverперечисляет id каналов, которые следует пропустить при авто‑включении, если оба настроены.meta.detailLabelиmeta.systemImageпозволяют UI показывать более богатые метки/иконки каналов.
Создание нового канала обмена сообщениями (пошагово)
Используйте это, когда вам нужен новый чат‑интерфейс («канал сообщений»), а не провайдер модели. Документация по провайдерам моделей находится в/providers/*.
- Выберите id и форму конфига
- Вся конфигурация канала размещается под
channels.<id>. - Для многоаккаунтных конфигураций предпочтительнее
channels.<id>.accounts.<accountId>.
- Определите метаданные канала
meta.label,meta.selectionLabel,meta.docsPath,meta.blurbуправляют списками CLI/UI.meta.docsPathдолжен указывать на страницу документации, например/channels/<id>.meta.preferOverпозволяет плагину заменить другой канал (авто‑включение предпочитает его).meta.detailLabelиmeta.systemImageиспользуются UI для детального текста/иконок.
- Добавьте необязательные адаптеры по мере необходимости
config.listAccountIds+config.resolveAccountcapabilities(типы чатов, медиа, треды и т. д.)outbound.deliveryMode+outbound.sendText(для базовой отправки)
- Реализуйте обязательные адаптеры
setup(мастер),security(политика ЛС),status(здоровье/диагностика)gateway(start/stop/login),mentions,threading,streamingactions(действия с сообщениями),commands(поведение нативных команд)
- Зарегистрируйте канал в вашем плагине
api.registerChannel({ plugin })
plugins.load.paths), перезапустите шлюз,
затем настройте channels.<id> в вашем конфиге.
Инструменты агента
См. отдельное руководство: Plugin agent tools.Регистрация метода RPC шлюза Gateway
Регистрация команд CLI
Регистрация команд автоответа
Плагины могут регистрировать пользовательские slash‑команды, которые выполняются без вызова AI‑агента. Это полезно для команд‑переключателей, проверок статуса или быстрых действий, которые не требуют обработки LLM.senderId: ID отправителя (если доступно)channel: канал, в котором была отправлена командаisAuthorizedSender: является ли отправитель авторизованным пользователемargs: аргументы, переданные после команды (еслиacceptsArgs: true)commandBody: полный текст командыconfig: текущий конфиг OpenClaw
name: имя команды (без ведущего/)description: текст справки, отображаемый в списках командacceptsArgs: принимает ли команда аргументы (по умолчанию: false). Если false и аргументы переданы, команда не будет сопоставлена и сообщение перейдёт к другим обработчикамrequireAuth: требуется ли авторизованный отправитель (по умолчанию: true)handler: функция, возвращающая{ text: string }(может быть async)
- Команды плагинов обрабатываются до встроенных команд и AI‑агента
- Команды регистрируются глобально и работают во всех каналах
- Имена команд нечувствительны к регистру (
/MyStatusсоответствует/mystatus) - Имена команд должны начинаться с буквы и содержать только буквы, цифры, дефисы и подчёркивания
- Зарезервированные имена команд (такие как
help,status,resetи т. д.) не могут быть переопределены плагинами - Дублирующая регистрация команд между плагинами завершится диагностической ошибкой
Регистрация фоновых сервисов
Соглашения об именовании
- Методы Gateway:
pluginId.action(пример:voicecall.status) - Инструменты:
snake_case(пример:voice_call) - Команды CLI: kebab или camel, но избегайте конфликтов с командами ядра
Skills
Плагины могут поставлять skill в репозитории (skills/<name>/SKILL.md).
Включите его через plugins.entries.<id>.enabled (или другие гейты конфига) и убедитесь,
что он присутствует в локациях skills вашего рабочего пространства/управляемых skills.
Распространение (npm)
Рекомендуемая упаковка:- Основной пакет:
openclaw(этот репозиторий) - Плагины: отдельные npm‑пакеты под
@openclaw/*(пример:@openclaw/voice-call)
package.jsonплагина должен включатьopenclaw.extensionsс одним или несколькими входными файлами.- Входные файлы могут быть
.jsили.ts(jiti загружает TS во время выполнения). openclaw plugins install <npm-spec>используетnpm pack, извлекает в~/.openclaw/extensions/<id>/и включает его в конфиге.- Стабильность ключей конфига: пакеты с областью видимости нормализуются к безобластному id для
plugins.entries.*.
Пример плагина: Voice Call
Этот репозиторий включает плагин голосовых вызовов (Twilio или лог‑fallback):- Исходный код:
extensions/voice-call - Skill:
skills/voice-call - CLI:
openclaw voicecall start|status - Инструмент:
voice_call - RPC:
voicecall.start,voicecall.status - Конфиг (twilio):
provider: "twilio"+twilio.accountSid/authToken/from(необязательноstatusCallbackUrl,twimlUrl) - Конфиг (dev):
provider: "log"(без сети)
extensions/voice-call/README.md для настройки и использования.
Примечания по безопасности
Плагины выполняются в одном процессе со шлюзом Gateway. Рассматривайте их как доверенный код:- Устанавливайте только те плагины, которым доверяете.
- Предпочитайте списки разрешённых
plugins.allow. - Перезапускайте шлюз Gateway после изменений.
Тестирование плагинов
Плагины могут (и должны) поставляться с тестами:- Плагины внутри репозитория могут хранить тесты Vitest под
src/**(пример:src/plugins/voice-call.plugin.test.ts). - Плагины, публикуемые отдельно, должны запускать собственный CI (lint/build/test) и проверять,
что
openclaw.extensionsуказывает на собранную точку входа (dist/index.js).