Subagent-driven development: как мы построили webshturm.ru за день — 50+ коммитов через Claude Code

Веб Штурм
  • Claude Code
  • subagents
  • DevOps
  • AI workflow

Этот сайт (webshturm.ru) построен с нуля за один день: 50+ коммитов, 27 страниц, JSON-LD на каждой, Pagefind поиск, hybrid Astro 6 deploy с CI/CD и автоматическим rollback. Без subagent-driven подхода это было бы невозможно — лимит контекста одного разговора закончился бы на середине Phase 3. Делимся, как устроен паттерн координатор + рой специализированных subagent’ов.

Контекст

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

Anthropic в июле 2025 выпустил Subagents — отдельный инструмент Agent, который позволяет диспатчить подзадачу в свежий контекст и получить компактный результат обратно. Это меняет архитектуру разработки: координатор держит структуру проекта в голове, subagent’ы делают конкретные единицы работы.

Архитектура: координатор + специализированные subagent’ы

В нашем случае рой делился на три типа:

Research subagent’ы (3 параллельных)

  • A — изучает локальные проекты и достаёт реальные числа из dossier
  • B — копает память + LightRAG, собирает уроки и distinctive фразы для копирайта
  • C — web-research latest tech 2025-2026 с цитатами

Все три запущены одновременно одной отправкой. Полтора-два месяца ручной работы за 5-7 минут.

Content subagent’ы (последовательно)

  • A — копирайт для 7 страниц услуг + 3 кейсов + about + privacy
  • B-1 — 7 первых статей блога (по одной на каждое направление)
  • B-2 — 6 вторых статей блога

Code subagent’ы (по фазам)

  • Phase 1 (foundation), Phase 2 (content schema), Phase 3a (cards+layouts), Phase 3b (homepage+statics), Phase 4 (SEO+JSON-LD), Phase 5a (forms+API), Phase 5b (calculators+Pagefind+Метрика), Phase 6a (deploy artifacts).

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

Параллельный dispatch (главная экономия времени)

Параллельный запуск через единичную отправку с несколькими Agent-вызовами:

// Псевдокод координатора (по факту это просто несколько tool-calls в одном сообщении)
await Promise.all([
  dispatchAgent({ name: 'research-A', prompt: '...' }),
  dispatchAgent({ name: 'research-B', prompt: '...' }),
  dispatchAgent({ name: 'research-C', prompt: '...' }),
]);

Если запускать последовательно — общее время = сумма времени каждого. Параллельно — максимум одного. На 3-4 subagent’ах экономия 60-75%.

Гоча: 4 параллельных subagent’а легко упираются в Anthropic rate-limit. Эмпирическое правило — 2-3 одновременно безопасно, 4+ — половина упадёт.

Идемпотентные промпты — выживание при сбое

Subagent может упасть на середине: rate-limit, API-таймаут, исчерпание контекста. Перезапуск с нуля — теряешь то, что он успел. Решение — писать промпты так, чтобы повторный запуск ничего не ломал и подхватывал сделанное.

Конкретные приёмы:

# 1. git add -A в конце захватит всё, что субагент успел сделать
git add -A
git commit -m "..."

# 2. Файлы создаются через Write (overwrite), не Edit — повторный запуск перезаписывает
Write({ file_path: '...', content: '...' })

# 3. Проверка существования "что уже сделано" в начале
if [ -d /opt/webshturm-site ]; then echo "already initialized"; fi

В нашей сессии Phase 5a subagent упал на rate-limit после 8 tool-вызовов. Перезапустили с тем же промптом — он подхватил незакоммиченные изменения, докатил до конца, закоммитил всё одним блоком. Никакого ручного спасения.

Snapshot-rollback в CI как safety net

Subagent может выдать корректный, но логически сломанный код, который проходит тесты и build, но валит smoke на проде. Защита — снимок dist/ перед каждым деплоем + автоматический rollback при fail smoke.

Фрагмент .gitea/workflows/deploy.yml:

- name: Backup dist (snapshot for rollback)
  run: |
    ssh root@$HOST "cp -a /opt/webshturm-site/dist /opt/webshturm-site/dist.bak.$(date +%s); \
                    ls -td /opt/webshturm-site/dist.bak.* | tail -n +4 | xargs -r rm -rf"

- name: Deploy
  run: rsync -avz --delete app/dist/ root@$HOST:/opt/webshturm-site/dist/

- name: Smoke + rollback on fail
  run: |
    for route in / /services/ /cases/ozsm/ /blog/ /search; do
      STATUS=$(curl -s -o /dev/null -w "%{http_code}" "https://webshturm.ru${route}")
      if [ "$STATUS" != "200" ]; then
        ssh root@$HOST 'LAST=$(ls -td /opt/webshturm-site/dist.bak.* | head -1); \
                        rm -rf /opt/webshturm-site/dist; mv "$LAST" /opt/webshturm-site/dist; \
                        systemctl restart webshturm-site.service'
        exit 1
      fi
    done

Держим последние 3 снимка. При красном smoke — восстановление за 5-10 секунд. За 50 деплоев у нас не было ни одной ручной интервенции.

Что мы из этого вынесли

  • Параллелизм через subagent’ы > один длинный контекст. На задачах больше одной фазы — выбор без альтернатив.
  • Идемпотентность промптов важнее их «красоты». Промпт, который нельзя перезапустить, — это бомба замедленного действия на rate-limit.
  • Snapshot-rollback в CI — обязательная страховка для AI-сгенерированного кода. Тесты не ловят всё. Прод-smoke + автоматический rollback ловит остальное за 60 секунд.

Ссылки

Часто задаваемые вопросы

Что такое subagent-driven development?
Подход, при котором главный Claude Code запускает специализированные subagent'ы для параллельных задач: research (поиск информации), content (написание текстов), code (правки), review (spec-compliance + code-quality). Каждый subagent — изолированный процесс с собственным контекстом, что экономит токены родителя и параллелит работу.
Сколько коммитов реально сделать за день через subagent'ы?
На webshturm.ru — 50+ коммитов за день: 3-4 параллельных subagent'а пишут контент (статьи, кейсы, дизайн-токены), пока главный агент собирает каркас Astro. Без рапаралеливания та же работа заняла бы 3-5 дней. Bottleneck — не скорость LLM, а rate-limit Claude API и время review.
Не теряется ли качество при параллельной работе?
Теряется, если нет двойного review. Мы используем паттерн «spec-compliance + code-quality review»: один subagent проверяет соответствие спеке, другой — качество кода и стиль. Плюс snapshot-rollback в CI как safety net: если что-то сломалось — откат за 30 секунд. На production — ноль регрессий.
Когда subagent-driven не подходит?
Если задача — глубокая (архитектурное решение, отладка race condition) — нужен один сильный агент с полным контекстом, не пачка subagent'ов. Также не подходит для команды без опыта prompt-engineering: идемпотентные промпты и контракты между агентами — это отдельный навык. Без него выходит хаос.