EnglishРусский中文

Урок 4. Создание плагинов#

Зачем это нужно#

Плагин — это «дополнение» для OpenClaw, которое добавляет новые возможности: инструменты, каналы связи, команды. Если базовых функций не хватает, можно установить готовый плагин или создать свой. Это как приложения на телефоне — базовые функции есть, но App Store делает телефон по-настоящему полезным.

Что умеют плагины#

Плагины могут добавлять:

  • Инструменты для ассистента (например, голосовые звонки)
  • Каналы связи (новые мессенджеры)
  • Команды CLI (новые текстовые команды)
  • Фоновые службы (работают постоянно)
  • Навыки (skills — инструкции для ассистента)
  • Авто-ответы на слэш-команды (без вызова AI)

Установка готовых плагинов#

Посмотреть установленные#

openclaw plugins list

Установить из npm#

openclaw plugins install @openclaw/voice-call

Включить/выключить#

openclaw plugins enable voice-call
openclaw plugins disable voice-call

После изменений нужно перезапустить Gateway:

openclaw gateway restart

Официальные плагины#

Плагин Что делает
@openclaw/voice-call Голосовые звонки через Twilio
@openclaw/matrix Подключение к Matrix
@openclaw/msteams Microsoft Teams
@openclaw/nostr Децентрализованная сеть Nostr
@openclaw/zalouser Мессенджер Zalo

Манифест плагина#

Каждый плагин обязан иметь файл openclaw.plugin.json в корневой папке. Это «паспорт» плагина, который описывает, что он из себя представляет.

Минимальный манифест:

{
  "id": "my-plugin",
  "configSchema": {
    "type": "object",
    "additionalProperties": false,
    "properties": {}
  }
}

Расширенный вариант:

{
  "id": "my-plugin",
  "name": "Мой плагин",
  "description": "Добавляет полезные функции",
  "version": "1.0.0",
  "configSchema": {
    "type": "object",
    "additionalProperties": false,
    "properties": {
      "apiKey": { "type": "string" }
    }
  },
  "uiHints": {
    "apiKey": { "label": "API Ключ", "sensitive": true }
  }
}

Обязательные поля:

  • id — уникальное имя плагина
  • configSchema — JSON Schema для настроек (даже если настроек нет)

Необязательные поля:

  • name — отображаемое имя
  • description — краткое описание
  • kind — тип плагина (например, "memory")
  • channels — какие каналы регистрирует
  • skills — папки с навыками

Структура простого плагина#

my-plugin/
├── openclaw.plugin.json    ← манифест (обязательно)
├── index.ts                ← код плагина
└── package.json            ← зависимости (если нужны)

Пример кода (index.ts)#

Самый простой плагин — добавляет команду:

export default function(api) {
  // Регистрируем слэш-команду
  api.registerCommand({
    name: "ping",
    description: "Проверка работы плагина",
    handler: () => ({
      text: "Pong! Плагин работает 🎉"
    })
  });
}

Плагин с инструментом для ассистента#

export default function(api) {
  // Регистрируем RPC-метод (удалённый вызов)
  api.registerGatewayMethod("myplugin.weather", ({ respond }) => {
    respond(true, { temperature: 22, city: "Moscow" });
  });
}

Плагин с фоновой службой#

export default function(api) {
  api.registerService({
    id: "my-monitor",
    start: () => api.logger.info("Мониторинг запущен"),
    stop: () => api.logger.info("Мониторинг остановлен")
  });
}

Как добавить плагин в OpenClaw#

Вариант 1: Локальный плагин#

Положите файлы в папку расширений:

~/.openclaw/extensions/my-plugin/
├── openclaw.plugin.json
└── index.ts

OpenClaw найдёт его автоматически.

Вариант 2: Через конфигурацию#

{
  plugins: {
    enabled: true,
    load: {
      paths: ["~/Projects/my-plugin"]
    },
    entries: {
      "my-plugin": {
        enabled: true,
        config: {
          apiKey: "ваш-ключ"
        }
      }
    }
  }
}

Вариант 3: Установка из файла#

openclaw plugins install ./path/to/my-plugin
openclaw plugins install ./plugin.zip

Порядок поиска плагинов#

OpenClaw ищет плагины в таком порядке (первый найденный побеждает):

  1. Пути из plugins.load.paths
  2. <workspace>/.openclaw/extensions/
  3. ~/.openclaw/extensions/
  4. Встроенные расширения (выключены по умолчанию)

Безопасность плагинов#

⚠️ Плагины работают внутри Gateway — у них полный доступ. Устанавливайте только те, которым доверяете.

Для ограничения используйте списки:

{
  plugins: {
    allow: ["voice-call", "my-plugin"],  // только эти
    deny: ["untrusted-plugin"]            // эти запрещены
  }
}

Диагностика#

openclaw plugins list      # что установлено
openclaw plugins info my-plugin  # детали плагина
openclaw plugins doctor    # проверка на ошибки

Итоги урока#

  • Плагин — это модуль, расширяющий возможности OpenClaw
  • Каждый плагин обязан иметь манифест openclaw.plugin.json
  • Плагины могут добавлять команды, инструменты, каналы и фоновые службы
  • Устанавливайте через openclaw plugins install или кладите в папку расширений
  • Плагины работают внутри Gateway — доверяйте только проверенным
  • Используйте openclaw plugins doctor для проверки проблем