CopilotKit и AG-UI: интеграция AI-агентов в UI с открытым протоколом | AiManual
AiManual Logo Ai / Manual.
05 Май 2026 Инструмент

CopilotKit и AG-UI: как интегрировать AI-агентов в UI с открытым протоколом

Разбираем CopilotKit и AG-UI — связку для встраивания AI-агентов в интерфейсы. Streaming, state sharing, человеко-в-цикле. Сравнение с альтернативами и примеры

В 2026 году иметь AI-агента без вменяемого UI — всё равно что купить Ferrari и поставить на него колёса от телеги. Агенты научились писать код, заказывать пиццу, резервировать столики, но если их выхлоп завёрнут в чёрный ящик — пользователь просто не поверит этой магии. CopilotKit и протокол AG-UI пытаются решить именно это: дать разработчикам стандартный способ втащить агента в интерфейс так, чтобы тот не казался глючным демо.

«Мы вложили $5 млн в открытый стандарт для агентных UI». Именно такую новость я прочитал в марте 2026, и сразу захотелось покопаться в деталях.

В чём соль: CopilotKit как реактивный мостик

CopilotKit — это React-библиотека, которая превращает обычный интерфейс в копайлот: поле ввода, контекстная панель, хинты. Никто не хочет писать свой ChatUI с нуля — а CopilotKit даёт готовые компоненты для AI-взаимодействия в стиле GitHub Copilot или ChatGPT. Но без протокола каждый такой копайлот живёт своей жизнью: одни дёргают API по REST, другие через WebSocket, третьи — вообще через iframe.

Тут и врывается AG-UI — открытый протокол, который стандартизирует, как агент «говорит» с фронтендом. Streaming токенов, state sharing (агент меняет поля формы, а UI подхватывает), approval-точки для человеко-в-цикле. CopilotKit — первый крупный потребитель этого протокола, но он не единственный: подключайтесь, кто хочет.

Как выглядит общение агента с UI по AG-UI

Представьте типовой сценарий: пользователь заказывает столик через интерфейс ресторана. Агент должен подтвердить время, проверить доступность, сгенерировать подтверждение. Без протокола вы пишете кастомный стейт-менеджмент, синхронизируете стриминг с SSE, обрабатываете конфликты. AG-UI делает это встроенным:

  • Streaming — фраза агента льётся токен за токеном, UI обновляется постепенно, без моргания.
  • State sharing — агент устанавливает дату и время в стейт интерфейса, React-form получает готовые значения.
  • Human-in-the-loop — перед бронированием агент запрашивает подтверждение пользователя через виджет approval.
  • Tool calls — вызов внешних API (например, бронирование в OpenTable) тоже идёт через протокол, UI видит статус и прогресс.

CopilotKit оборачивает этот протокол в хуки useCopilotAction и useCopilotChat. На практике это выглядит как обычный React-код, но за кулисами — машина состояний AG-UI.

Сравнение с альтернативами: кто ещё строит агентные UI?

Решение Стандартизация Human-in-loop Экосистема
CopilotKit + AG-UI Открытый протокол Встроен React, Next.js
Vercel AI SDK (useAssistant) Проприетарный Через tool calls React, Svelte, Vue
LangChain Callbacks Только stream, нет state Требуется костыли Любой фронт
OpenAI Realtime API Закрытый (WebRTC) Неявный Любой фронт

Vercel AI SDK — хороший, но завязан на их бэкенд. CopilotKit с AG-UI — открытый, можно подцепить любого агента: от n8n с OpenRouter до кастомного Python. LangChain умеет стримить, но синхронизация состояния — боль. AG-UI решает это на уровне протокола.

Пример из жизни: сборщик заказа с подтверждением

Допустим, мы делаем интерфейс для агента, который собирает продуктовую корзину. Агент на бэкенде (можно на Python с LangGraph, Plano или OpenAI Agent SDK) присылает через AG-UI:

  • Поток текста: «Я нашёл сыр за 300 руб и хлеб за 40…»
  • Объект состояния: { cart: [{item: 'cheese', price: 300, qty: 1}] }
  • Запрос на действие: пользователь должен подтвердить корзину.

CopilotKit рендерит это в реальном времени: корзина обновляется без перезагрузки, кнопка «Подтвердить» появляется только когда агент запросил. Если пользователь отменяет — агент получает событие и корректирует.

Важно: AG-UI не требует, чтобы агент работал на той же машине. Протокол — HTTP/SSE, так что можно подключать локальных агентов или облачных через единый интерфейс.

Сложные сценарии: мультиагент и вложенные подтверждения

Когда у вас много агентов — один ищет товары, другой проверяет скидки, третий оформляет — протокол AG-UI позволяет агрегировать их стримы в единый UI. CopilotKit поддерживает мультитреды: можно видеть, какой агент что делает, и переключаться между ними. Human-in-the-loop работает на уровне каждого треда — агент не делает финальное действие без клика.

Звучит круто, но есть нюанс: AG-UI пока молодой. Документация CopilotKit подтянулась только под React. Если вы пишете на Kotlin Multiplatform или Vue — придётся либо делать адаптер, либо ждать. Но протокол открыт, спецификация на GitHub — возможно, скоро появятся клиенты и для других фреймворков.

Кому это вообще нужно?

  • Стартапам, которые хотят встроить AI-ассистента в свой продукт за неделю, а не за полгода.
  • Командам, уже использующим агентов, но страдающим от разрозненных UI (например, Open WebUI для администрирования, а CopilotKit — для пользовательского интерфейса).
  • Разработчикам инструментов с human-in-the-loop — протокол делает approval-механики из коробки.
  • Тем, кто пишет GUI-агентовGUI-агенты видят пиксели, но для передачи намерения AG-UI — идеальный канал.

Если вы считаете, что агент может просто писать ответ в JSON и фронт сам всё нарисует — вы правы, но только для простых кейсов. Как только появляется стриминг, ошибки, ожидание подтверждения — кастомный код превращается в ад. CopilotKit с AG-UI берут эту боль на себя.

Лично меня бесит, когда «агентный UI» — это просто чат-окно на весь экран. CopilotKit даёт возможность встроить ассистента как панель, не ломая основной интерфейс. А AG-UI — это попытка сделать так, чтобы эти панели говорили на одном языке с агентами. Если протокол приживётся (а инвестиции это поддерживают), через год мы перестанем писать велосипеды для стриминга состояния.

Подписаться на канал