Os ganchos permitem estender e personalizar o comportamento dos agentes GitHub Copilot executando comandos do shell personalizados em pontos-chave durante a execução do agente. Para obter uma visão geral conceitual dos ganchos, incluindo detalhes dos gatilhos disponíveis para os ganchos, consulte Sobre ganchos.
Criar um gancho em um repositório em GitHub
-
Crie um novo
hooks.jsonarquivo com o nome de sua escolha na.github/hooks/pasta do repositório. O arquivo de configuração de ganchos deve estar presente no branch padrão do seu repositório para ser usado por Agente de codificação do Copilot. Para CLI do GitHub Copilot, os ganchos são carregados do diretório de trabalho atual. -
No editor de texto, copie e cole o modelo de gancho a seguir. Remova os ganchos que você não planeja usar da
hooksmatriz.JSON { "version": 1, "hooks": { "sessionStart": [...], "sessionEnd": [...], "userPromptSubmitted": [...], "preToolUse": [...], "postToolUse": [...], "errorOccurred": [...] } }{ "version": 1, "hooks": { "sessionStart": [...], "sessionEnd": [...], "userPromptSubmitted": [...], "preToolUse": [...], "postToolUse": [...], "errorOccurred": [...] } } -
Configure a sintaxe do gancho nas chaves
bashoupowershell, ou referencie diretamente os arquivos de script que você criou.-
Este exemplo executa um script que gera a data de início da sessão para um arquivo de log usando o
sessionStartgancho:JSON "sessionStart": [ { "type": "command", "bash": "echo \"Session started: $(date)\" >> logs/session.log", "powershell": "Add-Content -Path logs/session.log -Value \"Session started: $(Get-Date)\"", "cwd": ".", "timeoutSec": 10 } ],"sessionStart": [ { "type": "command", "bash": "echo \"Session started: $(date)\" >> logs/session.log", "powershell": "Add-Content -Path logs/session.log -Value \"Session started: $(Get-Date)\"", "cwd": ".", "timeoutSec": 10 } ], -
Este exemplo chama um script externo
log-prompt:JSON "userPromptSubmitted": [ { "type": "command", "bash": "./scripts/log-prompt.sh", "powershell": "./scripts/log-prompt.ps1", "cwd": "scripts", "env": { "LOG_LEVEL": "INFO" } } ],"userPromptSubmitted": [ { "type": "command", "bash": "./scripts/log-prompt.sh", "powershell": "./scripts/log-prompt.ps1", "cwd": "scripts", "env": { "LOG_LEVEL": "INFO" } } ],Para obter uma referência completa do JSON de entrada das sessões de agente, juntamente com scripts de exemplo, consulte Configuração de ganchos.
-
-
Confirme o arquivo no repositório e mescle-o no branch padrão. Agora, os ganchos serão executados durante as sessões do agente.
Resolução de problemas
Se você encontrar problemas ao usar hooks, utilize a tabela a seguir para solucioná-los.
| Questão | Ação |
|---|---|
| Os ganchos não estão sendo executados |
|
| Ganchos estão atingindo o tempo limite |
|
| Saída JSON inválida |
|
Resolução de Erros
Você pode depurar ganchos usando os seguintes métodos:
-
**Habilite o log detalhado** no script para inspecionar os dados de entrada e rastrear a execução do script.Shell #!/bin/bash set -x # Enable bash debug mode INPUT=$(cat) echo "DEBUG: Received input" >&2 echo "$INPUT" >&2 # ... rest of script
#!/bin/bash set -x # Enable bash debug mode INPUT=$(cat) echo "DEBUG: Received input" >&2 echo "$INPUT" >&2 # ... rest of script -
**Teste ganchos localmente** canalizando a entrada de teste para o seu gancho para validar seu comportamento.Shell # Create test input echo '{"timestamp":1704614400000,"cwd":"/tmp","toolName":"bash","toolArgs":"{\"command\":\"ls\"}"}' | ./my-hook.sh # Check exit code echo $? # Validate output is valid JSON ./my-hook.sh | jq .# Create test input echo '{"timestamp":1704614400000,"cwd":"/tmp","toolName":"bash","toolArgs":"{\"command\":\"ls\"}"}' | ./my-hook.sh # Check exit code echo $? # Validate output is valid JSON ./my-hook.sh | jq .
Leitura adicional
-
[AUTOTITLE](/copilot/reference/hooks-configuration) -
[AUTOTITLE](/copilot/concepts/agents/coding-agent/about-coding-agent) -
[AUTOTITLE](/copilot/concepts/agents/about-copilot-cli) -
[AUTOTITLE](/copilot/how-tos/use-copilot-agents/coding-agent/customize-the-agent-environment)