# Сравнение особенностей кастомизации CLI на GitHub Copilot

Узнайте о различных способах настройки Copilot: что они делают и когда их использовать.

## Введение

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

В этой статье объясняется разница между:

* **Пользовательские инструкции**

  Они объясняют Copilot\*\*, как вести\*\* себя в целом. Например, убедиться, что любой код, который Copilot пишет записи, соответствует вашим стандартам кода.
  [Узнайте больше](#custom-instructions).

* **Навыки**

  Они Copilot.\*\*\*\* Например, использовать определённый инструмент при работе над определённым типом задачи.
  [Узнайте больше](#skills).

* **Инструменты**

**Они дают способности**. Например, для поиска и изменения файлов или для взаимодействия с частями GitHub.
[Узнайте больше](#tools).

* **Серверы MCP**

  Они **добавляют наборы инструментов** , позволяющих Copilot взаимодействовать с внешними сервисами.
  [Узнайте больше](#mcp-servers).

* **Обработчики**

  Они позволяют **запускать собственную логику в определённые моменты жизненного цикла**. Например, вы можете запускать определённый скрипт каждый раз, когда сессия CLI начинается или заканчивается.
  [Узнайте больше](#hooks).

* **Субагенты**

  Это **делегированные агентские процессы**, связанные с основным агентом и используемые для выполнения конкретных задач отдельно от основного агента. У них есть собственное окно контекста, которое можно заполнять, не влияя на контекст основного агента.
  [Узнайте больше](#subagents).

* **Пользовательские агенты**

  Это **определения специализированных способностей**, предназначенных для выполнения конкретных задач. Основной агент CLI может делегировать задачу субагенту, используя пользовательский профиль агента, применяя специализированные знания и определённый подход к задаче. Например, пользовательский агент может выполнять роль рецензента React, автора документации, аудитора безопасности или генератора тестов.
  [Узнайте больше](#custom-agents).

* **Подключаемые модули**

  Это **пакеты** , которые могут предоставлять заранее настроенные настройки, такие как навыки, хуки, пользовательские агенты и MCP-серверы.
  [Узнайте больше](#plugins).

## Пользовательские инструкции

### Что такое индивидуальные инструкции?

**Пользовательские инструкции** — это постоянные инструкции, которые Copilot CLI загружаются из файлов инструкций в начале сессии.

Copilot найдёт и загрузит файлы инструкций из ряда стандартных точек репозитория, таких `AGENTS.md` как и `.github/copilot-instructions.md`, или из вашей домашней папки по `$HOME/.copilot/copilot-instructions.md`адресу .

Вы можете использовать флаг `--no-custom-instructions` , чтобы избежать загрузки этих инструкций.

### Какую проблему решают пользовательские инструкции?

Индивидуальные инструкции помогают вам:

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

### Когда следует использовать индивидуальные инструкции?

Используйте пользовательские инструкции для:

* Правила стиля и качества

  Пример: «Предпочитайте небольшие PR, пишите тесты и избегайте смены публичных API без обсуждения.»

* Конвенции репозиториев

  Пример: «Используйте `pnpm`, сохраняйте записи журнала изменений , `CHANGELOG.md`запускайте `pnpm test` перед коммингом.»

* Предпочтения в коммуникации

  Пример: «Кратко объясните компромиссы, затем предложите рекомендованный вариант.»

### Когда не стоит использовать индивидуальные инструкции?

Избегайте или минимизируйте их, когда:

* Вы хотите, чтобы поведение было только в одном рабочем процессе (используйте **навык** вместо этого).
* Ваши инструкции настолько масштабны и конкретны, что отвлекают Copilot от непосредственной задачи (предпочитайте **навык** или **кастомный агент**).

### Узнайте больше о индивидуальных инструкциях

См [. раздел AUTOTITLE](/ru/copilot/how-tos/copilot-cli/customize-copilot/add-custom-instructions).

## Навыки

### Что такое навык?

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

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

### Какую проблему решает навык?

Навыки помогают:

* Стандартизируйте выполнение Copilot задач в конкретном контексте (например, при выполнении проверки кода).
* Дайте инструкции «точно вовремя», не меняя Copilotповедение навсегда.
* Избегайте перегрузки Copilotконтекстного окна с инструкциями, не относящимися к текущей задаче.

### Как вы получаете доступ к навыкам?

Вы можете вручную вызвать навык, используя команду слэша. Например: `/Markdown-Checker check README.md`. Используйте `/skills list` список доступных навыков.

Copilot CLI Автоматически вызывает навыки, когда обнаруживает те, что связано с текущей задачей.

### Когда следует использовать навык?

Используйте навык, когда хотите:

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

  Пример: навык документации, который проверяет, что пользовательская документация обновляется при изменении фронтенд-кода.

* Единый формат выхода.

  Пример: навык «draft release note», который гарантирует Copilot использование шаблона для создания заметки для релиза.

* Рабочий процесс, который иногда нужен, но не всегда.

  Пример: навык «глубокого рефакторирования», который вы включаете только во время миграций.

### Когда не стоит использовать навык?

Избегайте навыков, когда:

* Рекомендации должны **применяться ко всему** , что вы делаете (используйте **кастомные инструкции** ).
* Нужны новые возможности (возможно, понадобится **MCP-сервер** для добавления инструментов или **кастомный агент** для специализации).

### Узнайте больше о навыках агента

См [. раздел AUTOTITLE](/ru/copilot/concepts/agents/about-agent-skills).

## Инструменты

### Что такое инструмент?

**Инструмент** — это способность, используемая Copilot для выполнения задач, например, поиска файлов, просмотра содержимого, редактирования, выполнения задачи или вызова навыка. Некоторые инструменты встроены, а другие можно добавлять через MCP-серверы.

### Какую проблему решают инструменты?

Инструменты позволяют CLI:

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

### Когда стоит использовать инструменты?

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

Вы увидите Copilot использование инструментов, когда:

* Попросите Copilot поискать что-то в репозитории, обновить файл или провести тесты.
* Вызовите навык — который запускает инструмент `skill` .
* Попросите Copilot выполнить задачу, требующую использования инструмента, предоставленного сервером MCP.
* Задача Copilot выполнить сложную задачу, и он решает делегировать её субагенту — что запускает инструмент `task` .

### Узнайте больше о разрешении или отказе в инструментах

См [. раздел AUTOTITLE](/ru/copilot/concepts/agents/copilot-cli/about-copilot-cli#allowed-tools).

## Серверы MCP

### Что такое MCP-сервер?

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

Добавление MCP-сервера Copilot CLI открывает дополнительные возможности, позволяя использовать инструменты, предоставленные этим MCP-сервером. Например, можно добавить MCP-сервер, предоставляющий инструменты для взаимодействия с онлайн-приложением календаря, или систему поддержки тикетов.

### Какую проблему решают MCP-серверы?

MCP-серверы помогают, когда встроенных инструментов недостаточно. Они могут выполнять следующие действия:

* Подключайтесь Copilot CLI к внешним системам.
* Добавьте специально разработанные инструменты (например, для работы с API, базами данных или генерации изображений).
* Стандартизировать паттерны безопасного доступа для ресурсов вне репозитория.

### Когда стоит использовать MCP-сервер?

Используйте MCP-сервер, когда вам нужно:

* Интеграция с внешними данными или системами.

  Пример: `How many support tickets have been opened this month for Product X?`

* Действия, связанные с конкретной областью, которые вы хотите, чтобы CLI выполнял от вашего имени.

  Пример: `Message the bug-watch channel: Only 2 support tickets raised this month for Product X.`

### Когда не стоит использовать MCP-сервер?

Избегайте добавления MCP-серверов, когда:

* Встроенные инструменты уже покрывают ваши потребности.

### Узнайте больше о серверах MCP

См [. раздел AUTOTITLE](/ru/copilot/concepts/context/mcp).

## Обработчики

### Что такое крючок?

**Хуки** позволяют указать, что в определённый момент жизненного цикла сессии Copilot CLI выполнит определённую вами команду shell.

| Обработчик                    | При запуске                                     |
| ----------------------------- | ----------------------------------------------- |
| `preToolUse` / `postToolUse`  | До/после запуска инструмента.                   |
| `userPromptSubmitted`         | Когда пользователь отправляет запрос.           |
| `sessionStart` / `sessionEnd` | В начале/конце сессии.                          |
| `errorOccurred`               | Когда происходит ошибка.                        |
| `agentStop`                   | Когда главный агент останавливается без ошибки. |
| `subagentStop`                | Когда субагент завершает работу.                |

### Какую проблему решают крючки?

Крючки помогают, когда вы хотите **программируемый контроль или наблюдаемость** поведения Copilot CLI , например:

* **Защитные ограждения** — блокируйте или предупреждайте до запуска определённых инструментов.
* **Добавление логов/телеметрии**
* **Настройка поведения повторной попытки/прекращения при восстанавливаемых ошибках**
* **Добавление проверок «политики**» — например, чтобы предотвратить правки защищённых путей.
* **Перехват в момент завершения субагента** — до того, как результаты вернутся к родительскому агенту.

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

### Когда стоит использовать крючки?

Используйте крючки, когда хотите:

* **Отбойники инструментов**

  * Пример: перед `bash` запусками требуется, чтобы конкретная команда совпадала с списком разрешений.
  * Пример: перед `edit` запусками блокируйте изменения в разделе `infra/` , если нет идентификатора тикета.

* **Автоматизация жизненного цикла сессии**

  * Пример: когда агент останавливается, архивируйте расшифровку сессии в место хранения.

* **Политика обработки ошибок**

  * Пример: при ошибках лимита скорости автоматически выберите «повторить» с ограниченным количеством повторных попыток.

* **Управление рабочим процессом субагентов**

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

### Когда не стоит использовать крючки?

Избегайте крючков, когда:

* Вам просто нужны последовательные подсказки или инструкции по рабочему процессу (используйте **навыки**).
* Вам нужны постоянные настройки и стандарты (используйте **пользовательские инструкции**).
* Нужны новые внешние возможности (используйте **MCP-серверы** и инструменты).
* Поддерживать конфигурацию, которая влияет на каждую сессию, может быть для вас проблемой.

### Узнайте больше о крючках

See:

* [Использование крючков с GitHub Copilot CLI](/ru/copilot/how-tos/copilot-cli/customize-copilot/use-hooks)
* [Ссылка на крючки GitHub Copilot](/ru/copilot/reference/hooks-reference)

## Субагенты

### Что такое субагент?

**Субагент** — это выполнение отдельного агента ИИ, которого основной агент Copilot CLI сессии запускает для выполнения конкретной работы.

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

### Какую проблему решают субагенты?

Помощь Copilotс субагентами:

* Сохраняйте фокус на окне контекста основного агента в сессии CLI, передав часть работы отдельному агенту.
* Параллелизируйте работу, где это необходимо, выполняя определённые задачи в фоне.
* Управляйте кастомным агентом отдельно от основного агента, выполняя специализированную работу с иным подходом к работе, выполняемой основным агентом.

### Когда используются субагенты?

Copilot скорее всего, будет использовать субагент для:

* Исследование кодовой базы

  Например, перечисление всех конечных точек в API.

* Выполнение команд для сложных задач

  Например, запуск тестового комплекса или создание крупного проекта с анализом результатов.

* Обзор изменений

  Например, анализ поэтапных изменений и выявление потенциальных проблем с безопасностью.

* Сложная многоступенчатая работа

  Например, реализация функции с несколькими изменениями.

* Для использования пользовательских агентов

  Если вы определили пользовательского агента и он подходит для вывода (`infer` не настроен на `false`), Copilot вы можете делегировать работу этому пользовательскому агенту, запустив субагента с его конфигурацией.

## Пользовательские агенты

### Что такое кастомный агент?

**Кастомные агенты** обладают Copilot специализированными знаниями по конкретной теме и определяют конкретный подход, который Copilot следует использовать при работе в этой области. Можно представить кастомного агента как «персону», которую Copilot можно использовать при выполнении определённых задач.

Copilot CLI имеет несколько встроенных кастомных агентов. Например, `explore`, `task`, `research``code-review``rubber-duck`и `general-purpose` агенты. Вы также можете назначить собственных индивидуальных агентов, чтобы соответствовать вашим конкретным потребностям.

Вы определяете пользовательский агент в файле Markdown с помощью YAML frontmatter. Файл содержит:

* Описание роли и компетенции агента
* Список разрешённых инструментов (или всех инструментов)
* Опциональные подключения к серверам MCP
* Опциональная `infer` настройка — при включённом режиме Copilot автоматически делегирует задачу этому агенту, когда тот обнаруживает задачу, соответствующую специализации агента.

### Какую проблему решают кастомные агенты?

Кастомные агенты помогают, когда вам нужно:

* Специализированные знания, которые должны применяться последовательно в определённом контексте.
* Разные права на инструменты для разных работ, как определено в конфигурации пользовательского агента.
* Чтобы окно контекста основного агента оставалось сосредоточенным на основной задаче, а собственное окно контекста пользовательского агента использовалось для выполнения специализированной работы.

### Когда стоит использовать кастомного агента?

Используйте пользовательского агента, когда хотите:

* Специализированный рецензент или помощник

  Пример: создайте кастомный агент «react-reviewer», который сосредоточен на работе, связанной с паттернами React.

* Более безопасные разрешения

  Пример: пользовательский агент, который может работать только `view/grep/glob` (только для чтения) для аудита.

* Опциональное автоделегирование

  Пример: настройте `infer: true` в конфигурации пользовательского агента так, чтобы Copilot он мог автоматически использовать этот пользовательский агент, когда это уместно.

### Когда не стоит использовать пользовательского агента?

Избегайте таможенных агентов, когда:

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

### Узнайте больше о кастомных агентах

См [. раздел AUTOTITLE](/ru/copilot/reference/custom-agents-configuration).

## Подключаемые модули

### Что такое подключаемый модуль?

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

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

### Какую проблему решают плагины?

Плагины помогают:

* Легко добавить набор функций Copilot без необходимости вручную настраивать каждую деталь.
* Упаковывайте и распространяйте пользовательскую конфигурацию — возможно, сочетание навыков, кастомных агентов, хуков и MCP-серверов — своей команде или широкой публике.
* Изменяйте доступные функции без необходимости вручную копировать файлы в каталоги.

### Когда стоит использовать плагин?

Используйте плагин, когда:

* Вам нужен набор на всю команду

  Пример: Инженерный плагин для всей компании, включающий:

  * Навыки реагирования на инциденты.
  * Пользовательский агент для проверки кода.
  * MCP-сервер для внутренних сервисов.

* Вам нужна лёгкая установка и обновления

  Пример: сначала установите плагин, а затем регулярно обновляйте его с `/plugin update PLUGIN-NAME`помощью .

### Когда не стоит использовать плагин?

Избегайте плагинов, когда:

* Вы экспериментируете локально и не нуждаетесь в дистрибуции (используйте локальные навыки, индивидуальные инструкции или кастомных агентов).
* Вам нужен небольшой разовый рабочий процесс. Один файл навыков может быть проще.

## Собрать всё воедино: выбрать правильный вариант

| Требование                                                                                                            | Лучший вариант |
| --------------------------------------------------------------------------------------------------------------------- | -------------- |
| Я всегда хочу Copilot следовать нашим репозиториевым конвенциям.                                                      |                |
| **Пользовательские инструкции**                                                                                       |                |
| Мне нужен повторяемый рабочий процесс, который можно запускать по требованию.                                         |                |
| **Навыки**                                                                                                            |                |
| Я хочу Copilot отвечать на вопросы и выполнять работу в своём репозитории.                                            |                |
| Copilot запрашивает разрешение на использование соответствующих **инструментов**                                      |                |
| Мне нужны ограничения, политика или автоматизация использования инструментов и событий сессий.                        |                |
| **Обработчики**                                                                                                       |                |
| Мне нужно Copilot уметь использовать инструменты, предоставленные внешним сервисом.                                   |                |
| **Серверы MCP**                                                                                                       |                |
| Когда я работаю над конкретными задачами, я хочу Copilot работать как специалист с ограниченным набором инструментов. |                |
| **Таможенный агент**                                                                                                  |                |
| Я хочу Copilot выполнить сложную задачу от своего имени.                                                              |                |
| Copilot Автоматически использует **субагентов** , когда это уместно.                                                  |                |
| Я хочу добавить пакет функционала Copilot CLI , не настраивая его вручную.                                            |                |
| **Подключаемый модуль**                                                                                               |                |

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

* [GitHub Copilot CLI](/ru/copilot/how-tos/copilot-cli)