Как дать агенту работать часами: inner loop, внешний цикл и перезапуск
Короткий ответ
Долгая работа агента — это не один огромный чат. Это серия ограниченных запусков, между которыми сохраняются файлы, тесты, состояние и следующий конкретный шаг.
Так агент не обязан тащить всю историю в контексте и может начать новый проход с чистой головой.
Три уровня цикла
1. Inner loop
Это обычный рабочий цикл:
получи задачу → вызови инструмент → прочитай результат → продолжай → проверь завершение
Он живёт внутри одного запуска агента. Здесь модель решает, какой инструмент вызвать следующим.
2. Внешний цикл
После окончания запуска harness может начать следующий проход. Новый запуск читает сохранённые файлы, отчёт и список оставшихся задач.
запуск 1 → checkpoint → запуск 2 → checkpoint → запуск 3
В разговорах об агентной разработке такие схемы иногда называют Ralph loop или ref loop. Это не единый стандарт и не готовая технология. Название не заменяет условия остановки.
3. Meta loop
Иногда агент не движется вперёд, а повторяет один и тот же способ решения, меняя только формулировки. Внешний meta loop должен заметить это и изменить стратегию: остановить текущую ветку, сохранить результат, очистить рабочий контекст и запустить независимый поиск другого пути.
Что сохранять между запусками
Не нужно сохранять весь разговор. Достаточно компактного checkpoint:
task.md — цель и границы
state.json — машинное состояние
progress.md — что уже сделано
failures.md — ошибки и неудачные гипотезы
next_step.md — ровно следующий шаг
artifacts/ — проверенные результаты
Хороший next_step.md отвечает на один вопрос: что должен сделать следующий запуск, чтобы сдвинуть задачу?
Плохой checkpoint выглядит так: «продолжай работу и разберись дальше». Это не состояние, а повтор старого запроса.
Контекст — это ресурс
Чем длиннее история, тем больше места занимают старые tool-результаты, повторённые инструкции и неактуальные варианты. Но из этого не следует, что надо постоянно обнулять контекст.
Нужен баланс:
- сохранять факты и решения в файлах;
- оставлять в контексте только то, что нужно для ближайшего шага;
- регулярно сжимать историю в короткий handoff;
- не прятать важное решение только в summary, если его можно выразить структурой или тестом.
Anthropic в исследовании автономии прямо отмечает, что то, как долго агент работает без остановки, зависит от модели, пользователя и продукта вместе. Поэтому «работал 45 минут» — это характеристика конкретного наблюдения, а не универсальная гарантия для любого harness.
Условия остановки обязательны
Перед внешним циклом задайте:
- максимальное число перезапусков;
- лимит времени;
- лимит стоимости;
- лимит изменений;
- условие успеха;
- условие передачи человеку;
- условие аварийной остановки.
Пример:
остановиться успешно, если:
все тесты зелёные
артефакт существует
validator подтвердил структуру
остановиться с ошибкой, если:
3 запуска подряд повторяют один путь
изменено больше 10 файлов
превышен бюджет
нужен доступ, которого нет
Бесконечный цикл — это не автономность. Это отсутствие контракта.
Как перезапускать правильно
Новый запуск должен получать не «всю жизнь агента», а короткий пакет:
- исходная цель;
- текущий статус;
- список изменённых файлов;
- результаты проверок;
- последние ошибки;
- один следующий шаг;
- ограничения, которые нельзя нарушать.
Если новый агент должен заново читать все старые логи, вы перенесли проблему контекста из одного окна в другое.
Где длинный цикл полезен
- исследование большого корпуса;
- миграция, которую нельзя закончить за один запуск;
- генерация кода с тестами и исправлениями;
- пакетная обработка независимых файлов;
- benchmark, где нужно провести несколько сравнительных прогонов.
Где длинный цикл опасен
- публикация без ручного gate;
- отправка писем и финансовые действия;
- изменение production без ветки и rollback;
- работа с персональными или медицинскими данными;
- задача, где нет надёжного validator.
Чем дороже ошибка, тем меньше должна быть автономная область одного запуска.
Что запомнить
Длинная задача — это не длинный разговор. Это набор коротких запусков с проверяемым состоянием между ними.
Начните с одного checkpoint, одного внешнего перезапуска и одного условия остановки. Только когда этот маленький цикл понятен, добавляйте meta loop.
Следующий гайд: Backpressure: как тесты не дают агенту сойти с задачи.
Что читать дальше
Частые вопросы
Что главное в гайде «Как дать агенту работать часами: inner loop, внешний цикл и перезапуск»?
Долгая работа агента — это не бесконечный чат. Разбираем inner loop, внешний цикл перезапуска, контроль контекста, checkpoints и условия остановки.
Нужно ли внедрять всё сразу?
Нет. Начните с одной проверяемой задачи, а следующий слой добавляйте после результата.
Что проверить перед запуском?
Права доступа, границы задачи, критерий готовности и возможность отката.
Источники
- Anthropic: Measuring AI agent autonomy in practice
- Anthropic: Building effective agents
- OpenAI: Introducing upgrades to Codex
- OpenAI: Introducing the Codex app
Редакторский статус: REVIEW. Термины Ralph/ref loop нужно дополнительно объяснить как разговорные паттерны, а не стандарты.
Обсуждение
Комментарии
Напишите, что думаете: согласны, спорите, увидели ошибку или хотите добавить пример. Комментарии появляются сразу; спам и мусор мы удаляем вручную.
Пока комментариев нет. Можно быть первым.