Domain-Driven Agents: как LLM справляются с легаси-кодом
Автор делится опытом внедрения LLM-агентов в легаси-проекты. Он объясняет, что модели справляются с новыми проектами, но терпят неудачу на сложных кодовых базах из-за отсутствия единого языка и контекста. Решение — использовать Domain-Driven Design (DDD) для создания манифестов и глоссариев, которые описывают домен и границы контекстов. Это позволяет агентам точно понимать, какие термины и паттерны использовать, а также автоматически проверять согласованность между контекстами. Автор показывает, как он структурирует работу: стратегические решения принимает сам, а тактическую реализацию делегирует агентам.
Модель не нуждается в апгрейде. Код не готов, и готовность — это то, что мы можем построить. Инкрементально, кусок за куском.
- 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 в масштабе» приводят, на мой взгляд, к переусложнению.
- owaiswiz
Кое-что, что я прочитал в первых абзацах о том, что LLM легче работать с проектами с нуля...
Мой опыт противоположен. Они хорошо работают на существующих проектах, но не очень хороши на новых (если только вы не просто кодите на вибе что-то простое).
Я думаю, это связано с тем, что они могут опираться на годы устоявшейся структуры/соглашений в существующих проектах, что делает их лучше, на мой опыт.
- scotty79
Когда на собеседовании спрашивали о DDD, я шутил, что это разработка, управляемая отладкой (Debug Driven Development), когда ты начинаешь с пустой директории и заводишь первый баг: «Приложение ничего не делает. Оно должно...».
Без иронии, это примерно так я теперь работаю с AI-агентами.