Skip to main content
Skip to content

Управление контекстом для GitHub Copilot

Поймите, как Copilot управлять контекстом разговора, что происходит во время долгих сессий и как контролировать контекстное окно.

О контекстном окне

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

Окно контекста имеет фиксированный размер, измеряемый в токенах, который варьируется в зависимости от модели. Токены обычно состоят из коротких, часто используемых слов и фрагментов многосложных слов. По мере развития разговора окно контекста заполняется следующими:

  • Системные инструкции и определения инструментов: встроенные инструкции, указывающие Copilot на поведение, а также схемы всех доступных инструментов. Они всегда присутствуют и занимают фиксированную часть контекстного окна.
  • Ваши сообщения: Каждый запрос, который вы отправляете.
  • CopilotОтветы: Всё Copilot отвечает тебе.
  • Вызовы инструментов и результаты: При Copilot чтении файлов, выполнении команд или поиске в вашей кодовой базе в контекст добавляются как запрос, так и результат. Результаты инструментов могут быть особенно большими — например, если инструмент читает длинный файл или запускает команду, дающую обширный результат.

Всё это накапливается в контекстном окне. В длинной или сложной сессии окно контекста может заполниться.

Почему контекстное окно важно

Окно контекста — это то, что позволяет Copilot рассмотреть предыдущие части беседы при принятии решения о том, как реагировать на запрос. Все, что находится в окне контекста, доступно для Copilot ссылки при работе с задачей.

Это значит, что за очень длинную сессию Copilot можно не сможет собрать всю историю разговора одновременно. Copilot Таким образом, имеет функции управления контекстом, которые позволяют эффективно продолжать беседу до тех пор, пока вам потребуется.

Проверка использования контекста

Элементы управления для использования контекста зависят от клиента и поверхности. Рассмотрим пример.

  • Copilot CLI В используйте GitHub Copilot appдля /context проверки использования текущего сеанса.
  • В поддерживаемых идентификаторах найдите индикатор окна контекста в области ввода чата Copilot или ниже. Например, индикатор Visual Studio Codeявляется небольшим кругом. В некоторых других идентификаторах использование отображается в диалоговом окне сведений о сеансе, предоставленном параметром Copilot Extension.

Вы можете проверить использование контекста, если:

  • Вы на длительной сессии и хотите узнать, сколько места осталось.
  • Copilot Похоже, он забывает ранние части разговора.
  • Вам нужно понять, произошло ли уплотнение или скорее всего произойдёт в ближайшее время. См. раздел "Сжатие".

Управление окном контекста

Вы можете управлять окном контекста, отслеживая использование, сжимая старые сообщения и управляя большими выходными данными инструментов.

Примечание.

Доступные элементы управления отличаются от клиента и поверхности.

Если вы не можете эффективно управлять окном контекста с помощью доступных команд и параметров, вам может потребоваться рассмотреть альтернативные стратегии, такие как разрыв беседы на небольшие сеансы или уменьшение размера выходных данных инструментов, запросив Copilot усечь или суммировать их. Кроме того, Copilot можно делегировать работу вложенным элементам, в которых есть окна контекста, отдельные от основного агента. Это может помочь сохранить контекст основного агента.

Использование контекста /context с помощью команды

В некоторых поверхностях можно использовать команду косой /context черты для визуализации текущего использования окна контекста. Первая строка вывода показывает активную модель и количество используемых токенов из общей ёмкости окна контекста модели. Остальная часть вывода показывает использование токенов и процент контекстного окна для:

  • Системный запрос: базовый системный запрос.
  • Пользовательские инструкции: ваши загруженные пользовательские инструкции (отображаются только при наличии).
  • Системные инструменты: встроенные определения инструментов.
  • Инструменты MCP: определения инструментов, предоставляемые серверами MCP.
  • Сообщения: ваша история переписок.
  • Свободное пространство: неиспользуемый контекст всё ещё доступен.
  • Буфер: ёмкость, зарезервированная для отклика и запаса мощности модели.

Управление выходными данными большого инструмента Copilot CLI

Чтобы предотвратить слишком много использования большого количества элементов в окне контекста, по умолчанию выходные данные средства, превышающие 20 КиБ, сохраняются во временный файл. Модель получает путь к файлу и предварительную версию вместо полного вывода. Это относится ко всем средствам, включая средства, предоставляемые серверами MCP.

Чтобы изменить ограничение, задайте COPILOT_LARGE_OUTPUT_THRESHOLD_BYTES положительное число байтов UTF-8 перед запуском интерфейса командной строки. Увеличение ограничения оставляет меньше контекста для беседы и последующих вызовов инструментов.

Сжатие

Компрессия — это процесс, позволяющий Copilot поддерживать длительные сессии без выхода за пределы контекстного окна.

Доступность, поведение и элементы управления для сжатия зависят от клиента и поверхности. Рассмотрим пример.

  • Copilot CLI В и GitHub Copilot app, сжатие может произойти автоматически или вы можете активировать его с /compactпомощью .
  • В Visual Studio Code и JetBrains IDEs, вы можете вручную сжимать сеанс с помощью Copilot Extension.

Когда происходит уплотнение

Точные пороговые значения и поведение для сжатия зависят от клиента и его конфигурации.

Copilot CLIПри достижении примерно 80% емкости Copilot CLI окна контекста автоматически начинает сжатие контекста в фоновом режиме. Это оставляет буфер примерно в 20%, чтобы вызовы инструментов могли продолжаться во время уплотнения. Если контекст заполняется примерно до 95% до окончания уплотнения, Copilot CLI сделайте короткую паузу, чтобы дождаться завершения уплотнения, прежде чем продолжить.

Copilot CLI В и GitHub Copilot app, вы можете активировать сжатие вручную в любое время, введя /compact команду. Это полезно, если вы собираетесь начать новую фазу работы и хотите заранее освободить контекстное пространство. Нажмите Esc , чтобы отменить ручное уплотнение, если передумаете.

Где происходит сжатие

Сжатие доступно в большинстве поддерживаемых клиентов, включая Copilot CLI, , GitHub Copilot app, Copilot cloud agentVisual Studio Code, Visual StudioJetBrains IDEsи Eclipse, но не в интегрированной среде разработки Xcode.

Что делает уплотнение

При уплотнении работает: Copilot

  1. Делает снимок текущей истории разговоров.
  2. Отправляет полный диалог в модель ИИ со специальным запросом, который требует сгенерировать структурированное резюме. В резюме отражаются цели беседы, что было сделано, ключевые технические детали, важные файлы и запланированные дальнейшие шаги.
  3. Заменяет старую историю переписки на краткое описание, а также оригинальные инструкции пользователя и текущее состояние планов или списков to-do.
  4. Сохраняет все сообщения, добавленные во время работы уплотнения, в фоне.

В результате история разговоров сжимается в гораздо меньший обзор, освобождая большую часть контекстного окна для новых работ. Copilot использует это резюме для поддержания непрерывности — он знает, что обсуждалось, что было решено и что делать дальше — даже несмотря на то, что исходные сообщения были заменёны.

Какое уплотнение не сохраняет

Уплотнение — это процесс суммирования, поэтому некоторые детали неизбежно теряются. Краткое изложение охватывает ключевые моменты, но мелкие детали — такие как точная формулировка каждого сообщения, полный результат каждой команды или мелкие решения, принятые в начале длительного разговора — могут не быть включены. Если вам нужно Copilot вспомнить очень конкретную деталь из гораздо более ранней сессии, после уплотнения этой информации может не остаться.

Вы не можете отменить завершенное сжатие.

Что произошло бы без уплотнения

Без уплотнения, когда окно контекста заполнилось, Copilot пришлось бы просто убрать старые сообщения из истории переписки — удалять их без какого-либо сводки или записи. Это означало бы резкую потерю контекста, без возможности Copilot узнать, что было в удалённых сообщениях. Уплотнение избегает этого, заменяя историю на интеллектуальное резюме, а не отбрасывая её.

Checkpoints

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

В остальной части этой статьи контрольная точка ссылается на сохраненную сводку сжатия, например нумерованные, заголовки файлов, созданные в .Copilot CLI

Когда контрольные точки полезны

  • Обзор произошедшего: После долгой сессии с множеством уплотнений ранние этапы разговора больше не находятся в активном контексте. Контрольные точки позволяют прочитать, что Copilot произошло при каждом уплотнении.
  • Проверка непрерывности: Если вы хотите проверить, что Copilotрезюме точно отражает вашу предыдущую работу перед продолжением, вы можете просмотреть последнюю контрольную точку.
  • Путаницы при отладке: если Copilot кажется, что вы забыли решение или движетесь в направлении, противоречащем предыдущим работам, проверка чекпойнтов может выявить, что было сохранено во время уплотнения, а что могло быть обобщено иначе, чем вы ожидали.

Примечание.

В большинстве клиентов, включая Copilot CLIсводки контрольных точек, создаются автоматически. Вам не нужно ими управлять — они есть, если вам это нужно. В большинстве сессий вам вообще не нужно смотреть на контрольные точки.

Просмотр контрольных точек для Copilot CLI

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

Copilot prompt
/session checkpoints

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

Checkpoint History (3 total):
  3. Refactoring authentication module
  2. Implementing user dashboard
  1. Initial planning and setup

Используйте номер контрольной точки, чтобы увидеть полное содержимое любого контрольного пункта. Например, чтобы увидеть контрольную точку 2, введите:

Copilot prompt
/session checkpoints 2

Использование длительных сессий

Автоматическое уплотнение позволяет продолжать работу в течение длительной сессии, не беспокоясь о выходе за пределы контекстного окна. Бывают моменты, когда это очень полезно, а бывают — когда хочется начать новую сессию.

Когда длительные сессии полезны

Длительные сессии хорошо работают, когда:

  • Вы работаете над многоэтапной задачей, например, созданием функции, требующей подготовки, внедрения, тестирования и создания pull-запроса.
  • Вы прорабатываете задачу и хотите Copilot сохранить контекст того, что уже пробовали, а что нет.
  • Вы проводите исследовательскую работу по всему коду и со временем налаживаете общее понимание.Copilot

Когда начинать новую сессию

Начинать новую сессию лучше, когда:

  • Вы переходите к другой задаче. Copilot Не нужен контекст вашей предыдущей работы, а чистое окно контекста даёт больше пространства для новой задачи.
  • Разговор прошёл через множество уплотнений, и вы чувствуете, что важный контекст теряется в процессе резюме.
  • Вам нужен чистый лист — например, если работа пошла не в том направлении, и вы предпочитаете начинать заново, чем Copilot пытаться примирить предыдущие решения с новым подходом.

В некоторых клиентах и поверхностях можно возобновить предыдущий сеанс, чтобы продолжить его существующий контекст беседы вместо начала. Методы возобновления и доступность контрольных точек зависят от клиента и поверхности.