Интеграция Agent Client Protocol (ACP)

Интеграция Agent Client Protocol (ACP)

CodeGraph поддерживает Agent Client Protocol (ACP) для бесшовной интеграции с IDE: Zed, JetBrains IDEs, VS Code и другими ACP-совместимыми редакторами.

Обзор

ACP - стандартизированный протокол взаимодействия между редакторами кода и AI-агентами. CodeGraph реализует ACP для предоставления интеллектуального анализа кода прямо в вашей IDE.

Транспорты

CodeGraph поддерживает три механизма транспорта:

Транспорт Сценарий использования Endpoint
stdio Локальный subprocess (запускается IDE) команда codegraph-acp
HTTP Удалённый REST API POST /api/v1/acp/rpc
WebSocket Real-time стриминг WS /api/v1/acp/ws

Поддерживаемые методы

Базовые методы (обязательные)

Метод Описание
initialize Согласование capabilities
authenticate JWT аутентификация
session/new Создание новой сессии
session/prompt Отправка сообщения
session/cancel Отмена операции

Опциональные методы

Метод Описание
session/load Возобновление существующей сессии
fs/read_text_file Чтение файла
fs/write_text_file Запись файла
terminal/create Создание терминала
terminal/output Получение вывода терминала
terminal/wait_for_exit Ожидание завершения команды
terminal/kill Завершение команды
terminal/release Освобождение ресурсов

Capabilities агента

CodeGraph объявляет следующие capabilities:

{
  "loadSession": true,
  "setMode": false,
  "promptCapabilities": {
    "image": false,
    "audio": false,
    "embeddedContext": true
  },
  "mcp": {
    "stdio": true,
    "http": true,
    "sse": false
  },
  "authMethods": ["bearer"]
}

Жизненный цикл сессии

1. Инициализация
   Client -> initialize -> Agent
   Agent -> capabilities -> Client

2. Создание сессии
   Client -> session/new {cwd} -> Agent
   Agent -> {sessionId} -> Client

3. Отправка запроса
   Client -> session/prompt {sessionId, prompt} -> Agent
   Agent -> session/update (plan) -> Client
   Agent -> session/update (tool_call) -> Client
   Agent -> session/update (agent_message_chunk) -> Client
   Agent -> {stopReason} -> Client

4. Закрытие
   Client -> session/cancel -> Agent

API Endpoints

HTTP транспорт

POST /api/v1/acp/rpc

Единый JSON-RPC endpoint для всех вызовов.

Запрос:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "initialize",
  "params": {
    "protocolVersion": 1,
    "clientCapabilities": {},
    "clientInfo": {"name": "my-ide", "version": "1.0"}
  }
}

Ответ:

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "protocolVersion": 1,
    "agentCapabilities": {...},
    "agentInfo": {
      "name": "codegraph",
      "version": "0.1.0",
      "title": "CodeGraph Code Analysis Agent"
    }
  }
}

WebSocket транспорт

WS /api/v1/acp/ws?token=

Streaming endpoint с real-time обновлениями.

Health Check

GET /api/v1/acp/health

Возвращает статус агента и capabilities.

GET /api/v1/acp/info

Возвращает метаданные агента.

Session Updates

Во время обработки запроса CodeGraph отправляет session/update notifications:

План выполнения

{
  "sessionUpdate": "plan",
  "plan": {
    "entries": [
      {"id": "1", "title": "Классификация интента", "status": "completed"},
      {"id": "2", "title": "Запрос к графу кода", "status": "in_progress"},
      {"id": "3", "title": "Генерация ответа", "status": "pending"}
    ]
  }
}

Вызов инструмента

{
  "sessionUpdate": "tool_call",
  "toolCallId": "tc_abc123",
  "title": "Анализ безопасности",
  "kind": "search",
  "status": "in_progress"
}

Фрагмент ответа

{
  "sessionUpdate": "agent_message_chunk",
  "chunk": "На основе анализа..."
}

Маппинг сценариев

CodeGraph отображает свои сценарии на ACP tool kinds:

Сценарий Tool Kind
Анализ безопасности search
Code Review read
Анализ производительности search
Рефакторинг edit
Документация read
Анализ архитектуры think

Аутентификация

Для HTTP/WebSocket аутентификация опциональна, но рекомендуется:

Authorization: Bearer <jwt_token>

Аутентифицированные сессии имеют: - Персистентную историю диалогов - Пользовательские настройки - Квоты rate limit

Коды ошибок

Код Значение
-32700 Ошибка парсинга
-32600 Неверный запрос
-32601 Метод не найден
-32602 Неверные параметры
-32603 Внутренняя ошибка
-32002 Агент не инициализирован

Примеры

Инициализация и создание сессии

# Инициализация
curl -X POST http://localhost:8000/api/v1/acp/rpc \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "initialize",
    "params": {
      "protocolVersion": 1,
      "clientCapabilities": {},
      "clientInfo": {"name": "curl-client"}
    }
  }'

# Создание сессии
curl -X POST http://localhost:8000/api/v1/acp/rpc \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 2,
    "method": "session/new",
    "params": {"cwd": "/path/to/project"}
  }'

Отправка запроса

curl -X POST http://localhost:8000/api/v1/acp/rpc \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 3,
    "method": "session/prompt",
    "params": {
      "sessionId": "acp_xxx",
      "prompt": [
        {"type": "text", "text": "Какие основные точки входа?"}
      ]
    }
  }'

Поддержка MCP серверов

CodeGraph может подключаться к внешним MCP серверам:

{
  "method": "session/new",
  "params": {
    "cwd": "/project",
    "mcpServers": [
      {
        "id": "github",
        "name": "GitHub MCP",
        "transport": "stdio",
        "command": "github-mcp-server"
      }
    ]
  }
}

См. также