Контрольные точки в SourceCraft Code Assistant

Важно

Функциональность доступна только в Visual Studio Code.

Контрольные точки автоматически создают версии файлов в вашей рабочей области во время выполнения задач в Code Assistant, что позволяет безопасно исследовать предложения ИИ и легко восстанавливать предыдущие версии файлов.

С помощью контрольных точек вы можете:

  • Безопасно экспериментировать с предложенными изменениями ИИ.
  • Легко восстанавливать предыдущие модификации файлов.
  • Сравнивать различные подходы к реализации.
  • Возвращаться к предыдущим состояниям проекта без потери наработок.

Примечание

  • Функциональность контрольных точек включена по умолчанию.
  • Для работы контрольных точек требуется установленная система контроля версий Git. См. инструкцию по установке.
  • Системный вспомогательный git-репозиторий работает независимо от существующей конфигурации git вашего проекта.

Настройки конфигурации

Чтобы включить контрольные точки:

  1. На верхней панели чата нажмите кнопку Settings.
  2. На левой панели перейдите в раздел Checkpoints.
  3. Выберите опцию Enable automatic checkpoints.

Как работают контрольные точки

Code Assistant создает снимки состояния вашего проекта с использованием системного вспомогательного git-репозитория, отдельного от вашей основной системы контроля версий. Эти снимки, называемые контрольными точками, автоматически создаются до внесения изменений в файлы, что гарантирует возможность отмены нежелательных изменений. Контрольные точки записываются при старте задач и перед изменением файлов. Они не создаются автоматически перед выполнением команд.

Контрольные точки сохраняются как коммиты Git в системном вспомогательном репозитории, фиксируя:

  • Изменения содержимого файлов.
  • Добавленные новые файлы.
  • Удаленные файлы.
  • Переименованные файлы.
  • Изменения двоичных файлов.

Работа с контрольными точками

Контрольные точки интегрированы непосредственно в ваш рабочий процесс через интерфейс чата.

Контрольные точки отображаются прямо в истории чата:

  • Начальная контрольная точка задачи Initial Checkpoint отмечает начальное состояние вашего проекта.
  • Текущие контрольные точки Checkpoint создаются перед изменением файлов, позволяя легко отменить эти изменения.

Каждая контрольная точка позволяет просмотреть различия между текущим состоянием проекта и предыдущей контрольной точкой, а также восстановить проект до предыдущей контрольной точки.

Просмотр различий

Чтобы сравнить текущее состояние файлов с предыдущей контрольной точкой:

  1. Найдите контрольную точку в истории чата.
  2. Справа от контрольной точки нажмите View Diff.
  3. Просмотрите различия в режиме сравнения:
    • Добавленные строки выделены зеленым.
    • Удаленные строки выделены красным.
    • Измененные файлы перечислены с подробным описанием.
    • Переименования файлов могут не всегда обнаруживаться. Различия отражают изменения содержимого файлов между коммитами.
    • Новые или удаленные файлы четко обозначены.

Восстановление контрольных точек

Чтобы восстановить проект до состояния предыдущей контрольной точки:

  1. Найдите контрольную точку в истории чата.
  2. Справа от контрольной точки нажмите Restore Checkpoint.
  3. Выберите один из вариантов восстановления:
    • Restore files — возвращает только файлы рабочей области к состоянию контрольной точки без изменения истории чата. Идеально для сравнения альтернативных реализаций при сохранении контекста чата, что позволяет бесшовно переключаться между разными состояниями проекта. Этот вариант не требует подтверждения и позволяет быстро переключаться между разными реализациями.
    • Restore Files & Task — возвращает файлы рабочей области и удаляет все последующие сообщения в чате. Используйте, если вы хотите полностью сбросить код и разговор к моменту контрольной точки. Этот вариант требует подтверждения в диалоговом окне, так как он не может быть отменен.

Техническая реализация

Архитектура контрольных точек

Система контрольных точек состоит из следующих компонентов:

  • Системный вспомогательный git-репозиторий — отдельный репозиторий, созданный специально для отслеживания контрольных точек, который функционирует как механизм постоянного хранения состояния контрольных точек.
  • Сервис контрольных точек — обрабатывает операции git и управляет состоянием через:
    • Инициализацию репозитория.
    • Создание и сохранение контрольных точек.
    • Вычисление различий.
    • Восстановление состояния.
  • Компоненты пользовательского интерфейса — элементы интерфейса, отображаемые в чате, которые позволяют взаимодействовать с контрольными точками.

Процесс восстановления

При выполнении восстановления Code Assistant:

  • Выполняет жесткий сброс к указанному коммиту контрольной точки.
  • Копирует все файлы из системного вспомогательного репозитория в вашу рабочую область.
  • Обновляет внутреннее состояние отслеживания контрольных точек.

Тип хранения

Контрольные точки привязаны к задачам, то есть они специфичны для одной задачи.

Вычисление различий

Сравнение контрольных точек использует встроенные возможности git для вычисления различий, чтобы создавать структурированные изменения файлов:

  • Измененные файлы показывают изменения построчно.
  • Бинарные файлы корректно обнаруживаются и обрабатываются.
  • Обнаружение переименований может быть ограничено: различия фокусируются на изменениях содержимого файлов между контрольными точками.
  • Создание и удаление файлов четко идентифицируются.

Исключение файлов и шаблоны игнорирования

Система контрольных точек использует интеллектуальное исключение файлов для отслеживания только релевантных файлов:

Встроенные исключения

Система имеет обширные встроенные шаблоны исключений, которые автоматически игнорируют:

  • Артефакты сборки и директории зависимостей (node_modules/, dist/, build/).
  • Медиафайлы и бинарные ресурсы (изображения, видео, аудио).
  • Кэш и временные файлы (.cache/, .tmp/, .bak).
  • Конфигурационные файлы с конфиденциальной информацией (.env).
  • Большие файлы данных (архивы, исполняемые файлы, бинарные файлы).
  • Файлы баз данных и логи.

Эти шаблоны записываются в файл .git/info/exclude системного вспомогательного репозитория во время инициализации.

Поддержка .gitignore

Система контрольных точек учитывает шаблоны .gitignore в вашей рабочей области:

  • Файлы, исключенные через .gitignore, не будут инициировать создание контрольных точек.
  • Исключенные файлы не будут отображаться в различиях контрольных точек.
  • Стандартные правила игнорирования git применяются при подготовке изменений файлов.

Шаблоны git LFS

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

Поведение .codeassistantignore

Файл .codeassistantignore, который контролирует доступ ИИ к файлам, отделен от отслеживания контрольных точек:

  • Файлы, исключенные через .codeassistantignore, но не через .gitignore, все равно будут включены в контрольные точки.
  • Изменения в файлах, недоступных для ИИ, все равно могут быть восстановлены через контрольные точки.

Это разделение сделано намеренно, так как .codeassistantignore ограничивает, к каким файлам ИИ может получить доступ, а не какие файлы должны отслеживаться для истории версий.

Вложенные git-репозитории

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

Управление параллелизмом

Расширение предотвращает дублирование создания контрольных точек в рамках одной операции потоковой передачи. Специальной очереди операций git не предусмотрено.