Функциональность доступна только в Visual Studio Code.
Контрольные точки автоматически создают версии файлов в вашей рабочей области во время выполнения задач в Code Assistant, что позволяет безопасно исследовать предложения ИИ и легко восстанавливать предыдущие версии файлов.
С помощью контрольных точек вы можете:
Безопасно экспериментировать с предложенными изменениями ИИ.
Легко восстанавливать предыдущие модификации файлов.
Сравнивать различные подходы к реализации.
Возвращаться к предыдущим состояниям проекта без потери наработок.
Примечание
Функциональность контрольных точек включена по умолчанию.
Для работы контрольных точек требуется установленная система контроля версий Git. См. инструкцию по установке.
Системный вспомогательный git-репозиторий работает независимо от существующей конфигурации git вашего проекта.
Настройки конфигурации
Чтобы включить контрольные точки:
На верхней панели чата нажмите кнопку Settings.
На левой панели перейдите в раздел Checkpoints.
Выберите опцию Enable automatic checkpoints.
Как работают контрольные точки
Code Assistant создает снимки состояния вашего проекта с использованием системного вспомогательного git-репозитория, отдельного от вашей основной системы контроля версий. Эти снимки, называемые контрольными точками, автоматически создаются до внесения изменений в файлы, что гарантирует возможность отмены нежелательных изменений. Контрольные точки записываются при старте задач и перед изменением файлов. Они не создаются автоматически перед выполнением команд.
Контрольные точки сохраняются как коммиты Git в системном вспомогательном репозитории, фиксируя:
Изменения содержимого файлов.
Добавленные новые файлы.
Удаленные файлы.
Переименованные файлы.
Изменения двоичных файлов.
Работа с контрольными точками
Контрольные точки интегрированы непосредственно в ваш рабочий процесс через интерфейс чата.
Контрольные точки отображаются прямо в истории чата:
Начальная контрольная точка задачи Initial Checkpoint отмечает начальное состояние вашего проекта.
Текущие контрольные точки Checkpoint создаются перед изменением файлов, позволяя легко отменить эти изменения.
Каждая контрольная точка позволяет просмотреть различия между текущим состоянием проекта и предыдущей контрольной точкой, а также восстановить проект до предыдущей контрольной точки.
Просмотр различий
Чтобы сравнить текущее состояние файлов с предыдущей контрольной точкой:
Найдите контрольную точку в истории чата.
Справа от контрольной точки нажмите View Diff.
Просмотрите различия в режиме сравнения:
Добавленные строки выделены зеленым.
Удаленные строки выделены красным.
Измененные файлы перечислены с подробным описанием.
Переименования файлов могут не всегда обнаруживаться. Различия отражают изменения содержимого файлов между коммитами.
Новые или удаленные файлы четко обозначены.
Восстановление контрольных точек
Чтобы восстановить проект до состояния предыдущей контрольной точки:
Найдите контрольную точку в истории чата.
Справа от контрольной точки нажмите Restore Checkpoint.
Выберите один из вариантов восстановления:
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 не предусмотрено.