> ## Documentation Index
> Fetch the complete documentation index at: https://ohmyclaw.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# Плагины

## 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:

```text theme={null}
{
  "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`) и устанавливать только проверенные расширения.
