Статья написана на основе интервью с Андреем Бобковым, кофаундером и CTO QQ Coffee.

Мы обжариваем кофе высокого класса в Подмосковье, около 10 тонн в месяц. 90% продаж идёт в кофейни, рестораны и офисы, остальное через интернет-магазин и маркетплейсы. В команде 25 человек. Я пришёл в компанию как аккаунт-менеджер, работал с заказами и клиентами, а со временем взял на себя всю IT-часть.

Практически всё ведём в МоемСкладе, это ERP-система для малого и среднего бизнеса. Заказы, склад, производство, финансы, аналитика. За четыре года накопилось больше 150 тысяч документов, 3500 контрагентов и 3500 товаров.

Текущая статистика аккаунта МойСклад — уже 171 тысяча документов
Текущая статистика аккаунта МойСклад — уже 171 тысяча документов

Отдельно есть собственная система управления обжаркой, которая синхронизирует данные с МоимСкладом.

322 кг за один день — данные подтягиваются из МойСклад в реальном времени
322 кг за один день — данные подтягиваются из МойСклад в реальном времени

Но некоторые задачи всё равно требовали времени и ручной работы. Для кастомной аналитики нужно было обращаться к программистам. Быстро создать или изменить документ на ходу не всегда получалось. А шаблон печатной формы для отчёта проще было заказать у специалиста, чем разбираться самому.

Список заказов в МойСклад — каждый нужно открывать отдельно, чтобы получить нужные данные
Список заказов в МойСклад — каждый нужно открывать отдельно, чтобы получить нужные данные

Особенно остро это чувствовалось в работе менеджеров на выезде. Я сам через это прошёл, когда ещё был аккаунт-менеджером. Ездишь к клиентам на дегустации, помогаешь настраивать кофейный аппарат, и по дороге нужно быстро оформить заказ. Мобильное приложение не всегда удобно, интернет нестабильный, данные теряются. Возвращаешься в офис и начинаешь переспрашивать клиента.

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

Почему нельзя просто подключить ИИ к данным

Первое, что я попробовал, это дать ИИ прямой доступ к данным через MCP-протокол. MCP это что-то вроде универсального переходника между ИИ и внешними сервисами. Его разработала компания Anthropic, создатели ИИ-ассистента Claude. Суть простая: пользователь спрашивает, ИИ подключается к нужной системе, получает данные и отвечает. Но быстро выявились две проблемы.

Первая, объём. У языковых моделей есть ограничение на количество текста, которое они обрабатывают за раз. Это называется «окно контекста». Наши 150 тысяч документов туда не влезают даже частично. А сократить данные нельзя, они нужны для расчётов.

С арифметикой у ИИ проблемы
С арифметикой у ИИ проблемы

Вторая, арифметика. ИИ неверно считает, а потом ещё и убеждает, что всё корректно. Для языковых моделей числа это просто набор символов. Я несколько раз проверял результаты расчётов и находил ошибки, при этом модель уверенно говорила, что всё правильно. Если каждый раз перепроверять, это уже не оптимизация.

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

Мост к данным

Чтобы ИИ мог писать код для работы с МоимСкладом, ему нужен инструмент, который переведёт структуру данных на язык программирования.

У МоегоСклада есть API, то есть способ для других программ получать и менять данные. Заказы, остатки, контрагентов и всё остальное. API удобный, с ним приятно работать. Но одно дело получить данные, и другое, использовать их в коде. 

Наши программы написаны на TypeScript. Этот язык строго различает типы данных, не даёт перепутать число с текстом или дату с названием. А в МоёмСкладе сотни сущностей, полей и связей, и каждое поле должно быть правильно описано, чтобы код работал без ошибок. Вручную это поддерживать невозможно.

Поэтому я написал библиотеку moysklad-ts. По сути это переводчик: берёт всю модель данных МоегоСклада и делает её понятной для TypeScript. 

Саму библиотеку я написал ещё за год до ИИ-истории, просто для удобства разработки. Но когда появилась идея с ассистентом, она оказалась ключевой деталью. Агент-программист видит типизированную модель в библиотеке и понимает, как работать с МоимСкладом. Получился инструмент, одинаково понятный и человеку, и машине.

Библиотека открытая, лежит на GitHub и опубликована в npm. Любой может установить и использовать.

Как устроены агенты

Пользователь видит обычный чат. Пишет запрос, получает ответ. Но под капотом работает цепочка из трёх слоёв, и каждый нужно было не только построить, но и обучить.

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

Агент-оркестратор

Главный ассистент, к которому приходят все запросы. Его задача как у генерального директора: понять, что нужно пользователю, и передать задание нужному специалисту. Пишешь «привет, как дела», оркестратор просто отвечает. Пишешь «покажи последние 10 заказов», он понимает, что нужны данные из МоегоСклада, и вызывает агента-программиста.

Я подходил к его обучению как к онбордингу нового сотрудника. Пришёл человек, ничего не знает о кофе. Надо объяснить, чем занимаемся, какие отделы, какие процессы, какие IT-ресурсы используем. Загрузил функциональную структуру компании, внутренние документы для обучения и инфор��ацию о кофейной специфике. Мне хотелось сделать не просто чат-бота, а ассистента, который реально понимает, как устроена наша работа. Потому что насколько бы модель ни была продвинутой, без контекста бизнеса она бесполезна.

Агент-программист

Получив задачу от оркестратора, этот агент пишет код для получения и обработки данных, используя библиотеку moysklad-ts.

С его обучением было сложнее. Документация МоегоСклада это тысячи страниц, ни один агент не способен обработать всё разом. Поэтому я писал для него что-то вроде книги. На первой странице предисловие: МойСклад, российская ERP-система, сущности, заказ покупателя, счёт покупателя, платежи. Дальше оглавление со ссылками на подробности по каждой сущности.

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

Песочница

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

Cloudflare Sandbox позволяет безопасно запускать сгенерированный ИИ код
Cloudflare Sandbox позволяет безопасно запускать сгенерированный ИИ код

Настройка взаимодействия

Собрать архитектуру это полдела. Заставить агентов корректно работать вместе оказалось куда сложнее. Итераций было очень много. Даже формулировка слов влияет на результат. Пишешь оркестратору: «Никогда не обращайся к пользователю на ты». Он всё равно тыкает. Сидишь и думаешь, я же дал чёткую инструкцию, что не так.

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

Помимо веб-интерфейса я сделал Telegram-бот для работы на ходу. Функционал у него ограниченный, но для менеджеров это оказалось удобно: можно надиктовать голосовое сообщение с заказом прямо из такси.

Защита и отладка

Защита данных

Мы даём ИИ доступ к бизнес-данным. Понятно, что бесконтрольный доступ это плохая идея.

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

На практике это работает так. Менеджер пишет: «Создай заказ для такого-то контрагента с его обычными позициями, оформи на счёт в Альфа-банке». Агент сам находит контрагента, смотрит прошлые заказы, определяет обычные позиции, находит банковский счёт. Собирает всё и показывает результат. Такой клиент, такие позиции, сумма такая-то. Всё верно? Нажимаешь «Да», изменения вносятся. Без одобрения ничего не происходит.

Дополнительно помогает система аудита в МоёмСкладе, где видны все изменения по каждому аккаунту. Сейчас я работаю над тем, чтобы действия через ИИ-агента привязывались к конкретному пользователю. Не просто «админский аккаунт удалил заказ», а «Вася Пупкин удалил заказ через ИИ-агента». Сразу понятно, к кому обращаться.

Факапы

На этапе обучения их хватало, и некоторые были довольно забавные.

Говоришь агенту «получи 10 заказов», а он начинает тянуть тысячу. Всё ломается. У нас одно производственное задание в МоёмСкладе занимает десятки страниц по позициям, а агент пытался получить его целиком, думая, что производство небольшое. 

Производственные задания в МойСклад: каждая обжарка — отдельный документ с количеством позиций в задании
Производственные задания в МойСклад: каждая обжарка — отдельный документ с количеством позиций в задании

Я сначала не мог понять, почему он так решил, пока не сообразил, что он просто не знает масштабов. Пришлось поставить физическое ограничение на объём запросов и отдельно объяснить агенту, что у нас везде большие данные.

Пример запроса
Пример запроса

Ещё была проблема с параллельными запросами. Спрашиваю, сколько бразильского кофе на складах. Агент видит список складов и отправляет пять запросов параллельно. С одной стороны, грамотно, быстрее получает данные. Но МойСклад при такой лавине отвечает «давай помедленнее». Пришлось подрезать скорость.

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

Решения были комплексные. Более продвинутые модели, дополнительные инструкции и, главное, тесты. Я пишу бенчмарки: создаю вымышленные сценарии с известными входными данными и проверяю, что ответ соответствует ожиданиям. Это ловит регрессии, когда после новой инструкции агент стал лучше в одном месте, но просел в другом. Любые изменения проверяю на вымышленных данных до того, как агент становится доступен сотрудникам.

Технологический стек

TypeScript — основной язык, для которого написана библиотека moysklad-ts.

Cloudflare — облачная платформа для ИИ-агентов и песочницы. Поддерживает несколько пользователей одновременно, умеет восстанавливаться после прерываний и плохих соединений. Всё работает на тарифе за 400 рублей в месяц.

Cloud.ru — российское облако для основного бэкенда и хранения данных.

Что получилось и что дальше

Сейчас ассистентом пользуется вся команда. Типичные запросы на каждый день: «Какие любимые сорта кофе у клиента X?», «На какую сумму мы продали товар M в четвёртом квартале? Сравни с предыдущим», «Создай заказ для X с товарами, доставка стандартная по их адресу». То, на что раньше уходило несколько минут в интерфейсе МоегоСклада, агент делает за полсекунды.

Ответ агента на запрос "Какие любимые сорта у клиента?" — анализ 25 последних заказов
Ответ агента на запрос "Какие любимые сорта у клиента?" — анализ 25 последних заказов

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

Хочу, чтобы можно было просто написать «сделай шаблон для списка счетов покупателей с суммой, оплаченной суммой и контрагентом» и получить готовый файл.

И визуализация данных. Сейчас для графика я вручную выгружаю данные в Excel и строю диаграмму. Хочу, чтобы агент сам получал данные и выводил графики прямо в чате. Таблицы удобны, но для принятия решений нужна визуализация.

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

Мы ведем блог для малого бизнеса. Рассказываем новости для предпринимателей, ошибки и лайфхаки в учете, инструменты продвижения, обновления сервиса МойСклад.

Комментарии (33)


  1. vybo
    05.03.2026 15:09

    Контент Генеративный/Автор Мойсклад


    1. Wesha
      05.03.2026 15:09

      Мойсклад

      Я ждал этого слова — и аффтар не подвёл!


      1. RusTech
        05.03.2026 15:09

        Аналогично - увидел слово в начале, пролистал контент до комментариев, понял, что не ошибся.


    1. APh
      05.03.2026 15:09

      Краткое содержание 75 % статей про нейронные сети в последнее время:

      ========

      Давайте запустим в комнату, пол которой устлан клавиатурами, N котов.

      Через время T прочитаем полученный текстовый файл.

      Вывод: Нет «Письмо Татьяны к Онегину» снова не получилось.


      1. Wesha
        05.03.2026 15:09

        Нет «Письмо Татьяны к Онегину» снова не получилось.

        Экспериментаторы просто фантастики начитались!


  1. vyacheslavteplyakov
    05.03.2026 15:09

    Это очень скользская дорожка. Агент умеет и будет врать. Вы можете взять самый толстый последний сонет или кто там сейчас впереди планеты всей и он все равно будет врать. Они обходят инструкции, берут данные из истории или ещё хуже из кеша, скилы как бы они не были подробно описаны не гарантируют ничего. Придет время и он сначала завоюет ваше доверие, простотой работы, он уже это сделал, а потом вас обманет, при чем что называется на голубом глазу. И это может иметь последствия в виде убытков. Если нужна аналитика и визуализация, подключите выгрузку данных из МС в Яндекс даталенс, там постройте свои дашборды, которые работают на математике, а не на галлюцинациях и вот уже там внутри есть ai аналитика, которая поможет искать инсайты.


    1. Kwisatz
      05.03.2026 15:09

      Клод предыдущий версии врал меньше 8(

      PS в статьи порадовало что "1000 заказов, все ломается, большие данные"


    1. Wesha
      05.03.2026 15:09

      Агент умеет и будет врать.

      Вот не надо мне тут — он будет сообщать отрицательно достоверную информацию! /s


      1. HardlinePeak936
        05.03.2026 15:09

        Положительно додуманную! Мы же все тут оптимисты ;)


    1. VaAndro
      05.03.2026 15:09

      Это реклама моего склада.


      1. RKrop
        05.03.2026 15:09

        А точно ли реклама? Мой вывод из статьи: мойсклад настолько неудобен для получения элементарной информации (типа «На какую сумму мы продали товар M в четвёртом квартале? Сравни с предыдущим»), что даже галлюцинирующий ансамбль агентов, на который потрачены сотни и тысячи человеко-часов и неупомянутое количество денег, лучше базового функционала. По мне так это скорее антиреклама.


    1. PlatinumKiller
      05.03.2026 15:09

      Агенты жуть, оценки ноль


    1. VanillaWrite
      05.03.2026 15:09

      Netsuite выкатил Nex там агент уже встроен в erp. Почему Мой склад ещё этого не сделал загадка...


  1. Nprasolov
    05.03.2026 15:09

    То есть вы знаете что он придумал Петю, но уверены что данные за прошлый месяц пошел и посчитал?

    И второй вопрос - если все равно менеджером подтверждается, то есть ли у него экономия времени, ведь все равно надо залезть в последние заказы и проверить реквизиты?


    1. dvvarna
      05.03.2026 15:09

      Думаете он их проверяет? Он просто принимает ответственность на себя, по крайней мере до первого косяка от которого пострадает.


  1. tea_cher
    05.03.2026 15:09

    Дочитал до первого упоминания Мой склада. Спасибо, наелись


  1. Pusk1
    05.03.2026 15:09

    MCP не нужно передавать в модель все данные. Это просто API, который может вызывать модель. Например, пишите в mcp функцию, которая возвращает баланс по клиенту или формирует акт сверки за последний месяц. Получать все данные из ERP такое себе.


    1. jakobz
      05.03.2026 15:09

      Не умеют они нормально выбирать api, и подбирать параметры на входе. А некоторые вещи - типа «в каких городах у меня больше всего заказов» - через типичное api просто не сделать.

      Пилю похожего агента, и тоже дал ей писать js в стиле «на тебе массив всего, доставай что нужно» - и это работает прям в разы лучше, чем работало api.

      И этот тул - через mcp.


      1. Pusk1
        05.03.2026 15:09

        У меня простейший MCP к БД + примеры запросов к ней. Достаточно стабильно генерит отчёты. Косячит не больше, чем аналитик, который год с этими данным и работает. С DWH чуть посложнее. Там мусора больше и потенциальный разбег по запросам больше.


  1. Wesha
    05.03.2026 15:09

    пользователь мог бы попросить «напиши программу, которая взломает сервер», и агент послушно выполнил бы.

    (Зачарованно:) Ой, какие у Вас агенты классные, а где взять? А то у меня есть один серверок на примете, тут, в Арлингтоне, за пятым углом...


  1. MaximKiselev
    05.03.2026 15:09

    Поставьте 1с и смотрите остатки на складах бесплатно )


  1. predpremi
    05.03.2026 15:09

    Походу на openclaw на минималках. Если задачи одинаковые, почему просто не закрыть все это на воркфлоу типа n8n, который будет распределять задачи под готовые блоки кода для их анализа?


  1. ulovka22
    05.03.2026 15:09

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


  1. RS_AI
    05.03.2026 15:09

    Не совсем понял для чего здесь ИИ. Не уж то типовые данные нельзя настроить и формировать к примеру через тонкого клиента по кнопке. Или мой склад этого не позволяет?


  1. vtal007
    05.03.2026 15:09

    Когда полтора года назад выяснял, можно ли выгрузить наши заказы из моего склада, то в удобном виде это было за деньги

    но можно было каким-то хитрым способом переделывать шаблон

    А вот чтобы "да держи CSV, нам не жалко" - такого не было


  1. samara22
    05.03.2026 15:09

    Всё правильно. ИИ генерирует данные, для этого он и был создан, лол. Буквально Т9++. Когда-нибудь до всех это дойдёт, но пока видимо это тайные знания.


    1. Wesha
      05.03.2026 15:09

      Надо же: нейросеть, которую «обучали» давать правдоподобные ответы (потому как если ответ был очевидно неправдоподобным, то нейросеть получала сигнал «плохо, так больше не делай!»), выдаёт правдоподобные (но не истинные) ответы! Какая неожиданность!


  1. Kingas
    05.03.2026 15:09

    С приходом ИИ люди стали не только генерить контент, код, но и прикручивать аналитику. Это как с гранатомёта ловить муху.

    Вот NLP сторона ИИ это супер. А считать должен бэк. ИИ формирует например задачи и дёргает нормальный бэк, а не пытается всё через себя прогнать.

    Поиск конечно удобно, но чтобы не ловить галлюцинации надо работать с реальным результатом реальных данных.


    1. Areso
      05.03.2026 15:09

      Так и поиск должен осуществляться бэком. Во-первых, это быстро. Во-вторых, это настолько точно, насколько точно вы храните ваши факты.

      SQL зачем придумали?)

      Осталось собрать готовый отчет, но и тут формы и шаблоны придумали десятилетия назад. Максимум - wizard по созданию новой формы или шаблона.


      1. Moog_Prodigy
        05.03.2026 15:09

        SQL придумали как ЯП для бухов, если по простому. Но кажется, вся мировая история ни одного такого шарящего буха не знает до сих пор =)


        1. Areso
          05.03.2026 15:09

          Eсть довольно много бухов, которые вполне освоили Построитель отчетов и форк SQL в 1С.
          Если не делать суперсложные аналитические запросы, то остальное весьма легко учится средним человеком.

          Ну и плюс, сегодня существует Text-to-SQL решения. Условно, почти все модели пишут относительно вменяемые запросы. Но это должен быть пайплайн
          1) запрос
          2) генериация и исполнение SQL
          3) подсчет (если требуется)
          4) отчет


  1. Dorill
    05.03.2026 15:09

    Да, с цифрами у них до сих пор странно. Текст пишет отлично, а простая арифметика иногда едет


  1. angel_zar
    05.03.2026 15:09

    Дочитал до пункта, не всегда удобно с телефона, но затем наговариешь ИИ в телефон и она все делает (ИИ не нужен интернет?), если это проста запись для ИИ, то почему до этого не делать это же для себя, что бы не переспрашивать клиента?

    Модель оказывается мыслит словами...

    Дальше не стал читать.