Você pode usar a API de tarefas do agente para integrar agente de nuvem às suas próprias ferramentas e fluxos de trabalho. Por exemplo, você pode iniciar uma nova tarefa, listar tarefas existentes ou verificar o status de uma tarefa.
Além disso, você pode usar as APIs REST e GraphQL para problemas para atribuir problemas a Copilot.
Usando a API de tarefas do agente
Observação
A API de tarefas do agente está dentro prévia pública e sujeita a alterações.
Autenticação
A API de tarefas do agente dá suporte apenas a tokens de usuário para servidor. Você pode autenticar usando um personal access tokentoken, um OAuth app token ou um GitHub App token de usuário para servidor.
Não há suporte para tokens entre servidores, como tokens de acesso à instalação GitHub App.
Iniciando uma tarefa por meio da API
Para iniciar uma nova agente de nuvem tarefa, envie uma solicitação POST para /agents/repos/{owner}/{repo}/tasks. O único parâmetro necessário é prompt, que é o prompt para o agente.
curl -X POST \
-H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" \
-H "Authorization: Bearer YOUR-TOKEN" \
https://api.github.com/agents/repos/OWNER/REPO/tasks \
-d '{
"prompt": "Fix the login button on the homepage",
"base_ref": "main"
}'
curl -X POST \
-H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" \
-H "Authorization: Bearer YOUR-TOKEN" \
https://api.github.com/agents/repos/OWNER/REPO/tasks \
-d '{
"prompt": "Fix the login button on the homepage",
"base_ref": "main"
}'
Substitua os seguintes valores de espaço reservado:
-
`YOUR-TOKEN`: um token de usuário para servidor personal access token ou GitHub App. OWNER: o proprietário da conta associada ao repositório.REPO: o nome do repositório.
Você também pode incluir os seguintes parâmetros opcionais no corpo da solicitação:
-
`base_ref`: a ramificação de base da nova ramificação e pull request. model: o modelo de IA a ser usado para a tarefa. Se omitido, Seleção de modelo automática será usado. Para obter mais informações sobre modelos com suporte, consulte Endpoints da API REST para tarefas de agente.create_pull_request: um booliano que determina se uma solicitação de pull deve ser criada para a tarefa.
Listar tarefas
Você pode listar tarefas para um repositório específico ou em todos os repositórios aos quais você tem acesso.
Para listar tarefas para um repositório específico:
curl -H "Accept: application/vnd.github+json" \ -H "X-GitHub-Api-Version: 2022-11-28" \ -H "Authorization: Bearer YOUR-TOKEN" \ https://api.github.com/agents/repos/OWNER/REPO/tasks
curl -H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" \
-H "Authorization: Bearer YOUR-TOKEN" \
https://api.github.com/agents/repos/OWNER/REPO/tasks
Para listar suas tarefas em todos os repositórios:
curl -H "Accept: application/vnd.github+json" \ -H "X-GitHub-Api-Version: 2022-11-28" \ -H "Authorization: Bearer YOUR-TOKEN" \ https://api.github.com/agents/tasks
curl -H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" \
-H "Authorization: Bearer YOUR-TOKEN" \
https://api.github.com/agents/tasks
Verificando o status de uma tarefa
Para verificar o status de uma tarefa específica, envie uma GET solicitação com a ID da tarefa:
curl -H "Accept: application/vnd.github+json" \ -H "X-GitHub-Api-Version: 2022-11-28" \ -H "Authorization: Bearer YOUR-TOKEN" \ https://api.github.com/agents/repos/OWNER/REPO/tasks/TASK-ID
curl -H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" \
-H "Authorization: Bearer YOUR-TOKEN" \
https://api.github.com/agents/repos/OWNER/REPO/tasks/TASK-ID
Substitua TASK-ID pela ID da tarefa que você deseja verificar. Você pode obter essa ID da resposta ao criar uma tarefa ou listar tarefas. A resposta inclui a atual stateda tarefa, que pode ser uma das seguintes: queued, , in_progress, completed, failed, idle, , waiting_for_user, timed_outou cancelled.
Usar a API de problemas
Observação
Esse recurso está dentro prévia pública e sujeito a alterações.
Você pode atribuir problemas ao Copilot usando a API GraphQL ou a API REST. Ambas as APIs dão suporte a uma entrada opcional de Atribuição de Agente para personalizar a tarefa:
| Parâmetro GraphQL | Parâmetro REST | Description |
|---|---|---|
target | target_repo | O repositório onde Copilot funcionará |
baseRef | base_branch | A ramificação da qual Copilot irá se ramificar |
custom | custom_instructions | Instruções adicionais para Copilot |
customAgent | custom_agent | Um agente personalizado a ser usado para a tarefa |
model | model | O modelo para Copilot para usar |
Usando a API GraphQL
Observação
Você deve incluir o GraphQL-Features cabeçalho com os valores issues_copilot_assignment_api_support e coding_agent_model_selection.
Você pode usar as seguintes mutações do GraphQL para atribuir problemas a Copilot:
Criar e atribuir um novo issue
-
Verifique se você está autenticando com a API usando um token de usuário, por exemplo, um personal access token ou um GitHub App token de usuário para servidor.
Observação
Se estiver usando um fine-grained personal access token, ele precisará das seguintes permissões para atribuir Copilot a um problema:
- Acesso de leitura a metadados
- Acesso de leitura e gravação a ações, conteúdo, problemas e pull requests
Se estiver usando um personal access token (classic), ele precisará do
repoescopo para atribuir Copilot a um problema. -
Verifique se agente de nuvem Copilot está habilitado no repositório verificando se o
suggestedActorsdo repositório na API GraphQL inclui Copilot. Substituaocto-orgpelo proprietário do repositório eocto-repopelo nome do repositório.GraphQL query { repository(owner: "octo-org", name: "octo-repo") { suggestedActors(capabilities: [CAN_BE_ASSIGNED], first: 100) { nodes { login __typename ... on Bot { id } ... on User { id } } } } }query { repository(owner: "octo-org", name: "octo-repo") { suggestedActors(capabilities: [CAN_BE_ASSIGNED], first: 100) { nodes { login __typename ... on Bot { id } ... on User { id } } } } }Se agente de nuvem Copilot estiver habilitado para o usuário e no repositório, o primeiro nó retornado da consulta terá o
loginvalorcopilot-swe-agent. -
Anote o valor
iddesse logon. -
Busque a ID global do GraphQL do repositório no qual você deseja criar o issue, substituindo
octo-orgpelo proprietário do repositório eocto-repopelo nome do repositório.GraphQL query { repository(owner: "octo-org", name: "octo-repo") { id } }query { repository(owner: "octo-org", name: "octo-repo") { id } } -
Crie o issue com a mutação
createIssue. SubstituaREPOSITORY_IDpela ID retornada da etapa anterior eBOT_IDpela ID retornada da etapa anterior àquela. Opcionalmente, você pode incluir aagentAssignmententrada para personalizar a tarefa.Shell gh api graphql -f query='mutation { createIssue(input: { repositoryId: "REPOSITORY_ID", title: "Implement comprehensive unit tests", body: "DETAILS", assigneeIds: ["BOT_ID"], agentAssignment: { targetRepositoryId: "REPOSITORY_ID", baseRef: "main", customInstructions: "Add comprehensive test coverage", customAgent: "", model: "" } }) { issue { id title assignees(first: 10) { nodes { login } } } } }' -H 'GraphQL-Features: issues_copilot_assignment_api_support,coding_agent_model_selection'gh api graphql -f query='mutation { createIssue(input: { repositoryId: "REPOSITORY_ID", title: "Implement comprehensive unit tests", body: "DETAILS", assigneeIds: ["BOT_ID"], agentAssignment: { targetRepositoryId: "REPOSITORY_ID", baseRef: "main", customInstructions: "Add comprehensive test coverage", customAgent: "", model: "" } }) { issue { id title assignees(first: 10) { nodes { login } } } } }' -H 'GraphQL-Features: issues_copilot_assignment_api_support,coding_agent_model_selection'
Atribuir um issue existente
-
Verifique se você está autenticando com a API usando um token de usuário, por exemplo, um personal access token ou um GitHub App token de usuário para servidor.
-
Verifique se agente de nuvem Copilot está habilitado no repositório verificando se o
suggestedActorsdo repositório na API GraphQL inclui Copilot. Substituaocto-orgpelo proprietário do repositório eocto-repopelo nome do repositório.GraphQL query { repository(owner: "monalisa", name: "octocat") { suggestedActors(capabilities: [CAN_BE_ASSIGNED], first: 100) { nodes { login __typename ... on Bot { id } ... on User { id } } } } }query { repository(owner: "monalisa", name: "octocat") { suggestedActors(capabilities: [CAN_BE_ASSIGNED], first: 100) { nodes { login __typename ... on Bot { id } ... on User { id } } } } }Se agente de nuvem Copilot estiver habilitado para o usuário e no repositório, o primeiro nó retornado da consulta terá o
loginvalorcopilot-swe-agent. -
Busque a ID global do GraphQL do problema ao qual você deseja atribuir Copilot, substituindo
monalisapelo proprietário do repositório,octocatpelo nome e9000pelo número do problema.GraphQL query { repository(owner: "monalisa", name: "octocat") { issue(number: 9000) { id title } } }query { repository(owner: "monalisa", name: "octocat") { issue(number: 9000) { id title } } } -
Atribua o problema existente a Copilot usando a mutação
replaceActorsForAssignable. SubstituaISSUE_IDpela ID retornada da etapa anterior,BOT_IDpela ID retornada da etapa anterior eREPOSITORY_IDpela ID do repositório. Opcionalmente, você pode incluir aagentAssignmententrada para personalizar a tarefa.Shell gh api graphql -f query='mutation { replaceActorsForAssignable(input: { assignableId: "ISSUE_ID", actorIds: ["BOT_ID"], agentAssignment: { targetRepositoryId: "REPOSITORY_ID", baseRef: "main", customInstructions: "Fix the reported bug", customAgent: "", model: "" } }) { assignable { ... on Issue { id title assignees(first: 10) { nodes { login } } } } } }' -H 'GraphQL-Features: issues_copilot_assignment_api_support,coding_agent_model_selection'gh api graphql -f query='mutation { replaceActorsForAssignable(input: { assignableId: "ISSUE_ID", actorIds: ["BOT_ID"], agentAssignment: { targetRepositoryId: "REPOSITORY_ID", baseRef: "main", customInstructions: "Fix the reported bug", customAgent: "", model: "" } }) { assignable { ... on Issue { id title assignees(first: 10) { nodes { login } } } } } }' -H 'GraphQL-Features: issues_copilot_assignment_api_support,coding_agent_model_selection' -
Como alternativa, você pode usar a
updateIssuemutação para atualizar um problema existente e atribuí-lo a Copilot. SubstituaISSUE_IDpela ID do problema eBOT_IDpela ID do bot.Shell gh api graphql -f query='mutation { updateIssue(input: { id: "ISSUE_ID", assigneeIds: ["BOT_ID"], agentAssignment: { targetRepositoryId: "REPOSITORY_ID", baseRef: "main", customInstructions: "Update feature implementation", customAgent: "", model: "" } }) { issue { id title assignees(first: 10) { nodes { login } } } } }' -H 'GraphQL-Features: issues_copilot_assignment_api_support,coding_agent_model_selection'gh api graphql -f query='mutation { updateIssue(input: { id: "ISSUE_ID", assigneeIds: ["BOT_ID"], agentAssignment: { targetRepositoryId: "REPOSITORY_ID", baseRef: "main", customInstructions: "Update feature implementation", customAgent: "", model: "" } }) { issue { id title assignees(first: 10) { nodes { login } } } } }' -H 'GraphQL-Features: issues_copilot_assignment_api_support,coding_agent_model_selection' -
Você também pode usar a
addAssigneesToAssignablealteração para adicionar Copilot a um problema existente, mantendo os outros responsáveis. SubstituaISSUE_IDpela ID do problema eBOT_IDpela ID do bot.Shell gh api graphql -f query='mutation { addAssigneesToAssignable(input: { assignableId: "ISSUE_ID", assigneeIds: ["BOT_ID"], agentAssignment: { targetRepositoryId: "REPOSITORY_ID", baseRef: "main", customInstructions: "Collaborate on this task", customAgent: "", model: "" } }) { assignable { ... on Issue { id title assignees(first: 10) { nodes { login } } } } } }' -H 'GraphQL-Features: issues_copilot_assignment_api_support,coding_agent_model_selection'gh api graphql -f query='mutation { addAssigneesToAssignable(input: { assignableId: "ISSUE_ID", assigneeIds: ["BOT_ID"], agentAssignment: { targetRepositoryId: "REPOSITORY_ID", baseRef: "main", customInstructions: "Collaborate on this task", customAgent: "", model: "" } }) { assignable { ... on Issue { id title assignees(first: 10) { nodes { login } } } } } }' -H 'GraphQL-Features: issues_copilot_assignment_api_support,coding_agent_model_selection'
Usando a API REST
Você pode usar os seguintes pontos de extremidade da API REST para atribuir problemas a Copilot:
Adicionando responsáveis a um problema já existente
gh api \
--method POST \
-H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" \
/repos/OWNER/REPO/issues/ISSUE_NUMBER/assignees \
--input - <<< '{
"assignees": ["copilot-swe-agent[bot]"],
"agent_assignment": {
"target_repo": "OWNER/REPO",
"base_branch": "main",
"custom_instructions": "",
"custom_agent": "",
"model": ""
}
}'
gh api \
--method POST \
-H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" \
/repos/OWNER/REPO/issues/ISSUE_NUMBER/assignees \
--input - <<< '{
"assignees": ["copilot-swe-agent[bot]"],
"agent_assignment": {
"target_repo": "OWNER/REPO",
"base_branch": "main",
"custom_instructions": "",
"custom_agent": "",
"model": ""
}
}'
Criando um novo problema
gh api \
--method POST \
-H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" \
/repos/OWNER/REPO/issues \
--input - <<< '{
"title": "Issue title",
"body": "Issue description.",
"assignees": ["copilot-swe-agent[bot]"],
"agent_assignment": {
"target_repo": "OWNER/REPO",
"base_branch": "main",
"custom_instructions": "",
"custom_agent": "",
"model": ""
}
}'
gh api \
--method POST \
-H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" \
/repos/OWNER/REPO/issues \
--input - <<< '{
"title": "Issue title",
"body": "Issue description.",
"assignees": ["copilot-swe-agent[bot]"],
"agent_assignment": {
"target_repo": "OWNER/REPO",
"base_branch": "main",
"custom_instructions": "",
"custom_agent": "",
"model": ""
}
}'
Atualizando um problema existente
gh api \
--method PATCH \
-H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" \
/repos/OWNER/REPO/issues/ISSUE_NUMBER \
--input - <<< '{
"assignees": ["copilot-swe-agent[bot]"],
"agent_assignment": {
"target_repo": "OWNER/REPO",
"base_branch": "main",
"custom_instructions": "",
"custom_agent": "",
"model": ""
}
}'
gh api \
--method PATCH \
-H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" \
/repos/OWNER/REPO/issues/ISSUE_NUMBER \
--input - <<< '{
"assignees": ["copilot-swe-agent[bot]"],
"agent_assignment": {
"target_repo": "OWNER/REPO",
"base_branch": "main",
"custom_instructions": "",
"custom_agent": "",
"model": ""
}
}'