Introdução
Você pode passar um prompt diretamente para CLI do Copilot em um único comando, sem entrar em uma sessão interativa. Isso permite que você use Copilot diretamente do terminal, mas também permite que você use a CLI programaticamente em scripts, pipelines de CI/CD e fluxos de trabalho de automação.
Para usar CLI do Copilot programaticamente, você pode fazer uma das seguintes opções:
-
Use o comando
copilotcom a opção de linha de comando-pou--prompt, seguido pelo seu prompt:Shell copilot -p "Explain this file: ./complex.ts"
copilot -p "Explain this file: ./complex.ts" -
Enviar um prompt para o comando
copilot:Shell echo "Explain this file: ./complex.ts" | copilot
echo "Explain this file: ./complex.ts" | copilotObservação
A entrada enviada por pipe é ignorada se você também fornecer um prompt com a opção
-pou--prompt.
Dicas para usar CLI do Copilot programaticamente
-
**Forneça prompts precisos** – instruções claras e inequívocas produzem melhores resultados do que solicitações vagas. Quanto mais contexto você fornecer — nomes de arquivos, nomes de funções, a alteração exata — menos adivinhações Copilot terá que fazer. -
**Cite os prompts com cuidado** — use aspas simples em torno do seu prompt se quiser evitar a interpretação de caracteres especiais pelo shell. -
**Sempre conceda permissões mínimas** — use as opções de linha de comando `--allow-tool=[TOOLS...]` e `--allow-url=[URLs...]` para conceder a Copilot permissão para usar apenas as ferramentas e o acesso necessários para concluir a tarefa. Evite usar opções excessivamente permissivas (como `--allow-all`) a menos que você esteja trabalhando em um ambiente de área restrita. -
**Use `-s` (silencioso)** ao capturar a saída. Isso suprime os metadados de sessão para que você obtenha texto limpo. -
**Usar `--no-ask-user`** para impedir que o agente tente fazer perguntas esclarecedoras. - Defina um modelo explicitamente com
--modelpara um comportamento consistente entre ambientes.
Consulte Referência programática da CLI do GitHub Copilot para obter opções que são particularmente úteis ao executar CLI do Copilot de forma programática.
Integração de CI/CD
Um caso de uso comum para executar CLI do Copilot programaticamente é incluir um comando CLI em uma etapa do fluxo de trabalho de CI/CD.
Este trecho de um fluxo de trabalho do GitHub Actions mostra um exemplo simples de execução de um comando do CLI do Copilot.
# 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
Para obter mais informações, consulte Automatizando tarefas com a CLI do Copilot e o GitHub Actions.
Exemplos de uso programático
Gerar uma mensagem de confirmação
copilot -p 'Write a commit message in plain text for the staged changes' -s \ --allow-tool='shell(git:*)'
copilot -p 'Write a commit message in plain text for the staged changes' -s \
--allow-tool='shell(git:*)'
Resumir um arquivo
copilot -p 'Summarize what src/auth/login.ts does in no more than 100 words' -s
copilot -p 'Summarize what src/auth/login.ts does in no more than 100 words' -s
Gravar testes para um módulo
copilot -p 'Write unit tests for src/utils/validators.ts' \ --allow-tool='write, shell(npm:*), shell(npx:*)'
copilot -p 'Write unit tests for src/utils/validators.ts' \
--allow-tool='write, shell(npm:*), shell(npx:*)'
Corrigir erros de lint
copilot -p 'Fix all ESLint errors in this project' \ --allow-tool='write, shell(npm:*), shell(npx:*), shell(git:*)'
copilot -p 'Fix all ESLint errors in this project' \
--allow-tool='write, shell(npm:*), shell(npx:*), shell(git:*)'
Explicar uma diferença
copilot -p 'Explain the changes in the latest commit on this branch and flag any potential issues' -s
copilot -p 'Explain the changes in the latest commit on this branch and flag any potential issues' -s
Revisão de código de um branch
Use o comando de barra /review para que o agente integrado code-review revise as alterações de código na ramificação atual.
copilot -p '/review the changes on this branch compared to main. Focus on bugs and security issues.' \ -s --allow-tool='shell(git:*)'
copilot -p '/review the changes on this branch compared to main. Focus on bugs and security issues.' \
-s --allow-tool='shell(git:*)'
Gerar documentação
copilot -p 'Generate JSDoc comments for all exported functions in src/api/' \ --allow-tool=write
copilot -p 'Generate JSDoc comments for all exported functions in src/api/' \
--allow-tool=write
Exportar uma sessão
Salve a transcrição completa da sessão em um arquivo Markdown no sistema de arquivos local.
copilot -p "Audit this project's dependencies for vulnerabilities" \ --allow-tool='shell(npm:*), shell(npx:*)' \ --share='./audit-report.md'
copilot -p "Audit this project's dependencies for vulnerabilities" \
--allow-tool='shell(npm:*), shell(npx:*)' \
--share='./audit-report.md'
Salve a transcrição da sessão em um gist no GitHub.com para facilitar o compartilhamento.
copilot -p 'Summarize the architecture of this project' --share-gist
copilot -p 'Summarize the architecture of this project' --share-gist
Observação
Gists não estão disponíveis para Enterprise Managed Users ou se você usar o GitHub Enterprise Cloud com residência de dados (*.ghe.com).
Padrões de programação de scripts de shell
Capture a saída do Copilot em uma variável.
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"
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"
Use em uma condicional.
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
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
Processar vários arquivos
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
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
Leitura adicional
-
[AUTOTITLE](/copilot/how-tos/copilot-cli) -
[AUTOTITLE](/copilot/reference/copilot-cli-reference/cli-programmatic-reference) -
[AUTOTITLE](/copilot/reference/copilot-cli-reference/cli-command-reference#command-line-options)