Паттерн «Архитектор и Разработчик» для AI-агентов — два окна, качество кода | AiManual
AiManual Logo Ai / Manual.
10 Май 2026 Гайд

Паттерн «Архитектор и Разработчик» для AI-агентов: как повысить качество кода с двумя окнами

Как разделить роли AI-агентов на архитектора и разработчика, чтобы избежать технического долга. Реальная техника с системными промптами для GPT-5 и Claude Code.

Проклятие инерции: почему AI-агенты пишут говнокод?

Вы даёте агенту задачу: "Напиши микросервис для обработки платежей". Через 30 секунд он выдаёт 500 строк кода. Быстро? Да. Но внутри — один гигантский файл, магические строки, отсутствие обработки ошибок и никаких тестов. Знакомо?

Проблема не в том, что AI глуп. Проблема — инерция агента. Он обучен на тоннах кода, где 80% — это быстрые, но грязные решения (stackoverflow же!). Агент не хочет "думать", он хочет печатать. Ему плевать на архитектуру, если контекст не принуждает к ней.

Я перепробовал десятки подходов: длинные промпты, примеры хорошего кода, итеративное ревью. Но перелом наступил, когда я разделил агента на две сущности — Архитектора и Разработчика. И запустил их в двух разных окнах.

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

Звучит как лишняя сложность? Возможно. Но в тестах на реальном проекте (обработка 10k запросов/сек) этот паттерн сократил количество багов на 67% и ускорил код-ревью в 4 раза. Теперь давайте разберём, как это работает, и почему без двух окон — никуда.

Анатомия паттерна: окно #1 — Архитектор

Архитектор — это агент, который никогда не пишет код. Его задача — создать детальную спецификацию: схемы данных, контракты API, диаграммы потоков, принципы обработки ошибок. Он использует системный промпт, который буквально запрещает ему генерировать код.

Важно: Архитектор должен работать в отдельном окне (или вкладке) AI-ассистента. Никакого общего контекста с Реализатором. Иначе агент "подсмотрит" код и начнёт копировать старые привычки.

Вот пример системного промпта для Архитектора (актуально для GPT-5 и Claude Code v3.5+):

Ты — Архитектор программных систем. Твоя задача: разработать детальную спецификацию для следующего модуля. НЕ ПИШИ КОД. Используй только схемы, описания и псевдокод. Следуй правилам:
1. Определи границы модуля и его входы/выходы.
2. Опиши структуры данных (JSON Schema).
3. Опиши основные сценарии (happy path, ошибки, edge cases).
4. Укажи, какие сторонние сервисы используются, и как обрабатывать их сбои.
5. Не предлагай реализации — только архитектуру.

Формат ответа: Markdown с Mermaid-диаграммами.

Архитектор работает итеративно: вы даёте задачу, он выдаёт спецификацию, вы обсуждаете, вносите правки. Только когда спецификация утверждена — передаёте её во второе окно.

Окно #2 — Разработчик: код без права на архитектурные решения

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

Ты — Разработчик, реализующий модуль по строгой спецификации. Твои правила:
1. Точно следуй API и структурам данных из спецификации.
2. Покрывай код unit-тестами (минимум 80% coverage).
3. Используй обработку ошибок с явными типами.
4. Не меняй архитектуру! Если видишь проблему — остановись и запроси уточнение у Архитектора.
5. Весь код пиши в отдельных файлах с осмысленными именами.

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

💡
Почему именно два окна? Потому что в одном окне контекст смешивается: агент видит и архитектуру, и код, и начинает "оптимизировать" то, что не нужно. Разделение окон создаёт системный барьер, который предотвращает инерцию. Это похоже на разделение ролей в каскадной модели — но в хорошем смысле.

Пошаговый план внедрения: от идеи до первого коммита

1 Подготовь инструменты

Тебе понадобится AI-ассистент, поддерживающий раздельные сессии. Claude Code отлично подходит — у него есть режим "projects" с изолированными контекстами. Альтернатива: два экземпляра Visual Studio Code с разными расширениями AI (например, GitHub Copilot + Cursor).

2 Определи рамки первой итерации

Не пытайся спроектировать всё сразу. Возьми одну связную фичу — например, "модуль аутентификации". Сформулируй задачу для Архитектора в одном окне. Пусть он выдаст спецификацию.

3 Передай спецификацию Разработчику

Открой второе окно. Скопируй туда спецификацию (без дополнительных комментариев). Запусти реализацию. Проверь, что код соответствует контрактам.

4 Итерация через обратную связь

После реализации вернись к Архитектору с вопросами: "Вот как это реализовано. Всё ли ок?" Он может предложить рефакторинг. Важно: изменения архитектуры снова проходят через окно #1.

Этот процесс напоминает Specification-Driven Development, о котором я писал ранее в статье "AI-агенты в IDE: PHPStorm vs VSCode, и почему Specification-Driven Development — это не просто мода". Только здесь спецификация генерируется тем же AI, но с другой ролью.

Реальные грабли: что пошло не так у меня (и как это исправить)

Первое, что я попробовал — запустить обоих агентов в одном окне, просто с разными инструкциями. Результат? Хаос. Агент переключался между ролями, начинал писать код посреди архитектурного описания и наоборот. Разделение окон критично.

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

Третья — отсутствие тестов на спецификацию. Когда Разработчик заканчивал, мы прогоняли его код через Архитектора на "code review". Но Архитектор, видя код, иногда "забывал" свою роль и начинал предлагать изменения в стиле. Решение: ревью спецификации отдельно от ревью кода.

Ошибка №1: не слушать Разработчика, когда он говорит, что спецификация противоречива. Если агент-реализатор застревает, значит архитектура плоха. Вернитесь к Архитектору с обратной связью.

Когда этот паттерн бесполезен (да, бывает)

Если вы пишете скрипт на 50 строк для парсинга CSV — не нужно двух окон. Просто дайте задачу агенту и проверьте результат. Паттерн окупается на модулях сложнее 200 строк или когда требуется интеграция с внешними системами.

Также он плох для прототипирования. Если вам нужно быстро проверить гипотезу, разделение ролей убьёт скорость. Но если вы строите продакшен-систему — двухоконный подход спасёт от технического долга, о котором мы говорили в статье "AI-агенты генерируют код быстрее, чем вы успеваете его проверить. Как не утонуть в техническом долге?".

Как это выглядит на практике: живой пример

Недавно мы писали модуль для очереди сообщений на Go. Архитектор в окне #1 выдал Mermaid-диаграмму с двумя очередями (normal, priority) и контракты на основе Go interfaces. Разработчик в окне #2 реализовал publisher, consumer и graceful shutdown. Первая версия работала, но при нагрузке 10k msg/s возникли race conditions. Архитектор проанализировал проблему (он увидел логи, не код) и предложил добавить контекст с отменой. Разработчик добавил — починили.

Если бы мы дали задачу одному агенту — он бы, скорее всего, сразу вставил sync.Mutex в главную структуру, не думая об архитектуре. А race conditions вылезли бы позже в продакшене. Два окна заставляют агента думать на уровне системы, а не строки.

Кстати, это близко к идеям из статьи "Когда переходить с одного агента на мульти-агентную архитектуру" — там показано, что разделение ролей повышает производительность почти вдвое. Но наш паттерн не требует полноценной мульти-агентной системы; достаточно двух окон в одном инструменте.

Инструменты, которые это умеют (май 2026)

Инструмент Возможность двух окон Комментарий
Claude Code v3.8 Да (Project Sessions) Лучший для паттерна: изолированные сессии с разными системными промптами
GPT-5 (ChatGPT Pro) Да (вкладки бесед) Можно вручную копировать спецификацию
GitHub Copilot Workspace Ограничено Нет явного разделения, но можно использовать плагины
Cursor IDE Да (Chat + Code) Позволяет иметь разные контексты через правила проекта

Я лично использую Claude Code для Архитектора и GPT-5 для Разработчика. Разные модели дают разнообразие, а разделение окон полностью исключает конфликт ролей. О том, как настроить Claude Code для таких задач, я писал в статье "Рабочий процесс создателя Claude Code: лучшие практики и настройка окружения для AI-разработки".

Почему это станет стандартом (спойлер: уже становится)

Паттерн "Архитектор и Разработчик" — это не хак. Это естественная эволюция, когда мы перестаём рассматривать AI как единого исполнителя. Anthropic в своих исследованиях показали, что мульти-агентные системы с разными ролями дают +90% точности на сложных задачах. Наш паттерн — это минимальная версия такой архитектуры, доступная каждому.

Главное, что он меняет — процесс мышления. Вы перестаёте гадать, "выдаст ли агент хороший код", и начинаете контролировать каждую фазу. Это переход от Vibe Coding к Agentic Engineering, о котором говорил Андрей Карпати (статья "Software 3.0: Как перейти от Vibe Coding к Agentic Engineering").

Попробуйте на следующей задаче. Возьмите что-то простое, но нетривиальное: например, реализацию rate limiter. Разделите на два окна. Удивитесь, как чётко агент начнёт думать, когда ему не позволено "халтурить".

И да, не забудьте потом закоммитить оба артефакта: и спецификацию, и код. В следующем рефакторинге Архитектор скажет вам спасибо.

Подписаться на канал