3,583 papers
arXiv:2512.01155 78 2 дек. 2025 г. FREE

D³ Framework: трёхфазная методология работы с legacy кодом через LLM

КЛЮЧЕВАЯ СУТЬ
Парадокс: AI ускоряет простые задачи на +55%, но замедляет сложные на −19%. Причина — когнитивная нагрузка от исправления тонких AI-ошибок в legacy системах перевешивает выигрыш от скорости генерации. D³ (Discover-Define-Deliver) позволяет работать с запутанным legacy кодом через LLM без перегруза от проверки багов. Фишка: явное разделение на три фазы с двумя агентамиBuilder генерирует (документация, планы, код), Reviewer критикует и ищет дыры, а Human Gates между фазами гарантируют что вы утверждаете каждый шаг, прежде чем двигаться дальше. Вместо «AI написал код → я распутываю баги» получается «AI предложил → я проверил → AI реализовал мой выбор → я финально одобрил».
Адаптировать под запрос

TL;DR

D³ (Discover-Define-Deliver) — методология работы со сложными, запутанными системами через LLM. Разбивает работу на три фазы с обязательными точками контроля между ними: Discover (изучи систему, собери контекст) → Define (спроектируй решение, проверь риски) → Deliver (реализуй и провалидируй). В каждой фазе используются два агента: Builder генерирует варианты, Reviewer критикует и выявляет слабости. Человек утверждает результат каждой фазы перед переходом к следующей.

Исследование выявило Brownfield Paradox: AI ускоряет работу на простых задачах (+55% по данным Ziegler et al.), но замедляет на сложных (−19% по данным Becker et al.). Причина — cognitive load от проверки и исправления тонких ошибок AI перевешивает выигрыш от скорости генерации. В legacy системах с миллионами строк кода, техдолгом и утерянной документацией AI "в лоб" даёт много hallucination и требует больше времени на проверку, чем экономит.

D³ решает это через явное разделение на фазы и роли. Builder работает на генерацию контента (документация, код, планы), Reviewer — на критику и выявление дыр. Human Gates гарантируют, что человек проверяет и утверждает каждый шаг, прежде чем двигаться дальше. Это снижает риск накопления ошибок и держит человека в контроле, вместо того чтобы тратить часы на исправление AI-кода постфактум.


🔬

Схема методологии

ФАЗА 1: DISCOVER
├─ Builder: Исследуй систему → документ "Что есть сейчас"
├─ Reviewer: Критикуй документ → список вопросов и дыр
└─ 🚦 HUMAN GATE: Человек проверяет, дополняет, утверждает контекст

ФАЗА 2: DEFINE  
├─ Builder: Предложи варианты решения → план с trade-offs
├─ Reviewer: Найди риски и скрытые зависимости → критика плана
└─ 🚦 HUMAN GATE: Человек выбирает подход и утверждает план

ФАЗА 3: DELIVER
├─ Builder: Генерируй код/контент → черновик реализации
├─ Reviewer: Проверь на дефекты и стиль → список замечаний
└─ 🚦 HUMAN GATE: Человек финально ревьюит и мержит

Все три фазы выполняются в обычном чате. Human Gates — это точки, где вы останавливаетесь и проверяете результат перед продолжением.


🚀

Пример применения

Задача: Ты работаешь с legacy админкой на Django, которую писали 5 лет назад три разных команды. Нужно добавить экспорт данных в Excel, но непонятно где логика фильтрации живёт, как права доступа проверяются, и какие модели затронуты.

ФАЗА 1: DISCOVER

Промпт Builder:

Я работаю с Django админкой для управления заказами. Код писался 5 лет, документации почти нет. 

Нужно добавить кнопку "Экспорт в Excel" для списка заказов с текущими фильтрами.

Помоги собрать контекст:
1. Какие модели связаны с Order (заказы)?
2. Где живёт логика фильтрации списка заказов?
3. Как проверяются права доступа на просмотр заказов?
4. Есть ли уже экспорты в других частях админки?

Вот структура проекта: [вставить tree output]
Вот модель Order: [вставить код models.py]
Вот view для списка заказов: [вставить код views.py]

Промпт Reviewer:

Вот документ с контекстом, который собрал мой коллега по legacy Django админке.

[вставить ответ Builder]

Твоя задача — найти дыры в исследовании:
- Какие важные вопросы не заданы?
- Где нужны уточнения?
- Какие риски или зависимости могли пропустить?

Представь, что ты senior engineer, который видел как подобные изменения ломали продакшн.

🚦 HUMAN GATE: Ты читаешь оба ответа, проверяешь что контекст полный, дополняешь если нужно, утверждаешь переход к планированию.

ФАЗА 2: DEFINE

Промпт Builder:

Контекст системы утверждён:
[вставить итоговый документ из Discover]

Предложи 2-3 варианта реализации экспорта в Excel:
- Где размещать кнопку?
- Как передавать фильтры в логику экспорта?
- Как обрабатывать большие датасеты (10к+ записей)?
- Какие библиотеки использовать?

Для каждого варианта укажи trade-offs: что быстрее написать, что проще поддерживать, какие риски.

Промпт Reviewer:

Вот три варианта реализации экспорта:
[вставить ответ Builder]

Твоя задача — найти проблемы:
- Какие edge cases не учтены?
- Где могут быть race conditions или проблемы с производительностью?
- Какие зависимости между компонентами пропущены?
- Что может сломаться в существующей функциональности?

Ты архитектор, который отвечает за стабильность прода.

🚦 HUMAN GATE: Ты выбираешь вариант, дополняешь план деталями, утверждаешь реализацию.

ФАЗА 3: DELIVER

Промпт Builder:

План утверждён:
[вставить финальный план]

Напиши код:
1. View для обработки экспорта
2. Функция генерации Excel файла  
3. Добавление кнопки в template
4. Unit-тесты

Используй библиотеку openpyxl, обрабатывай датасеты батчами по 1000 записей.

Промпт Reviewer:

Вот diff с новым кодом:
[вставить код от Builder]

Проверь на:
- Дефекты и баги (SQL injection, memory leaks, race conditions)
- Стиль и соответствие Django conventions
- Отсутствующие error handling
- Проблемы с тестами

Ты делаешь pre-review перед отправкой коллеге на финальный ревью.

🚦 HUMAN GATE: Ты читаешь критику Reviewer, правишь код, тестируешь локально, делаешь финальный коммит.

Результат:

Вы последовательно прошли три фазы, на каждой получили и критику, и генерацию. В итоге — план учитывает реальные риски системы, код проверен на типичные дефекты до human review, а вы держали контроль на каждом шаге вместо того чтобы потом распутывать AI-код с багами.


🧠

Почему это работает

LLM плохо справляются с накоплением контекста в длинных задачах. Если попросить "реши задачу от начала до конца", модель может пропустить критические детали на ранних этапах, которые выстрелят багами в конце. К моменту когда ты обнаружишь проблему, придётся переписывать всё, потому что фундамент был неверным. Исследование показывает: на сложных задачах AI без структуры даёт −19% к скорости из-за cognitive load на исправление ошибок.

LLM отлично генерируют варианты, но плохо критикуют сами себя. Builder в режиме "предложи решение" оптимизирован на креативность и скорость, но не на скептицизм. Reviewer с явной установкой "найди дыры" работает в другом режиме — ищет риски, edge cases, скрытые зависимости. Разделение ролей усиливает обе стороны.

Human Gates гарантируют, что человек остаётся decision maker. Вместо "AI написал код → я исправляю баги" получается "AI предлагает → я проверяю и утверждаю → AI реализует мой выбор → я финально ревьюлю". Это дороже по числу запросов, но дешевле по времени, потому что исправлять плохой AI-код дороже, чем проверять хороший план.

Фазирование снижает когнитивную нагрузку. Вместо "держи в голове весь проект сразу" вы фокусируетесь: сначала только на понимании системы, потом только на проектировании, потом только на реализации. Это соответствует тому, как работают опытные инженеры, но AI помогает быстрее проходить каждую фазу.

Рычаги управления:

  • Число агентов: два (Builder + Reviewer) — оптимум. Можно добавить третьего (Security Reviewer, Performance Reviewer), но это дороже по токенам.
  • Детализация Human Gates: для простых задач можно объединить Discover+Define в одну фазу. Для критичных систем — добавить промежуточные gates внутри фаз.
  • Глубина критики Reviewer: добавь "представь что это код, который сломает продакшн в 3 часа ночи" для острее критики. Убери для более мягкой обратной связи.
  • Формат документов между фазами: для себя — bullet points достаточно. Для команды — попроси Builder оформить как Design Doc с секциями.

🔬

Шаблон методологии

📌

ФАЗА 1: DISCOVER

Промпт Builder:

Я работаю с {описание системы}. Контекст: {что известно, что нет}.

Задача: {что нужно сделать}.

Помоги собрать полный контекст:
1. {вопрос про архитектуру}
2. {вопрос про зависимости}
3. {вопрос про риски}
4. {вопрос про похожие решения в системе}

Вот материалы:
{код, структура, документы}

Результат: структурированный документ с ответами.

Промпт Reviewer:

Вот документ с контекстом по задаче:
[вставить ответ Builder]

Твоя задача — критика исследования:
- Какие важные вопросы не заданы?
- Где нужны уточнения?
- Какие риски или зависимости пропущены?

Ты senior engineer с опытом работы в {домен системы}.

🚦 HUMAN GATE: Проверь, дополни, утверди контекст.


📌

ФАЗА 2: DEFINE

Промпт Builder:

Контекст утверждён:
[итоговый документ из Discover]

Предложи 2-3 варианта реализации {задача}:
- {аспект 1: где размещать, как интегрировать}
- {аспект 2: технологии, библиотеки}
- {аспект 3: edge cases, производительность}

Для каждого варианта: trade-offs, сложность, риски.

Промпт Reviewer:

Вот варианты решения:
[вставить ответ Builder]

Найди проблемы:
- Какие edge cases не учтены?
- Где проблемы с производительностью/безопасностью?
- Какие зависимости пропущены?
- Что может сломаться?

Ты архитектор, отвечающий за стабильность системы.

🚦 HUMAN GATE: Выбери вариант, дополни план, утверди.


📌

ФАЗА 3: DELIVER

Промпт Builder:

План утверждён:
[финальный план]

Реализуй:
1. {компонент 1}
2. {компонент 2}
3. {тесты}

Требования:
- {технические детали}
- {стиль, conventions}

Промпт Reviewer:

Вот код:
[вставить код от Builder]

Pre-review:
- Дефекты и баги
- Стиль и conventions
- Error handling
- Проблемы с тестами

Ты делаешь проверку перед отправкой коллеге на финальный ревью.

🚦 HUMAN GATE: Проверь критику, доработай код, закоммить.


Плейсхолдеры: - {описание системы} — кратко: "Django админка 5 лет, 3 команды, техдолг" - {задача} — конкретная цель: "добавить экспорт в Excel" - {вопрос про X} — детализируй под свою ситуацию - {домен системы} — e-commerce, fintech, legacy enterprise


🚀 Быстрый старт — вставь в чат:

Вот методология D³ для работы со сложными системами через AI. 
Адаптируй под мою задачу: [твоя задача]. 

Задавай вопросы чтобы заполнить все три фазы: Discover, Define, Deliver.

[вставить шаблон выше]

LLM спросит про систему, задачу, материалы — чтобы заполнить Discover фазу. Она возьмёт структуру фаз и ролей (Builder/Reviewer) и адаптирует под вашу ситуацию.


⚠️

Ограничения

⚠️ Подходит для сложных задач: Методология избыточна для простых задач ("напиши функцию сортировки массива"). Оверхед трёх фаз не окупится. D³ — для legacy систем, многокомпонентных изменений, задач с высокими рисками.

⚠️ Требует дисциплины: Human Gates работают только если вы реально останавливаетесь и проверяете каждую фазу. Если пропускать gates и доверять AI — получите те же проблемы что и при работе "в лоб".

⚠️ Дороже по токенам: Два агента на каждой фазе = больше запросов. Для задач где скорость генерации важнее качества плана — может быть невыгодно.

⚠️ Self-reported данные: Исследование основано на самооценке участников, не на контролируемых экспериментах. 26.9% productivity gain — это ощущения инженеров, не измерение task completion time. Воспринимайте как сигнал о practitioner sentiment, не как доказанный causal effect.


🔍

Как исследовали

Автор (бывший Head of Engineering - AI в Amazon) провёл двухфазное исследование с 52 опытными инженерами (60% с 6+ годами опыта, 63% из компаний с 3000+ разработчиков). 84% работали в brownfield или смешанных средах — как раз те, кому legacy системы знакомы не понаслышке.

Phase I (Baseline): измерили как инженеры используют AI "в лоб" без методологии. Результат: 68% не находили AI полезным для сложных задач. Это подтверждает Brownfield Paradox — без структуры AI в legacy системах скорее мешает чем помогает.

Intervention: всех познакомили с D³ Framework, объяснили принципы разделения на фазы и использования Builder/Reviewer агентов.

Phase II (спустя 4 недели): повторный опрос тех, кто реально применил методологию на рабочих задачах (N=52).

Результаты самооценки: - 26.9% productivity improvement — участники ощущали что делают задачи быстрее - 77% снизили cognitive load — меньше ментального напряжения от отслеживания всех деталей - 83% тратили меньше времени на исправление AI-кода — потому что Human Gates отлавливали проблемы раньше

Почему результаты важны несмотря на self-reported природу: исследование показывает что структура workflow меняет восприятие инженеров от "AI бесполезен" (68%) к "AI реально помогает" (77% снижение cognitive load). Это не controlled experiment с точными метриками времени, но это сильный сигнал что дисциплина применения критичнее чем сырые возможности модели.

Инструменты: Участники использовали разные LLM (62% Claude, 19% ChatGPT, 19% Gemini), но методология работала независимо от модели — это подтверждает что D³ про принципы промптинга, не про специфику конкретной LLM.

Что удивило: самый большой выигрыш был не в скорости написания кода, а в снижении времени на исправления (83%). Это перекликается с данными Becker et al. про −19% slowdown на сложных задачах: AI быстро пишет, но медленно исправляется. D³ переворачивает это — медленнее генерирует (три фазы), но быстрее доходит до правильного результата.


💡

Адаптации и экстраполяции

🔧 Техника: свернуть Discover+Define → одна фаза для средних задач

Если задача не критична (добавить новый endpoint в знакомый сервис, написать утилиту), полноценный Discover может быть избыточен. Объедини:

Промпт Builder:

Я работаю с {система}. Задача: {задача}.

Шаг 1: Собери контекст и риски
Шаг 2: Предложи вариант реализации с trade-offs

Вот материалы: {код, структура}

Промпт Reviewer:

Вот контекст + план:
[ответ Builder]

Критикуй:
- Пропущенные риски в контексте
- Проблемы в плане

Ты senior engineer.

→ Экономия одного запроса, но сохранение двухагентной структуры.


🔧 Техника: добавить третьего агента (Security/Performance Reviewer) для критичных систем

Если задача касается платежей, персональных данных, высоконагруженных API — добавь специализированного ревьюера:

Промпт Security Reviewer (после основного Reviewer в Define):

Вот план реализации:
[план от Builder + критика от Reviewer]

Проверь только security:
- Какие векторы атак?
- Где утечки данных?
- Какие best practices нарушены?

Ты security engineer с OWASP и опытом incident response.

→ Более острые проверки по узкой области, не растворённые в общей критике.


🔧 Техника: асинхронный D³ для распределённых команд

Если вы работаете в команде через async communication (документы, Notion, Linear):

  1. Discover: один инженер делает фазу, записывает в документ
  2. Human Gate: коллеги async комментируют в документе
  3. Define: Builder генерирует план в том же документе, Reviewer критикует
  4. Human Gate: async обсуждение в комментариях, выбор варианта
  5. Deliver: реализация + Reviewer pre-review перед PR

→ D³ становится структурой async collaboration document, а не набором промптов в чате одного человека.


🔗

Ресурсы

"Beyond Greenfield: The D³ Framework for AI-Driven Productivity in Brownfield Engineering"

Krishna Kumaar Sharma (Formerly Head of Engineering - AI, Amazon)

Упомянутые исследования: - Harvey et al. — 2025 DORA report (90% AI adoption at work) - Deniz et al. — McKinsey research (2x task completion speed with AI) - Ziegler et al. — GitHub Copilot study (+55% speedup on simple tasks) - Becker et al. (METR) — Experienced developers study (−19% slowdown on complex tasks) - Sun et al. — Automated code review with LLMs (60-75% issue detection) - Forsgren et al. — Documentation ROI longitudinal study (6-12 months payback) - Harding (GitClear) — AI-generated code review analysis (1.3x more review rounds)


📋 Дайджест исследования

Ключевая суть

Парадокс: AI ускоряет простые задачи на +55%, но замедляет сложные на −19%. Причина — когнитивная нагрузка от исправления тонких AI-ошибок в legacy системах перевешивает выигрыш от скорости генерации. D³ (Discover-Define-Deliver) позволяет работать с запутанным legacy кодом через LLM без перегруза от проверки багов. Фишка: явное разделение на три фазы с двумя агентамиBuilder генерирует (документация, планы, код), Reviewer критикует и ищет дыры, а Human Gates между фазами гарантируют что вы утверждаете каждый шаг, прежде чем двигаться дальше. Вместо «AI написал код → я распутываю баги» получается «AI предложил → я проверил → AI реализовал мой выбор → я финально одобрил».

Принцип работы

Процесс разбит на три последовательные фазы, каждая со своим фокусом. Discover — соберите полный контекст системы (где логика? как права? какие зависимости?). Builder исследует, Reviewer находит пропущенные вопросы. Define — спроектируйте решение с вариантами и trade-offs. Builder предлагает 2-3 подхода, Reviewer ищет скрытые риски и edge cases. Deliver — реализуйте и провалидируйте. Builder пишет код, Reviewer делает pre-review на баги и стиль. Между каждой фазой — Human Gate: вы останавливаетесь, проверяете результат обоих агентов, дополняете если нужно, утверждаете переход к следующему этапу. Все три фазы выполняются в обычном чате — никаких специальных инструментов.

Почему работает

LLM плохо держат контекст в длинных задачах. Если попросить «реши от начала до конца», модель пропустит критические детали на ранних этапах — они выстрелят багами в конце, и придётся переписывать всё с нуля. Фазирование снижает когнитивную нагрузку: сначала фокус только на понимании системы, потом только на проектировании, потом только на реализации — как работают опытные инженеры, но AI ускоряет каждую фазу. Разделение ролей усиливает обе стороны: Builder оптимизирован на креативность и скорость, Reviewer с установкой «найди дыры» работает в режиме скептика — ищет риски и скрытые зависимости. Human Gates держат вас decision maker'ом, а не «исправителем AI-кода» — это дороже по числу запросов, но дешевле по времени, потому что исправлять плохой код дороже чем проверять хороший план. Исследование показало: инженеры отметили рост продуктивности на 26.9% (self-reported данные).

Когда применять

Разработка для legacy систем → конкретно для многокомпонентных изменений в базе с техдолгом, потерянной документацией и миллионами строк кода, особенно когда риски высоки (критичные для бизнеса функции, продакшн-системы). Примеры: добавление функции в Django админку 5 лет с тремя командами авторов, рефакторинг модуля в enterprise Java приложении без документации, интеграция с внешним API в legacy e-commerce платформе. НЕ подходит для простых задач типа «напиши функцию сортировки массива» — оверхед трёх фаз не окупится, методология избыточна.

Мини-рецепт

Для каждой из трёх фаз:

1. Запусти Builder с чётким фокусом фазы: в Discover — «собери контекст (архитектура, зависимости, риски)», в Define — «предложи 2-3 варианта с trade-offs», в Deliver — «реализуй утверждённый план с тестами». Дай материалы: код, структуру проекта, документы.

2. Запусти Reviewer с установкой на критику: скопируй ответ Builder и попроси «найди дыры в исследовании», «найди риски в плане», «проверь код на баги и стиль». Добавь роль: «Ты senior engineer с опытом в {домен}» или «Ты архитектор, отвечающий за стабильность прода».

3. Human Gate — прочитай оба ответа (генерацию Builder + критику Reviewer), проверь полноту, дополни своими знаниями системы, утверди результат фазы. Только после утверждения переходи к следующей фазе.

Быстрый старт: Скопируй шаблон из саммари (раздел «Шаблон методологии»), замени плейсхолдеры {описание системы}, {задача}, {вопросы} на свою ситуацию, вставь в чат с LLM.

Примеры

[ПЛОХО] : «Добавь кнопку экспорта в Excel в админку заказов, учти фильтры и права доступа, код должен быть оптимизированным» — AI сгенерирует код за один заход, но пропустит что фильтры живут в трёх разных местах, права проверяются через кастомный middleware, а большие датасеты роняют memory. Ты потратишь часы на отладку и переписывание.
[ХОРОШО] : Фаза 1 (Discover): Builder — «Где логика фильтрации заказов? Как проверяются права? Есть ли похожие экспорты?» Reviewer — «Какие риски пропущены? Где могут быть скрытые зависимости?» Утверждаешь полный контекст. Фаза 2 (Define): Builder — «Предложи 3 варианта: где размещать кнопку, как обрабатывать 10k+ записей, какие библиотеки?» Reviewer — «Найди проблемы: race conditions, edge cases, что может сломаться?» Выбираешь подход. Фаза 3 (Deliver): Builder пишет код, Reviewer делает pre-review на баги, ты финально проверяешь и коммитишь. Результат — план учитывает реальные риски, код проверен до человеческого ревью, ты держал контроль на каждом шаге.
Источник: Beyond Greenfield: The D3 Framework for AI-Driven Productivity in Brownfield Engineering
ArXiv ID: 2512.01155 | Сгенерировано: 2026-01-06 00:51
📖 Простыми словами

D³ Framework: трёхфазная методология работы с legacy кодом через LLM

arXiv: 2512.01155

Нейросети тупеют, когда задача становится сложнее, чем «напиши стишок про кота». В больших и старых проектах, где код писали три поколения программистов, AI-ассистент превращается в бесполезного советчика, который предлагает решения, ломающие всё остальное. Проблема в том, что LLM пытается прыгнуть сразу к результату, игнорируя контекст и скрытые зависимости. Методология D3 (Discover-Define-Deliver) лечит это через жесткую дисциплину: ты не даешь модели писать код, пока она не докажет, что понимает, как устроена система.

Это как ремонт в старой «сталинке» с гнилой проводкой и дранкой в стенах. Если ты просто скажешь рабочему «сделай красиво», он поклеит обои поверх плесени, и через неделю всё отвалится. D3 заставляет сначала ободрать стены до кирпича (Discover), составить детальный план замены труб (Define) и только потом клеить плитку (Deliver). Причем на каждом этапе один рабочий делает, а второй — проверяет его косяки, пока ты стоишь над душой и подписываешь акты приемки.

В основе системы лежит связка из двух агентов: Builder и Reviewer. Первый генерирует идеи, а второй работает как профессиональный хейтер — ищет дыры в безопасности, нестыковки в логике и просто слабые места. В фазе Discover они вместе копают старый код, в Define рисуют архитектуру решения, а в Deliver выдают готовый результат. Главная фишка здесь — обязательный контроль человека между этапами. Ты не идешь дальше, пока не убедишься, что фундамент не из песка.

Хотя метод обкатывали на суровом промышленном коде, принцип универсален. Это сработает везде, где цена ошибки высока, а контекста слишком много: от переписывания юридических договоров до реструктуризации маркетинговых стратегий. Без такой структуры использование AI на сложных задачах дает минус 19% к скорости работы. Ты тратишь больше времени на исправление галлюцинаций и багов, чем если бы делал всё руками. D3 превращает хаотичный чат с ботом в предсказуемый конвейер.

Короче, хватит надеяться на магию одной кнопки «сделай всё круто». Если проект сложнее табуретки, AI без структуры — это гарантированный провал и куча потраченного времени. Используй трехфазный цикл и заставляй модели критиковать друг друга до того, как они коснутся живого кода. Либо ты управляешь процессом через точки контроля, либо потом мучительно разгребаешь последствия «быстрых решений».

Работа с исследованием

Адаптируйте исследование под ваши задачи или создайте готовый промпт на основе техник из исследования.

0 / 2000
~0.5-2 N-токенов ~10-30с
~0.3-1 N-токенов ~5-15с