Поделиться через


Как Copilot Chat понимает и использует контекст

Copilot Chat в Visual Studio разработан для учета контекста, предоставляя высоко релевантные и специализированные ответы, глубоко понимая структуру и содержимое проекта. В этой статье описано, как copilot Chat создает и использует контекст для улучшения рабочего процесса написания кода.

Как Copilot Chat собирает контекст решения

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

Индексирование базы кода

Если репозиторий размещен на сайте GitHub или Azure DevOps, Copilot создает удаленный индекс базы кода и вычисляет внедрение, которое фиксирует шаблоны и связи в коде. Дополнительные сведения об удаленном индексировании на GitHub.

Если код размещен в другом месте, Copilot создает локальный индекс.

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

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

Эти файлы дополняют системный запрос, инструкции, неявный контекст (например, журнал чата и открытые файлы), а также любое явное содержимое, предоставляемое, например ошибки.

Узнайте, как добавлять ссылки в качестве контекста в чате.

Как Copilot Chat применяет рекомендации по коду

Copilot Chat часто предоставляет предложения по коду в своих ответах. Эти предложения должны быть точно сопоставлены с базой кода, прежде чем их можно будет применить и протестировать.

Сопоставление кода на основе модели

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

Память Copilot

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

Как работает память Copilot

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

При обнаружении таких случаев отображается уведомление, чтобы сохранить настройку.

Снимок экрана: когда Copilot обнаруживает предпочтения для добавления в воспоминания.

Затем Copilot классифицирует предпочтения в один из трех файлов:

  • .editorconfig для стандартов кодирования
  • CONTRIBUTING.md для лучших практик, рекомендаций и архитектурных стандартов.
  • README.md сведения о проекте высокого уровня

Снимок экрана: уведомление об обнаружении памяти с параметрами сохранения предпочтений для пользователей или инструкций уровня репозитория.

При обнаружении предпочтения можно выбрать место его сохранения:

  • Настройки уровня пользователя: сохранено в %USERPROFILE%/copilot-instructions.md. Эти настройки применяются ко всем сеансам Copilot в проектах.
  • Параметры уровня репозитория: сохранены в /.github/copilot-instructions.md. Эти настройки предоставляются команде через репозиторий.

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

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