Skip to main content

Plugins в OpenClaw

Plugins (расширения) в OpenClaw — это TypeScript-модули, загружаемые в runtime через jiti, которые расширяют функциональность платформы без необходимости модифицировать ядро. По сути, это in-process extensions, работающие внутри Gateway-процесса.

Что можно зарегистрировать через плагин

Плагины могут регистрировать: Gateway RPC-методы, HTTP-хендлеры, агентные инструменты (tools), CLI-команды, фоновые сервисы, валидацию конфигурации, скиллы (через директории skills в манифесте), а также auto-reply команды, которые выполняются без вызова AI-агента.

Архитектура и Discovery

Плагин экспортирует либо функцию (api) => { ... }, либо объект с полями { id, name, configSchema, register(api) }. OpenClaw сканирует плагины в строгом порядке приоритета: сначала пути из plugins.load.paths, затем workspace-расширения (<workspace>/.openclaw/extensions/), далее глобальные расширения (~/.openclaw/extensions/), и наконец bundled-расширения, которые поставляются с OpenClaw, но отключены по умолчанию. Если несколько плагинов резолвятся в один и тот же id, побеждает первый найденный — остальные игнорируются.

Конфигурация

Конфигурация плагинов живёт в общем конфиге OpenClaw:
{
  "plugins": {
    "enabled": true,          // master toggle
    "allow": ["voice-call"],  // allowlist
    "deny": ["untrusted"],    // denylist (приоритет выше allow)
    "load": { "paths": ["~/my-plugin"] },
    "entries": {
      "voice-call": { "enabled": true, "config": { "provider": "twilio" } }
    }
  }
}
Валидация конфига строгая: неизвестные plugin id в entries, allow, deny или slots трактуются как ошибки. Конфиг плагина валидируется по JSON Schema из манифеста openclaw.plugin.json.

Plugin Slots (эксклюзивные категории)

Некоторые категории плагинов являются эксклюзивными — только один плагин может быть активен в слоте одновременно. Например, для memory-слота можно выбрать между memory-core и memory-lancedb, либо отключить слот через "none". Это важно, если ты, скажем, хочешь подключить свой vector store для long-term memory агента.

Ключевые возможности

Agent Tools — плагин может регистрировать инструменты, которые агент вызывает в ходе inference. Это аналог function calling: агент видит описание tool’а и может его дёрнуть. Messaging Channels — можно зарегистрировать собственный канал (аналог WhatsApp/Telegram-интеграции). Нужно реализовать адаптеры: config.listAccountIds, config.resolveAccount, capabilities, outbound.sendText. Конфигурация канала живёт под channels.<id>, а не под plugins.entries. Provider Plugins — позволяют добавлять OAuth/API-key авторизацию для модельных провайдеров прямо внутри OpenClaw (через api.registerProvider(...)). Background Services — регистрация долгоживущих сервисов через api.registerService({ id, start, stop }). Plugin Hooks — плагин может поставлять event-driven хуки, которые регистрируются в runtime и видны в openclaw hooks list.

Дистрибуция

Плагины распространяются как отдельные npm-пакеты (рекомендуемый namespace — @openclaw/*). Установка через openclaw plugins install <npm-spec> использует npm pack, извлекает в ~/.openclaw/extensions/<id>/ и включает плагин в конфиге. При этом зависимости устанавливаются с флагом --ignore-scripts из соображений безопасности.

Безопасность

Плагины работают in-process с Gateway, поэтому их нужно рассматривать как trusted code. Рекомендуется использовать allowlist’ы (plugins.allow) и устанавливать только проверенные расширения.