# Программный запуск GitHub Copilot CLI

Используйте Copilot CLI в терминале, скриптах или в рабочих процессах Actions.

## Введение

Вы можете передать запрос напрямую Copilot CLI в одной команде, не входя в интерактивную сессию. Это позволяет использовать Copilot CLI напрямую с терминала, а также позволяет использовать CLI программно в скриптах, CI/CD конвейерах и рабочих процессах автоматизации.

Чтобы использовать Copilot CLI программно, можно сделать одно из следующих способов.

* Используйте `copilot` команду с `-p` опцией «или `--prompt` » в командной строке, а затем введите свой запрос:

  ```shell copy
  copilot -p "Explain this file: ./complex.ts"
  ```

* Отправьте подсказку в команду `copilot` :

  ```shell copy
  echo "Explain this file: ./complex.ts" | copilot
  ```

  > \[!NOTE]
  > Трубопроводный ввод игнорируется, если вы также вводите подсказку с `-p` опцией или `--prompt` .

## Советы по программному использованию Copilot CLI

* **Предоставляйте точные подсказки** — чёткие, однозначные инструкции дают лучшие результаты, чем расплывчатые запросы. Чем больше контекста вы даёте — имена файлов, имя функций, точное изменение — тем меньше придётся догадаться Copilot .
* **Цитируйте подсказки аккуратно** — используйте отдельные кавычки вокруг запроса, если хотите избежать оболочной интерпретации особых символов.
* **Всегда предоставляйте минимальные права** — используйте `--allow-tool=[TOOLS...]` опции командной строки и `--allow-url=[URLs...]` предоставляйте Copilot разрешение использовать только инструменты и доступ, необходимые для выполнения задачи. Избегайте использования чрезмерно разрешительных вариантов (например `--allow-all`), если только вы не работаете в песочнице. Дополнительные сведения см. в разделе [Сведения об облачных и локальных песочницах для GitHub Copilot](/ru/copilot/concepts/about-cloud-and-local-sandboxes).
* **Используйте `-s` (беззвучный)** при захвате выхода. Это подавляет метаданные сессии, поэтому вы получаете чистый текст.
* **Использование `--no-ask-user`** чтобы агент не пытался задать уточняющие вопросы.
* **Установите модель для**`--model` согласованного поведения в разных средах.

См. [GitHub Copilot CLI программный справочник](/ru/copilot/reference/copilot-cli-reference/cli-programmatic-reference) для опций, которые особенно полезны при программном запуске Copilot CLI .

## Интеграция CI/CD

Распространённым случаем для программного запуска Copilot CLI является включение команды CLI в шаг рабочего процесса CI/CD.

Этот отрывок из рабочего GitHub Actions процесса показывает простой пример выполнения Copilot CLI команды.

```yaml
# Workflow step using Copilot CLI
- name: Generate test coverage report
  env:
    COPILOT_GITHUB_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
  run: |
    copilot -p "Run the test suite and produce a coverage summary" \
      -s --allow-tool='shell(npm:*), write' --no-ask-user
```

Дополнительные сведения см. в разделе [Автоматизация задач с помощью Copilot CLI и GitHub Actions](/ru/copilot/how-tos/copilot-cli/automate-copilot-cli/automate-with-actions).

## Примеры программного использования

### Сгенерировать сообщение для коммита

```bash copy
copilot -p 'Write a commit message in plain text for the staged changes' -s \
  --allow-tool='shell(git:*)'
```

### Краткое описание файла

```bash copy
copilot -p 'Summarize what src/auth/login.ts does in no more than 100 words' -s
```

### Пишите тесты для модуля

```bash copy
copilot -p 'Write unit tests for src/utils/validators.ts' \
  --allow-tool='write, shell(npm:*), shell(npx:*)'
```

### Исправление ошибок lint

```bash copy
copilot -p 'Fix all ESLint errors in this project' \
  --allow-tool='write, shell(npm:*), shell(npx:*), shell(git:*)'
```

### Объясните разницу

```bash copy
copilot -p 'Explain the changes in the latest commit on this branch and flag any potential issues' -s
```

### Обзор кода ветви

Используйте `/review` команду slash, чтобы встроенный `code-review` агент просматривал изменения кода на текущей ветке.

```bash copy
copilot -p '/review the changes on this branch compared to main. Focus on bugs and security issues.' \
  -s --allow-tool='shell(git:*)'
```

### Создание документации

```bash copy
copilot -p 'Generate JSDoc comments for all exported functions in src/api/' \
  --allow-tool=write
```

### Экспорт сессии

Сохраните полный транскрипт сессии в файле Markdown в локальной файловой системе.

```bash copy
copilot -p "Audit this project's dependencies for vulnerabilities" \
  --allow-tool='shell(npm:*), shell(npx:*)' \
  --share='./audit-report.md'
```

Сохраните расшифровку сессии в GitHub.com общем виде для удобства обмена.

```bash copy
copilot -p 'Summarize the architecture of this project' --share-gist
```

> \[!NOTE]
> Общие характеристики недоступны для Enterprise Managed Users, или если вы используете GitHub Enterprise Cloud с data residecy (\*.ghe.com).

## Шаблоны скриптов оболочки

### Захват Copilotвыхода в переменной

```bash copy
result=$(copilot -p 'What version of Node.js does this project require? \
  Give the number only. No other text.' -s)
echo "Required Node version: $result"
```

### Использование в условной форме

```bash copy
if copilot -p 'Does this project have any TypeScript errors? Reply only YES or NO.' -s \
  | grep -qi "no"; then
  echo "No type errors found."
else
  echo "Type errors detected."
fi
```

### Обработка нескольких файлов

```bash copy
for file in src/api/*.ts; do
  echo "--- Reviewing $file ---" | tee -a review-results.md
  copilot -p "Review $file for error handling issues" -s --allow-all-tools | tee -a review-results.md
done
```

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

* [GitHub Copilot CLI](/ru/copilot/how-tos/copilot-cli)
* [GitHub Copilot CLI программный справочник](/ru/copilot/reference/copilot-cli-reference/cli-programmatic-reference)
* [Справочник команды GitHub Copilot CLI](/ru/copilot/reference/copilot-cli-reference/cli-command-reference#command-line-options)