Skip to content

feat(aif-loop): outer-loop — бюджет токенов/времени, режим --auto, backlog из IMPLEMENTATION_NOTES #140

Description

@sattva2020

Контекст

/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) наравне с контентными.

Приоритет

  1. budget-стоп — маленький, безопасный, сразу полезен;
  2. --auto — открывает outer loop;
  3. backlog — крупнее, можно позже.

Всё аддитивно и обратно совместимо: без новых полей/режимов поведение не меняется.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions