Мне очень понравилось писать внешние циклы над агентами #LLM, которые жестко задают роли, рамки их взаимодействия, sandboxing агентов, outcome, и так далее.
Кажется, пока такие циклы позволяют решать задачи быстрее, или дешевле, чем если сказать конкретному харнесу "сформулируй план о 10 пунктах и запусти мне 10 агентов для его исполнения". Пока сабагенты часто творят дичь - крадут друг у друга коммиты, игнорируют правила про ревью кода перед merge, сами коммитят в trunk, помимо процедур, а агент-оркестратор быстро забывает, что он делает, и начинает кодить вместо того, чтобы оркестрировать.
У меня для этого уже даже есть микрофреймворк - агенты как горутины, обертки над разными харнессами, способы описывать стейтмашины переходов сообщений/задач/контекстов между агентами, и прочее, и прочее.
Вот, запилил себе такой новый простенький цикл - "Pupa-Lupa ANalysis", он же PLAN.
Запускаетсся он как то так:
pg:home# echo 'нужен детальный план внедрения в проект параллельного парсинга И резолвинга заголовков' | plan --pupa-harness=./codex.home --lupa-harness=./claude.home
И дальше он начинает крутить цикл передачи сообщений от двух харнесов, роли для которых можно указывать отдельно. Пупа в данном контексте предлагает решение, Лупа - критикует, и отправляет на доработку, пока не согласится с предложенным вариантом.
На КДПВ - куски их диалога в консоли.
Важно, чтобы харнесы, и модели под ними, были разными, это ключевое требование, иначе не работает. Пупу мне больше всего нравится делать claude + opus, а Лупу - gemini/codex. Потому что opus слишком четкий и дерзкий для критика, ага.