КАК Я КРУТИЛ AGENT LOOP РУКАМИ ВМЕСТО ТОГО, ЧТОБЫ ЕГО ЗАПРОГРАММИРОВАТЬ
Вчера я понял, что над задачами по формированию продуктового backlog работаю с AI самым тупым способом: выполняю руками функции оркестратора. Я попросил одну модель составить backlog из нашего диалога в файл, потом отдал второй его разъебать и кинуть результат в соседний файл, третьей - разъебать разъёб второй, а затем вернул первой разбор третьей. Модели работали командой, но цикл между ними крутил я через консоль и файлики между которыми я переключался, такой особенно уставший кожаный компонент посередине. Почему я не догадался применить подход с циклами, который давно использую при программировании, история умалчивает.
По сути, я руками собрал review/revise loop. Один агент создаёт результат, другой делает review, следующий исправляет замечания, после чего всё снова отправляется на проверку. Цикл продолжается, пока результат не принят, не закончился budget или не придёт человек. Обычный while, который я зачем-то исполнял сам.
Тут важно различать внутренний и внешний agent loop. Внутри coding agent уже крутится свой цикл: модель чёто решает, вызывает tool, получает результат и выбирает следующий шаг. А я строил внешний цикл, где отдельные запуски моделей были исполнителями, файлы хранили state, а я определял переходы. То есть внутри каждого агента работал маленький оркестратор, а снаружи сидел я и работал большим.
Самый простой вариант такого внешнего цикла - Ralph Loop. Скрипт запускает агента со свежим контекстом, тот читает задачу и состояние из файлов, делает следующий шаг, сохраняет результат и умирает. Новая итерация опять начинается с чистой головы, поэтому история не раздувается бесконечно, а context rot меньше влияет на работу. По сути, Ralph - это внешний while вокруг агента, и в этом вся его прелесть.
Если одного while становится мало, потому что появляются ветвления, review, retry и human approval, цикл естественно вырастает в граф. Каждый шаг становится вершиной графа, переход - ребро, а задача, артефакты и замечания лежат в общем state. LangGraph помогает описывать такие схемы, но сами концепции до боли знакомы любому разработчику хоть сколько-то распределённых систем. Просто теперь один из узлов не вызывает сервис, а просит LLM подумать(а де факто тотже вход/выход).
Еще интересно как оценивать все эти результаты - руками, тестами, нейронкой судьей, консилиумом нейронок и кожаных...Но это другая исторя
Короче, важно не количество кругов на диаграмме. Важно, кто хранит state, выбирает следующий шаг, проверяет результат и останавливает карусель. Именно из такой ручной хуйни у меня вырос Dev Task Workflow, а затем и AI Team(про него будет отдельная серия постов). Ну и как видите, не забываю устраивать детокс и работать циклом самому)
AI Для Задротов. Подписаться
Post #49
355

- 👍 6