Развертывание и настройка AI-платформы OpenClaw

Практический курс по установке и настройке self-hosted платформы OpenClaw на собственном сервере. Вы научитесь создавать AI-агентов, подключать Telegram-ботов, управлять памятью и автоматизировать бизнес-задачи с помощью суб-агентов.

Развертывание OpenClaw на сервере

Развертывание OpenClaw на сервере

OpenClaw — это self-hosted AI-платформа, которая работает как центральный «мозг» для автоматизации бизнес-процессов. В отличие от облачных SaaS-решений, она разворачивается на собственном виртуальном сервере (VPS) и позволяет полностью контролировать данные, логику и доступы. Платформа не запускает тяжелые нейросети локально, а выступает умным шлюзом: она принимает запросы, обогащает их контекстом из памяти, применяет специфичные навыки и отправляет к внешним провайдерам (Anthropic, OpenAI, Gemini).

Архитектура платформы

Для успешного развертывания необходимо понимать, из каких логических блоков состоит система и как они взаимодействуют между собой на уровне сервера.

  • Gateway (Шлюз) — основной серверный процесс, написанный на Node.js. Он управляет всеми потоками данных, маршрутизирует запросы и контролирует жизненный цикл агентов.
  • Workspace (Рабочая область) — физическая директория на жестком диске сервера, где хранятся файлы, базы знаний, логи задач и вложения. Это долгосрочная память агента, к которой он может обращаться в будущих сессиях.
  • Skills (Навыки) — папка с конфигурационными файлами и кодом, которые расширяют возможности агента. Навыки описывают, как именно ИИ должен реагировать на определенные триггеры.
  • Channels (Каналы) — интерфейсы взаимодействия с внешним миром, такие как Telegram-боты, веб-чаты или интеграции с внешними API.
  • Sub-agents (Суб-агенты) — дочерние процессы, которые главный агент запускает для выполнения узких, рутинных задач (например, массовой генерации контента или парсинга данных).

Подготовка виртуального сервера (VPS)

Поскольку OpenClaw работает как оркестратор и не выполняет локальный инференс (генерацию текста) тяжелых моделей, требования к серверу остаются умеренными. Вся тяжелая вычислительная работа делегируется API-провайдерам.

Рекомендуемые параметры VPS:

  • Операционная система: Ubuntu 22.04 LTS
  • Процессор: 2 vCPU
  • Оперативная память: 4 ГБ RAM
  • Накопитель: 20+ ГБ SSD
  • Сеть: Публичный IPv4-адрес и привязанный к нему домен (A-запись в DNS)

Аренда сервера с такими характеристиками у популярных хостинг-провайдеров обойдется примерно в 5–10 долл. в месяц. Этого ресурса хватит для стабильной работы шлюза, базы данных и нескольких десятков активных суб-агентов.

После покупки сервера необходимо подключиться к нему по протоколу SSH от имени пользователя (например, ubuntu) и выполнить базовую настройку.

Обновление пакетов системы:

sudo apt update && sudo apt upgrade -y

На этом этапе строго рекомендуется настроить базовый брандмауэр (например, UFW), разрешив только необходимые порты: 22 для SSH, 80 и 443 для веб-трафика. Внутренние порты приложения лучше не выставлять наружу напрямую, а скрыть за обратным прокси-сервером.

Установка через Docker и настройка сети

Самый надежный и масштабируемый способ развертывания OpenClaw — использование Docker. Этот подход изолирует приложение от операционной системы, решает проблему зависимостей и упрощает обновление.

Шаг 1. Установка Docker

Выполните последовательность команд для установки актуальной версии Docker из официального репозитория:

sudo apt install -y ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

Чтобы запускать контейнеры без прав суперпользователя, добавьте текущего пользователя в группу docker:

sudo usermod -aG docker $USER
newgrp docker

Шаг 2. Создание структуры директорий

OpenClaw требует определенной структуры папок на сервере для хранения конфигурации, навыков и пользовательских данных. Эти папки будут проброшены внутрь Docker-контейнера.

mkdir -p ~/openclaw
mkdir -p ~/.openclaw/workspace
mkdir -p ~/.openclaw/skills
sudo chown -R $USER:$USER ~/openclaw ~/.openclaw

Директория ~/openclaw будет использоваться для хранения файлов запуска, а ~/.openclaw станет системной папкой самой платформы.

Для бизнеса крайне важно сразу структурировать workspace. Создайте внутри него подпапки: clients/, products/, scripts/. В дальнейшем вы сможете дать агенту инструкции, как именно он должен вести файлы, соблюдая форматы и правила именования.

Шаг 3. Настройка переменных окружения

Перейдите в рабочую директорию и создайте файл .env. В нем будут храниться чувствительные данные: пути к папкам и API-ключи.

cd ~/openclaw
nano .env

Пример содержимого файла .env:

OPENCLAW_CONFIG_DIR=/home/ubuntu/.openclaw
OPENCLAW_WORKSPACE_DIR=/home/ubuntu/.openclaw/workspace
OPENCLAW_GATEWAY_TOKEN=super-secret-gateway-token
CLAUDE_AI_SESSION_KEY=your_claude_key
OPENAI_API_KEY=your_openai_key

Хранение ключей в файле .env — золотой стандарт безопасности. Никогда не вписывайте API-ключи напрямую в код или конфигурационные файлы, которые могут быть случайно закоммичены в Git или переданы третьим лицам.

Шаг 4. Подготовка Docker Compose и обратного прокси

Для безопасной работы платформы (особенно при интеграции с Telegram, который требует HTTPS) необходимо использовать обратный прокси-сервер, например, Traefik или Nginx. В данном курсе мы рассмотрим конфигурацию с использованием внешней proxy-сети.

Сначала создадим общую сеть для контейнеров:

docker network create proxy

Затем создайте файл docker-compose.yml в директории ~/openclaw. Этот файл описывает параметры запуска шлюза OpenClaw и его интеграцию с маршрутизатором Traefik.

services:
  openclaw-gateway:
    container_name: openclaw
    image: ${OPENCLAW_IMAGE:-openclaw:local}
    environment:
      HOME: /home/node
      TERM: xterm-256color
      OPENCLAW_GATEWAY_TOKEN: ${OPENCLAW_GATEWAY_TOKEN}
      CLAUDE_AI_SESSION_KEY: ${CLAUDE_AI_SESSION_KEY}
      OPENAI_API_KEY: ${OPENAI_API_KEY}
    volumes:
      - ${OPENCLAW_CONFIG_DIR}:/home/node/.openclaw
      - ${OPENCLAW_WORKSPACE_DIR}:/home/node/.openclaw/workspace
    init: true
    restart: unless-stopped
    command: ["node", "dist/index.js", "gateway", "--bind", "lan", "--port", "18789"]
    networks:
      - proxy
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.openclaw.rule=Host(`YOUR_DOMAIN_NAME`)"
      - "traefik.http.routers.openclaw.entrypoints=websecure"
      - "traefik.http.routers.openclaw.tls.certresolver=myresolver"
      - "traefik.http.services.openclaw.loadbalancer.server.port=18789"

networks:
  proxy:
    external: true

В этом конфигурационном файле директива volumes связывает папки на вашем сервере с папками внутри изолированного контейнера. Блок labels указывает Traefik автоматически получить SSL-сертификат и направлять трафик с вашего домена на внутренний порт 18789.

Базовая конфигурация API и суб-агентов

Основной конфигурационный файл платформы хранится по пути ~/.openclaw/config.json5. Если он не существует, создайте его вручную. В нем прописываются провайдеры нейросетей, дефолтные модели для главного агента и настройки для суб-агентов.

Пример базового конфига config.json5:

{
  models: {
    defaultProvider: "anthropic",
    providers: {
      anthropic: {
        apiKey: "CLAUDE_AI_SESSION_KEY"
      },
      openai: {
        apiKey: "OPENAI_API_KEY"
      }
    }
  },
  agents: {
    defaults: {
      subagents: {
        model: "openai",
        maxSpawnDepth: 2
      }
    }
  }
}

Параметр maxSpawnDepth контролирует максимальную глубину вложенности суб-агентов.

  • Глубина 0: Главный агент (ваш персональный ИИ).
  • Глубина 1: Суб-агент оркестратор (может запускать других агентов, если maxSpawnDepth≥2maxSpawnDepth \geq 2).
  • Глубина 2: Суб-суб-агент (линейный исполнитель, не может создавать новых агентов).

Назначение более дешевой и быстрой модели (например, от OpenAI) для суб-агентов позволяет существенно экономить бюджет при выполнении массовых задач, таких как анализ сотен логов или генерация однотипного контента.

Интеграция с Telegram

Для автоматизации взаимодействия с клиентами или сотрудниками необходимо подключить Telegram-канал.

  1. В Telegram найдите бота @BotFather и создайте нового бота командой /newbot.
  2. Скопируйте полученный токен.
  3. Откройте файл ~/.openclaw/config.json5 и добавьте блок каналов:
{
  channels: {
    telegram: {
      enabled: true,
      botToken: "YOUR_BOT_TOKEN_HERE",
      dmPolicy: "pairing"
    }
  }
}

Режимы политики доступа (dmPolicy) определяют, кто может общаться с вашим ботом:

  • pairing — каждый новый пользователь должен быть одобрен администратором (самый безопасный вариант для корпоративного использования).
  • allowlist — бот отвечает только заранее разрешенным пользователям.
  • open — бот отвечает абсолютно всем.

Навыки (Skills) и Память

Навыки — это расширения мозга агента. Они лежат в каталоге ~/.openclaw/skills и доступны всем агентам на сервере, включая суб-агентов.

Пример простого текстового навыка lead_qualifier.json5:

{
  id: "lead_qualifier",
  name: "Lead Qualifier",
  description: "Помогает квалифицировать лидов по скрипту BANT.",
  instructions: [
    "Задавай вопросы, чтобы оценить Budget, Authority, Need, Timing.",
    "Результат выдавай в формате JSON с полями budget, authority, need, timing, score."
  ]
}

Агент читает этот навык при старте сессии. Навыки могут взаимодействовать с памятью (workspace). Например, после квалификации лида агент может сохранить сгенерированный JSON-отчет в папку ~/.openclaw/workspace/clients/, чтобы в будущем другой суб-агент мог проанализировать эту информацию и составить персонализированное коммерческое предложение.

Запуск и управление через CLI

Для запуска платформы выполните команду в директории ~/openclaw:

docker compose up -d

Флаг -d означает запуск в фоновом режиме. Для управления сервером используется встроенный интерфейс командной строки (CLI).

Полезные команды для администрирования:

  • openclaw channels status — выводит текущий статус подключенных каналов.
  • openclaw pairing list telegram — показывает список пользователей, ожидающих одобрения (при режиме pairing).
  • openclaw pairing approve telegram — одобряет запросы пользователей.
  • openclaw logs --follow — запускает трансляцию логов системы в реальном времени.
  • openclaw gateway restart — мягко перезапускает шлюз. Эту команду необходимо выполнять каждый раз после внесения изменений в файл config.json5 или добавления новых навыков.

Развернутая таким образом платформа полностью готова к работе. Все данные надежно хранятся на вашем сервере, а вычислительные мощности гибко масштабируются за счет использования облачных API-провайдеров.

Настройка агентов и Telegram-бота

Настройка агентов и Telegram-бота

После успешного развертывания платформы на виртуальном сервере система работает в фоновом режиме, но пока изолирована от внешнего мира. Чтобы превратить OpenClaw в полноценного бизнес-ассистента, необходимо настроить каналы связи, обучить систему специфическим навыкам, организовать структуру памяти и настроить делегирование задач.

Подключение Telegram-канала

Каналы (channels) — это интерфейсы, через которые пользователи взаимодействуют с вашим главным агентом. Telegram является наиболее удобным каналом для управления платформой с мобильного телефона.

Для интеграции потребуется создать нового бота через официального бота-управленца в Telegram.

  1. Найдите в поиске Telegram пользователя @BotFather.
  2. Отправьте команду /newbot и следуйте инструкциям для выбора имени и уникального адреса (username).
  3. Скопируйте полученный HTTP API токен (строка вида 1234567890:ABC-DEF...).

Теперь этот токен нужно передать в конфигурацию OpenClaw. Подключитесь к вашему серверу по SSH, откройте файл конфигурации ~/.openclaw/config.json5 и добавьте или отредактируйте блок channels:

{
  channels: {
    telegram: {
      enabled: true,
      botToken: "ВАШ_ТОКЕН_ОТ_BOTFATHER",
      dmPolicy: "pairing"
    }
  }
}

Политики доступа (dmPolicy)

Параметр dmPolicy критически важен для безопасности. Поскольку платформа использует платные API внешних нейросетей (например, OpenAI или Anthropic), открытый доступ к боту может привести к неконтролируемым расходам.

Режим Описание Сценарий использования
pairing Каждый новый пользователь должен отправить запрос на общение, который одобряется администратором через консоль сервера. Корпоративный бот для сотрудников, личный ассистент. Самый безопасный вариант.
allowlist Бот отвечает только тем пользователям, чьи ID заранее прописаны в конфигурационном файле. Закрытые системы с фиксированным списком пользователей, который редко меняется.
open Бот отвечает любому пользователю, который напишет ему сообщение. Публичные боты поддержки (требует жесткого контроля лимитов токенов).

После сохранения файла конфигурации необходимо перезапустить шлюз, чтобы изменения вступили в силу. Выполните в терминале сервера команду:

openclaw gateway restart

Если вы выбрали режим pairing, напишите своему новому боту любое сообщение в Telegram. Бот не ответит сразу. Вернитесь в терминал сервера и введите:

openclaw pairing list telegram

Вы увидите список ожидающих запросов с вашим Telegram ID. Одобрите запрос командой:

openclaw pairing approve telegram

Теперь ваш главный агент готов к диалогу.

Навыки (Skills): расширение возможностей агента

По умолчанию агент обладает только базовой эрудицией языковой модели. Чтобы он мог выполнять специфические бизнес-задачи, ему нужны навыки (skills).

Навык — это конфигурационный файл, который содержит инструкции, правила поведения и, при необходимости, код для работы с внешними API. Все навыки хранятся в директории ~/.openclaw/skills и доступны всем агентам на сервере.

Рассмотрим создание навыка для квалификации лидов по методологии BANT (Budget, Authority, Need, Timing). Создайте файл ~/.openclaw/skills/lead_qualifier.json5:

{
  id: "lead_qualifier",
  name: "Lead Qualifier",
  description: "Помогает квалифицировать лидов по скрипту BANT.",
  instructions: [
    "Ты — менеджер по продажам. Твоя цель — квалифицировать клиента.",
    "Задавай вопросы последовательно, чтобы выяснить: Budget (бюджет), Authority (полномочия), Need (потребность), Timing (сроки).",
    "Не задавай все вопросы сразу. Веди естественный диалог.",
    "По завершении диалога сформируй результат в формате JSON и сохрани его в рабочую область."
  ]
}

Навыки работают как подключаемые модули памяти. Когда пользователь просит агента «квалифицируй этого клиента», агент сканирует доступные навыки, находит lead_qualifier, читает его инструкции и временно меняет свою модель поведения в соответствии с ними.

Организация памяти (Workspace)

Рабочая область (workspace) — это долгосрочная память платформы. Физически это папка ~/.openclaw/workspace на жестком диске вашего сервера. В отличие от контекстного окна нейросети, которое очищается после завершения сессии, данные в рабочей области хранятся постоянно.

Для эффективной работы бизнеса структуру рабочей области нужно продумать заранее. Создайте внутри нее логические директории:

  • clients/ — для хранения карточек клиентов и истории взаимодействий.
  • products/ — для прайс-листов, описаний товаров и инструкций.
  • scripts/ — для регламентов и сценариев продаж.

Агент умеет самостоятельно читать и записывать файлы в эти папки. Например, если вы загрузите в папку products/ PDF-файл с каталогом ваших товаров, агент сможет обращаться к нему при ответах на вопросы клиентов в Telegram.

Иерархия суб-агентов

Главный агент (ваш персональный ИИ) отлично справляется с диалогом, но для выполнения объемных, рутинных или параллельных задач он использует суб-агентов (sub-agents).

Суб-агент — это изолированный дочерний процесс. Главный агент ставит ему конкретную задачу, передает нужные навыки и ждет результата. Это позволяет не засорять контекст основной беседы промежуточными вычислениями.

Глубина вложенности суб-агентов контролируется параметром maxSpawnDepth в файле config.json5:

  • Глубина 0 (Главный агент): Общается с пользователем, принимает глобальные решения.
  • Глубина 1 (Оркестратор): Запускается главным агентом. Может разбивать сложную задачу на части и запускать своих суб-агентов, если maxSpawnDepth≥2maxSpawnDepth \geq 2.
  • Глубина 2 (Линейный исполнитель): Выполняет узкую задачу (например, парсинг одного сайта) и возвращает результат наверх. Не может создавать новых агентов.

Экономика суб-агентов

Использование флагманских моделей (например, Claude 3.5 Sonnet или GPT-4o) для рутинных задач экономически нецелесообразно. OpenClaw позволяет назначить для суб-агентов более дешевые и быстрые модели.

Добавьте в ~/.openclaw/config.json5 следующие настройки:

{
  agents: {
    defaults: {
      subagents: {
        model: "openai", // Использование провайдера OpenAI
        maxSpawnDepth: 2,
        runTimeoutSeconds: 300
      }
    }
  }
}

При такой конфигурации главный агент может работать на мощной модели Anthropic, а сотни рутинных задач по сортировке данных будут выполняться суб-агентами на базе дешевой модели gpt-4o-mini от OpenAI. Это снижает расходы на API в десятки раз.

Практический сценарий: автоматизация контента

Рассмотрим, как все эти компоненты работают вместе на примере задачи по генерации контента для социальных сетей.

  1. Запрос в канал: Вы пишете своему боту в Telegram: «Подготовь контент-план на неделю для магазина кроссовок и напиши посты».
  2. Работа главного агента: Главный агент принимает запрос. Он обращается к Workspace (папка products/), чтобы вспомнить, какие кроссовки сейчас в наличии.
  3. Делегирование: Понимая, что написание 7 постов займет много времени и токенов, главный агент запускает Суб-агента (Глубина 1).
  4. Применение навыка: Суб-агенту передается инструкция: «Используй навык Content_Batch_Writer, возьми данные о товарах и сгенерируй 7 постов».
  5. Выполнение и сохранение: Суб-агент генерирует посты, используя дешевую модель. По завершении он сохраняет готовые тексты в виде Markdown-файла в workspace/campaigns/ и сообщает главному агенту об успехе.
  6. Ответ пользователю: Главный агент пишет вам в Telegram: «Посты готовы и сохранены в рабочей области. Хотите, чтобы я вывел их сюда для проверки?».

Такая архитектура превращает OpenClaw из простого чат-бота в полноценную операционную систему для бизнеса, где главный агент выступает в роли топ-менеджера, навыки заменяют должностные инструкции, а суб-агенты выполняют роль линейных сотрудников.

Управление памятью и навыки агентов

Управление памятью и навыки агентов

Ваш главный агент уже подключен к Telegram и готов к работе. Однако базовая языковая модель, какой бы мощной она ни была, обладает лишь общими знаниями и ограничена контекстным окном текущей беседы. Чтобы превратить OpenClaw в полноценную операционную систему для бизнеса, необходимо настроить три ключевых компонента: навыки (skills), рабочую область (workspace) и систему суб-агентов (sub-agents).

Навыки (Skills): специализация агента

Навыки — это расширения «мозга» агента. Они представляют собой конфигурационные файлы, содержащие специфические инструкции, правила поведения и, при необходимости, код для взаимодействия с внешними API.

Все навыки хранятся в директории ~/.openclaw/skills на вашем сервере. Они доступны всем агентам в системе. Когда начинается новая сессия или ставится задача, агент может прочитать нужный навык и временно изменить свою модель поведения.

Рассмотрим создание навыка для квалификации лидов по методологии BANT (Budget, Authority, Need, Timing). Создайте файл ~/.openclaw/skills/lead_qualifier.json5:

{
  id: "lead_qualifier",
  name: "Lead Qualifier",
  description: "Помогает квалифицировать лидов по скрипту BANT.",
  instructions: [
    "Ты — менеджер по продажам. Твоя цель — квалифицировать клиента.",
    "Задавай вопросы последовательно, чтобы выяснить: Budget (бюджет), Authority (полномочия), Need (потребность), Timing (сроки).",
    "Не задавай все вопросы сразу. Веди естественный диалог.",
    "По завершении диалога сформируй результат в формате JSON и сохрани его в рабочую область."
  ]
}

Навык работает как должностная инструкция. Вы можете создать отдельные навыки для обработки заказов (order_processor), ответов на частые вопросы (faq_support) или обновления данных в CRM (crm_updater).

Рабочая область (Workspace): долгосрочная память

Контекстное окно нейросети ограничено. Если вы обсуждали с ботом проект месяц назад, в новой сессии он этого не вспомнит. Для решения этой проблемы OpenClaw использует рабочую область — физическую директорию на диске сервера, обычно расположенную по пути ~/.openclaw/workspace.

Рабочая область — это долгосрочная память платформы. Агенты могут читать оттуда файлы, анализировать их и записывать новые данные.

Для эффективной работы бизнеса структуру рабочей области нужно спроектировать заранее. Создайте внутри нее логические папки:

  • clients/ — для хранения карточек клиентов (например, в формате Markdown или JSON) и истории взаимодействий.
  • products/ — для прайс-листов, описаний товаров и инструкций.
  • scripts/ — для регламентов и сценариев продаж.
  • campaigns/ — для хранения сгенерированного контента и маркетинговых материалов.

Если вы загрузите в папку products/ PDF-файл с каталогом товаров, агент сможет обращаться к нему при ответах на вопросы клиентов, опираясь на актуальные данные вашего бизнеса, а не на галлюцинации нейросети.

Иерархия суб-агентов

Главный агент отлично справляется с ведением диалога, но что произойдет, если вы попросите его: «Проанализируй 100 отзывов клиентов и составь сводный отчет»? Если он начнет делать это в основном потоке, диалог заблокируется, а контекстное окно быстро переполнится.

Для таких задач используются суб-агенты. Суб-агент — это изолированный дочерний процесс с собственным контекстом. Главный агент ставит ему задачу, передает нужные навыки и ждет результата.

Глубина вложенности контролируется параметром maxSpawnDepth в конфигурации.

Глубина Роль Описание Способность создавать агентов
0 Главный агент Общается с пользователем, принимает глобальные решения. Да
1 Оркестратор Запускается главным агентом. Может разбивать сложную задачу на части. Да (если maxSpawnDepth≥2maxSpawnDepth \geq 2)
2 Линейный исполнитель Выполняет узкую задачу (например, парсинг одного сайта). Нет

Экономика токенов

Использование флагманских моделей (например, Claude 3.5 Sonnet или GPT-4o) для рутинных задач экономически нецелесообразно. OpenClaw позволяет назначить для суб-агентов более дешевые и быстрые модели.

Откройте файл ~/.openclaw/config.json5 и добавьте настройки для суб-агентов:

{
  agents: {
    defaults: {
      subagents: {
        model: "openai", // Использование провайдера OpenAI
        maxSpawnDepth: 2,
        runTimeoutSeconds: 300
      }
    }
  }
}

При такой конфигурации главный агент может работать на мощной и дорогой модели, а сотни рутинных задач по сортировке данных будут выполняться суб-агентами на базе дешевой модели (например, gpt-4o-mini). Это снижает расходы на API в десятки раз.

Практический сценарий: автоматизация контента

Рассмотрим, как навыки, память и суб-агенты работают вместе на примере задачи по генерации контента.

  1. Запрос: Вы пишете главному агенту в Telegram: «Подготовь контент-план на неделю для магазина кроссовок и напиши посты».
  2. Обращение к памяти: Главный агент обращается к Workspace (папка products/), чтобы проверить, какие кроссовки сейчас в наличии.
  3. Делегирование: Понимая объем задачи, главный агент запускает суб-агента (Глубина 1).
  4. Применение навыка: В стартовом промпте суб-агенту передается инструкция: «Используй навык Content_Batch_Writer, возьми данные о товарах и сгенерируй 7 постов».
  5. Выполнение: Суб-агент генерирует посты, используя дешевую модель, и сохраняет готовые тексты в виде Markdown-файла в директорию workspace/campaigns/.
  6. Отчет: Суб-агент сообщает главному агенту об успехе. Главный агент пишет вам в Telegram: «Посты готовы и сохранены в рабочей области. Вывести их сюда для проверки?».

Работа с суб-агентами

Работа с суб-агентами

Главный агент вашей платформы OpenClaw — это мощный инструмент, способный вести осмысленный диалог, анализировать запросы и обращаться к долгосрочной памяти. Однако при масштабировании бизнес-процессов возникает фундаментальная проблема: базовая языковая модель обрабатывает задачи последовательно. Если вы поручите главному агенту проанализировать базу из тысячи клиентов, он заблокирует основной поток диалога в Telegram на несколько часов, а его контекстное окно быстро переполнится лишними данными.

Для решения этой проблемы архитектура OpenClaw включает суб-агентов (sub-agents). Это изолированные дочерние процессы, которые запускаются главным агентом для выполнения конкретных, часто рутинных или ресурсоемких задач в фоновом режиме.

Иерархия и модель глубины

Суб-агенты работают по принципу древовидной иерархии. Главный агент выступает в роли менеджера проекта: он декомпозирует сложную задачу, создает под нее исполнителей, раздает им инструкции и ожидает итоговый результат.

Глубина этой иерархии строго контролируется системой, чтобы предотвратить бесконечное создание процессов (так называемый agent bomb). За это отвечает параметр конфигурации maxSpawnDepth.

Рассмотрим распределение ролей в зависимости от уровня вложенности:

Глубина Системная роль Описание и полномочия Способность создавать агентов
0 Главный агент Точка входа. Общается с пользователем через каналы (например, Telegram), принимает глобальные решения. Да
1 Оркестратор Запускается главным агентом. Управляет сложным процессом, разбивая его на мелкие шаги. Да (если maxSpawnDepth≥2maxSpawnDepth \geq 2)
2 Линейный исполнитель Выполняет узкую, атомарную задачу (парсинг конкретного сайта, генерация одного текста). Нет (при maxSpawnDepth=2maxSpawnDepth = 2)

Если параметр maxSpawnDepth=1maxSpawnDepth = 1, то главный агент сможет создавать только линейных исполнителей, которые не имеют права делегировать свои задачи дальше. Для большинства задач малого бизнеса глубины 1 или 2 более чем достаточно.

Экономика токенов и конфигурация

Каждый суб-агент имеет собственный изолированный контекст. Это означает, что он не тянет за собой всю историю вашей переписки с главным агентом, а получает только ту информацию, которая необходима для выполнения конкретной задачи.

Главное преимущество такого подхода — экономика токенов. Использование флагманских моделей (таких как Claude 3.5 Sonnet или GPT-4o) для рутинных задач экономически нецелесообразно.

Представьте задачу: необходимо проанализировать 1000 отзывов клиентов и присвоить каждому тег тональности (позитивный/негативный). Один отзыв с инструкциями занимает около 200 токенов. Общий объем задачи — 200 000 токенов. Если эту задачу выполняет флагманская модель (стоимость около 15 долл. за 1 млн токенов), вы потратите 3 долл. Если же делегировать это суб-агенту на базе быстрой и дешевой модели (например, gpt-4o-mini со стоимостью 0,15 долл. за 1 млн токенов), задача обойдется всего в 0,03 долл. Разница в расходах составляет 100 раз.

Чтобы настроить эту логику, необходимо отредактировать основной конфигурационный файл платформы. Откройте файл ~/.openclaw/config.json5 на вашем сервере и добавьте блок настроек для суб-агентов:

{
  agents: {
    defaults: {
      subagents: {
        model: "openai:gpt-4o-mini",
        maxSpawnDepth: 2,
        runTimeoutSeconds: 600
      }
    }
  }
}

Разберем ключевые параметры:

  • model — указывает провайдера и конкретную модель, которая будет использоваться по умолчанию для всех дочерних процессов. Если указать неверное имя, система проигнорирует его и использует модель главного агента.
  • maxSpawnDepth — максимальная глубина вложенности, о которой мы говорили ранее.
  • runTimeoutSeconds — критически важный параметр безопасности. Он задает максимальное время жизни суб-агента в секундах. Если суб-агент зависнет (например, из-за сбоя внешнего API или зацикливания логики), через указанное время (в нашем примере — 10 минут) процесс будет принудительно завершен, а главный агент получит уведомление об ошибке.

После внесения изменений не забудьте перезапустить шлюз командой openclaw gateway restart.

Взаимодействие с навыками и памятью

Суб-агенты не имеют собственной отдельной директории для навыков (skills). Все навыки хранятся в общей папке ~/.openclaw/skills и доступны любому агенту в системе.

Связка происходит в момент создания дочернего процесса. Главный агент формирует так называемый стартовый промпт (spawn prompt). В этом промпте он передает суб-агенту контекст задачи и прямую инструкцию использовать определенный навык.

Что касается памяти, суб-агенты имеют полный доступ к рабочей области (workspace). Они могут читать файлы, подготовленные главным агентом, и записывать туда результаты своего труда. Чтобы суб-агенты не перезаписывали файлы друг друга при параллельной работе, в инструкциях навыка обычно прописывают правило использовать уникальные идентификаторы (UUID) или временные метки в названиях файлов.

Практический сценарий: Массовая генерация контента

Рассмотрим, как вся архитектура работает в реальном бизнес-сценарии. Допустим, вы используете OpenClaw для управления контентом интернет-магазина. Ваш главный агент (назовем его Илон) подключен к Telegram.

  1. Постановка задачи: Вы пишете Илону в Telegram: «Подготовь 50 вариантов коротких постов для распродажи кроссовок на следующей неделе».
  2. Анализ и делегирование: Илон понимает, что генерация 50 постов займет много времени и забьет его контекст. Он принимает решение запустить суб-агента (назовем его Пиксель).
  3. Формирование промпта: Илон формирует стартовый промпт для Пикселя: «Твоя задача — сгенерировать 50 постов о распродаже кроссовок. Прочитай навык Content_Batch_Writer из общей базы, чтобы понять формат. Сохрани результат в файл workspace/campaigns/sneakers_sale_50.md».
  4. Фоновая работа: Пиксель запускается на дешевой модели (Глубина 1). Он читает навык, генерирует тексты и записывает их на диск. В это время Илон свободен и может продолжать отвечать на ваши другие вопросы в Telegram.
  5. Возврат результата: Завершив работу, Пиксель отправляет Илону системное сообщение: «Задача выполнена, файл сохранен».
  6. Отчет пользователю: Илон пишет вам в Telegram: «Посты готовы и лежат в рабочей области. Хотите, я выведу несколько примеров сюда?».

Отладка и мониторинг

Поскольку суб-агенты работают в фоновом режиме, вы не видите их диалогов в Telegram. Если задача не выполняется, вам необходимо заглянуть «под капот» системы.

Для этого используется интерфейс командной строки (CLI) на вашем VPS-сервере. Подключитесь по SSH и введите команду:

openclaw logs --follow

Эта команда запускает поток логов в реальном времени. Вы увидите события создания суб-агентов (Spawning sub-agent...), их обращения к файловой системе, чтение навыков и возможные ошибки API-провайдеров. Это главный инструмент администратора для контроля за тем, как ваша AI-платформа распределяет задачи и расходует бюджет.

Интеграция с API и автоматизация

Интеграция с API и автоматизация

Языковые модели сами по себе изолированы от внешнего мира. Они обладают огромной базой знаний, могут анализировать текст и вести диалог, но без дополнительных инструментов они не способны выполнить ни одного реального действия. Если клиент просит бота в Telegram отменить заказ, базовая модель может лишь вежливо ответить, что заказ отменен, хотя в реальности база данных магазина останется нетронутой.

Чтобы превратить OpenClaw из умного собеседника в полноценного цифрового сотрудника, платформу необходимо интегрировать с внешними сервисами. Это достигается через API (Application Programming Interface) — программный интерфейс, который позволяет двум независимым системам обмениваться данными по строгим правилам.

Архитектура активных навыков

В предыдущих материалах мы рассматривали навыки (skills) как текстовые инструкции, которые задают роль и правила поведения агента (например, квалификация лидов по методологии BANT). Однако архитектура OpenClaw позволяет встраивать в JSON-файлы навыков исполняемый код на языках JavaScript или TypeScript.

Когда агент принимает решение, что для ответа пользователю ему не хватает данных (например, нужно узнать статус доставки), он вызывает специальный инструмент (tool), описанный в навыке. OpenClaw выполняет прикрепленный к инструменту код, отправляет сетевой запрос к внешнему сервису, получает ответ и возвращает его агенту в текстовом виде. Только после этого агент формулирует итоговый ответ для пользователя.

Типичный активный навык состоит из трех логических блоков:

  1. Метаданные и инструкции: Описание того, что делает навык и в каких случаях его применять.
  2. Определение инструментов (Tools): Описание входных параметров, которые агент должен сгенерировать для вызова функции (например, номер заказа).
  3. Исполняемый код: Логика отправки HTTP-запроса и обработки ответа.

Создание навыка для работы с внешним API

Рассмотрим процесс создания навыка CRM_Updater, который будет автоматически добавлять квалифицированных лидов в вашу CRM-систему.

Для обмена данными в интернете чаще всего используется архитектура REST. Взаимодействие происходит через отправку запросов на определенные адреса (endpoints). В нашем случае мы будем отправлять POST-запрос, который содержит данные нового клиента.

Создайте файл ~/.openclaw/skills/crm_updater.json5 в рабочей директории вашего сервера:

{
  id: "crm_updater",
  name: "CRM Updater",
  description: "Добавляет нового клиента и его контактные данные в CRM-систему.",
  instructions: [
    "Используй этот навык только после того, как клиент сообщил свое имя, телефон и бюджет.",
    "Никогда не придумывай данные. Если чего-то не хватает, спроси пользователя."
  ],
  tools: [
    {
      name: "create_lead",
      description: "Отправляет данные лида в CRM",
      parameters: {
        type: "object",
        properties: {
          name: { type: "string", description: "Имя клиента" },
          phone: { type: "string", description: "Номер телефона в международном формате" },
          budget: { type: "number", description: "Ожидаемый бюджет в долларах" }
        },
        required: ["name", "phone", "budget"]
      },
      // Исполняемый код на JavaScript
      execute: async (args, context) => {
        const response = await fetch('https://api.your-crm.com/v1/leads', {
          method: 'POST',
          headers: {
            'Content-Type': 'application/json',
            'Authorization': `Bearer ${context.env.CRM_API_KEY}`
          },
          body: JSON.stringify({
            contact_name: args.name,
            phone_number: args.phone,
            estimated_value: args.budget
          })
        });

        if (!response.ok) {
          return `Ошибка CRM: ${response.statusText}`;
        }

        const data = await response.json();
        return `Успех! Лид создан. ID в системе: ${data.lead_id}`;
      }
    }
  ]
}

Разберем ключевые элементы этого кода:

  • Блок parameters использует стандарт JSON Schema. Он жестко задает агенту, какие данные он обязан извлечь из диалога перед вызовом функции. Если агент попытается вызвать create_lead без номера телефона, система выдаст ошибку и заставит агента исправить запрос.
  • Функция execute содержит стандартный JavaScript-код с использованием встроенного метода fetch для сетевых запросов.
  • Обратите внимание на конструкцию context.env.CRM_API_KEY. Это критически важный аспект безопасности.

Безопасность и управление ключами

API-ключи — это пароли, которые дают программный доступ к вашим сервисам (CRM, платежным шлюзам, email-рассылкам). Если злоумышленник получит ваш ключ от сервиса рассылок, он сможет отправить миллионы спам-писем за ваш счет.

Никогда не прописывайте API-ключи открытым текстом внутри файлов навыков. Навыки часто копируются, передаются между серверами или загружаются в системы контроля версий (Git), что приводит к утечке данных.

В OpenClaw реализован механизм безопасного проброса переменных окружения. Все секретные ключи должны храниться в файле .env в корневой директории установки (там же, где находится docker-compose.yml).

Пример добавления ключа в .env:

OPENCLAW_GATEWAY_TOKEN=super-secret-gateway-token
CLAUDE_AI_SESSION_KEY=your_claude_key
OPENAI_API_KEY=your_openai_key
# Добавляем наш ключ для CRM
CRM_API_KEY=sk_live_1234567890abcdef

Чтобы этот ключ стал доступен внутри навыка через объект context.env, его необходимо пробросить внутрь Docker-контейнера. Для этого отредактируйте файл docker-compose.yml, добавив новую переменную в блок environment:

services:
  openclaw-gateway:
    environment:
      - OPENCLAW_GATEWAY_TOKEN=${OPENCLAW_GATEWAY_TOKEN}
      - CLAUDE_AI_SESSION_KEY=${CLAUDE_AI_SESSION_KEY}
      - OPENAI_API_KEY=${OPENAI_API_KEY}
      - CRM_API_KEY=${CRM_API_KEY} # Проброс ключа в контейнер

После изменения конфигурации необходимо пересоздать контейнер командой docker compose up -d.

Контроль нагрузки (Rate Limiting)

При автоматизации бизнес-процессов важно учитывать ограничения внешних API-провайдеров. Большинство сервисов имеют лимиты на количество запросов в единицу времени.

Например, если ваша CRM разрешает не более 60 запросов в минуту, это можно выразить неравенством R≤60R \leq 60, где RR — количество запросов. Если OpenClaw попытается отправить 61 запрос, сервер CRM вернет ошибку с кодом 429 (Too Many Requests).

Особенно часто эта проблема возникает при использовании суб-агентов. Если главный агент запустит 100 суб-агентов для параллельной проверки статусов заказов, они могут мгновенно исчерпать лимит API. Чтобы избежать этого, в логику навыка (в блок execute) добавляют механизмы задержки или используют очереди задач.

Оркестрация бизнес-процессов: Полный цикл

Теперь, когда мы понимаем, как работают каналы (Telegram), память (Workspace), суб-агенты и API-навыки, мы можем спроектировать сложный, полностью автономный бизнес-процесс.

Представьте сценарий: клиент пишет в Telegram-бот интернет-магазина с просьбой оформить возврат товара.

Участник Действие в системе OpenClaw
Пользователь Пишет в Telegram: «Хочу вернуть кроссовки из заказа #4092, они мне малы».
Главный агент Принимает сообщение. Анализирует намерение (возврат). Понимает, что процесс возврата требует проверки данных и работы с API.
Главный агент Создает суб-агента (глубина 1) с инструкцией: «Обработай возврат заказа #4092. Используй навык Order_Processor. Результат запиши в лог».
Суб-агент Читает навык Order_Processor. Вызывает JS-функцию get_order_status, отправляя GET-запрос в API магазина.
Внешний API Возвращает JSON: {"status": "delivered", "days_since_delivery": 5, "item": "sneakers"}.
Суб-агент Анализирует ответ. Видит, что прошло 5 дней (возврат разрешен). Вызывает вторую JS-функцию create_return_ticket, отправляя POST-запрос в CRM.
Внешний API Возвращает номер заявки на возврат: RET-991.
Суб-агент Сохраняет отчет в файл workspace/returns/RET-991.md и завершает свою работу, передавая статус Главному агенту.
Главный агент Формирует человечный ответ и отправляет в Telegram: «Я оформил заявку на возврат (номер RET-991). Курьер свяжется с вами завтра».

В этом сценарии главный агент не блокируется на время ожидания ответов от серверов магазина и CRM. Он делегирует рутину суб-агенту, который использует дешевую LLM-модель, выполняет строгий алгоритм через API и сохраняет данные в долгосрочную память.

Отладка сетевых запросов

При настройке интеграций неизбежно возникают ошибки: неверный формат JSON, истекший токен авторизации или недоступность внешнего сервера. Поскольку суб-агенты работают в фоне, вы не увидите эти ошибки в Telegram.

Для мониторинга необходимо использовать интерфейс командной строки на вашем VPS. Подключившись по SSH, выполните команду:

openclaw logs --follow

В консоли в реальном времени будут отображаться все события системы. Если навык попытается выполнить API-запрос и получит ошибку, вы увидите подробный стек вызовов (stack trace) JavaScript. Это позволит быстро найти проблему: например, понять, что агент передал номер телефона в локальном формате вместо требуемого международного, и скорректировать инструкции в файле навыка.