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, além de permitir o uso programático da CLI em scripts, pipelines de CI/CD e fluxos de trabalho de automação.
Para usar CLI do Copilot programaticamente, você pode fazer um dos métodos a seguir.
-
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" -
Redirecione um prompt para o comando
copilot:Shell echo "Explain this file: ./complex.ts" | copilot
echo "Explain this file: ./complex.ts" | copilotObservação
A entrada encanada será ignorada se você também fornecer um prompt com a opção
-pou a opção--prompt.
Dicas para usar CLI do Copilot de forma programática
-
**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 Copilot tem que adivinhar. -
**Cite os prompts com cuidado** — use aspas simples em torno do seu prompt se você quiser evitar a interpretação de shell de caracteres especiais. - Sempre dê permissões mínimas — use as opções de linha de comando
--allow-tool=[TOOLS...]e--allow-url=[URLs...]para dar ao 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 de forma programática é incluir um comando da CLI em uma etapa de fluxo de trabalho de CI/CD.
Este extrato de um fluxo de trabalho GitHub Actions mostra um exemplo simples de execução de um comando 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 code-review interno examine as alterações de código no branch 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 uma gist em 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
Os Gists não estão disponíveis para Enterprise Managed Users, ou se você usar GitHub Enterprise Cloud com residência de dados (*.ghe.com).
Padrões de programação de scripts de shell
Capturar a saída de 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"
Utilizar em uma declaração 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)