Проверка, откат и повтор запроса
Агент записывает изменения по мере работы. После завершения или остановки хода они остаются на диске. Под каждым вашим запросом в ленте есть две кнопки-значка: кнопка отката возвращает файлы и убирает запрос из истории, кнопка Изменить запрос и повторить заменяет запрос исправленным.
Пример: уточнить README
Перед примером сохраните исходное состояние проекта, например коммитом Git.
- Откройте проект и создайте сессию.
- Выберите режим План и отправьте: «Прочитай README и предложи уточнение команды запуска. Не меняй файлы до моего согласия».
- Проверьте предложение и нажмите Выполнить план или попросите внести согласованную правку.
- Нажмите Изменения в правом верхнем углу окна (
Ctrl+2) или Обзор в сводке изменений над полем ввода и проверьте строки README. Просмотрите остальные затронутые файлы. - Попросите агента запустить тесты или другую проверку, принятую в проекте, и прочитайте результат.
Если результат подходит, зафиксируйте его коммитом Git. Если нет — откатите запрос или повторите его с исправленным текстом.

Вид Изменения правой колонки показывает только правки агента в этой сессии, а команда /diff — изменения в папке проекта по данным Git, кроме добавленных в индекс, поэтому списки могут различаться. Подробнее — см. раздел «Git и редактор».
Откатить запрос
Откат возвращает файлы, изменённые запросом, к состоянию до него и удаляет из сессии сам запрос и всю последующую переписку. Если по запросу работали субагенты и меняли файлы, откат из приложения недоступен — см. подраздел «Откат недоступен» ниже.
Откатить можно только последний запрос, менявший файлы. Чтобы вернуться дальше, откатывайте запросы по одному, начиная с конца. Состояние кнопки отката под запросом объясняет её подсказка:
| Подсказка | Что означает |
|---|---|
| Вернуть рабочую область и чат к состоянию до этого запроса | Откат доступен |
| Сначала остановите запрос | Агент работает или ждёт вашего ответа. Остановите ход или ответьте агенту и дождитесь завершения |
| Читаем журнал правок… | Приложение загружает журнал правок ядра. Подождите, подсказка сменится |
| Сессия открыта для просмотра — подключитесь после выхода из CLI | Сессию удерживает консольная версия ядра (команда astracode в терминале). Закройте её и подключитесь к сессии снова |
| Сессия открыта для просмотра — дождитесь конца хода | Сессия открыта во время хода и подключится сама, когда ход закончится; см. раздел «Диагностика и поддержка» |
| Сессия открыта для просмотра — подключитесь к ней | Ход закончился, но сессия не подключилась сама. Нажмите Подключиться над полем ввода |
| Правки этого запроса не отследить | Приложение не может связать запрос с ходом агента. Верните файлы средствами Git или вручную |
| Откатывать нечего: этот запрос не менял файлы. | У запроса нет правок. Если он идёт после последнего запроса с правками, то удалится при его откате |
| Откатывать нечего: изменения этого запроса уже возвращены. | Правки запроса уже отменены прежним откатом |
| Сначала откатите более поздние запросы. | После этого запроса файлы менялись ещё |
| В этом запросе есть правки субагентов, а их откат из приложения пока недоступен. | Запрос включает правки субагентов. Верните файлы средствами Git или вручную |
| Границы правок субагентов между запросами не подтверждены. Откат с удалением истории недоступен. | Нельзя точно определить, к какому запросу относятся правки субагентов |
| Не удалось проверить правки субагентов этого запроса — откат недоступен. | Журнал правок прочитан не полностью, а запрос поручал работу субагентам |
| Часть данных о правках недоступна. Откат хода, с удалением истории и без него, пока недоступен. | Журнал правок прочитан не полностью |
| Записей о правках этого запроса в журнале нет — вернуть файлы нельзя. | Правки видны в ленте, но запись о них вытеснена из журнала |
| Более поздние запросы меняли файлы, но записей об этих правках в журнале нет — откат недоступен. | Записи о правках более поздних запросов вытеснены из журнала |
| Часть правок сделана в обход отслеживаемых инструментов, и поручиться за снимок файлов нельзя. Откат недоступен. | Во время правки файлы могли меняться в обход журнала, например командами |
| Откат этого изменения уже идет — дождитесь завершения. | Откат уже выполняется |
| Предыдущая попытка отката не удалась, повтор недоступен. | Прежний откат этих правок завершился ошибкой |
| Запись об этом изменении не найдена. | Ядро не нашло запись о правке в журнале |
- Найдите в ленте последний запрос, менявший файлы, и нажмите кнопку отката под ним.
- Проверьте список файлов. Если часть из них отмечена как изменённые после агента, сначала прочитайте подраздел «Файл изменился после агента» ниже.
- Нажмите Откатить, прочитайте итог и проверьте файлы.

После полного отката выбранный запрос и последующая переписка удаляются. Сессия возвращается к состоянию до запроса. Нужные ответы сохраните заранее.

Если вы меняли файл во время работы агента, а агент после этого правил его снова, откат вернёт файл к состоянию до запроса, и ваши изменения в этом файле будут потеряны. Важные правки сохраните отдельной копией или коммитом.
Уточнения, отправленные кнопкой Подкинуть, относятся к тому же ходу. Откат и повтор доступны у его первоначального запроса.
Файл изменился после агента
При откате ядро перед восстановлением каждого файла проверяет, остался ли он таким, каким его оставил агент. Файл, который после агента изменили вы или другой агент, откат не трогает.
- До отката. Окно подтверждения перечисляет под заголовком Возможны параллельные изменения файлы, изменённые на диске позже правок агента. Признак приблизительный: он срабатывает и при неизменном содержимом, например после переключения ветки.
- После отката. Окно итога перечисляет возвращённые файлы и отказы с причинами. При отказе запрос и переписка остаются.
Если ядро отказало по части файлов, выберите действие в окне итога:
| Кнопка | Результат |
|---|---|
| Оставить как есть | Возвращённые файлы остаются возвращёнными. Остальные файлы и история не меняются |
| Все равно откатить | Файлы с отказом перезаписываются версией до запроса, более поздние изменения в них теряются. Затем запрос и последующая переписка удаляются |
После перезаписи в окне итога доступна кнопка Вернуть перезаписанные файлы. Она возвращает эти файлы в состояние перед откатом; переписка не восстанавливается. После закрытия окна кнопки нет, поэтому проверьте файлы до закрытия.
Внимание. Если агент изменял один файл несколько раз, а после выбранного запроса были запросы без правок, при откате сначала удаляются эти последующие запросы, затем ядро проверяет файлы. Если ядро откажет, удалённые запросы не вернуть: выбранный запрос останется, а в итоге появится сообщение «Запросы после этого уже убраны из чата: без этого ядро не принимает откат по файлам». Перед таким откатом скопируйте нужные ответы из последующих запросов.
Откат прерванного запроса
Если запрос был остановлен, а агент успел изменить один файл несколько раз, ядро не может проверить такие файлы на параллельные изменения. Окно подтверждения предупреждает об этом и вместо Откатить показывает Все равно откатить. Файлы запроса перезаписываются версией до него, а изменения, сделанные в них за это время вами или другим агентом, теряются.
Вернуть перезаписанное можно кнопкой Вернуть перезаписанные файлы в окне итога.
Откат недоступен
Откат требует журнала правок ядра. Причина показана в подсказке кнопки отката (см. таблицу выше). Откат недоступен, если:
- в запросе есть правки субагентов: приложение их не откатывает, поэтому такой запрос не откатывается целиком;
- приложение прочитало журнал правок не полностью (подсказка Часть данных о правках недоступна…) или не может связать запрос с ходом агента (подсказка Правки этого запроса не отследить);
- записей о правках запроса в журнале нет: журнал хранит последние 256 правок сессии (не больше 64 МиБ), более старые записи вытесняются;
- часть правок сделана в обход отслеживаемых инструментов.
В этих случаях восстановите файлы средствами Git или вручную.
Откат не отменяет последствий команд: установленных пакетов, обращений к внешним сервисам, изменений вне рабочей папки.
Кнопка Повторить под ответом агента возвращает текст исходного запроса в поле ввода для нового запроса. Не путайте её с кнопкой Повторить в окне Изменить запрос и повторить: та сразу отправляет исправленный запрос вместо прежней попытки (см. ниже).
Изменить и повторить запрос
Повтор заменяет выбранный запрос и последующую историю исправленным запросом. Чтобы сохранить предыдущий результат, скопируйте его или создайте ответвление переписки командой /fork.
- Дождитесь завершения текущего хода.
- Нажмите кнопку Изменить запрос и повторить под нужным запросом.
- Отредактируйте текст и выберите начальное состояние файлов.
- Нажмите Повторить и проверьте результат.

В блоке Агент начнет работу выберите вариант:
| Вариант | Файлы |
|---|---|
| от текущего состояния файлов | Правки предыдущей попытки остаются; агент работает поверх них |
| от состояния до изменений | Сначала выполняется откат, затем исправленный запрос. Вариант есть только у последнего запроса, менявшего файлы |
Если второй вариант недоступен или правок не было, окно показывает строку Агент начнет работу от текущего состояния файлов и причину. Вложения исходного запроса прикладываются заново — проверьте их список в окне.
Повтор не перезаписывает файлы, изменённые после агента. Если ядро не вернуло часть файлов, повтор отменяется: откатите запрос кнопкой под ним и отправьте запрос заново.
Если вы повторили запрос от текущего состояния файлов, правки прежней попытки остаются в файлах, но запрос, к которому они относились, удалён, и откатить их кнопкой уже нельзя. При откате более раннего запроса, который менял те же файлы, ядро откажет по этим файлам; вернуть их можно только кнопкой Все равно откатить.