Sie können die Agentaufgaben-API verwenden, um Cloud-Agent in Ihre eigenen Tools und Workflows zu integrieren. Sie können z. B. eine neue Aufgabe starten, vorhandene Aufgaben auflisten oder den Status einer Aufgabe überprüfen.
Darüber hinaus können Sie die REST- und GraphQL-APIs für Probleme verwenden, um Probleme an Copilot zuzuweisen.
Verwenden der API für Agent-Aufgaben
Hinweis
Die Agentaufgaben-API befindet sich in Öffentliche Vorschau und kann geändert werden.
Authentifizierung
Die Agentaufgaben-API unterstützt nur Benutzer-zu-Server-Token. Sie können sich mit einem personal access tokenToken, einem OAuth app Token oder einem GitHub App Benutzer-zu-Server-Token authentifizieren.
Server-zu-Server-Token, wie GitHub App Installationszugriffstoken, werden nicht unterstützt.
Starten einer Aufgabe über die API
Um eine neue Cloud-Agent Aufgabe zu starten, senden Sie eine POST Anforderung an /agents/repos/{owner}/{repo}/tasks. Der einzige erforderliche Parameter ist prompt, bei dem es sich um die Aufforderung für den Agent handelt.
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"
}'
Ersetzen Sie die folgenden Platzhalterwerte:
YOUR-TOKEN: Ein personal access token- oder GitHub App-Benutzer-zu-Server-Token.OWNER: Der Kontobesitzer des Repositorys.REPO: Der Name des Repositorys.
Sie können auch die folgenden optionalen Parameter in den Anforderungstext einschließen:
-
`base_ref`: Die Basisverzweigung für die neue Verzweigung und Pull-Anforderung. model: Das KI-Modell, das für die Aufgabe verwendet werden soll. Wenn nicht angegeben, wird Automatische Modellauswahl verwendet. Weitere Informationen zu unterstützten Modellen finden Sie unter REST-API-Endpunkte für Agentaufgaben.create_pull_request: Ein boolescher Wert, der bestimmt, ob eine Pullanforderung für die Aufgabe erstellt werden soll.
Auflisten von Aufgaben
Sie können Aufgaben für ein bestimmtes Repository oder für alle Repositorys auflisten, auf die Sie Zugriff haben.
So listen Sie Aufgaben für ein bestimmtes Repository auf:
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
So listen Sie Ihre Aufgaben in allen Repositorys auf:
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
Überprüfen des Status eines Vorgangs
Um den Status einer bestimmten Aufgabe zu überprüfen, senden Sie eine GET Anforderung mit der Aufgaben-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
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
Ersetzen Sie sie TASK-ID durch die ID der Aufgabe, die Sie überprüfen möchten. Sie können diese ID aus der Antwort abrufen, wenn Sie eine Aufgabe oder Listenaufgaben erstellen. Die Antwort enthält den aktuellen state-Vorgang, der eine von: queued, in_progress, completed, failed, idle, waiting_for_user, timed_out oder cancelled sein kann.
Verwendung der Issues-API
Hinweis
Diese Funktion befindet sich in Öffentliche Vorschau und kann Änderungen unterliegen.
Sie können Probleme Copilot entweder mit der GraphQL-API oder der REST-API zuweisen. Beide APIs unterstützen eine optionale Agent-Zuweisungseingabe zum Anpassen der Aufgabe:
| GraphQL-Parameter | REST-Parameter | Description |
|---|---|---|
targetRepositoryId | target_repo | Das Repository, in dem Copilot arbeiten wird |
baseRef | base_branch | Der Zweig, von dem Copilot abzweigen wird |
customInstructions | custom_instructions | Zusätzliche Anweisungen für Copilot |
customAgent | custom_agent | Benutzerdefinierter Agent für die Aufgabe. |
model | model | Das Modell für Copilot zur Verwendung |
Verwenden der GraphQL-API
Hinweis
Sie müssen die GraphQL-Features Kopfzeile mit den Werten issues_copilot_assignment_api_support und coding_agent_model_selection beifügen.
Sie können die folgenden GraphQL-Mutationen verwenden, um Probleme zuzuweisen Copilot:
Erstellen und Zuweisen eines neuen Issues
-
Stellen Sie sicher, dass Sie sich mit der API mit einem Benutzertoken authentifizieren, z. B. mit einem personal access tokenGitHub App Benutzer-zu-Server-Token.
Hinweis
Wenn Sie ein fine-grained personal access token verwenden, benötigt es die folgenden Berechtigungen, um Copilot einem Problem zuzuweisen:
- Lesezugriff auf Metadaten
- Lese- und Schreibzugriff auf Aktionen, Inhalte, Probleme und Pullanforderungen
Falls ein personal access token (classic) verwendet wird, benötigt es den
repo-Bereich, um Copilot einem Problem zuzuweisen. -
Überprüfen Sie, ob Copilot-Cloud-Agent im Repository aktiviert ist, indem Sie prüfen, ob die GraphQL-API des Repositories
suggestedActorsCopilot enthält. Ersetzeocto-orgdurch die Person im Repositorybesitz undocto-repodurch den Repositorynamen.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 } } } } }Wenn Copilot-Cloud-Agent für den Benutzer und im Repository aktiviert ist, weist der erste von der Abfrage zurückgegebene Knoten den
loginWertcopilot-swe-agentauf. -
Notiere den Wert
iddieser Anmeldung. -
Rufe die globale GraphQL-ID des Repositorys ab, in dem du das Issue erstellen möchtest, ersetze
octo-orgdurch die Person im Repositorybesitz undocto-repodurch den Repositorynamen.GraphQL query { repository(owner: "octo-org", name: "octo-repo") { id } }query { repository(owner: "octo-org", name: "octo-repo") { id } } -
Erstelle das Issue mit der
createIssue-Mutation. ErsetzeREPOSITORY_IDdurch die im vorherigen Schritt zurückgegebene ID undBOT_IDdurch die im Schritt davor zurückgegebene ID. Optional können Sie dieagentAssignmentEingabe einschließen, um die Aufgabe anzupassen.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'
Zuweisen eines vorhandenen Issues
-
Stellen Sie sicher, dass Sie sich mit der API mit einem Benutzertoken authentifizieren, z. B. mit einem personal access tokenGitHub App Benutzer-zu-Server-Token.
-
Überprüfen Sie, ob Copilot-Cloud-Agent im Repository aktiviert ist, indem Sie prüfen, ob die GraphQL-API des Repositories
suggestedActorsCopilot enthält. Ersetzeocto-orgdurch die Person im Repositorybesitz undocto-repodurch den Repositorynamen.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 } } } } }Wenn Copilot-Cloud-Agent für den Benutzer und im Repository aktiviert ist, weist der erste von der Abfrage zurückgegebene Knoten den
loginWertcopilot-swe-agentauf. -
Rufen Sie die globale GraphQL-ID des Issues ab, das Sie Copilot zuweisen möchten. Ersetzen Sie
monalisadurch den Repositorybesitzer,octocatdurch den Namen und9000durch die Problemnummer.GraphQL query { repository(owner: "monalisa", name: "octocat") { issue(number: 9000) { id title } } }query { repository(owner: "monalisa", name: "octocat") { issue(number: 9000) { id title } } } -
Weisen Sie das vorhandene Problem Copilot zu mit der Mutation
replaceActorsForAssignable. Ersetzen SieISSUE_IDdurch die ID, die aus dem vorherigen Schritt zurückgegeben wurde,BOT_IDdurch die ID, die vor diesem Schritt zurückgegeben wurde, undREPOSITORY_IDdurch die Repository-ID. Optional können Sie dieagentAssignmentEingabe einschließen, um die Aufgabe anzupassen.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' -
Alternativ können Sie die
updateIssueMutation verwenden, um ein vorhandenes Problem zu aktualisieren und es zuzuweisen Copilot. Ersetzen SieISSUE_IDmit der Problem-ID undBOT_IDmit der Bot-ID.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' -
Sie können auch die
addAssigneesToAssignableMutation verwenden, um Copilot zu einem vorhandenen Problem hinzuzufügen, während andere Bearbeiter beibehalten werden. Ersetzen SieISSUE_IDmit der Problem-ID undBOT_IDmit der Bot-ID.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'
Verwenden der REST-API
Sie können die folgenden REST-API-Endpunkte verwenden, um Probleme zuzuweisen Copilot:
- Zugewiesene Personen zu einem Issue hinzufügen
- Erstellen eines Problems
- Aktualisieren eines Problems
Hinzufügen von Zuständigen zu einem vorhandenen Vorgang
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": ""
}
}'
Erstellen eines neuen Problems
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": ""
}
}'
Aktualisieren eines vorhandenen Problems
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": ""
}
}'