Эта страница переведена с английской документации. Команды, идентификаторы и примеры не изменены. Среда выполнения 7.24.4 · SDK 2.6.7. Английский оригинал
Автономный режим
Статус: действует Область: текущее состояние Последняя проверка: 2026-08-25 Владелец: среда выполнения ax-code
Автономный режим позволяет ax-code завершать задачи, не дожидаясь подтверждения человека на каждом малорискованном шаге. Когда он включён, запросы прав одобряются сами, если их явно не блокируют, а диалоги вопросов отвечают сами по эвристике хорошей практики: предпочтение рекомендуемому, значению по умолчанию, обычному, простому и минимальному и отказ от рискованных или избыточно спроектированных вариантов.
По умолчанию автономный режим включён. Если вы раньше его выключили, это предпочтение сохраняется и восстанавливается при следующем запуске.
Быстрый старт
Переключение из TUI:
- Введите
/autonomousв промпт, или - Нажмите
Ctrl+Pи найдите «autonomous», или - Щёлкните индикатор автономный режим вкл/выкл в строке состояния
Строка состояния показывает текущее состояние:
- автономный режим включён (жёлтый фон, жирный красный текст) — агент работает без пауз
- автономный режим выключен (зелёный текст) — агент останавливается на запросах прав и вопросов
Настройка сохраняется между сеансами в ax-code.json.
Что меняется
| Поведение | Автономный выключен | Автономный включён |
|---|---|---|
| Права инструментов (read, edit, bash и так далее) | Спрашивает пользователя | Гибрид: безопасные (read/grep/list/…) одобряются сами; рискованные (edit/bash/webfetch/…) идут в набор правил, поэтому запреты всё ещё действуют |
| Диалоги вопросов | Ждёт, пока пользователь выберет вариант | Выбирает вариант хорошей практики или значение по умолчанию и записывает его |
| Планирование | Следует обычному промпту агента | Перед реализацией использует лёгкую рамку решения в стиле PRD/ADR |
| Цикл сеанса при отказе | Останавливается и ждёт | Продолжает работу |
Запросы isolation_escalation |
Всегда спрашивает | Всегда спрашивает (никогда не одобряется само) |
Как это устроено
Автономный режим работает на трёх слоях:
Источник истины
Эта страница сводит поведение, видимое пользователю. Когда поведение меняется, сверьте документацию с:
packages/ax-code/src/session/processor.tsдля автоматического одобрения прав, поведения цикла, обработки отказов и автономных пределов.packages/ax-code/src/session/system.tsи файлами промптов провайдера вpackages/ax-code/src/session/prompt/для инструкций автономного рабочего процесса.packages/ax-code/src/question/иpackages/ax-code/test/question/question.test.tsдля эвристик автоответа на вопросы и поведения эскалации.packages/ax-code/src/session/blast-radius.tsдля пределов автономных шагов и изменений файлов.packages/ax-code/test/session/system.test.ts,packages/ax-code/test/session/prompt.test.tsи связанными проверками сеанса для поведения промпта и журнала решений.
Держите гарантии безопасности здесь согласованными с документацией песочницы. Автономный режим меняет поведение одобрения, а не принуждение изоляции.
1. Автоодобрение прав (на стороне сервера)
Автономный режим использует гибридную политику «сначала запрет» (ADR-004 / PRD v4.2.0). Когда инструмент вызывает ctx.ask() за правом, модуль прав классифицирует право:
- Права SAFE (read, glob, grep, list, lsp, code_intelligence, skill, todoread) одобряются сами, без блокирующего запроса.
- Права RISK (edit, bash, external_directory, task, webfetch, websearch, codesearch и так далее) проходят в набор правил. Настроенные правила разрешения и запрета агента всё ещё действуют, и пользовательские запреты всегда исполняются. В режиме песочницы
full-accessправа RISK одобряются сами после оценки правил запрета. - Неизвестные права по умолчанию спрашивают (
experimental.autonomous_strict_permission: falseсохраняет прежнее поведение разрешения).
Права, которые всегда доходят до решения на каждый вызов, а не до немедленного одобрения по правилам: isolation_escalation (запросы переопределения песочницы), права INTERACTIVE_ONLY и набор NEVER_AUTONOMOUS_AUTOAPPROVE. Одно сужение (ADR-098): в режиме песочницы full-access запросы external_directory, помеченные как только интерактивные — команды bash, чьи пути нельзя проверить статически, потому что они используют glob, переменную или раскрытие фигурных скобок, — тоже одобряются сами, потому что у песочницы полного доступа не остаётся границы файловой системы, которую надо охранять. Явные правила запрета всё ещё действуют, а режимы с включённой песочницей (workspace-write, read-only) сохраняют запрос на каждый вызов.
Простаивающее «Разрешить один раз» (по умолчанию включено). Авто включено плюс песочница выключена (full-access) значит минимум взаимодействия: каждое ожидающее право может ответить само один раз через 15 секунд, включая requireInteractive, запросы хуков и эскалации песочницы. Если авто выключено или песочница включена, ожидающим запросам нужен ответ человека. WebMCP дополнительно требует, чтобы был подключён соответствующий мост. Другой подключённый мост не подходит. Явные правила запрета всё ещё действуют. experimental.permission_idle_once.enabled: false отключает обратные отсчёты, а permissions может сузить их область. Устаревшая настройка timeout_ms принимается для совместимости, но больше не меняет фиксированные 15 секунд.
Обратным отсчётом владеет сервер. Старейший запрос каждого сеанса получает срок. Запросы в очереди получают свежие 15 секунд, когда доходят до начала. Ответы человека отменяют таймер. Выключение авто, включение песочницы или отключение соответствующего моста WebMCP отменяет ожидающие отсчёты. Восстановление права на автоответ начинает новый отсчёт. Временные разрывы перезагрузки конфигурации приостанавливают отсчёт. Автоматические ответы заново проверяют текущий режим, мост и правила запрета и никогда не сохраняют постоянное одобрение. Внутреннее отладочное и тестовое переопределение AX_CODE_PERMISSION_IDLE_ONCE_MS остаётся доступным и ограничено максимумом таймера Node.js.
Режимы ограничены активным каталогом. Вложенный ax-code.json может переопределить настройки корня репозитория. Чтобы сменить действующий режим, используйте переключатель песочницы активного сеанса.
Непереопределяемые защищённые пути. Автономный режим также отказывается писать в фиксированный набор путей политики и плоскости управления — ax-code.json/ax-code.jsonc, .ax-code/**, .git/config и .git/refs/**, — чтобы агент не мог править собственную конфигурацию, поднимать собственные пределы автономности или подкладывать хуки Git. В отличие от настраиваемого списка блокируемых путей, их нельзя убрать конфигурацией проекта или пользователя.
2. Автоответ на вопросы (на стороне сервера)
Когда инструмент задаёт пользователю вопрос, модуль вопросов сразу выбирает ответ. Он предпочитает варианты, помеченные как рекомендуемые, по умолчанию, безопасные, стандартные, обычные, общепринятые, хорошая практика, простые или минимальные. Он избегает вариантов, помеченных как экспериментальные, рискованные, опасные, разрушительные, продвинутые, сложные, переписывание или избыточное проектирование. Если ни у одного варианта нет сигнала, выбирается первый: инструмент вопросов велит агентам ставить рекомендуемый вариант первым.
3. Цикл процессора (уровень сеанса)
Если право всё же отклонено (например явным правилом запрета), цикл процессора не останавливается: он переходит к следующему шагу, а не прерывает сеанс.
4. Рамка решения в стиле PRD/ADR
Автономный режим добавляет в системный промпт лёгкое напоминание о рабочем процессе. Перед реализацией агенту следует оформить работу: проблема, ограничения, решение, компромиссы, план и проверка. Для существенных изменений в нескольких файлах, архитектурных или видимых в продукте он может создать или обновить документ репозитория, если это совпадает с образцом документации репозитория. Для мелочей рамку следует держать лёгкой в плане, чтобы не усложнять сверх нужды.
Автономный режим и песочница
Автономный режим и режим песочницы независимы. Их можно использовать вместе:
| Сочетание | Поведение |
|---|---|
| Автономный ВКЛ + песочница ВКЛ | Агент работает свободно, но ограничен рабочей областью. Рекомендуется для недоверенных репозиториев и репозиториев команды. |
| Автономный ВКЛ + песочница ВЫКЛ | Агент работает свободно с полным доступом к системе. Для доверенных проектов. |
| Автономный ВЫКЛ + песочница ВКЛ | Агент спрашивает право на каждое действие и ограничен рабочей областью. Максимум контроля. |
| Автономный ВЫКЛ + песочница ВЫКЛ | Агент спрашивает право на каждое действие и имеет полный доступ к системе. |
Поза среды выполнения по умолчанию — автономный режим включён и песочница выключена: full-access с включённой сетью. Это даёт поведение CLI с наименьшим трением, но без границы изоляции. Для недоверенной работы или работы без присмотра включите ограничения через /sandbox, --sandbox workspace-write, AX_CODE_ISOLATION_MODE или конфигурацию проекта.
Конфигурация
Файл конфигурации
В ax-code.json:
{
"autonomous": true
}
Чтобы выключить, задайте false:
{
"autonomous": false
}
Переменная окружения
AX_CODE_AUTONOMOUS=true ax-code # force autonomous on
AX_CODE_AUTONOMOUS=false ax-code # force autonomous off
Приоритет
Переменная окружения > файл конфигурации > значение по умолчанию (включено)
Бюджеты нагрузки (ходы модели и вызовы инструментов)
Автономный режим не значит неограниченное выполнение. Действует несколько независимых пределов. Значения ниже — поставляемые константы. Поднимайте или опускайте их в ax-code.json, когда нагрузке нужно больше места.
Ход модели — один запрос модели во внешнем цикле. Вызов инструмента — одно обращение к инструменту внутри хода модели. Это разные бюджеты: один ход модели может сделать несколько вызовов инструментов. Устаревшие имена конфигурации, содержащие steps, всё ещё поддерживаются, но не делают две единицы взаимозаменяемыми.
Предпочитайте первоклассный объект autonomy. Устаревшие ключи session.* и experimental.autonomous_caps.* всё ещё работают как псевдонимы (ниже по приоритету).
| Предел | По умолчанию | Единица | Предпочтительная конфигурация | Устаревший псевдоним |
|---|---|---|---|---|
| Ходы модели на сегмент | 500 | Запросы модели на сегмент продолжения | autonomy.budget.model_turns.per_segment |
session.max_steps |
| Автопродолжения | 3 | Сегменты после потолка ходов модели (обычный автономный режим) | autonomy.budget.continuations |
session.max_continuations (0 отключает) |
| Накопленные ходы модели | 2 000 обычные · 20 000 цель / Super-Long | Запросы модели, суммированные по продолжениям | autonomy.budget.model_turns.total |
session.max_total_steps |
| Ходы модели на агента | Без предела для собственных агентов | Запросы модели, пока этот агент активен | agent.<name>.steps (необязательно) |
— |
| Автоповторы задач | 10 | Продолжения, пока задачи остаются ожидающими | autonomy.budget.todo_retries |
session.max_todo_retries |
| Вызовы инструментов радиуса воздействия | 500 / сегмент | Обращения к инструментам в автономном режиме | autonomy.budget.tool_calls.per_segment |
experimental.autonomous_caps.steps |
| Файлы и строки радиуса воздействия | 50 файлов · 5 000 строк | След изменений (переживает продолжения) | autonomy.budget.changes.files_total / .lines_total |
experimental.autonomous_caps.files / .lines |
| Пути без учёта строк | Файлы блокировок и порождённые снимки (*.snap, *-snapshot.json) |
Шаблоны glob, которые идут в предел файлов, но не строк | autonomy.budget.changes.lines_exempt_paths |
experimental.autonomous_caps.linesExemptPaths |
| Пределы потока на инструмент | например bash 50, edit 100 | Вызовы на ход модели | autonomy.budget.tool_calls.per_tool |
experimental.autonomous_caps.perTool |
| Прерыватель серии только из инструментов | Подсказка 15 · финал ~30 · остановка 35 | Подряд идущие завершения модели только инструментами | autonomy.stall.tool_only_* |
— |
| Бюджет неуспешных изменений | 30 / сегмент | Попытки изменяющих инструментов, завершившиеся ошибкой без успеха | autonomy.stall.failed_mutation_attempts |
— |
| Ограничитель всплеска вызовов | 30 вызовов / 10 с | Скользящее окно на ход процессора | autonomy.budget.tool_calls.rate |
— |
| Бюджет подряд идущих ошибок | 3 | Ошибки провайдера или инструмента подряд, после которых прогон сдаётся | autonomy.stall.max_consecutive_errors |
— |
Двоичные файлы (cp исполняемого файла, curl -o архива zip и другие записи не-текста) всё ещё идут в предел файлов, но списывают ноль строк. Предел строк меряет текстовое изменение. Текстовые записи оболочки сохраняют оценку ceil(size / 80), чтобы плотная нагрузка не обошла бюджет малым числом переводов строк.
Неотслеживаемые пути, которые git check-ignore сообщает как игнорируемые, тоже списывают ноль строк и всё ещё считаются одним файлом. Это покрывает порождённые деревья вроде target/, когда проверяющий перенаправляет туда вывод (cargo clippy > target/review/clippy.log). Исключение действует, только если git завершается с кодом 0. Отсутствующий репозиторий, сбой git и отслеживаемый файл сохраняют обычное списание строк, включая отслеживаемый файл, чьё имя совпадает с шаблоном игнорирования.
Профили
Задайте autonomy.profile, чтобы сразу засеять несколько полей (явные поля всё ещё побеждают):
| Профиль | Назначение |
|---|---|
standard |
Поставляемые значения (500 / 3 продолжения / всплеск 30·10 с / только инструменты 35) |
quick |
Короткие исправления: 80 шагов на сегмент, 1 продолжение, более тесные пределы только инструментов и всплеска |
long |
Пакеты из нескольких файлов: 10 продолжений, 10 тысяч всего, более широкие пределы только инструментов и всплеска |
goal |
Запас масштаба цели без требования /goal |
custom |
Профиль ничего не сеет — только явные ключи и константы |
Просмотр через /limits
В сеансе выполните /limits, чтобы напечатать разрешённый стек бюджета, действующий знаменатель TUI для активного агента, источники конфигурации и предупреждения doctor (например когда agent.steps теснее сегмента сеанса). Имена ключей см. в /limits help.
Что показывает TUI. Во время автономного прогона заголовок сообщает turn current/max · total current/max · cont current/max. turn — текущий сегмент продолжения и использует действующий предел темпа активного агента: min(agent.steps, session.max_steps), когда агент ограничен, иначе предел на сегмент. total переживает автопродолжения. cont показывает ∞, когда активная цель или режим Super-Long снимает обычный предел продолжений.
Автомаршрутизация. Маршрутизация по ключевым словам может переключить сеанс на специализированного агента (Debug, Security, DevOps и так далее). Специалисты делят с Dev ту же политику ходов модели без предела по умолчанию, если вы не зададите agent.<name>.steps. Отключите маршрутизацию через "routing": { "disable": true }, если нужен только агент Dev.
Долгие прогоны. Для многочасовой работы используйте /goal или Super-Long: они снимают обычные пределы продолжений и берут более высокий накопленный потолок (по умолчанию 20 000), с семантикой проверки и паузы, описанной в режиме цикла. /goal сначала записывает контракт для рецензии (критерии приёмки и план проверки) и при невозможности составить план закрывается в паузу.
Когда предел останавливает прогон
Прежде чем обычный прогон достигнет накопленного потолка ходов модели, AX Code внедряет одну ограниченную инструкцию схождения (не больше последних 50 ходов, меньше для малых пользовательских бюджетов). Она велит модели прекратить широкое исследование, закончить или безопасно отложить текущую работу, выполнить точечную проверку и честно сообщить о незавершённом. Бюджет она не добавляет и ни один предел не обходит.
Когда достигнут завершающий бюджет, session.error включает необязательный машинно-читаемый code, а событие воспроизведения session.end записывает то же значение как stopCode. Существующие грубые причины окончания остаются без изменений ради совместимости. Текущие коды пределов:
MODEL_TURN_SEGMENT_LIMITMODEL_TURN_TOTAL_LIMITAGENT_MODEL_TURN_LIMITAGGREGATE_TOOL_CALL_LIMITFILE_CHANGE_LIMITLINE_CHANGE_LIMIT
На потолке сегмента AX Code продолжает сам, пока остаётся настроенный бюджет продолжений. Когда этот бюджет исчерпан, прогон останавливается, и сообщение объясняет, что произошло. Новый промпт вроде continue начинает новый прогон по указанию пользователя с новым учётом. Он не продлевает задним числом остановленный прогон. Используйте /goal, когда цель должна оставаться явной и возобновляемой до завершения, блокировки или границы бюджета цели либо среды выполнения. /goal не отключает защиту прав, изоляции, радиуса воздействия, зависания, токенов, времени и накопленных ходов модели.
Пример: поднять бюджеты для большого автономного пакета
{
"autonomous": true,
"autonomy": {
"profile": "long",
"budget": {
"model_turns": { "per_segment": 500, "total": 20000 },
"tool_calls": {
"per_segment": 1000,
"rate": { "count": 40, "window_seconds": 10 },
"per_tool": { "bash": 80, "edit": 150 }
},
"changes": { "files_total": 100, "lines_total": 10000 }
},
"stall": {
"tool_only_turns": 50,
"tool_only_nudge": 20,
"failed_mutation_attempts": 30,
"max_consecutive_errors": 3
}
},
"agent": {
"debug": { "steps": 200 }
}
}
Когда выключать автономный режим
- Изучение ax-code — видеть, что агент делает на каждом шаге
- Чувствительные операции — рецензировать каждое изменение файла до применения
- Отладка поведения агента — понять, почему агент принимает те или иные решения
- Недоверенный код — рецензировать вызовы инструментов в незнакомых репозиториях
Когда оставлять автономный режим включённым
- Обычные задачи — рефакторинг, исправления и миграции, где вы доверяете агенту
- Конвейеры CI/CD — неинтерактивное выполнение, где задача уже ограничена политикой
- Использование SDK — программное выполнение агента через
createAgent() - Крупные задачи — изменения многих файлов, где остановка на каждом праве заняла бы часы
Неинтерактивное использование и CI
В неинтерактивном режиме (ax-code run, ax-code serve, SDK) автономный режим необходим: нет TUI, чтобы показать запросы. Автоодобрение на стороне сервера позволяет агенту дойти до конца, не зависая на неотвеченных запросах.
# Headless one-shot with autonomous on (default)
ax-code run "Fix all TypeScript errors in src/"
# Explicit override
AX_CODE_AUTONOMOUS=true ax-code run "Migrate API routes"
ax-code run по умолчанию печатает сжатый вывод инструментов: вывод команды сокращается до хвоста, правки показывают сводку diff, а записи задач — однострочный счётчик хода. Ошибки никогда не скрываются: они рисуются с тем же потолком хвоста, что и прочий вывод. Передайте --full, чтобы вернуть полный вывод инструментов (полные diff, необрезанный вывод команд, полные списки задач) для аудита.
Гарантии безопасности
Даже при включённом автономном режиме:
- Песочница всё ещё проводит границы — записи вне рабочей области блокируются независимо от автономного режима
- Эскалация изоляции всегда спрашивает — агент не может молча переопределить ограничения песочницы
- Правила запрета исполняются — явные правила прав
"deny"всё ещё блокируют вызовы инструментов - Автономный выбор записывается — метаданные инструмента вопросов включают структурированный журнал
autonomousDecisions, а вывод инструмента включает выбранные ответы, чтобы агент мог сообщить их позже - Избегайте избыточного проектирования — автономное продолжение напоминает агенту предпочесть самое простое общепринятое изменение и не вводить абстракции без трёх и более конкретных случаев применения
- Снимки сеанса записываются — каждый вызов инструмента журналируется для аудита и воспроизведения
- Прерывание всегда работает — нажатие Esc (прерывание) сразу останавливает агента