Комментарии 8
Если возможно, хотелось бы посмотреть по больше кусков чата из общения агентов, чувствую там есть довольно интересные моменты
К сожалению без фильтрации по ишьюсам оно выглядит мягко говоря запутанно. Там просто поток сообщений одовременно от разных машин по разным задачам. Обычно сообщения большие, подробные. Я специально запоминал и выбирал интересные случаи которые мне понравились. А еще там обезличены номера заявок, убраны пути, названия машин и прочее. Так что сорри, сейчас больше ничего нет - не готовил. Но может есть смысл сделать отдельный выпуск про внутреннее общение ИИ.. хм.. прикольная идея. если матерьяла насобираю ;)
Надо делать отдельного агента "Модератора" который будет следить за их чатом
Вот я хочу делать не просто Модератора, а Директора. Которого будут еще слушаться и исполнять. И еще. Сейчас чат они читают по своему усмотрению каждый. Обычно как начинают или заканчивают какую-то работу. Поэтому срочного "исполнения приказа" в таком варианте нет. Я собираюсь пилить чтоб сообщения о Директора попадали моментально в контекст агентов кому они назначены. В этом есть некоторая потребность уже. Ну к примеру нужно срочно стопнуть разработку и не коммитить никому. Сейчас такое не сработает если отправить. Все прочитают это в разное время.
Отличный отчёт! Читал с интересом. Есть несколько вопросов:
Как вы контролируете код, который пишет Клод? Кто или что отслеживает архитектурный дрейф?
Увеличилось ли число статических анализаторов после перехода на агентскую разработку?
Как вы контролируете контекст агента?
Почему, когла агенту не хватало ручки или глаза - он ждал, а не дописывал механизм верификации? Спасибо
Человеческого контроля каждого изменения нет. В том то и прелесть. При таких масштабах разработки затраты на человеческий контроль несопоставимы с затратами на ИИ. Стало быть контроль кода и дрейфа состоит примерно из этих частей:
а) Ревьюер (он указан на схеме). Простая подчистка "хвостов", мертвого кода и прочих мелочей сразу после создания кода
б) При написании кода Клод "консультируется" с Кодексом получая его ревью на отдельные вопросы или в целом на код, который написала. Там уже вопросы решаются не только поверхностные, но и архитектурные. В промтах много требований соблюдать консистентность проекта, не плодить излишний код, не наслаивать. Но конечно бывает. Поэтому чистка идет дальше
в) Аудит. На этом этапе самый строгий контроль кода и архитектуры
г) Архитектурный дрейф контролируется "вручную" инженером естественно при помощи ИИ агента по фактическим диффам - это позволяет сосредоточить анализ именно на измененных участках, не распыляясь по всему проекту. Найденную проблему можно не ждать самому, а создать ишью по результатам анализа - Решала выполнит сам.
д) По дрейфу наверное самое важное. Архитектурные развилки обязаны эскалироваться к лиду еще на этапе анализа кода. Автомат не возьмется за работу если видит важную архитектурную развилкуНет, статических анализаторов не добавляли. На практике видно, что ИИ агенты справляются с этой задачей лучше. Несколько уровней контроля кода, которые перечислил выше, справляются с задачей. Статический анализатор думается мне уходит в прошлое. Но его функция конечно остается. Просто выполняется качественнее.
Контекст агента
а) Каждый субагент - отдельный контекст со своими промтами
б) Между агентами нужные данные передаются через папку ишью - там нужные логи, выводы, скриншоты, скачанная фикстура и прочее
в) Стоимость каждого субагента контролируется в долларах и в токенах. Есть лимиты.
г) Ктстаи по промтам. Важный инсайт (вроде очевидный, но не сразу доходит) - нельзя идти путем создания промтов по типу указаний, строгих правил. Агент достаточно умный, но исполнительный. И чем строже правила, тем боьльше они зажимают его и превращают в обычный олдскульный алгоритм. Промты нужно писать в формате манифеста, рекомендаций, и полученного ранее опыта. Строгие указания только на важные моменты: например безопасность
д) На каждом инстансе весь процесс работы ведет отдельный агент. Даже если на компе все агенты запускаются скриптом и летят в автомате, здесь запущего интерактивное окно Клода (или Кодекс), который следит за процессом, "тушит пожар", отписывается в общий чат и прочее. А "марафон" задач например вообще бежит на таком агенте без скрипта автоматического выбора задач. Последовательности и важность задач, которые мы берем решает ИИ агент. И с ним непосредственно есть перепика с человеком. В общем это такой домовой на каждом компе :) к которому я всегда могу зайти и спросить как дела, что делается, как прошла ночь и так далее. Конечно же этот агент имеет "бесконечный" продолжающийся автосаммари контекстСейчас у нас строгое разделение ролей. Иначе можно зарыться. "Решала" не дописывает себе "ручки", но если он понимает, что ему не хватает инфраструктуры, он делает infra feedback, откладывает решение ишью. Разбор фидбэка (отдельный агент) выполняет анализ и доработку ифнраструктуры по жалобам обобщенно и системно. Потом решение повторяется уже с новой измененной инфраструктурой. Так мы отделяем роли. Разбиратель фидбэка (Доработница :) знает как работать с инфраструктурой и имеет системное "мышление" (промты). У Решалы своя задача - решить ишью на той инфраструктуре, что имеем. При необходимости запросить изменения. Так мы исключаем зацикливание в самодоработки. И самое главное обеспечиваем системный взгляд на инфраструктуру, а не костыльную подгонку "ручек" под конкретный случай
Спасибо за подробный ответ. Но после него опасение у меня скорее усилилось.
Решала, Ревьюер, Кодекс и Аудитор - все же одной породы: вероятностные толкователи кода и одного и того же предания о задаче. Если Решала неверно понял тикет или подхватил грязный контекст, остальные могут чинно согласиться и освятить ошибку общим мнением - вы сами видели, как аудит на Claude “читал сочувственно”. Codex помог, но согласие нескольких моделей - это круговая порука, а не доказательство. И эскалация развилок держится на том же: развилку, которую агент не распознал, лид не увидит.
Поэтому нужна не очередная Убеждала, а тупая Недоверяла. Без воображения, без красноречия и без права поверить объяснениям. Ей подавай вещественные свидетельства: тесты, предупреждения компилятора, санитайзеры, линтеры, запретные зависимости, граф включений. Что можно проверить по уставу, должно проверяться по уставу, модель-судья - там, где объективного мерила нет. Столбовая дорога, насколько вижу, нынче ведет ровно туда - к правилу “не доверяй и проверяй”: все проверяемое проверяется сторонней силой, слову соседней модели веры нет.
Мысль про анализаторы, уходящие в прошлое, поэтому кажется мне перевернутой. Их должно становиться больше: поток изменений вырос, а человеческий досмотр каждого изменения исчез. У меня обычные линтеры и собственный Archcheck - он сличает структуру C++ проекта с прежним состоянием и ловит новые циклы, новые межмодульные зависимости, удлинение цепочек включений, перегруженные заголовки, расползание копипасты, рост локальной сложности и тесты, переписанные вместе с кодом, - находили настоящие изъяны уже после модельного разбора. И не только у меня: я собирал такие случаи по открытым репам - из 38 PR со структурным дрейфом, прошедших ИИ-ревью, проблему подняли два. В одном PR Copilot одобрил “убираем циклические включения”, а по факту добавился цикл из семи заголовков. Модель прочитала намерение автора, а не граф. Подробнее писал здесь: https://habr.com/ru/articles/1057624/
Про реопены гипотеза такая. Конвейер исправно проверяет, что код соответствует выводу агента. А кто проверяет, что вывод агента соответствует задаче? Тикет берется в работу без уговора о том, что считать сделанным: критерий приемки агент не знал или не понял - и догадался сам. Одна из причин возвратов у вас в статье уже названа: мелочь, которую торопливый решатель счел несущественной. Для пользователя она была существенной, просто уговора о приемке не было. Дальше все сходится само: Понимала восстановил намерение неверно, Решала честно построит не то, GUI-проверка честно подтвердит не то, и Проверяла согласится - все сверяются с одним и тем же толкованием. Возврат приходит от единственного участника, который сверяется с исходным желанием, - от пользователя. И тогда в каких-то случаях правильный исход разбора - не решать тикет, а вернуть его автору с вопросами о приемке.
Про тесты осталось неясно. Живой интерфейс подтверждает один путь на одной фикстуре, смоук-тесты закрепляют ручки Управлялы. А продуктовый C++ на три миллиона строк? Есть ли обязательные модульные и стыковые испытания и правило “каждый исправленный изъян оставляет после себя тест”?
Контекст вы описали как доставку - субагенты, папки, денежные пределы. А чистота? Как следующий агент отличает установленный факт от догадки предыдущего? “Бесконечный автосаммари-контекст” - это цепь пересказов, где догадка незаметно обращается в факт. Признаки уже видны: чат без фильтрации, по вашим же словам, выглядит запутанно, а переписку вы перестали читать. Летопись ведется, но сверять ее уже некому, кроме самих агентов. Тут нужен не только Директор, раздающий повеления, но и тупой Писарь: единый устав сообщений - источник сведений, ревизия, степень уверенности, ссылка на исходное свидетельство. Иначе инженеры скоро будут понимать не систему, а сказ агентов о ней: спросить агента смогут, проверить ответ - уже нет.
Отдельно скажу про SVN, хотя вы про него и не спрашивали. Для меня он в этой истории косвенная примета отношения к архитектуре и к удобству агента. Весь агентский инструментарий заточен под git worktree с дешевой изоляцией изменений - у вас же агенты живут в рабочих копиях с локами и переговорами через общий чат. Он же примета того, что серьезный рефакторинг в проекте не в чести, то есть в коде хватает костылей. А агент перенимает повадки окружающего кода: посадите его в залежи старого кода с костылями - будет прилежно мастерить новые. Выносить новое в чистые модули, судя по статье, не пробовали. Рядом тем временем растет второй непростой продукт - фабрика агентов: Доработница перестраивает орудийный двор, изменения двора требуют своего разбора и надзора. Сложность не исчезает, она поднимается этажом выше и обрастает должностями.
Про дрейф я и спрашивал не отвлеченно. Archcheck у меня ровно для этой роли - независимая тупая Недоверяла для структурного дрейфа, без рассуждений, общего контекста и почтения к убедительным объяснениям.
Сперва начал писать развернутый ответ. Но к сожалению понял, что полемика в таком формате комментариев избыточна. Простите :)
Спасибо за замечания и Ваши размышления. Некоторые действительно по делу. Некоторые (как например SVN) - наследие старого проекта, которое мы знаем, но сейчас не является первостепенным. Но некоторые избыточны и основаны на предположениях о нашем проекте. Как то например, из выбора того же SVN сделан необоснованный вывод, что серьёзный рефакторинг у нас не в чести. Это не так: недавно буквально распилили модуль с 30к строк, который рос годами на участки по 5к и соответствующие классы. Многое остаётся за пределами этой статьи - она лишь про конвейер Автопилота.
Идею "что считать сделаным" принял на вооружение, усилив промты и цели агентов. Спасибо.
Честно, мне приятно такое детальное внимание к теме. Значит, наверное, наш опыт оказался полезен хотя бы чтоб поднять тему. :) Пойду почитаю Ваш опыт. Многие советы про анализаторы выглядят хорошо. Спасибо.

ИИ-Автопилот: замкнутый цикл разработки на C++ — от тикета до проверки в живом GUI