Introdução
Você pode passar um prompt diretamente para CLI do Copilot em um único comando, sem iniciar 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 qualquer um dos procedimentos 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" -
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, como nomes de arquivos, nomes de funções, a alteração exata, menos suposições o Copilot precisará 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 dê permissões mínimas** – use as opções de linha de comando `--allow-tool=[TOOLS...]` e `--allow-url=[URLs...]` para conceder Copilot permissão de 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 **** para um comportamento consistente entre ambientes.
Consulte referência programática do GitHub Copilot CLI para obter opções que são particularmente úteis ao executar CLI do Copilot programaticamente.
Integração de CI/CD
Um caso de uso comum para execução de CLI do Copilot programaticamente é incluir um comando da CLI em uma etapa de fluxo de trabalho de CI/CD.
Este extrato de um GitHub Actions fluxo de trabalho mostra um exemplo simples de execução de um CLI do Copilot comando.
# 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 Copilot CLI e 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 fácil 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 o Enterprise Managed Users, nem 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 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"
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)