Контекст
/aif-loop — сильный inner / reflex loop: контракт успешности (run.json.criteria), строгий валидатор (EVALUATE через параллельные Task), персистентное состояние (run.json / history.jsonl / artifact.md) с resume, стоп по порогу / стагнации / лимиту итераций. Это полностью закрывает inner loop и Maker-Checker.
Не хватает трёх возможностей для outer loop (автономная работа без оператора). Все три аддитивны и обратно совместимы — без новых полей/режимов поведение не меняется.
1. Бюджет токенов/времени как стоп-условие
Сейчас единственный ресурсный лимит — max_iterations. Одна «тяжёлая» итерация может сжечь непредсказуемо много токенов; для автономных прогонов это главный риск.
Предложение — добавить в run.json:
"budget": { "max_tokens": 500000, "max_wall_seconds": 3600, "spent_tokens": 0 }
- инкремент
spent_tokens после каждой фазы (из usage субагентов Task);
- новое стоп-условие (Step 5):
reason=budget_exceeded;
- в Step 2 (setup) спрашивать бюджет наравне с
max_iterations.
Без поля budget — поведение как сейчас.
2. Режим --auto (триггеры / Automations)
disable-model-invocation: true + только ручной запуск = нет outer loop: нельзя стартовать цикл по расписанию/событию (новый тикет, красный CI, ночной прогон).
Предложение (не ломая дефолт):
- режим
--auto (или companion-скилл) — без интерактивных вопросов: критерии/итерации/бюджет из аргумента или .ai-factory/config.yaml; при неоднозначности не блокируется вопросом, а пишет ошибку в history.jsonl;
- рецепт обвязки в
references/ (cron / git hook / CI), вызывающий /aif-loop new "<task>" --auto.
3. Backlog-режим, читающий IMPLEMENTATION_NOTES
Сейчас цикл берёт один промпт. Outer loop в идеале идёт по очереди задач.
Предложение — режим /aif-loop backlog, который берёт вход из уже существующего механизма, а не вводит новую сущность. Community-расширение Implementation Notes (добавлено в #128) уже копит отложенную работу в .ai-factory/IMPLEMENTATION_NOTES.md как записи QUESTION и TRADEOFF. aif-loop backlog может:
- прочитать открытые
QUESTION / TRADEOFF из журнала (или произвольный todo-файл);
- для каждого запустить полный reflex-цикл (свой alias, изолированно);
- уважать общий бюджет из п.1 (across-tasks лимит);
- вести сводный статус passed / failed / budget_exceeded.
Так outer loop замыкает конвейер: /aif-implement фиксирует отложенное → /aif-loop backlog его прогоняет.
Мелочи
- Валидатор другой моделью — опция
evaluator_model в EVALUATE (снижает риск «агент подтверждает сам себя»).
- Машинно-проверяемые gate'ы в CRITERIA-TEMPLATES (exit-code / coverage) наравне с контентными.
Приоритет
- budget-стоп — маленький, безопасный, сразу полезен;
--auto — открывает outer loop;
- backlog — крупнее, можно позже.
Всё аддитивно и обратно совместимо: без новых полей/режимов поведение не меняется.
Контекст
/aif-loop— сильный inner / reflex loop: контракт успешности (run.json.criteria), строгий валидатор (EVALUATE через параллельныеTask), персистентное состояние (run.json/history.jsonl/artifact.md) сresume, стоп по порогу / стагнации / лимиту итераций. Это полностью закрывает inner loop и Maker-Checker.Не хватает трёх возможностей для outer loop (автономная работа без оператора). Все три аддитивны и обратно совместимы — без новых полей/режимов поведение не меняется.
1. Бюджет токенов/времени как стоп-условие
Сейчас единственный ресурсный лимит —
max_iterations. Одна «тяжёлая» итерация может сжечь непредсказуемо много токенов; для автономных прогонов это главный риск.Предложение — добавить в
run.json:spent_tokensпосле каждой фазы (из usage субагентовTask);reason=budget_exceeded;max_iterations.Без поля
budget— поведение как сейчас.2. Режим
--auto(триггеры / Automations)disable-model-invocation: true+ только ручной запуск = нет outer loop: нельзя стартовать цикл по расписанию/событию (новый тикет, красный CI, ночной прогон).Предложение (не ломая дефолт):
--auto(или companion-скилл) — без интерактивных вопросов: критерии/итерации/бюджет из аргумента или.ai-factory/config.yaml; при неоднозначности не блокируется вопросом, а пишет ошибку вhistory.jsonl;references/(cron / git hook / CI), вызывающий/aif-loop new "<task>" --auto.3. Backlog-режим, читающий IMPLEMENTATION_NOTES
Сейчас цикл берёт один промпт. Outer loop в идеале идёт по очереди задач.
Предложение — режим
/aif-loop backlog, который берёт вход из уже существующего механизма, а не вводит новую сущность. Community-расширение Implementation Notes (добавлено в #128) уже копит отложенную работу в.ai-factory/IMPLEMENTATION_NOTES.mdкак записиQUESTIONиTRADEOFF.aif-loop backlogможет:QUESTION/TRADEOFFиз журнала (или произвольныйtodo-файл);Так outer loop замыкает конвейер:
/aif-implementфиксирует отложенное →/aif-loop backlogего прогоняет.Мелочи
evaluator_modelв EVALUATE (снижает риск «агент подтверждает сам себя»).Приоритет
--auto— открывает outer loop;Всё аддитивно и обратно совместимо: без новых полей/режимов поведение не меняется.