Вы можете подключить репозиторий GitHub к песочнице вашей сессии и подключиться к GitHub MCP для создания pull request.
Репозитории GitHub кэшируются, поэтому последующие сессии, использующие тот же репозиторий, запускаются быстрее.
Все запросы к Managed Agents API требуют бета-заголовка managed-agents-2026-04-01. SDK устанавливает бета-заголовок автоматически.
Сначала создайте агента, который объявляет MCP-сервер GitHub. Определение агента содержит URL сервера, но не токен аутентификации:
AGENT_ID=$(ant beta:agents create \
--name "Code Reviewer" \
--model '{id: claude-opus-4-8}' \
--system "You are a code review assistant with access to GitHub." \
--mcp-server '{type: url, name: github, url: https://api.githubcopilot.com/mcp/}' \
--tool '{type: agent_toolset_20260401}' \
--tool '{type: mcp_toolset, mcp_server_name: github}' \
--transform id --raw-output)Затем создайте сессию, которая подключает репозиторий GitHub:
session = client.beta.sessions.create(
agent=agent.id,
environment_id=environment.id,
resources=[
{
"type": "github_repository",
"url": "https://github.com/org/repo",
"mount_path": "/workspace/repo",
"authorization_token": "ghp_your_github_token",
},
],
)Параметр resources[].authorization_token аутентифицирует операцию клонирования репозитория и не возвращается в ответах API.
При предоставлении токена GitHub используйте минимально необходимые разрешения:
| Действие | Требуемые области доступа |
|---|---|
| Клонирование приватных репозиториев | repo |
| Создание PR | repo |
| Чтение issues | repo (приватные) или public_repo |
| Создание issues | repo (приватные) или public_repo |
Используйте персональные токены доступа с детальными разрешениями (fine-grained personal access tokens) с минимально необходимыми правами. Избегайте использования токенов с широким доступом к вашей учётной записи GitHub.
Подключите несколько репозиториев, добавив записи в массив resources:
resources = [
{
"type": "github_repository",
"url": "https://github.com/org/frontend",
"mount_path": "/workspace/frontend",
"authorization_token": "ghp_your_github_token",
},
{
"type": "github_repository",
"url": "https://github.com/org/backend",
"mount_path": "/workspace/backend",
"authorization_token": "ghp_your_github_token",
},
]После создания сессии вы можете просматривать список её ресурсов-репозиториев и обновлять их токены авторизации. Каждый ресурс имеет id, возвращаемый при создании сессии (или через resources.list), который вы используете для обновлений. Репозитории прикреплены на всё время существования сессии; чтобы изменить набор подключённых репозиториев, создайте новую сессию.
# Вывести список ресурсов сессии
listed = client.beta.sessions.resources.list(session.id)
repo_resource_id = listed.data[0].id
print(repo_resource_id) # "sesrsc_01ABC..."
# Сменить токен авторизации
client.beta.sessions.resources.update(
repo_resource_id,
session_id=session.id,
authorization_token="ghp_your_new_github_token",
)С помощью MCP-сервера GitHub агент может создавать ветки, фиксировать изменения и отправлять их:
client.beta.sessions.events.send(
session.id,
events=[
{
"type": "user.message",
"content": [
{
"type": "text",
"text": "Fix the type error in src/utils.ts, commit it to a new branch, and push it.",
},
],
},
],
)Получайте события в потоковом режиме и направляйте агента, пока он открывает pull request
Подключите дополнительные MCP-серверы, чтобы предоставить агенту больше инструментов
Подключайте файлы в песочнице вместе с вашими репозиториями
Was this page helpful?