Автоисправление

Автоисправление — это режим, в котором агент сам следит за проверками вашего проекта и сразу исправляет найденные ошибки. Оно связано с вашими сборками (автоматическими проверками качества кода): когда сборка сообщает об ошибке или предупреждении, Автоисправление упаковывает этот текст в сообщение чата и отправляет модели ИИ на исправление. Получается замкнутый цикл: модель правит код, сборки снова его проверяют, ошибки возвращаются обратно — и так повторяется, пока всё не пройдёт чисто.

Для вас это означает, что вручную проверять и чинить код нужно только после того, как агент закончит все свои автоматические исправления. Реализация крупной функции может занять 30–60 минут ожидания, но всё это время полностью ваше: можно заниматься другими задачами или просто отдохнуть. Это и удобство, и спокойствие — вам не нужно реагировать на каждую мелкую ошибку компиляции, линтера или тестов. Вы возвращаетесь к проекту, когда код уже чистый, протестированный и рабочий.


Как включить и выключить

Переключатель Автоисправление находится в области ввода сообщений — это обычный выключатель вкл/выкл:

Переключатель Автоисправление в области ввода сообщений чата
  • Включено — агент периодически проверяет сборки. Находит ошибки или предупреждения — добавляет их в чат как сообщение, чтобы модель ИИ их исправила.
  • Выключено — агент не следит за сборками. Ошибки появляются в панели сборки, а вы решаете их вручную: правите сами, спрашиваете ИИ в чате или нажимаете кнопку Отправить в окне результата сборки.

Включать и выключать можно в любой момент: включите — когда хотите, чтобы агент сам разбирал ошибки во время разработки; выключите — когда предпочитаете просматривать и устранять их самостоятельно.


Как это работает

Автоисправление — это фоновая служба: она сама, без вашего участия, периодически опрашивает сборки. Вот что происходит по шагам:

  1. Опрос сборок — агент проверяет все сборки по очереди, в порядке зависимостей. Он ищет первую сборку с ошибками или предупреждениями и дожидается, пока завершатся все сборки, от которых она зависит.
  2. Запуск сборки в панели сборки
  3. Приоритет ошибкам — если проблемы есть в нескольких сборках, агент сначала берётся за ошибки, а не за предупреждения. Все ошибки (или все предупреждения) одной сборки отправляются за раз — так модель может исправить их все сразу.
  4. Панель сборки, показывающая ошибки из сборок
  5. Проверка дубликатов — перед отправкой агент смотрит последние 10 ваших сообщений в текущем чате. Если такое же содержимое ошибки уже отправлялось недавно, он пропускает его — чтобы не возникало бесконечных циклов.
  6. Добавление в чат — разобранные ошибки помещаются в блок кода с именем файла build.log и уходят как обычное сообщение. Для предупреждений добавляется указание «исправь предупреждения, не игнорируй их». Сообщение попадает в последний активный чат.
  7. Автоисправление добавляет ошибки сборки как сообщения чата
  8. Модель правит код — получив контекст ошибки, модель анализирует проблему, читает нужные исходные файлы и вносит правки.
  9. Сборки перезапускаются — любое изменение файлов автоматически запускает соответствующие сборки, а их результаты снова разбираются на ошибки и предупреждения.
  10. Цикл повторяется или завершается — когда сборка прошла успешно, цикл заканчивается, и развёртывание (запуск приложения) автоматически перезапускается уже с исправленным кодом. Если ошибки остались, Автоисправление подхватит их при следующей проверке, и цикл продолжится.

Автоисправление работает только тогда, когда модель свободна: оно ждёт, пока агент закончит текущий ответ и обработает все ваши сообщения из очереди, и только потом добавляет сообщения об ошибках. Так автоматические исправления не мешают вашей работе в чате. Промпт-сборки (сборки с тяжёлыми задачами для ИИ) всегда запускаются только после успешного прохождения обычных сборок — чтобы перед сложной работой код был заведомо в порядке.


Ошибки и предупреждения

С ошибками и предупреждениями агент работает по-разному:

  • Ошибки — отправляются модели как есть. Модель видит текст ошибки и пытается устранить её причину.
  • Предупреждения — отправляются с дополнением «исправь предупреждения, не игнорируй их». Так модель не отмахнётся от них как от несущественных, а реально устранит.

Если есть и ошибки, и предупреждения, агент сначала разбирается с ошибками и не трогает предупреждения, пока все ошибки не исправлены. Сначала решаются самые важные проблемы.

Тексты ошибок и предупреждений берутся из парсера сборки — того же разобранного вывода, который вы видите в окне результата сборки. Это значит, что Автоисправление использует каждый шаблон парсера, который вы добавили: чем больше инструментов охватывают ваши сборки, тем больше типов ошибок агент способен исправить сам.


Ручная отправка ошибок

Включать Автоисправление не обязательно, чтобы попросить ИИ исправить ошибки сборки. В окне результата каждой сборки есть кнопка Отправить, которая делает то же самое:

  • Откройте окно результата сборки (нажмите название сборки в панели сборки);
  • Перейдите на вкладку Ошибки или Предупреждения;
  • Нажмите Отправить — содержимое помещается в блок кода build.log и уходит в текущий чат как сообщение.

Это удобно, когда Автоисправление выключено, но вы хотите показать модели конкретные ошибки, или когда нужно самому выбрать, что именно отправить, а не отдавать агенту всё подряд.

Есть и более быстрый способ починить сам парсер: выделите любой текст в окнах результатов сборки, развёртывания или скриптов (и в панелях, и в диалогах) — появится плавающая кнопка Исправить парсер. Нажатие отправляет выделенный текст модели с подсказкой для нужного файла парсера (build.parser, deploy.parser или output.parser), и модель сама добавит недостающие шаблоны.


Чем следить за работой

Автоисправление трудится в фоне, но за ним всегда можно наблюдать:

  • История чата — автоматические сообщения появляются в последнем активном чате. Откройте его, чтобы увидеть контекст ошибки, ответ модели и внесённые правки.
  • Панель сборки — видно, как сборки запускаются, выполняются и завершаются, а счётчики ошибок меняются с красного на зелёный по мере их исправления. По значкам ошибок можно открыть подробности.
  • Панель развёртывания — после успешного прохождения всех сборок видно, как приложение перезапускается уже с исправленным кодом.
  • Панель Git — после удачного цикла исправлений изменения видны в панели Git, прежде чем вы их закоммитите или отправите.

Заглядывать в работу Автоисправления — хорошая привычка. С большинством рутинных ошибок оно справляется отлично, но иногда вносит правки, которые не совсем подходят вашему проекту. Быстрый взгляд на изменения (diff) перед коммитом гарантирует, что всё выглядит так, как нужно.

Совет: если модель при исправлении стабильно повторяет одну и ту же ошибку, попросите её обновить CLAUDE.md или навыки, чтобы в будущем это не повторялось.


Чем больше сборок — тем лучше результат

Польза Автоисправления напрямую зависит от того, сколько сборок вы настроили. Каждая сборка — это независимая проверка качества со своим понятным перечнем ошибок, и агент может исправить всё, что способен увидеть парсер.

Проект только с одной сборкой компиляции даёт Автоисправлению один источник ошибок. Добавьте сборку линтера (проверка стиля кода), сборку проверки типов и сборку запуска тестов — и у агента появятся четыре независимых сигнала. Каждый ловит свой класс проблем — синтаксические ошибки, неаккуратный код, несоответствия типов, логические сбои, — которые остальные могли пропустить.

В разделе Creative Builds на странице «Сборка и развёртывание» есть примеры таких проверок: линтеры (eslint, ruff), проверка типов (tsc), запуск тестов (dotnet test), сканеры безопасности (npm audit) и собственные проверки проекта. Каждая добавленная сборка делает Автоисправление сильнее.

Настраивать новые сборки вручную не нужно: в .pastukhov/README.md описаны форматы build.yml и build.parser. Просто попросите модель добавить нужные сборки и обновить шаблоны парсера под вывод ваших инструментов.


Ограничения

Автоисправление — мощная, но не всемогущая функция. Вот его ограничения:

  • По одной сборке за раз — агент берёт первую сборку с проблемами, отправляет все её ошибки или предупреждения и только потом переходит к следующей.
  • Сначала ошибки — предупреждения не отправляются модели, пока не исправлены все ошибки сборки.
  • Защита от повторов — агент проверяет последние 10 сообщений на одинаковое содержимое. Если одни и те же ошибки появляются снова после неудачной попытки исправления, он не станет отправлять их повторно. Это спасает от бесконечных циклов, но значит, что упорные ошибки, которые модель не может исправить, в итоге перестанут сообщаться.
  • Один исправитель за раз — соблюдается ограничение на число одновременных сессий исправления, чтобы не перегружать систему.
  • Ждёт свободной модели — во время активного разговора опрос ошибок приостанавливается и возобновляется, когда агент свободен.
  • Не всё исправимо — некоторые ошибки требуют вашего решения: контекста, бизнес-логики или архитектурных решений, которые знаете только вы. Сложные проблемы, затрагивающие несколько связанных модулей, часто выходят за пределы возможностей Автоисправления.

Если Автоисправление не справилось с ошибкой, сессия чата остаётся в истории. Откройте её, посмотрите, что пыталась сделать модель, и дайте ей дополнительные указания — тогда при следующей попытке она добьётся успеха.


Когда включать Автоисправление

Автоисправление отлично справляется с:

  • Рутинными ошибками сборки, возникшими после недавних правок;
  • Проблемами стиля кода и простыми синтаксическими ошибками;
  • Ошибками типов, у которых есть очевидное решение;
  • Частыми ошибками настройки;
  • Падениями тестов с простыми исправлениями.

Автоисправлению может быть трудно с:

  • Ошибками, требующими решений по бизнес-логике или ваших знаний в предметной области;
  • Сложными архитектурными изменениями, затрагивающими несколько модулей;
  • Случаями, когда «исправление» зависит от специфических требований вашего проекта;
  • Ошибками от инструментов, чей вывод парсер сборки не распознаёт — в этом случае попросите модель добавить нужные шаблоны парсера.