Domain-Driven Agents: как LLM справляются с легаси-кодом

Автор делится опытом внедрения LLM-агентов в легаси-проекты. Он объясняет, что модели справляются с новыми проектами, но терпят неудачу на сложных кодовых базах из-за отсутствия единого языка и контекста. Решение — использовать Domain-Driven Design (DDD) для создания манифестов и глоссариев, которые описывают домен и границы контекстов. Это позволяет агентам точно понимать, какие термины и паттерны использовать, а также автоматически проверять согласованность между контекстами. Автор показывает, как он структурирует работу: стратегические решения принимает сам, а тактическую реализацию делегирует агентам.

Модель не нуждается в апгрейде. Код не готов, и готовность — это то, что мы можем построить. Инкрементально, кусок за куском.
  1. stephen

    Я тоже поклонник DDD с маленькой буквы, и нам повезло с файлами `md` для каждой сущности, чтобы документировать поведение/особенности/использование домена независимо от языка.

    Т.е. `Author.ts` имеет `Author.md`, `Book.ts` имеет `Book.md`.

    Для агентов мы дали им навык читать и писать эти `md`-файлы:

    https://github.com/joist-orm/joist-orm/blob/main/packages/co...

    И обновления `md`, написанные агентом, теперь появляются в PR. Пока что это кажется полезным (наш основной репозиторий — это монолит на TypeScript с 350k строк кода).

    Признаюсь, это гораздо менее изощренно (и менее сложно), чем «граф рёбер входа/выхода для каждого ограниченного контекста» из исходного поста, но это, вероятно, опять моё предпочтение DDD с маленькой буквы, где я считаю, что некоторые паттерны «DDD в масштабе» приводят, на мой взгляд, к переусложнению.

  2. owaiswiz

    Кое-что, что я прочитал в первых абзацах о том, что LLM легче работать с проектами с нуля...

    Мой опыт противоположен. Они хорошо работают на существующих проектах, но не очень хороши на новых (если только вы не просто кодите на вибе что-то простое).

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

  3. scotty79

    Когда на собеседовании спрашивали о DDD, я шутил, что это разработка, управляемая отладкой (Debug Driven Development), когда ты начинаешь с пустой директории и заводишь первый баг: «Приложение ничего не делает. Оно должно...».

    Без иронии, это примерно так я теперь работаю с AI-агентами.

Ещё за этот день

2026-08-29