Комментарии 12
200к строк это небольшой проект, это излишество, он целиком влезает в контекст опуса
а для более крупных надо просто заранее продумывать архитектуру
Та же проблема в проекте ~150К строк. Bounded contexts + контракты помогают, но AI всё равно не видит сайд-эффекты на стыках модулей. Как решаете?
150к строк полностью влезает в контекст нейронки
Сайд-эффекты на стыках это как раз больное место. У нас агент не видел, что репозиторий дёргает вебхук, пока это не было явно в типе порта. Помогли две вещи: эффект стал частью контракта (порт описывает что он триггерит, а не только что возвращает), и интеграционные тесты ровно на стыках модулей, которые агент обязан прогнать. Дрейф ловится там, а не в юнит-тестах.
Дело не в том, влезает проект в контекст или нет. Даже когда модель видит все 200к разом, она лезет через границу: чинит баг, дёрнув приватную функцию из соседнего модуля, потому что так короче. Архитектура нужна не чтобы уместить в окно, а чтобы агент не обходил контракт даже когда видит весь код. Продумать заранее согласен, но тут legacy, который уже есть, с нуля переписать не вариант.
Согласен, пришел к похожим идеям. Контроль должен быть на физическом уровне - т.е. тупо не должно быть возможности обойти публичные контракты.
Да, именно физический уровень. У нас границы вынесены в отдельные пакеты, импорт из чужого внутреннего модуля просто не напишется, eslint-boundaries рубит на корню. Пока контракт можно обойти по-человечески, агент рано или поздно это сделает, причём в самый неудобный момент. Когда обойти физически нельзя, выбора у него не остаётся.
С конкретными правилами, цифрами до и после, и честным разделом про то, где Clean Architecture начинает мешать самому же агенту.
У вас кусок промта протёк в статью. Заберите свой нейрослоп обратно.
Понравились советы, как сделать чтобы агент не ломал архитектуру.
И что, в проекте нигде нет lazy loading?
index.ts же тащит в сборщик всё сразу

Clean Architecture и AI: как я перестроил проект на 200К строк, чтобы агенты не ломали код