Вы можете использовать API задач агента для интеграции Облачный агент в свои инструменты и рабочие процессы. Например, вы можете начать новую задачу, перечислить существующие задачи или проверить статус задачи.
Кроме того, вы можете использовать API REST и GraphQL для задач, чтобы назначить задачи на Copilot.
Использование API задач агента
Примечание.
API задач агента включен Публичный предварительный просмотр и подвержен изменениям.
Authentication
API задач агента поддерживает только токены между пользователями. Вы можете аутентифицироваться с помощью personal access tokenтокена или OAuth appGitHub App токена пользователя-сервера.
Токены сервер-сервер, такие как GitHub App токены доступа установки, не поддерживаются.
Запуск задачи через API
Чтобы начать новую Облачный агент задачу, отправьте POST запрос на /agents/repos/{owner}/{repo}/tasks. Единственный требуемый параметр — prompt, который является запросом для агента.
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"
}'
Замените следующие значения заполнятелей:
YOUR-TOKEN: A или personal access tokenGitHub App токен пользователя-сервер.OWNER: Владелец аккаунта репозитория.REPO: Название репозитория.
Вы также можете включить следующие опциональные параметры в тело запроса:
base_ref: Базовая ветка для новой ветки и pull request.model: Модель ИИ для выполнения задачи. Если опущено, выбор автоматической модели используется. Для получения дополнительной информации о поддерживаемых моделях см. AUTOTITLE.create_pull_request: Булева величина, которая определяет, создавать ли pull request для задачи.
Задачи по списку
Вы можете перечислять задачи для конкретного репозитория или во всех доступных репозиториях.
Чтобы перечислить задачи для конкретного репозитория:
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
Чтобы перечислить ваши задачи во всех репозиториях:
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
Проверка статуса задачи
Чтобы проверить статус конкретной задачи, отправьте GET запрос с идентификатором задачи:
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
Замените TASK-ID на ID задачи, которую хотите проверить. Этот идентификатор можно получить из ответа, когда создаёте задачу или перечисляете задачи. Ответ включает текущий stateпоказатель задачи , который может быть одним из : queued, in_progress, completed``failed``idle``waiting_for_user``timed_outили .cancelled
Использование API issues
Примечание.
Эта функция уже присутствует Публичный предварительный просмотр и может измениться.
Вы можете назначать проблемы либо Copilot на использование GraphQL API, либо REST API. Оба API поддерживают опциональный ввод назначения агента для настройки задачи:
| Параметр GraphQL | Параметр REST | Description |
|---|---|---|
target | target_repo | Репозиторий, где Copilot будет работать |
baseRef | base_branch | Ветвь, от которой Copilot будет разветвляться |
custom | custom_instructions | Дополнительные инструкции для Copilot |
customAgent | custom_agent | A Пользовательский агент для выполнения задачи |
model | model | Модель для Copilot использования |
Использование API GraphQL
Примечание.
Вы должны включить GraphQL-Features заголовок со значениями issues_copilot_assignment_api_support и coding_agent_model_selection.
Вы можете использовать следующие мутации GraphQL для присвоения проблем :Copilot
Создание и назначение новой проблемы
-
Убедитесь, что вы аутентифицируете API с помощью пользовательского токена, например, personal access token или GitHub App токена пользователя-сервера.
Примечание.
Если используется , fine-grained personal access tokenдля назначения Copilot задачи нужны следующие разрешения:
- Read access к метаданным
- Read and Write access к действиям, содержимому, проблемам и pull requests
Если использовать personal access token (classic), ему нужен
repoприцел для назначения Copilot задачи. -
Проверьте, что Copilot облачный агент включено в репозитории, проверив, включает ли репозиторий
suggestedActorsв API GraphQL Copilot. Заменитеocto-orgвладельцем репозитория иocto-repoименем репозитория.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 } } } } }Если Copilot облачный агент включён для пользователя и находится в репозитории, первый узел из запроса будет иметь
loginзначениеcopilot-swe-agent. -
Запишите
idзначение этого имени входа. -
Получите глобальный идентификатор GraphQL репозитория, в который вы хотите создать проблему, заменив
octo-orgего владельцем иocto-repoименем репозитория.GraphQL query { repository(owner: "octo-org", name: "octo-repo") { id } }query { repository(owner: "octo-org", name: "octo-repo") { id } } -
Создайте проблему с мутацией
createIssue. ЗаменитеREPOSITORY_IDидентификатор, возвращенный на предыдущем шаге, иBOT_IDидентификатором, возвращенным из шага до этого. Вы можете добавитьagentAssignmentввод для настройки задачи.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'
Назначение существующей проблемы
-
Убедитесь, что вы аутентифицируете API с помощью пользовательского токена, например, personal access token или GitHub App токена пользователя-сервера.
-
Проверьте, что Copilot облачный агент включено в репозитории, проверив, включает ли репозиторий
suggestedActorsв API GraphQL Copilot. Заменитеocto-orgвладельцем репозитория иocto-repoименем репозитория.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 } } } } }Если Copilot облачный агент включён для пользователя и находится в репозитории, первый узел из запроса будет иметь
loginзначениеcopilot-swe-agent. -
Получите глобальный идентификатор GraphQL нужного выпуска Copilot, замените
monalisaего владельцем репозитория,octocatименем и9000номером выпуска.GraphQL query { repository(owner: "monalisa", name: "octocat") { issue(number: 9000) { id title } } }query { repository(owner: "monalisa", name: "octocat") { issue(number: 9000) { id title } } } -
Назначите существующую проблему Copilot на использование мутации
replaceActorsForAssignable. ЗаменитеISSUE_IDна ID, вернувшийся с предыдущего шага,BOT_IDна ID, возвращённый с предыдущего шага, иREPOSITORY_IDна идентификатор репозитория. Вы можете добавитьagentAssignmentввод для настройки задачи.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' -
Альтернативно, вы можете использовать
updateIssueмутацию, чтобы обновить существующую проблему и назначить её на Copilot. ЗаменитеISSUE_IDна ID проблемы иBOT_IDна 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' -
Вы также можете использовать
addAssigneesToAssignableмутацию, чтобы добавить Copilot к существующей проблеме, сохраняя при этом других назначенных. ЗаменитеISSUE_IDна ID проблемы иBOT_IDна 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'
Использование REST API
Вы можете использовать следующие конечные точки REST API для назначения задач на:Copilot
Добавление правопредоставлений к существующему выпуску
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": ""
}
}'
Создание новой проблемы
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": ""
}
}'
Обновление существующей проблемы
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": ""
}
}'