Заметка: Agent Client Protocol (ACP), Cascade и Cursor¶
Статус: рабочая заметка (терминология и ссылки; не дублирует ADR). Архитектурное решение по встроенному чату и Cursor CLI — ADR 0016. Детали протокола — в официальной спецификации.
1. Терминология: не путать два «ACP»¶
| Название | Суть | Где смотреть |
|---|---|---|
| Agent Client Protocol | Связь редактор/IDE ↔ агент, JSON-RPC; по духу близко к LSP. Cascade в перспективе — клиент, внешний Cursor/другой агент — агент (или наоборот, если Cascade экспортирует агента). | agentclientprotocol.com, обзор транспортов |
| Agent Communication Protocol (другой проект) | Межагентский REST, BeeAI / A2A и т.д. | agentcommunicationprotocol.dev — не то же самое, хотя аббревиатура совпадает. |
В разговоре часто говорят «Agent Context Protocol» — у Cursor в документации и у JetBrains фигурирует именно Agent Client Protocol (пост Cursor про JetBrains).
2. Зачем это Cascade¶
- Развязка: IDE не обязана встраивать весь UI чужого агента — достаточно ACP-транспорта (часто stdio: клиент поднимает процесс агента, сообщения — JSON-RPC по строкам, без мусора в stdout).
- Совместимость: агенты с ACP могут подключаться к разным клиентам; клиент с ACP — к разным агентам (реестр).
- Связь с UX: внешний агент и отдельное окно Cursor логично считать отдельным «дисплеем», не смешивая с внутренним PFD/MFD — см.
concept-pfd-mfd-cascade-v1.md§8.
3. Cursor как агент¶
- Cursor поставляет ACP-совместимого агента для сторонних IDE (например JetBrains): установка из реестра ACP, авторизация аккаунтом Cursor (доки Cursor).
- Точная команда запуска и флаги — по актуальной документации Cursor; в этой заметке не фиксируем (могут меняться).
4. Что делать в Cascade (направления, без обязательств)¶
- Спроектировать роль клиента ACP: запуск процесса агента, stdio, жизненный цикл сессий, отображение потока обновлений (diff, tool calls — см. спеку).
- Отделить встроенный чат/MCP от сессии ACP в UI (разные поверхности или явные режимы).
- Опционально: MCP-over-ACP (RFD) — если нужен единый контур с уже существующими MCP-инструментами.
5. Локальный smoke (репозиторий)¶
samples/AcpSmoke/README.md— Python-клиент (agent-client-protocolна PyPI) + эталонныйecho_agentиз upstream.samples/AcpSmokeDotnet/README.md— тот же сценарий клиентом на .NET (NuGetAgentClientProtocol, неофициальный SDK).
Проверяется, что цепочка initialize → new_session → prompt работает на машине разработчика. Это не замена интеграционного теста с Cursor.
6. Полезные ссылки¶
- Introduction
- Initialization, Prompt turn
- Python SDK, TypeScript SDK; для C# в smoke используется community-пакет на NuGet (см. §5).
- Список клиентов и редакторов