← Все статьи
4 июля 20269 минBuilding in publicai агенты · ai команда · claude code · виртуальный офис · building in public · автоматизация

AI-сотрудники как команда: виртуальный офис вместо промптов

Как за 5 недель я построил команду из 15+ AI-агентов с Command Center, MCP-сервером и автономным SEO-пайплайном. Production-кейс, архитектура, инциденты и экономика.

Степан Милахин

Почему один бот не масштабируется

Один Claude-чат это один контекст, одна задача, одна голова. Когда у тебя параллельно SEO, реклама пяти клиентов, продуктовая разработка, аналитика и лиды, ты сам становишься узким горлышком. Не AI тебя тормозит, а ты тормозишь AI.

Я упёрся в это физически: три длинных гайда в неделю на блог, управление Meta/Google Ads кампаниями пяти клиентов, продуктовая разработка M.Sight и M.Flow, мониторинг метрик. Один промпт за раз. Переключение контекста каждые 15 минут. Copy-paste между 47 открытыми вкладками Ads Manager, GA4, GTM. К вечеру мозг в кашу, а половина задач не тронута.

При этом проблема не в возможностях модели. По данным исследований multi-agent систем, 79% провалов связаны со спецификацией и координацией, а не с техническими багами. То есть модель умеет, но ей плохо объяснили что делать, кто за что отвечает и как взаимодействовать. Архитектура решает, а не размер контекстного окна.

Есть принципиальная разница между промптом и агентом. Промпт отвечает на вопрос. Агент действует: у него есть роль, набор инструментов, зона ответственности и жёсткие ограничения. Промпт говорит «вот как сделать SEO-аудит». Агент берёт и делает SEO-аудит: идёт в SERP, анализирует конкурентов, достаёт факты из базы знаний, пишет секцию текста, проверяет на утечки и публикует. Без тебя в цикле.

Эволюция: от промпта к команде за 5 недель

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

L0, стартовая точка. Один Claude-чат, 47 открытых вкладок, ручной copy-paste. Хочешь узнать CPL по кампании, открой Ads Manager, найди кампанию, выгрузи, скопируй в чат, задай вопрос. Повтори для Google Ads. Повтори для GA4. Повтори для каждого клиента. К обеду устал, ничего не сделал.

L1, неделя 1-2: MCP-сервер. Собрал 29 tools в одном stdio-процессе. Meta Ads (7 tools), Google Ads (5), GA4 (3), GTM (5), Instagram (7), M.Flow контекст (2). Вместо 47 вкладок: спросил Claude «какой CPL у застройщика за последнюю неделю», получил ответ. Каждая мутация (пауза кампании, смена бюджета) логируется через withChangeLog. Не чёрный ящик, а аудит-трейл.

L2, неделя 2-3: роли и субагенты. CLAUDE.md стал org chart: Frontend Dev, Backend Dev, Integrations Dev, QA Tester, DevOps, Digital Expert, Digital Analytics Expert, Project Manager. У каждого свои файлы, свои запреты. Frontend Dev never touches backend. Backend Dev never touches frontend files. Не промпт-инженеринг, а менеджмент. Код перестал ломаться из-за того что «один агент полез не в свой файл».

L3, неделя 3-5: автономный конвейер. SEO-отдел из 6 «отделов» с человеческими именами: Тёма (ресёрч), Архип (архитектор), Соня (тексты), Фая (факт-чек и файрвол), Семён (SEO-метаданные), Паша (публикация). 18 этапов, cron пн/ср/пт в 04:00 по Алматы. Первый полностью автономный прогон 04.06.2026: все 14 основных этапов, 17 минут, пост опубликован и анонсирован в Telegram без единого клика. За первые 9 дней, 4 поста вышли без моего участия.

Архитектура виртуального офиса в коде

Никакого пиксель-арта или изометрических комнат на старте. Виртуальный офис в моём случае это CLAUDE.md файл, который работает как org chart и свод правил.

Вот как это устроено. В CLAUDE.md я описываю роли: Frontend Dev, Backend Dev, Integrations Dev и так далее. У каждой роли три вещи: что делает, какие файлы видит, что запрещено. Frontend Dev никогда не трогает бэкенд. Backend Dev никогда не лезет в компоненты. Integrations Dev работает только с OAuth и API-синками. Это не промпт-инженеринг, это менеджмент через текст.

Отдельная история с изоляцией пакетов. В монорепо живут M.Sight, M.Flow и куча инфраструктуры. M.Flow код строго в app/(flow)/, таблицы с mf_ префиксом, утилиты в lib/flow/. M.Sight и M.Flow не импортируют бизнес-логику друг друга. Общие только дизайн-токены и инфраструктура. Когда агент работает над M.Flow, он физически не может сломать M.Sight, потому что зоны ответственности прописаны в CLAUDE.md как запреты.

Три паттерна оркестрации, каждый для своего случая. Субагенты (subagents) для параллельных задач внутри одной сессии: нужно одновременно поискать файлы и прогнать тесты, запускаешь два субагента. Agent Teams для cross-session координации: несколько сессий Claude Code работают параллельно через tmux, каждая со своим контекстом. Custom orchestrator для детерминированных конвейеров с фиксированным порядком. Мой SEO-пайплайн это третий вариант: 18 этапов в строгой последовательности, каждый этап запускается как отдельная Claude-сессия через CLI, результат передаётся следующему.

Конвейер выглядит так: trend-spotter выбирает тему из бэклога, serp-analyzer изучает конкурентов, vault-reader достаёт факты из Obsidian, architect строит outline, section-writer (запускается параллельно N раз) пишет секции, editor склеивает, tov-injector впрыскивает голос, fact-checker проверяет цифры, firewall ищет утечки, meta-writer пишет SEO-мету, linker добавляет внутренние ссылки, dalle-caller генерирует обложку, git-publisher коммитит и пушит. Я подробно разобрал этот конвейер в посте про автономный SEO-отдел на AI-агентах. 15-43 минуты на пост от нуля до прода.

Агент-менеджер: новая роль, а не новый навык

HBR в 2026 году ввёл термин «agent manager» как управленческую роль. Не «инженер который пишет промпты», а менеджер который управляет командой AI-агентов. Ключевой инсайт: domain expertise важнее AI expertise. Лучший менеджер AI-команды это тот кто знает предметную область (маркетинг, продукт, финансы), а не тот кто лучше формулирует промпты.

Мой день агент-менеджера выглядит так. Утро: открываю Command Center, 10 вкладок, проверяю heartbeat-статусы. Ночной SEO-прогон прошёл? Зелёный. Рекламные кампании не обвалились? Зелёный. MCP-сервер жив? Зелёный. Если жёлтый или красный, разбираюсь. День: задачи через Digital Room. Ставлю задачу «проанализируй CPL по всем кампаниям застройщика за неделю», агент прогоняет через MCP, отдаёт результат с рекомендациями. Вечер: ревью AI-креативов, ручная правка стратегии там где нужен человеческий контекст.

Принципиальное правило: write-операции только через подтверждение. Автопилот на бюджеты это красная линия. Агент говорит «CPL у дилера коммерческого транспорта заметно вырос за неделю, рекомендую снизить дневной бюджет». Я смотрю контекст (может сезонность, может лендинг менялся), и жму кнопку или нет. Это не про недоверие к AI, это про ответственность. Деньги клиента, решение моё.

Масштаб тренда показывает McKinsey: у них уже 20 000 AI-агентов при 40 000 сотрудников. Целятся в паритет 40 на 40. Пока PR-отдел говорит «AI как multiplier, not replacement», цифры показывают буквально 1:1, хотя значительная часть «AI-сокращений» прикрывает обычный менеджмент. Роль агент-менеджера перестаёт быть экзотикой и становится стандартной позицией.

Command Center: мониторинг здоровья AI-команды

Без мониторинга AI-команда это чёрный ящик. Ты не знаешь что работает, что упало, что молча сожрало ресурсы. Я понял это на собственном инциденте 10 июня: loop-worker тикал каждые 5 минут вместо часа. Результат: 12 failed runs за 50 минут, каждый по 9 секунд. Не сожгли подписку только потому что runs были короткие.

После этого я построил командный центр с heartbeat-мониторингом: одно место где видно всё. MCP, агенты, cron, инфра. 10 вкладок, auto-refresh 45 секунд. Каждый сервис и каждый агент пингует таблицу studio_heartbeats. Зелёный, жёлтый, красный. Если что-то молчит дольше порога, Telegram-алерт.

SEO Room и Digital Room это воксельные 3D-офисы на three.js. 6 человечков-агентов в разноцветных свитерах: working (сидят за столами, печатают, экраны пульсируют), idle (барабанят, играют в теннис, пьют кофе). Не декорация, а realtime-визуализация статуса через Supabase подписку. Когда Тёма запускает ресёрч, его человечек садится за стол. Когда Соня пишет текст, её экран мерцает.

Обновление 29.09.2026. Фразу «не декорация» выше забираю назад. Подписка на Supabase была настоящей, а рендерила она костюм: шесть свитеров и зона отдыха это не состояние конвейера, а состав труппы. К ролям и запретам из поста претензий нет, они работают как работали, умерла только их костюмированная версия.

Самое неприятное, что метафора не удержалась внутри сцены. Таблица перевода этапов в человечков дотянулась до ленты шагов и стала подставлять туда придуманную роль вместо настоящего step_name из seo_agent_steps. Декорация начала диктовать данным, как им называться.

Ещё офис держал на себе то, что ему не принадлежало: автообновление страницы жило внутри 3D-клиента, так что свежесть цифр зависела от игрушки. Теперь подписка переехала в отдельный компонент, который ничего не рисует. Воксельный Digital Room из этого же абзаца умер раньше, его заменили вкладки с журналом реальных правок. Статус агентов виден списком этапов, и в списке они наконец называются своими именами.

Confidentiality Firewall зашит прямо в пайплайн: forbidden.yaml с тремя уровнями. Hard block означает что публикация отменяется полностью плюс Telegram-алерт. Soft redaction заменяет конкретные названия на обобщения. Numeric block ставит на ревью любые конкретные суммы. Агент не должен слить то, что не предназначено для публики.

Что ломается и как чинить

Claude CLI разлогинивается раз в 1-2 недели. 22.06 и 24.06 пайплайн молча падал: 14 failed-шагов в каждом прогоне, ноль алертов. Решение: auth-ping ДО startRun, при 401 → Telegram «claude → /login» + код 2 (skip, не failed-run). Конец молчаливым прогонам.

Кросс-платформенность: Mac и Windows имеют несовместимые пути (PATH через : vs ;, разные расположения бинарника claude). CLI парсил sys-prompt как неизвестный флаг и возвращал кашу. 7 failures подряд. Фикс: resolveClaudeEnv() + склейка промптов в один stdin. После этого фикса вышла первая автономная публикация.

Context window explosion: 10 субагентов × 2K токенов = 20K+ до синтеза. Agent teams стоят 3-7x больше токенов чем одна сессия. Прагматичный выбор: custom orchestrator на CLI (бесплатный Max) вместо agent teams API. Каждый этап получает только свой входной контекст, не весь накопленный output предыдущих этапов.

Fallback без recovery path это тихая смерть. Каждый try/catch должен либо восстановить, либо эскалировать. Страховка которая молча глотает ошибку хуже чем crash. Я прошёл через это дважды и теперь у каждого этапа есть явный failure mode: retry (если transient), skip (если non-critical), abort + alert (если critical).

Экономика: AI-команда vs найм

Стоимость AI-стека: Claude Max $100/мес (безлимит), Supabase Free, Vercel Free, MCP-сервер бесплатно (stdio). Итого: одна подписка плюс бесплатные тарифы вместо фонда оплаты труда целой команды на найме. Разница тут не в процентах, а в порядках.

Соло-основатели 2026: 36.3% новых венчуров solo-founded. Pieter Levels $3M+ ARR один. Но потолок существует: AI закрывает 80% рутины, 20% (стратегия, отношения, кризисы) съедают 80% энергии. Когда агенты встроены в продуктовую разработку, скорость растёт кратно, но стратегические решения остаются на человеке.

SEO-отдел из 6 агентов = 3 гайда/нед × 52 = 156 постов/год. Наём копирайтера и SEO-специалиста под такой объём это отдельная зарплатная статья каждый месяц. AI-отдел = 0 ₸/мес (Max уже оплачен для разработки). При этом качество контролируется: fact-checker проверяет цифры, firewall ловит утечки, tov-injector выдерживает голос.

Невидимый труд = невидимая ценность. Когда ты в 23:00 выключаешь сливающую кампанию, клиент об этом не узнаёт. AI-инфраструктура впечатляет тебя, но не клиента. Клиент платит и не видит за что: главный триггер ухода при средних результатах. Решение: «Пульс дня» в Telegram, win-алерты при горячем лиде, понедельничный отчёт на языке денег. Сделай труд видимым.

Практическая карта: как начать

Шаг 1: один CLAUDE.md с ролями. Определи 3-5 ролей вместо одного промпта-на-все-случаи. У каждой роли: что делает, какие файлы видит, что запрещено. Это занимает 30 минут и сразу убирает класс ошибок «агент полез не в свой файл».

Шаг 2: MCP-сервер для инструментов. Начни с read-only tools (получить метрики, прочитать кампании, посмотреть аналитику). Write-tools (пауза кампании, смена бюджета) добавляй только с подтверждением. 29 tools звучит много, но каждый это одна функция на 20-50 строк.

Шаг 3: один автономный пайплайн. Выбери самую повторяющуюся задачу (контент, отчёты, мониторинг) и автоматизируй её. Не agent teams, а простой sequential runner: этап 1 → результат → этап 2 → результат → публикация. Claude CLI + cron + Telegram-алерты.

Шаг 4: heartbeat + алерты. Без мониторинга ты не узнаешь что пайплайн упал. Telegram-бот для уведомлений это 20 строк кода. Таблица heartbeats это одна миграция. Зелёный/жёлтый/красный в дашборде это один React-компонент.

Главное правило: start from single-agent baseline, добавляй агентов только где параллелизм или специализация измеримо улучшают результат. Не строй «AI-отдел из 15 агентов» в первый день. Каждый новый агент должен решать конкретную проблему которая уже болит.

Похожие статьи
Услуга Milakhin Studio
Отдел продаж под ключ: реклама, сайт, Амелия, CRM и аналитика работают как одна команда
Что входит в отдел продаж →
Контакты

Расскажите о задаче, посмотрим, по пути ли нам

Короткий бриф или просто «хочу обсудить». Первый созвон бесплатный и ни к чему не обязывает: честно скажем, возьмёмся ли.

Отвечаем в течение рабочего дня. Без спама и рассылок.