---
metadata:
  - name: generator
    content: Diplodoc Platform v5.50.6
alternate:
  - https://sourcecraft.dev/portal/docs/en/code-assistant/operations/agent/checkpoints.md
  - https://sourcecraft.dev/portal/docs/ru/code-assistant/operations/agent/checkpoints.md
title: Контрольные точки в SourceCraft Code Assistant
description: Как использовать контрольные точки в SourceCraft Code Assistant для безопасного экспериментирования с изменениями и восстановления предыдущих версий файлов.
---
> **Documentation Index:** Fetch the complete configuration index at https://sourcecraft.dev/portal/docs/ru/llms.txt


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

<!-- source: ru/_includes/code-assistant/only-in-vscode.md -->
{% note warning %}

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

{% endnote %}
<!-- endsource: ru/_includes/code-assistant/only-in-vscode.md -->

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

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

{% note info %}

* Функциональность контрольных точек включена по умолчанию.
* Для работы контрольных точек требуется установленная система контроля версий Git. Используйте [инструкцию по установке](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git).
* Системный вспомогательный git-репозиторий работает независимо от существующей конфигурации git вашего проекта.

{% endnote %}

## Настройки конфигурации {#configuration-settings}

Чтобы включить контрольные точки:
1. На верхней панели чата нажмите кнопку <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="currentColor" fill-rule="evenodd" d="M7.199 2H8.8a.2.2 0 0 1 .2.2c0 1.808 1.958 2.939 3.524 2.034a.2.2 0 0 1 .271.073l.802 1.388a.2.2 0 0 1-.073.272c-1.566.904-1.566 3.164 0 4.069a.2.2 0 0 1 .073.271l-.802 1.388a.2.2 0 0 1-.271.073C10.958 10.863 9 11.993 9 13.8a.2.2 0 0 1-.199.2H7.2a.2.2 0 0 1-.2-.2c0-1.808-1.958-2.938-3.524-2.034a.2.2 0 0 1-.272-.073l-.8-1.388a.2.2 0 0 1 .072-.271c1.566-.905 1.566-3.165 0-4.07a.2.2 0 0 1-.073-.27l.801-1.389a.2.2 0 0 1 .272-.072C5.042 5.138 7 4.007 7 2.199c0-.11.089-.199.199-.199M5.5 2.2c0-.94.76-1.7 1.699-1.7H8.8c.94 0 1.7.76 1.7 1.7a.85.85 0 0 0 1.274.735 1.7 1.7 0 0 1 2.32.622l.802 1.388c.469.813.19 1.851-.622 2.32a.85.85 0 0 0 0 1.472 1.7 1.7 0 0 1 .622 2.32l-.802 1.388a1.7 1.7 0 0 1-2.32.622.85.85 0 0 0-1.274.735c0 .939-.76 1.7-1.699 1.7H7.2a1.7 1.7 0 0 1-1.699-1.7.85.85 0 0 0-1.274-.735 1.7 1.7 0 0 1-2.32-.622l-.802-1.388a1.7 1.7 0 0 1 .622-2.32.85.85 0 0 0 0-1.471 1.7 1.7 0 0 1-.622-2.32l.801-1.389a1.7 1.7 0 0 1 2.32-.622A.85.85 0 0 0 5.5 2.2m4 5.8a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0M11 8a3 3 0 1 1-6 0 3 3 0 0 1 6 0" clip-rule="evenodd"/></svg> **Settings**.
1. На левой панели перейдите в раздел <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="currentColor" fill-rule="evenodd" d="M5.312 4.909A1.25 1.25 0 1 1 3.19 3.593a1.25 1.25 0 0 1 2.123 1.316m-2.124 6.182a1.25 1.25 0 1 0 2.125 1.318 1.25 1.25 0 0 0-2.125-1.318M5 9.104V6.896a2.751 2.751 0 1 0-1.5 0v2.208A2.751 2.751 0 1 0 6.896 12.5H9.5a3 3 0 0 0 3-2.98V6.895a2.751 2.751 0 1 0-1.5 0V9.5A1.5 1.5 0 0 1 9.5 11H6.896A2.76 2.76 0 0 0 5 9.104m7.812-4.195a1.25 1.25 0 1 0-2.125-1.318 1.25 1.25 0 0 0 2.125 1.318" clip-rule="evenodd"/></svg> **Checkpoints**.
1. Выберите опцию **Enable automatic checkpoints**.

## Как работают контрольные точки {#how-checkpoints-work}

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

Контрольные точки сохраняются как коммиты Git в системном вспомогательном репозитории, фиксируя:
* Изменения содержимого файлов.
* Добавленные новые файлы.
* Удаленные файлы.
* Переименованные файлы.
* Изменения двоичных файлов.

## Работа с контрольными точками {#working-with-checkpoints}

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

Контрольные точки отображаются прямо в истории чата:
* Начальная контрольная точка задачи <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="currentColor" fill-rule="evenodd" d="M7.25 1.75v2.32a4.001 4.001 0 0 0 0 7.86v2.32a.75.75 0 0 0 1.5 0v-2.32a4.001 4.001 0 0 0 0-7.86V1.75a.75.75 0 0 0-1.5 0M8 10.5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5" clip-rule="evenodd"/></svg> **Initial Checkpoint** отмечает начальное состояние вашего проекта.
* Текущие контрольные точки <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="currentColor" fill-rule="evenodd" d="M7.25 1.75v2.32a4.001 4.001 0 0 0 0 7.86v2.32a.75.75 0 0 0 1.5 0v-2.32a4.001 4.001 0 0 0 0-7.86V1.75a.75.75 0 0 0-1.5 0M8 10.5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5" clip-rule="evenodd"/></svg> **Checkpoint** создаются перед изменением файлов, позволяя легко отменить эти изменения.

Каждая контрольная точка позволяет [просмотреть](#viewing-differences) различия между текущим состоянием проекта и предыдущей контрольной точкой, а также [восстановить](#restoring-checkpoints) проект до предыдущей контрольной точки.

### Просмотр различий {#viewing-differences}

Чтобы сравнить текущее состояние файлов с предыдущей контрольной точкой:
1. Найдите контрольную точку в истории чата.
1. Справа от контрольной точки нажмите <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#FFF" d="M0 0h16v16H0z"/><path stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.2" d="M3 2.5h6l3 3v8H3v-11z"/><path stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.2" d="M9 2.5v3h3"/><path stroke="#000" stroke-linecap="round" stroke-width="1.2" d="M6 7.5h4m-2-2v4m-2 2h4"/></svg> **View Diff**.
1. Просмотрите различия в режиме сравнения:
    * Добавленные строки выделены зеленым.
    * Удаленные строки выделены красным.
    * Измененные файлы перечислены с подробным описанием.
    * Переименования файлов могут не всегда обнаруживаться. Различия отражают изменения содержимого файлов между коммитами.
    * Новые или удаленные файлы четко обозначены.

### Восстановление контрольных точек {#restoring-checkpoints}

Чтобы восстановить проект до состояния предыдущей контрольной точки:
1. Найдите контрольную точку в истории чата.
1. Справа от контрольной точки нажмите <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="currentColor" fill-rule="evenodd" d="M1.5 8a6.5 6.5 0 1 1 7.348 6.445.75.75 0 1 1-.194-1.487A5.001 5.001 0 1 0 4.5 11.57v-1.32a.75.75 0 0 1 1.5 0v3a.75.75 0 0 1-.75.75h-3a.75.75 0 0 1 0-1.5h1.06A6.48 6.48 0 0 1 1.5 8M8 4.25a.75.75 0 0 1 .75.75v2.625l1.033.775a.75.75 0 1 1-.9 1.2l-1.333-1a.75.75 0 0 1-.3-.6V5A.75.75 0 0 1 8 4.25" clip-rule="evenodd"/></svg> **Restore Checkpoint**.
1. Выберите один из вариантов восстановления:
    * **Restore files** — возвращает только файлы рабочей области к состоянию контрольной точки без изменения истории чата. Идеально для сравнения альтернативных реализаций при сохранении контекста чата, что позволяет бесшовно переключаться между разными состояниями проекта. Этот вариант не требует подтверждения и позволяет быстро переключаться между разными реализациями.
    * **Restore Files & Task** — возвращает файлы рабочей области и удаляет все последующие сообщения в чате. Используйте, если вы хотите полностью сбросить код и разговор к моменту контрольной точки. Этот вариант требует подтверждения в диалоговом окне, так как он не может быть отменен.

## Техническая реализация {#technical-implementation}

### Архитектура контрольных точек {#checkpoints-architecture}

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

### Процесс восстановления {#restoration-process}

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

### Тип хранения {#storage-type}

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

### Вычисление различий {#difference-calculation}

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

### Исключение файлов и шаблоны игнорирования {#file-exclusion-and-ignore-patterns}

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

#### Встроенные исключения {#built-in-exclusions}

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

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

#### Поддержка .gitignore {#gitignore-support}

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

#### Шаблоны git LFS {#git-lfs-patterns}

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

#### Поведение .codeassistantignore {#codeassistantignore-behavior}

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

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

#### Вложенные git-репозитории {#nested-git-repositories}

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

### Управление параллелизмом {#parallelism-management}

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