# Сведения о расширениях для GitHub Copilot CLI

Расширения позволяют добавлять собственные средства и команды GitHub Copilot CLIкосой черты, используя только пакет SDK, который поставляется с интерфейсом командной строки.

> \[!NOTE]
> GitHub Copilot CLI Расширения в настоящее время являются экспериментальной функцией и могут измениться.

Расширение позволяет добавить свои собственные возможности в Copilot CLI. Каждое расширение — это небольшой модуль Node.js, который работает как отдельный процесс вместе с вашей интерактивной сессией и подключается обратно к нему. С помощью этого подключения расширение может добавить следующее:

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

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

В этой статье объясняется, как работают расширения и как Copilot CLI они обрабатываются. Практическое руководство по созданию собственных расширений см. в разделе [Создание расширений для GitHub Copilot CLI](/ru/copilot/tutorials/create-an-extension).

> \[!WARNING]
> Расширения выполняются на вашем компьютере с вашими правами. Загружайте только тот код расширения, которым доверяете, так же как вы запускаете только другие скрипты, которые не написали сами.

## Обнаружение расширений

При Copilot CLI запуске он ищет расширения в нескольких расположениях. Каждое расширение живет в собственной подкаталоге, и этот подкаталог должен содержать файл записи с именем `extension.mjs`, `extension.cjs`или `extension.js`. Это все файлы JavaScript: Copilot CLI файл записи выполняется непосредственно с Node.js, поэтому расширение должно быть записано в JavaScript— TypeScript и других языках в настоящее время не поддерживается.

Имя подкаталога становится именем расширения.

| Source                                           | Местонахождение                                 | Доступность                                      |
| ------------------------------------------------ | ----------------------------------------------- | ------------------------------------------------ |
| **Проект**                                       |                                                 |                                                  |
| `.github/extensions/NAME/` в текущем репозитории | Доступно всем, кто работает в этом репозитории. |                                                  |
| **User**                                         | `~/.copilot/extensions/NAME/`                   | Доступно во всех сеансах CLI в каждом каталоге.  |
| **Подключаемый модуль**                          | Установленный подключаемый модуль               | Доступно везде, где включен подключаемый модуль. |

## Выбор места жизни расширения

Где вы помещаете каталог расширений, определяет, кто может использовать его:

* Поместите его в **`.github/extensions/`** репозиторий, когда расширение зависит от этого проекта, и вы хотите поделиться им со всеми, кто работает там.
* Поместите его **`~/.copilot/extensions/`** , если требуется расширение, доступное во всех собственных сеансах, независимо от того, какой каталог вы запускаете CLI.

Два расположения следуют точно той же структуре , именованной подкаталогу, содержащей `extension.mjs` файл, чтобы можно было переместить расширение из одного в другую, просто переместив ее папку.

## Включение расширений

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

* Запустите ИНТЕРФЕЙС командной строки с флагом `‑‑experimental` .
* Выполните команду косой `/experimental on` черты внутри интерактивного сеанса.

## Изменение способа обработки расширений CLI

Вы можете ограничить Copilotдоступ к расширениям или полностью отключить их с помощью `/extensions mode` команды. При использовании этой команды вы получите три варианта:

* **Загрузка и расширение** (по умолчанию) — интерфейс командной строки запускает расширения \_и\_Copilot может управлять ими.
* **Загрузка** только— интерфейс командной строки запускает расширения, но Copilot не может управлять ими.
* **Отключенные**— расширения полностью отключены в текущем сеансе и будут оставаться отключенными в будущих сеансах, пока не переключитесь на один из двух других параметров. Другие текущие сеансы не затрагиваются.

Любое изменение, которое вы вносите, вступает в силу немедленно в текущем сеансе:

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

### Что означает "управление расширениями"

В режиме \*\*\*\*Copilot предоставляется небольшой набор дополнительных средств, которые позволяют работать непосредственно в системе расширений в рамках выполнения запросов. С помощью этих средств Copilot можно:

* **Вывод списка** обнаруженных расширений и просмотра их состояния.
* **Проверьте** расширение, в том числе хвост файла журнала, чтобы помочь диагностировать тот, который завершился сбоем или неправильно работает.
* **Создание** начального `extension.mjs` файла для создания шаблона нового расширения.
* **Перезагрузите** расширения, чтобы код его (или вы) вступили в силу без перезапуска сеанса.

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

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

## Расширения по сравнению с подключаемыми модулями

Как расширения, так и подключаемые модули добавляют функциональные Copilot CLIвозможности, но они служат различным целям:

* **Расширение** — это один модуль JavaScript, который записывается для добавления инструментов и команд косой черты, поддерживаемых кодом, выполняемым в сеансе.
* **Подключаемый модуль** — это устанавливаемый пакет, который объединяет повторно используемые компоненты, такие как агенты, навыки, перехватчики и интеграции, и может распространяться через Marketplace.

Для получения дополнительной информации о плагинах см. [О GitHub Copilot плагинах](/ru/copilot/concepts/agents/about-plugins).

## Дополнительные материалы

* [Создание расширений для GitHub Copilot CLI](/ru/copilot/tutorials/create-an-extension)
* [Справочник команды GitHub Copilot CLI](/ru/copilot/reference/copilot-cli-reference/cli-command-reference#slash-commands-in-the-interactive-interface)
* [GitHub Copilot CLI](/ru/copilot/how-tos/copilot-cli)