---
metadata:
  - name: generator
    content: Diplodoc Platform v5.63.0
alternate:
  - https://vibe.sourcecraft.dev/portal/docs/en/code-assistant/operations/agent/checkpoints.md
  - https://vibe.sourcecraft.dev/portal/docs/ru/code-assistant/operations/agent/checkpoints.md
  - href: https://vibe.sourcecraft.dev/portal/docs/ru/code-assistant/operations/agent/checkpoints.md
    type: text/markdown
    title: Markdown version
  - href: https://vibe.sourcecraft.dev/portal/docs/ru/code-assistant/llms.txt
    rel: describedby
title: Контрольные точки в SourceCraft Code Assistant
description: Как использовать контрольные точки в SourceCraft Code Assistant для безопасного экспериментирования с изменениями и восстановления предыдущих версий файлов.
---
> **Documentation Index:** Fetch the complete configuration index at https://vibe.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. На верхней панели чата нажмите кнопку ![image](../../../_assets/console-icons/gear.svg) **Settings**.
1. На левой панели перейдите в раздел ![image](../../../_assets/console-icons/code-trunk.svg) **Checkpoints**.
1. Выберите опцию **Enable automatic checkpoints**.

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

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

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

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

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

Контрольные точки отображаются прямо в истории чата:
* Начальная контрольная точка задачи ![image](../../../_assets/console-icons/code-commit.svg) **Initial Checkpoint** отмечает начальное состояние вашего проекта.
* Текущие контрольные точки ![image](../../../_assets/console-icons/code-commit.svg) **Checkpoint** создаются перед изменением файлов, позволяя легко отменить эти изменения.

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

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

Чтобы сравнить текущее состояние файлов с предыдущей контрольной точкой:
1. Найдите контрольную точку в истории чата.
1. Справа от контрольной точки нажмите ![image](../../../_assets/code-assistant/diff.svg) **View Diff**.
1. Просмотрите различия в режиме сравнения:
    * Добавленные строки выделены зеленым.
    * Удаленные строки выделены красным.
    * Измененные файлы перечислены с подробным описанием.
    * Переименования файлов могут не всегда обнаруживаться. Различия отражают изменения содержимого файлов между коммитами.
    * Новые или удаленные файлы четко обозначены.

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

Чтобы восстановить проект до состояния предыдущей контрольной точки:
1. Найдите контрольную точку в истории чата.
1. Справа от контрольной точки нажмите ![image](../../../_assets/console-icons/clock-arrow-rotate-left.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 не предусмотрено.