Эта страница переведена с английской документации. Команды, идентификаторы и примеры не изменены. Среда выполнения 7.24.4 · SDK 2.6.7. Английский оригинал
Режим цикла и запланированные задачи
Статус: активно Область: текущее состояние Последняя проверка: 2026-08-27 Владелец: среда выполнения ax-code
У AX Code три сочетаемых примитива автоматизации:
| Примитив | Что это | Время жизни |
|---|---|---|
/goal |
Долговечная цель, которую сессия продолжает преследовать, с письменным планом, бюджетами и шлюзом проверки | Сохраняется на сессию |
/loop |
Пульс, который заново запускает запрос с фиксированным интервалом, пока сессия простаивает | Этот процесс бэкенда |
| Запланированные задачи | Долговечные разовые или повторяющиеся запуски («каждый будний день в 9:00…»), которые агент может задать в разговоре | Сохраняются в базе данных проекта |
/loop — повторяющиеся запросы
/loop <interval> <prompt> start (interval like 30s, 5m, 1h)
/loop status show runs, busy-skips, and the prompt
/loop stop stop the loop
Примеры:
/loop 5m check CI for new failures and fix any you find
/loop 30m drain the review queue
Правила:
- Границы интервала: от 30 секунд до 24 часов. Один цикл на сессию — запуск нового заменяет старый.
- Тик, который срабатывает, пока сессия занята, пропускается и считается, но никогда не ставится в очередь: циклы не могут накапливать ходы.
- Каждый тик — обычный ход запроса: разрешения, вопросы, автономные потолки и шлюзы завершения применяются. При выключенном автономном режиме тик просто останавливается на первом запросе разрешения.
- Жёсткий потолок 500 запусков на цикл, затем цикл сам останавливается с уведомлением.
- Циклы живут только в процессе бэкенда: перезапуск они не переживают. Для долговечных расписаний используйте запланированные задачи ниже.
Сочетание /goal с /loop
/goal владеет целью («все тесты зелёные, открытых замечаний рецензии нет»);
/loop даёт пульс, который продолжает проверять. Сначала создание цели
запускает отдельного автора плана, который сохраняет рецензируемый контракт в
.ax-code/goals/ (или в каталоге данных AX, если проект — не git
worktree). Если планирование не удаётся, цель остаётся на паузе — /goal resume повторяет
её. Проверки диапазона Git, которые меряют diff этой цели, используют HEAD на момент плана
({BASELINE}), а не origin/main, если цель не называет этот удалённый репозиторий.
Завершение цели остаётся закрытым проверкой: агент не может пометить цель
завершённой после правок без успешного прогона проверки, а когда план
есть, он должен также дать свидетельства по каждому критерию приёмки.
/goal keep main green: fix any CI failure the loop finds
/loop 10m check CI status and act on failures
Гарантия цели включается по согласию
/goal <objective> стартует сразу: он не прикрепляет замороженный контракт приёмки,
поэтому завершение судится по рабочему плану, который ведёт агент (ожидающие дела), плюс
успешная проверка после последнего изменения. /goal view (и «Показать подробности цели» в диалоге цели)
говорит об этом явно — «Нет контракта гарантии», — так что состояние
никогда не нужно выводить самому.
/goal --assure <objective> сначала запускает автора плана, который замораживает критерии
приёмки, ссылки на источники и исполнимые проверки; завершение тогда также требует
текущей успешной квитанции по каждой требуемой проверке (verify_project с его
идентификатором goalCheck). Используйте это, когда «готово» цели должно быть доказуемым, а не
описанным.
--assure сочетается с флагами бюджета в любом порядке
(/goal --assure --budget 500000 <objective>). /goal replace <objective> сохраняет
гарантию, когда у заменяемой цели есть действительный контракт, поэтому замена не может
молча ослабить цель, которая уже была гарантирована.
Бюджеты и потолки цели
Активная цель снимает потолок автоматического продолжения на запуск (session.max_continuations)
— запуск продолжается, пока цель не завершена, не заблокирована, не поставлена на паузу или не
ограничена бюджетом. Что ограничивает её вместо этого:
- Бюджет токенов (
/goal --budget N …): когда он исчерпан, агент получает один ход завершения, затем цель становитсяbudget_limited. - Бюджет времени (
/goal --time-budget 30m …): предел по стенным часам в секундах, минутах (m) или часах (h), сочетается с бюджетом токенов в любом порядке. Он ограничивает прошедшую работу, которую бюджет токенов не видит: удалённые задания обучения, долгие вызовы инструментов, зависания провайдера. Тот же ход завершения и переходbudget_limitedприменяются, когда он срабатывает. - Накопительный потолок шагов: запуски активной цели делят предохранитель Super-Long
в
max_steps × 40шагов всего (20 000 по умолчанию) вместо обычного автономного потолкаmax_steps × (max_continuations + 1). Переопределите черезsession.max_total_steps. - Обнаружение цикла гибели, потолки радиуса поражения и прерыватель хода только из инструментов по-прежнему действуют всё время.
CLI цели (безголовый)
То же управление целью доступно вне TUI под ax-code goal:
ax-code goal status [--json]— показать текущую цель (-s/--session, чтобы выбрать сессию; по умолчанию единственная возобновляемая цель проекта, ошибка, если выбор был бы неоднозначным).ax-code goal pause/ax-code goal clear— поставить на паузу или очистить.ax-code goal resume— возобновить цель и вести её безголовым образом, пока она не устоится. Без--attachпроект поднимается в том же процессе; с--attach http://localhost:4111ведётся уже работающий сервер. Коды выхода следуют контракту безголовой цели:0завершено,3заблокировано,4ограничено бюджетом,6пауза или нетерминальное состояние,1ошибка сессии,124тайм-аут простоя (--idle-timeout-ms, по умолчанию 10 минут). События идут в stdout как JSONL (--event-log PATHих тоже записывает), а итоговая строкаGoal <status>: <objective>идёт в stderr.
Когда запуск цели приближается к потолку шагов, агент получает однократное
предупреждение о сходимости: проверить и завершить цель или оставить
чистую передачу. Если потолок всё же достигнут, цель ставится на паузу — не
считается неудачей — и её можно снова взять через /goal resume (сначала поднимите
session.max_total_steps, если нужно больше запаса).
Запланированные задачи — долговечные, в разговоре
Попросите агента напрямую; он использует инструменты schedule_task, list_scheduled_tasks
и manage_scheduled_task:
- «Напомни мне в 14:30 проверить развёртывание.»
- «Каждый будний день в 9:00 суммируй новые сбои CI.»
- «Покажи мои запланированные задачи.» / «Поставь на паузу задачу сводки CI.»
Изменения расписания, созданные и управляемые агентом, запрашивают разрешение schedule.
Запуск только для чтения не может изменить или запустить расписание. Для создания без присмотра
в безголовом режиме используйте явную команду ax-code schedule или настройте
явное разрешение schedule для агента; широкие разрешения с подстановкой
изменения расписания не разрешают.
Теми же задачами можно управлять из оболочки, не открывая TUI:
ax-code schedule list # status, next run, schedule, id, title
ax-code schedule show <id> # details plus the five most recent runs
ax-code schedule runs <id> # run history: fired, failed, skipped and why
ax-code schedule pause|resume <id>
ax-code schedule delete <id>
ax-code schedule run <id> # trigger now; requires a live runtime
pause/resume/delete идут через управляемую среду выполнения проекта, когда она
работает (эффект сразу, живые обновления TUI), и иначе пишут базу данных проекта
напрямую. run нужен живой бэкенд — запустите его через
ax-code runtime start, — потому что разовый процесс CLI не должен брать работу, которую
не сможет закончить. Все подкоманды чтения принимают --json.
Расписания поддерживают разовые запуски, ежедневное и еженедельное время и выражения cron из 5 полей,
каждое с необязательным часовым поясом IANA. Задачи сохраняются в
базе данных проекта и срабатывают, пока для проекта работает бэкенд AX Code
(обход планировщика 60 с, атомарный захват — задача срабатывает один раз, даже если
открыто несколько бэкендов). Продвижение расписания и вставка в долговечную очередь делят
одну транзакцию базы, поэтому сбой не может продвинуть наступление, не
оставив работу для восстановления.
Разовые команды вроде ax-code run и ax-code stats не захватывают подоспевшие
задачи. Запустите постоянный бэкенд через ax-code runtime start, чтобы их
отправить.
Пропущенные наступления по умолчанию равны catchUpPolicy: "run_once": после простоя
AX Code сливает любой задел в один запуск. Используйте "skip", когда устаревшую работу нужно
продвинуть без запуска. Задача также может задать maxRunDurationMs от одной
секунды до 72 часов; просроченный по времени запуск отменяется и записывается как неудачный.
Чтобы работа переживала перезапуски процесса и хоста, запускайте бэкенд под супервизором. Примеры systemd, launchd и PM2 и точную семантику восстановления см. в Долгих операциях.
Долгие запуски без присмотра
Для многочасовых автономных сессий режим Super-Long добавляет сроки запуска (до
72 ч), темп запросов и настройку уплотнения. Он включается сам для моделей,
чьи объявленные возможности поддерживают долгую работу агента (модели рассуждения с контекстом 1 млн,
такие как Qwen 3.7+ Max/Plus на маршрутах Alibaba и GLM 5.x на маршрутах z.ai),
и его можно принудить на сессию, на проект или через
AX_CODE_SUPER_LONG. Вовлечённость запуска пишется в журнал (super-long run engaged),
а темп провайдера начинается только после окна отсрочки от старта запуска
(по умолчанию 2 часа, super_long.pacing_grace_minutes), чтобы продуктивная
ранняя фаза агентного запуска сохраняла полную пропускную способность вызовов инструментов; хвост
марафона темпируется по объявленному уровню предела частоты модели.