О контекстном окне
Когда вы используете GitHub Copilot CLI, каждое отправленное сообщение, каждый ответ от Copilot, каждый вызов инструмента и его результат, а также системные инструкции, определяющие Copilotповедение , хранятся в контекстном окне. Контекстное окно — это общее количество информации, которое модель ИИ может учитывать за один момент при формировании ответа.
Окно контекста имеет фиксированный размер, измеряемый в токенах, который варьируется в зависимости от модели. Токены обычно состоят из коротких, часто используемых слов и фрагментов многосложных слов. По мере развития разговора окно контекста заполняется следующими:
-
**Системные инструкции и определения инструментов**: встроенные инструкции, указывающие Copilot на поведение, а также схемы всех доступных инструментов. Они всегда присутствуют и занимают фиксированную часть контекстного окна. -
**Ваши сообщения**: Каждый запрос, который вы отправляете. -
** CopilotОтветы**: Всё Copilot отвечает тебе. -
**Вызовы инструментов и результаты**: При Copilot чтении файлов, выполнении команд или поиске в вашей кодовой базе в контекст добавляются как запрос, так и результат. Результаты инструментов могут быть особенно большими — например, если инструмент читает длинный файл или запускает команду, дающую обширный результат.
Всё это накапливается в контекстном окне. В длинной или сложной сессии окно контекста может заполниться.
Почему контекстное окно важно
Контекстное окно — это то, что даёт Copilot ему «воспоминание» о вашем разговоре. Всё, что находится в контекстном окне, доступно для Copilot обращения при ответе вам.
Это значит, что за очень длинную сессию Copilot можно не сможет собрать всю историю разговора одновременно. Copilot CLI Поэтому у вас есть функции управления контекстом, которые позволяют продолжать разговор Copilot столько, сколько нужно.
Проверка использования контекста
Вы можете проверить, какая часть окна контекста сейчас используется, введя /context команду slash. Здесь отображается визуальный разбор использования ваших токенов, показывающий:
-
**Система/Инструменты**: фиксированные накладные расходы на системные инструкции и определения инструментов. -
**Сообщения**: Пространство, используемое историей ваших переписок. -
**Свободное пространство**: сколько места осталось для новых сообщений. -
**Buffer**: Зарезервированная часть, которая запускает автоматическое управление контекстом.

Возможно, стоит использовать /context команду slash, когда:
- Вы на длительной сессии и хотите узнать, сколько места осталось.
-
Copilot Похоже, он забывает ранние части разговора. - Вам нужно понять, произошло ли уплотнение или скорее всего произойдёт в ближайшее время.
Сжатие
Компрессия — это процесс, позволяющий GitHub Copilot CLI поддерживать длительные сессии без выхода за пределы контекстного окна.
Когда происходит уплотнение
Когда разговор достигает примерно 80% ёмкости окна контекста, Copilot CLI он автоматически начинает сжимать контекст в фоне. Это оставляет буфер примерно в 20%, чтобы вызовы инструментов могли продолжаться во время уплотнения. Если контекст заполняется примерно до 95% до окончания уплотнения, Copilot CLI сделайте короткую паузу, чтобы дождаться завершения уплотнения, прежде чем продолжить.
Вы также можете вручную активировать уплотнение в любой момент, введя команду /compact . Это полезно, если вы собираетесь начать новую фазу работы и хотите заранее освободить контекстное пространство. Нажмите Esc , чтобы отменить ручное уплотнение, если передумаете.
Что делает уплотнение
При уплотнении работает: Copilot CLI
- Делает снимок текущей истории разговоров.
- Отправляет полный диалог в модель ИИ со специальным запросом, который требует сгенерировать структурированное резюме. В резюме отражаются цели беседы, что было сделано, ключевые технические детали, важные файлы и запланированные дальнейшие шаги.
- Заменяет старую историю переписки на краткое описание, а также оригинальные инструкции пользователя и текущее состояние планов или списков to-do.
- Сохраняет все сообщения, добавленные во время работы уплотнения, в фоне.
В результате история разговоров сжимается в гораздо меньший обзор, освобождая большую часть контекстного окна для новых работ. Copilot использует это резюме для поддержания непрерывности — он знает, что обсуждалось, что было решено и что делать дальше — даже несмотря на то, что исходные сообщения были заменёны.
Какое уплотнение не сохраняет
Уплотнение — это процесс суммирования, поэтому некоторые детали неизбежно теряются. Краткое изложение охватывает ключевые моменты, но мелкие детали — такие как точная формулировка каждого сообщения, полный результат каждой команды или мелкие решения, принятые в начале длительного разговора — могут не быть включены. Если вам нужно Copilot вспомнить очень конкретную деталь из гораздо более ранней сессии, после уплотнения этой информации может не остаться.
Что произошло бы без уплотнения
Без уплотнения, когда окно контекста заполнилось, Copilot пришлось бы просто убрать старые сообщения из истории переписки — удалять их без какого-либо сводки или записи. Это означало бы резкую потерю контекста, без возможности Copilot узнать, что было в удалённых сообщениях. Уплотнение избегает этого, заменяя историю на интеллектуальное резюме, а не отбрасывая её.
Checkpoints
Каждый раз, когда происходит уплотнение — автоматически или вручную — создаётся контрольная точка . Контрольная точка — это сохранённая копия сводки по сжатию, хранящаяся в виде пронумерованного и заголованного файла в рабочем пространстве вашей сессии.
Смотровые пункты
Чтобы увидеть все контрольные точки в вашей текущей сессии, введите:
/session checkpoints
/session checkpoints
Здесь перечислены все контрольные точки с их номером и названием:
Checkpoint History (3 total):
3. Refactoring authentication module
2. Implementing user dashboard
1. Initial planning and setup
Используйте номер контрольной точки, чтобы увидеть полное содержимое любого контрольного пункта. Например, чтобы увидеть контрольную точку 2, введите:
/session checkpoints 2
/session checkpoints 2
Когда контрольные точки полезны
-
**Обзор произошедшего**: После долгой сессии с множеством уплотнений ранние этапы разговора больше не находятся в активном контексте. Контрольные точки позволяют прочитать, что Copilot произошло при каждом уплотнении. -
**Проверка непрерывности**: Если вы хотите проверить, что Copilotрезюме точно отражает вашу предыдущую работу перед продолжением, вы можете просмотреть последнюю контрольную точку. -
**Путаницы при отладке**: если Copilot кажется, что вы забыли решение или движетесь в направлении, противоречащем предыдущим работам, проверка чекпойнтов может выявить, что было сохранено во время уплотнения, а что могло быть обобщено иначе, чем вы ожидали.
Примечание.
- Контрольные точки создаются автоматически. Вам не нужно ими управлять — они есть, если вам это нужно. В большинстве сессий вам вообще не нужно смотреть на контрольные точки.
- Нельзя обратить уплотнение после завершения.
Использование длительных сессий
Автоматическое уплотнение позволяет продолжать работу в течение длительной сессии, не беспокоясь о выходе за пределы контекстного окна. Бывают моменты, когда это очень полезно, а бывают — когда хочется начать новую сессию.
Когда длительные сессии полезны
Длительные сессии хорошо работают, когда:
- Вы работаете над многоэтапной задачей, например, созданием функции, требующей подготовки, внедрения, тестирования и создания pull-запроса.
- Вы прорабатываете задачу и хотите Copilot сохранить контекст того, что уже пробовали, а что нет.
- Вы проводите исследовательскую работу по всему коду и со временем налаживаете общее понимание.Copilot
Когда начинать новую сессию
Начинать новую сессию лучше, когда:
- Вы переходите к другой задаче. Copilot Не нужен контекст вашей предыдущей работы, а чистое окно контекста даёт больше пространства для новой задачи.
- Разговор прошёл через множество уплотнений, и вы чувствуете, что важный контекст теряется в процессе резюме.
- Вам нужен чистый лист — например, если работа пошла не в том направлении, и вы предпочитаете начинать заново, чем Copilot пытаться примирить предыдущие решения с новым подходом.
Совет
Вы можете возобновить предыдущие сессии в любой момент с помощью /resume этой команды. Это позволяет продолжить с того места, где остановились, включая все контрольные точки, созданные в ходе сессии.
Дополнительные материалы
-
[AUTOTITLE](/copilot/how-tos/copilot-cli) -
[AUTOTITLE](/copilot/how-tos/use-copilot-agents/use-copilot-cli) -
[AUTOTITLE](/copilot/reference/copilot-cli-reference/cli-command-reference)