Привет, Хабр. Меня зовут Саша Вартанян, я директор по маркетингу Битрикс24 и автор tg-канала «Вартанян в сингулярности и вокруг неё». Не разработчик, не тестировщик. Вообще не тот человек, от которого кто-нибудь ожидает постов на Хабр. Но я исторически читаю его уже лет 15 в ридонли, захотелось причаститься.
И вот я здесь, и у меня есть что-то реально полезное, чем я могу поделиться. Это skill для подключения AI-агентов (OpenClaw и не только) к Битрикс24 по уму, через REST API. Проект начался как эксперимент по вайб-кодингу выходного дня, но в конце стал адекватным решением, которое реально работает (сам удивился).
Расскажу, как это получилось, что внутри и почему это может быть полезно не только мне.
P.S. Статью писал на 90% я, а вот сам skill на 90% писали Codex и Claude. Поэтому не буду делать вид, что я мамкин программист – я просто иногда страдаю вайб-кодингом. Но думаю даже такая база, как создание скиллов для Openclaw, тоже будем кому-нибудь полезна
Последние пару лет я плотно слежу за AI-агентами – как простой пользователь и как человек, который думает, куда всё это катится с точки зрения бизнеса. Пишу много всяких философских эссе на эту тему, рассуждаю. Знаете, это та стадия, когда вот вроде всё понимаешь на уровне стратегии, а на уровне практики чувствуешь себя сапожником без сапог.
А потом в январе 2026-го случился OpenClaw. Не буду тут расписывать, что это за штука – все думаю, как минимум, сталкивались.
Ведь в чем весь прикол — OpenClaw тогда сможет стать, по сути, отдельным сотрудникам внутри Битрикс24. Его руками можно будет будет делать всякую крутую автоматизацию с использованием данных из других систем и сервисов, даже если у них еще нет готовых интеграций с Битрикс. Самое банальное — просто давать ему команды «подай-принеси» естественным языком, вроде «Поставь встречу на завтра на 15:00 с Сергеем Рыжиковым в любое свободное время». Либо что-нибудь помощнее – пробегаться по материалами на согласование, обогащать лиды данными или тянуть отчеты из веб-аналитики на нормальном русском языке.
У нас есть REST API с кучей методов, есть вебхуки, есть OAuth. А OpenClaw вполне нормально работает с форматом skills. Пазл вроде бы складывается.
Проблема одна: я не разработчик. Ну, не совсем. Очень давно я писал что-то типа компонентов для сайтов, если очень надо было. И я в целом понимаю, как работает REST API, потому что много лет рядом с продуктом. Но у меня нет привычки писать тесты, я туплю в консоли и спрашиваю у GPT команды каждый раз, когда они мне нужны. Короче, я прям недоджун.
Зато у меня есть Claude, Codex и упрямство.
Для таких же как я гуманитариев – Skill в экосистеме OpenClaw (и совместимых агентов вроде Claude Code, Codex) – это по сути папка с файлами, которые AI читает, чтобы делать что-то не каждый раз с нуля, а по задуманным инструкциям. Ключевой файл – SKILL.md: в нем находятся YAML-метаданные плюс инструкции на естественном языке. К нему могут прилагаться справочные файлы, скрипты и что-нибудь еще.
Когда агент получает задачу, он смотрит в skill, находит там нужную информацию и действует по инструкции. Не ищет в интернете, не галлюцинирует название методов API, а берёт из проверенного источника.
Структура моего skill pack:
skills/bitrix24-agent/ SKILL.md # Точка входа: метаданные + инструкции references/ bitrix24.md # Auth, лимиты, ошибки, retry-логика packs.md # Индекс пакетов возможностей catalog-core.md # Методы: CRM, задачи, пользователи catalog-comms.md # Методы: чаты, боты, телефония catalog-automation.md # Методы: бизнес-процессы, роботы catalog-commerce.md # Методы: заказы, оплаты, каталог ... (ещё 8 каталогов) chains-core.md # Рецепты: цепочки вызовов для CRM chains-comms.md # Рецепты: цепочки для чатов ... scripts/ bitrix24_client.py # CLI-клиент с safety guardrails offline_sync_worker.py # Воркер для офлайн-событий agents/ openai.yaml # Конфиг для OpenAI-совместимых агентов
В моем случае основной вызов и общая идея в том, что агент не загружает всё разом. Он начинает с SKILL.md, который говорит «Вот твои возможности, вот индекс пакетов. Начни с core, остальное подключай по необходимости». Дальше – по запросу. Нужна работа с чатами? Подгружай catalog-comms.md. Нужна цепочка вызовов для создания сделки с привязкой контакта? Вот chains-core.md. И так далее.
Это принципиально важно. Контекстное окно – не бесконечное, а токены дорогие (сам напарывался). Если запихнуть в него всю документацию Битрикс24 REST API разом, агент начнёт тупить, путать методы и галлюцинировать параметры.
Полный REST API Битрикс24 – это сотни методов. Любому агенту бессмысленно знать их все одновременно. Поэтому я разбил всё на 12 пакетов:
|
Пакет |
Что внутри |
|---|---|
|
core |
CRM (лиды, сделки, контакты), задачи, пользователи, события, batch |
|
comms |
Чаты, чат-боты, сообщения, телефония |
|
automation |
Бизнес-процессы, роботы, шаблоны |
|
collab |
Рабочие группы, соцсеть, лента |
|
content |
Диск, файлы, документооборот |
|
boards |
Скрам, канбан-доски |
|
commerce |
Заказы, оплаты, доставки, каталог товаров |
|
services |
Бронирование, календарь, учёт рабочего времени |
|
platform |
AI-движки, хранилище сущностей, BI-коннектор |
|
sites |
Лендинги, сайты, страницы |
|
compliance |
Согласия, электронная подпись |
|
diagnostics |
Проверка методов, скоупов, совместимости |
Агент по умолчанию работает с core. Остальные пакеты подключаются явно – через CLI-параметр или переменную окружения:
# Только core (по умолчанию) python3 bitrix24_client.py crm.lead.list --params '{"select":["ID","TITLE"]}' # Core + чаты python3 bitrix24_client.py im.message.add \ --params '{"DIALOG_ID":"chat1","MESSAGE":"hello"}' --packs core,comms \ --confirm-write # Через переменную окружения export B24_PACKS="core,comms,automation"
Каждый каталог (например, catalog-core.md) – это таблица методов с кратким описанием, обязательными полями и скоупами. А chains-*.md – это рецепты: пошаговые цепочки вызовов для типовых сценариев. Например, «создать лида и сразу привязать к нему контакт» или «найти свободное время в календаре и создать встречу».
Для агента это как справочник по справочникам. Ему не нужно каждый раз изобретать последовательность API-вызовов – он берёт готовый рецепт и адаптирует под конкретный запрос.
Точка входа – bitrix24_client.py. Это обёртка над Rest с кучей встроенных ограждений. Агент сперва вызывает именно его, а не стучится в API напрямую.
Вот как выглядит простой read-вызов:
python3 bitrix24_client.py user.current --params '{}'
А вот запись – обратите внимание на --confirm-write:
python3 bitrix24_client.py crm.lead.add \ --params '{"fields":{"TITLE":"Demo Lead","NAME":"Agent"}}' \ --confirm-write
Без --confirm-write любой вызов на запись будет заблокирован. Это первый уровень защиты.
Второй уровень – двухфазное выполнение. Можно заставить агента сначала показать план, а выполнить только после отдельного подтверждения:
# Фаза 1: план python3 bitrix24_client.py crm.lead.add \ --params '{"fields":{"TITLE":"Plan demo"}}' \ --packs core \ --plan-only # Фаза 2: выполнение python3 bitrix24_client.py \ --execute-plan <plan_id> \ --confirm-write
Если хотите сделать это обязательным для всех записей:
export B24_REQUIRE_PLAN="1"
Что ещё есть:
Allowlist. Агент может вызвать только те методы, которые входят в подключённые пакеты. Метод не в пакете – отказ.
Idempotency-ключи. Защита от дублей при retry:
python3 bitrix24_client.py crm.lead.add \ --params '{"fields":{"TITLE":"Idempotent lead"}}' \ --confirm-write \ --idempotency-key "lead-source-123"
Rate limiter. Файловый, разделяемый между процессами:
export B24_RATE_LIMITER="file" export B24_RATE_LIMITER_RATE="2.0" export B24_RATE_LIMITER_BURST="10"
Это важно, потому что REST API Битрикс24 имеет лимиты на количество запросов. Если их превысить – получите 503. Rate limiter не даёт агенту «разогнаться» и упереться в ограничение.
Skill поддерживает два режима.
Webhook – для быстрого старта на одном портале. Создаёте вебхук в Битрикс24, указываете нужные скоупы, прописываете в .env:
export B24_DOMAIN="your-portal.bitrix24.ru" export B24_AUTH_MODE="webhook" export B24_WEBHOOK_USER_ID="1" export B24_WEBHOOK_CODE="your_secret"
OAuth – для мультипортальных сценариев и нормальной ротации токенов:
export B24_DOMAIN="your-portal.bitrix24.ru" export B24_AUTH_MODE="oauth" export B24_ACCESS_TOKEN="..." export B24_REFRESH_TOKEN="..." export B24_CLIENT_ID="..." exportB24_CLIENT_SECRET="..."
Я пишу своему OpenClaw в Telegram:
Поставь встречу с дизайн-командой на любое свободное время 18 февраля, на час.
Что делает агент:
Читает SKILL.md, понимает, что нужны пакеты core и services.
Подгружает chains-services.md, находит рецепт «создание события в календаре».
Вызывает calendar.event.get.nearest (или аналог – зависит от конфигурации) через bitrix24_client.py для поиска свободного окна.
Формирует план: «Создать событие "Встреча с дизайн-командой" 18.02, 14:00–15:00».
Показывает мне план в Telegram.
Я подтверждаю.
Агент выполняет calendar.event.add с --confirm-write.
Без открытия интерфейса, без перехода в календарь, без заполнения формы.
Другой пример ради кеков. Я отправил своего OpenClaw-ассистента в чат Битрикс24 пообщаться с Мартой – нашим встроенным AI-агентом. Они общались минут пять, что-то обсуждали, договаривались. Потом поставили задачу, мне. Два ИИ договорились между собой и поставили мне задачу.
Можно вообще делать много всяких прикольных вещей, все ограничивается фантазией:
«Какие новые лиды появились за последние сутки?» – агент делает crm.lead.list с фильтром по дате, возвращает список в чат.
«Напиши завтра в 9 утра Вове, чтобы он отправил отчёт» – агент ставит отложенное действие.
Обогащение карточек лидов: агент читает данные из CRM, делает AI-поиск по компании, дописывает информацию обратно.
Но на самом деле и это детский сад. Потому что обмазав Битрикс24 автоматизацией через AI с Openclaw можно воплощать в жизнь любые безумные сны про ваш бизнес, и это огонь!
Недавно у Битрикс24 появился MCP-сервер. Закономерный вопрос: зачем тогда отдельный skill?
Ответ: это другое.
MCP – протокол обнаружения. Агент через MCP может «разведать» доступные методы, поля, структуры данных. Это идеально для генерации кода и исследовательских запросов.
Skill – продакшен-рантайм. Агент не просто знает о методе, а знает, как его безопасно вызвать: с какими параметрами, в какой последовательности, с каким retry, с какими ограничениями.
Сам skill вроде и спроектирован с упором на безопасность – чтобы он не наделал делов. Но AI-бот на базе OpenClaw с выходом в интернет и полными правами внутри основного Битрикс24 вашей компании – так себе идейка. Я предупредил.
Практический минимум:
Начинайте с тестового портала, не с боевого.
Вебхуку – минимальные права. Не нужна телефония - не давайте лишний доступ.
Токены и вебхуки – в переменных окружения, не в коде, не в чатах, не в репозитории.
Помните про prompt injection: данные из CRM (описания лидов, комментарии) могут содержать вредоносы. Агент может их интерпретировать как команды.
Безопасное развёртывание самого OpenClaw – отдельная тема.
Используйте на свой страх и риск. Проект создан в ознакомительных целях.
Проект лежит на GitHub и опубликован на ClawHub. Забирайте, но сильно не ругайте.
Если вы работаете с Битрикс24 и AI-агентами – вам точно должно понравиться. Спасибо за внимание, если где накосячил и что-то надо улучшить – пишите.
Источник

![[Перевод] Я vs. машина](https://mexc-rainbown-activityimages.s3.ap-northeast-1.amazonaws.com/banner/F20250611171322267jYDo0LEq24FJKD.png)
