{"meta":{"title":"Сравнение особенностей кастомизации CLI на GitHub Copilot","intro":"Узнайте о различных способах настройки Copilot: что они делают и когда их использовать.","product":"GitHub Copilot","breadcrumbs":[{"href":"/ru/copilot","title":"GitHub Copilot"},{"href":"/ru/copilot/concepts","title":"Основные понятия"},{"href":"/ru/copilot/concepts/agents","title":"Агенты"},{"href":"/ru/copilot/concepts/agents/copilot-cli","title":"Copilot CLI"},{"href":"/ru/copilot/concepts/agents/copilot-cli/comparing-cli-features","title":"Сравнение особенностей CLI"}],"documentType":"article"},"body":"# Сравнение особенностей кастомизации CLI на GitHub Copilot\n\nУзнайте о различных способах настройки Copilot: что они делают и когда их использовать.\n\n## Введение\n\nCopilot CLI — это агент ИИ на базе терминалов, который может отвечать на вопросы, планировать работу и выполнять задачи от вашего имени. Он разработан так, чтобы быть высоко расширяемым, и существует множество способов настраивать его поведение и расширять возможности.\n\nВ этой статье объясняется разница между:\n\n* **Пользовательские инструкции**\n\n  Они объясняют Copilot\\*\\*, как вести\\*\\* себя в целом. Например, убедиться, что любой код, который Copilot пишет записи, соответствует вашим стандартам кода.\n  [Узнайте больше](#custom-instructions).\n\n* **Навыки**\n\n  Они Copilot.\\*\\*\\*\\* Например, использовать определённый инструмент при работе над определённым типом задачи.\n  [Узнайте больше](#skills).\n\n* **Инструменты**\n\n**Они дают способности**. Например, для поиска и изменения файлов или для взаимодействия с частями GitHub.\n[Узнайте больше](#tools).\n\n* **Серверы MCP**\n\n  Они **добавляют наборы инструментов** , позволяющих Copilot взаимодействовать с внешними сервисами.\n  [Узнайте больше](#mcp-servers).\n\n* **Обработчики**\n\n  Они позволяют **запускать собственную логику в определённые моменты жизненного цикла**. Например, вы можете запускать определённый скрипт каждый раз, когда сессия CLI начинается или заканчивается.\n  [Узнайте больше](#hooks).\n\n* **Субагенты**\n\n  Это **делегированные агентские процессы**, связанные с основным агентом и используемые для выполнения конкретных задач отдельно от основного агента. У них есть собственное окно контекста, которое можно заполнять, не влияя на контекст основного агента.\n  [Узнайте больше](#subagents).\n\n* **Пользовательские агенты**\n\n  Это **определения специализированных способностей**, предназначенных для выполнения конкретных задач. Основной агент CLI может делегировать задачу субагенту, используя пользовательский профиль агента, применяя специализированные знания и определённый подход к задаче. Например, пользовательский агент может выполнять роль рецензента React, автора документации, аудитора безопасности или генератора тестов.\n  [Узнайте больше](#custom-agents).\n\n* **Подключаемые модули**\n\n  Это **пакеты** , которые могут предоставлять заранее настроенные настройки, такие как навыки, хуки, пользовательские агенты и MCP-серверы.\n  [Узнайте больше](#plugins).\n\n## Пользовательские инструкции\n\n### Что такое индивидуальные инструкции?\n\n**Пользовательские инструкции** — это постоянные инструкции, которые Copilot CLI загружаются из файлов инструкций в начале сессии.\n\nCopilot найдёт и загрузит файлы инструкций из ряда стандартных точек репозитория, таких `AGENTS.md` как и `.github/copilot-instructions.md`, или из вашей домашней папки по `$HOME/.copilot/copilot-instructions.md`адресу .\n\nВы можете использовать флаг `--no-custom-instructions` , чтобы избежать загрузки этих инструкций.\n\n### Какую проблему решают пользовательские инструкции?\n\nИндивидуальные инструкции помогают вам:\n\n* Следуйте Copilot своим нормам и предпочтениям в программировании.\n* Применяйте стандарты команды или организации последовательно.\n* Избегайте повторяющихся напоминаний Copilot в каждом задании.\n\n### Когда следует использовать индивидуальные инструкции?\n\nИспользуйте пользовательские инструкции для:\n\n* Правила стиля и качества\n\n  Пример: «Предпочитайте небольшие PR, пишите тесты и избегайте смены публичных API без обсуждения.»\n\n* Конвенции репозиториев\n\n  Пример: «Используйте `pnpm`, сохраняйте записи журнала изменений , `CHANGELOG.md`запускайте `pnpm test` перед коммингом.»\n\n* Предпочтения в коммуникации\n\n  Пример: «Кратко объясните компромиссы, затем предложите рекомендованный вариант.»\n\n### Когда не стоит использовать индивидуальные инструкции?\n\nИзбегайте или минимизируйте их, когда:\n\n* Вы хотите, чтобы поведение было только в одном рабочем процессе (используйте **навык** вместо этого).\n* Ваши инструкции настолько масштабны и конкретны, что отвлекают Copilot от непосредственной задачи (предпочитайте **навык** или **кастомный агент**).\n\n### Узнайте больше о индивидуальных инструкциях\n\nСм [. раздел AUTOTITLE](/ru/copilot/how-tos/copilot-cli/customize-copilot/add-custom-instructions).\n\n## Навыки\n\n### Что такое навык?\n\n**Навык** — это, по крайней мере, файл Markdown, содержащий инструкции, которые Copilot можно использовать для выполнения задач в определённом контексте. Название и описание навыка позволяют Copilot определить, стоит ли использовать навык для конкретной задачи. Если он решит использовать навык, он загрузит инструкции и выполнит их, чтобы выполнить задачу.\n\nНавыки могут по желанию ссылаться на другие файлы, хранящиеся в каталоге навыков. К ним могут относиться скрипты, Copilot которые могут запускаться при использовании навыка.\n\n### Какую проблему решает навык?\n\nНавыки помогают:\n\n* Стандартизируйте выполнение Copilot задач в конкретном контексте (например, при выполнении проверки кода).\n* Дайте инструкции «точно вовремя», не меняя Copilotповедение навсегда.\n* Избегайте перегрузки Copilotконтекстного окна с инструкциями, не относящимися к текущей задаче.\n\n### Как вы получаете доступ к навыкам?\n\nВы можете вручную вызвать навык, используя команду слэша. Например: `/Markdown-Checker check README.md`. Используйте `/skills list` список доступных навыков.\n\nCopilot CLI Автоматически вызывает навыки, когда обнаруживает те, что связано с текущей задачей.\n\n### Когда следует использовать навык?\n\nИспользуйте навык, когда хотите:\n\n* Повторяемый набор инструкций или функциональных функций, доступных для определённого типа задачи.\n\n  Пример: навык документации, который проверяет, что пользовательская документация обновляется при изменении фронтенд-кода.\n\n* Единый формат выхода.\n\n  Пример: навык «draft release note», который гарантирует Copilot использование шаблона для создания заметки для релиза.\n\n* Рабочий процесс, который иногда нужен, но не всегда.\n\n  Пример: навык «глубокого рефакторирования», который вы включаете только во время миграций.\n\n### Когда не стоит использовать навык?\n\nИзбегайте навыков, когда:\n\n* Рекомендации должны **применяться ко всему** , что вы делаете (используйте **кастомные инструкции** ).\n* Нужны новые возможности (возможно, понадобится **MCP-сервер** для добавления инструментов или **кастомный агент** для специализации).\n\n### Узнайте больше о навыках агента\n\nСм [. раздел AUTOTITLE](/ru/copilot/concepts/agents/about-agent-skills).\n\n## Инструменты\n\n### Что такое инструмент?\n\n**Инструмент** — это способность, используемая Copilot для выполнения задач, например, поиска файлов, просмотра содержимого, редактирования, выполнения задачи или вызова навыка. Некоторые инструменты встроены, а другие можно добавлять через MCP-серверы.\n\n### Какую проблему решают инструменты?\n\nИнструменты позволяют CLI:\n\n* Собирайте точный контекст (с помощью инструментов чтения/поиска).\n* Вносите изменения безопасно (с помощью инструментов редактирования).\n* Выполнять команды и проверять результаты (возможно, с помощью субагентов).\n\n### Когда стоит использовать инструменты?\n\nОбычно вы не вызываете инструменты напрямую —Copilot сами решаете использовать инструменты по мере необходимости. Вы можете разрешить или отказать в использовании инструментов — как для конкретной задачи, так и для текущей сессии, либо для всех ваших Copilot CLI сессий.\n\nВы увидите Copilot использование инструментов, когда:\n\n* Попросите Copilot поискать что-то в репозитории, обновить файл или провести тесты.\n* Вызовите навык — который запускает инструмент `skill` .\n* Попросите Copilot выполнить задачу, требующую использования инструмента, предоставленного сервером MCP.\n* Задача Copilot выполнить сложную задачу, и он решает делегировать её субагенту — что запускает инструмент `task` .\n\n### Узнайте больше о разрешении или отказе в инструментах\n\nСм [. раздел AUTOTITLE](/ru/copilot/concepts/agents/copilot-cli/about-copilot-cli#allowed-tools).\n\n## Серверы MCP\n\n### Что такое MCP-сервер?\n\n**MCP-сервер** — это сервис, который позволяет приложениям ИИ, таким Copilot CLIкак , подключаться к внешним источникам данных и инструментам.\n\nДобавление MCP-сервера Copilot CLI открывает дополнительные возможности, позволяя использовать инструменты, предоставленные этим MCP-сервером. Например, можно добавить MCP-сервер, предоставляющий инструменты для взаимодействия с онлайн-приложением календаря, или систему поддержки тикетов.\n\n### Какую проблему решают MCP-серверы?\n\nMCP-серверы помогают, когда встроенных инструментов недостаточно. Они могут выполнять следующие действия:\n\n* Подключайтесь Copilot CLI к внешним системам.\n* Добавьте специально разработанные инструменты (например, для работы с API, базами данных или генерации изображений).\n* Стандартизировать паттерны безопасного доступа для ресурсов вне репозитория.\n\n### Когда стоит использовать MCP-сервер?\n\nИспользуйте MCP-сервер, когда вам нужно:\n\n* Интеграция с внешними данными или системами.\n\n  Пример: `How many support tickets have been opened this month for Product X?`\n\n* Действия, связанные с конкретной областью, которые вы хотите, чтобы CLI выполнял от вашего имени.\n\n  Пример: `Message the bug-watch channel: Only 2 support tickets raised this month for Product X.`\n\n### Когда не стоит использовать MCP-сервер?\n\nИзбегайте добавления MCP-серверов, когда:\n\n* Встроенные инструменты уже покрывают ваши потребности.\n\n### Узнайте больше о серверах MCP\n\nСм [. раздел AUTOTITLE](/ru/copilot/concepts/context/mcp).\n\n## Обработчики\n\n### Что такое крючок?\n\n**Хуки** позволяют указать, что в определённый момент жизненного цикла сессии Copilot CLI выполнит определённую вами команду shell.\n\n| Обработчик                    | При запуске                                     |\n| ----------------------------- | ----------------------------------------------- |\n| `preToolUse` / `postToolUse`  | До/после запуска инструмента.                   |\n| `userPromptSubmitted`         | Когда пользователь отправляет запрос.           |\n| `sessionStart` / `sessionEnd` | В начале/конце сессии.                          |\n| `errorOccurred`               | Когда происходит ошибка.                        |\n| `agentStop`                   | Когда главный агент останавливается без ошибки. |\n| `subagentStop`                | Когда субагент завершает работу.                |\n\n### Какую проблему решают крючки?\n\nКрючки помогают, когда вы хотите **программируемый контроль или наблюдаемость** поведения Copilot CLI , например:\n\n* **Защитные ограждения** — блокируйте или предупреждайте до запуска определённых инструментов.\n* **Добавление логов/телеметрии**\n* **Настройка поведения повторной попытки/прекращения при восстанавливаемых ошибках**\n* **Добавление проверок «политики**» — например, чтобы предотвратить правки защищённых путей.\n* **Перехват в момент завершения субагента** — до того, как результаты вернутся к родительскому агенту.\n\nКрючки полезны, когда нужно больше контроля, чем могут дать навыки или индивидуальные инструкции. Хотя навыки и инструкции направляют Copilotповедение человека через подсказки, крючки гарантируют, что определённые вами операции будут выполняться в определённые моменты — например, блокировать работу инструмента или фиксировать активность после окончания сессии.\n\n### Когда стоит использовать крючки?\n\nИспользуйте крючки, когда хотите:\n\n* **Отбойники инструментов**\n\n  * Пример: перед `bash` запусками требуется, чтобы конкретная команда совпадала с списком разрешений.\n  * Пример: перед `edit` запусками блокируйте изменения в разделе `infra/` , если нет идентификатора тикета.\n\n* **Автоматизация жизненного цикла сессии**\n\n  * Пример: когда агент останавливается, архивируйте расшифровку сессии в место хранения.\n\n* **Политика обработки ошибок**\n\n  * Пример: при ошибках лимита скорости автоматически выберите «повторить» с ограниченным количеством повторных попыток.\n\n* **Управление рабочим процессом субагентов**\n\n  * Пример: когда субагент заканчивает, проверяйте его выход перед передачей результатов обратно основному агенту.\n\n### Когда не стоит использовать крючки?\n\nИзбегайте крючков, когда:\n\n* Вам просто нужны последовательные подсказки или инструкции по рабочему процессу (используйте **навыки**).\n* Вам нужны постоянные настройки и стандарты (используйте **пользовательские инструкции**).\n* Нужны новые внешние возможности (используйте **MCP-серверы** и инструменты).\n* Поддерживать конфигурацию, которая влияет на каждую сессию, может быть для вас проблемой.\n\n### Узнайте больше о крючках\n\nSee:\n\n* [Использование крючков с GitHub Copilot CLI](/ru/copilot/how-tos/copilot-cli/customize-copilot/use-hooks)\n* [Ссылка на крючки GitHub Copilot](/ru/copilot/reference/hooks-reference)\n\n## Субагенты\n\n### Что такое субагент?\n\n**Субагент** — это выполнение отдельного агента ИИ, которого основной агент Copilot CLI сессии запускает для выполнения конкретной работы.\n\nCopilot CLI использует субагента, когда главный агент решает, что делегирование части работы отдельному агенту — лучший способ выполнить запрос пользователя.\n\n### Какую проблему решают субагенты?\n\nПомощь Copilotс субагентами:\n\n* Сохраняйте фокус на окне контекста основного агента в сессии CLI, передав часть работы отдельному агенту.\n* Параллелизируйте работу, где это необходимо, выполняя определённые задачи в фоне.\n* Управляйте кастомным агентом отдельно от основного агента, выполняя специализированную работу с иным подходом к работе, выполняемой основным агентом.\n\n### Когда используются субагенты?\n\nCopilot скорее всего, будет использовать субагент для:\n\n* Исследование кодовой базы\n\n  Например, перечисление всех конечных точек в API.\n\n* Выполнение команд для сложных задач\n\n  Например, запуск тестового комплекса или создание крупного проекта с анализом результатов.\n\n* Обзор изменений\n\n  Например, анализ поэтапных изменений и выявление потенциальных проблем с безопасностью.\n\n* Сложная многоступенчатая работа\n\n  Например, реализация функции с несколькими изменениями.\n\n* Для использования пользовательских агентов\n\n  Если вы определили пользовательского агента и он подходит для вывода (`infer` не настроен на `false`), Copilot вы можете делегировать работу этому пользовательскому агенту, запустив субагента с его конфигурацией.\n\n## Пользовательские агенты\n\n### Что такое кастомный агент?\n\n**Кастомные агенты** обладают Copilot специализированными знаниями по конкретной теме и определяют конкретный подход, который Copilot следует использовать при работе в этой области. Можно представить кастомного агента как «персону», которую Copilot можно использовать при выполнении определённых задач.\n\nCopilot CLI имеет несколько встроенных кастомных агентов. Например, `explore`, `task`, `research``code-review``rubber-duck`и `general-purpose` агенты. Вы также можете назначить собственных индивидуальных агентов, чтобы соответствовать вашим конкретным потребностям.\n\nВы определяете пользовательский агент в файле Markdown с помощью YAML frontmatter. Файл содержит:\n\n* Описание роли и компетенции агента\n* Список разрешённых инструментов (или всех инструментов)\n* Опциональные подключения к серверам MCP\n* Опциональная `infer` настройка — при включённом режиме Copilot автоматически делегирует задачу этому агенту, когда тот обнаруживает задачу, соответствующую специализации агента.\n\n### Какую проблему решают кастомные агенты?\n\nКастомные агенты помогают, когда вам нужно:\n\n* Специализированные знания, которые должны применяться последовательно в определённом контексте.\n* Разные права на инструменты для разных работ, как определено в конфигурации пользовательского агента.\n* Чтобы окно контекста основного агента оставалось сосредоточенным на основной задаче, а собственное окно контекста пользовательского агента использовалось для выполнения специализированной работы.\n\n### Когда стоит использовать кастомного агента?\n\nИспользуйте пользовательского агента, когда хотите:\n\n* Специализированный рецензент или помощник\n\n  Пример: создайте кастомный агент «react-reviewer», который сосредоточен на работе, связанной с паттернами React.\n\n* Более безопасные разрешения\n\n  Пример: пользовательский агент, который может работать только `view/grep/glob` (только для чтения) для аудита.\n\n* Опциональное автоделегирование\n\n  Пример: настройте `infer: true` в конфигурации пользовательского агента так, чтобы Copilot он мог автоматически использовать этот пользовательский агент, когда это уместно.\n\n### Когда не стоит использовать пользовательского агента?\n\nИзбегайте таможенных агентов, когда:\n\n* Вам нужен только учебник с руководством ( **навык** может быть более лёгким решением).\n* Специализация не нужна, а стандартный агент хорошо выполняет задачи.\n\n### Узнайте больше о кастомных агентах\n\nСм [. раздел AUTOTITLE](/ru/copilot/reference/custom-agents-configuration).\n\n## Подключаемые модули\n\n### Что такое подключаемый модуль?\n\n**Плагин** — это устанавливаемый пакет, который может предоставлять набор функций для Copilot. Плагин может включать любую комбинацию других функций настройки. Например, навыки, пользовательские агенты, хуки и конфигурации MCP-серверов.\n\nCopilot включает команды управления плагинами (установка, обновление, список, удаление) и поддерживает установку с маркетплейса или напрямую из репозитория GitHub.\n\n### Какую проблему решают плагины?\n\nПлагины помогают:\n\n* Легко добавить набор функций Copilot без необходимости вручную настраивать каждую деталь.\n* Упаковывайте и распространяйте пользовательскую конфигурацию — возможно, сочетание навыков, кастомных агентов, хуков и MCP-серверов — своей команде или широкой публике.\n* Изменяйте доступные функции без необходимости вручную копировать файлы в каталоги.\n\n### Когда стоит использовать плагин?\n\nИспользуйте плагин, когда:\n\n* Вам нужен набор на всю команду\n\n  Пример: Инженерный плагин для всей компании, включающий:\n\n  * Навыки реагирования на инциденты.\n  * Пользовательский агент для проверки кода.\n  * MCP-сервер для внутренних сервисов.\n\n* Вам нужна лёгкая установка и обновления\n\n  Пример: сначала установите плагин, а затем регулярно обновляйте его с `/plugin update PLUGIN-NAME`помощью .\n\n### Когда не стоит использовать плагин?\n\nИзбегайте плагинов, когда:\n\n* Вы экспериментируете локально и не нуждаетесь в дистрибуции (используйте локальные навыки, индивидуальные инструкции или кастомных агентов).\n* Вам нужен небольшой разовый рабочий процесс. Один файл навыков может быть проще.\n\n## Собрать всё воедино: выбрать правильный вариант\n\n| Требование                                                                                                            | Лучший вариант |\n| --------------------------------------------------------------------------------------------------------------------- | -------------- |\n| Я всегда хочу Copilot следовать нашим репозиториевым конвенциям.                                                      |                |\n| **Пользовательские инструкции**                                                                                       |                |\n| Мне нужен повторяемый рабочий процесс, который можно запускать по требованию.                                         |                |\n| **Навыки**                                                                                                            |                |\n| Я хочу Copilot отвечать на вопросы и выполнять работу в своём репозитории.                                            |                |\n| Copilot запрашивает разрешение на использование соответствующих **инструментов**                                      |                |\n| Мне нужны ограничения, политика или автоматизация использования инструментов и событий сессий.                        |                |\n| **Обработчики**                                                                                                       |                |\n| Мне нужно Copilot уметь использовать инструменты, предоставленные внешним сервисом.                                   |                |\n| **Серверы MCP**                                                                                                       |                |\n| Когда я работаю над конкретными задачами, я хочу Copilot работать как специалист с ограниченным набором инструментов. |                |\n| **Таможенный агент**                                                                                                  |                |\n| Я хочу Copilot выполнить сложную задачу от своего имени.                                                              |                |\n| Copilot Автоматически использует **субагентов** , когда это уместно.                                                  |                |\n| Я хочу добавить пакет функционала Copilot CLI , не настраивая его вручную.                                            |                |\n| **Подключаемый модуль**                                                                                               |                |\n\n## Дополнительные материалы\n\n* [GitHub Copilot CLI](/ru/copilot/how-tos/copilot-cli)"}