Markdown как протокол для агентного пользовательского интерфейса с потоковым выполнением

Разработчик создал прототип, исследующий, как объединить генеративный UI с выполнением кода для AI-агентов, используя Markdown в качестве унифицированного протокола. Система потоково передаёт текст, исполняемый код и данные в одном ответе, причём код выполняется инкрементально по мере поступления.
Протокол: Markdown с тремя типами блоков
Подход использует стандартный синтаксис Markdown, который LLM уже понимают, избегая необходимости обучать новым форматам. Он определяет три типа блоков:
- Текстовые блоки: Простое форматирование Markdown, которое потоково передаётся пользователю
- Блоки кода:
```tsx agent.runвыполняет TypeScript/JSX код на сервере в постоянном контексте - Блоки данных:
```json agent.data => "id"потоково передаёт JSON данные в UI-компоненты
Эти блоки могут чередоваться в любом порядке в рамках одного ответа. Парсер обрабатывает их инкрементально по мере поступления токенов от LLM.
Потоковое выполнение
Код выполняется построчно по мере генерации LLM, не дожидаясь закрытия всего блока кода. Это позволяет начинать API-вызовы, рендерить UI и выявлять ошибки, пока LLM ещё отправляет токены. Разработчик создал bun-streaming-exec для обработки этого, используя vm.Script с кастомной обёрткой, поскольку потоковое выполнение не является стандартным примитивом среды выполнения.
Агентный UI с примитивом mount()
Система использует React для генерации UI, поскольку LLM имеют обширный опыт работы с React-компонентами и JSX. Основной примитив — mount():
mount({
ui: () => <Card>Привет от агента!</Card>
});Когда LLM генерирует этот код и сервер выполняет его, mount() сериализует React-компонент и отправляет его клиенту для рендеринга в интерфейсе чата.
Паттерны потока данных
Прототип реализует четыре различных паттерна для перемещения данных:
- Клиент → Сервер (формы): Агент может ожидать ввода пользователя через формы
- Сервер → Клиент (потоковые данные): Блоки данных потоково передают JSON напрямую в смонтированные UI
- Сервер → LLM (console.log): Вывод
console.logи исключения возвращаются в LLM как новый ход - LLM → Сервер → Клиент (полный цикл): Полные циклы, где LLM генерирует код, который получает данные и рендерит UI с этими данными
Обратная связь
Система использует console.log как механизм для общения агента с самим собой. Когда LLM генерирует Markdown с блоками кода, текст потоково передаётся пользователю, а код выполняется инкрементально. Любой вывод console.* или исключения возвращаются в LLM как новый ход. Если вывода или исключений нет, система ждёт нового запроса пользователя.
Это позволяет агенту реагировать на собственное выполнение, например, проверять количество сообщений или приостанавливаться для ожидания ввода пользователя перед продолжением.
📖 Read the full source: HN AI Agents
👀 Смотрите также

Qwen 3.6 27B F16 проходит тест программирования Pacman, но 8-битные квантизации проваливаются — ключевые уроки по шаблонам и спекулятивному декодированию MTP
Пользователь с одного раза заставляет клон Pacman работать с Qwen 3.6 27B F16 — две из трех попыток дают почти идеальные игры. 8-битные квантизации полностью проваливаются. Подробные заметки о настройке шаблона чата и ускорении декодирования с MTP.

Два паттерна для предотвращения деградации памяти ИИ-агентов: AutoDream и Скептический поиск.
OpenClaw представляет две модели с лицензией MIT для решения проблемы деградации файловой памяти ИИ: AutoDream для ночной консолидации памяти и Skeptical Retrieval для оценки памяти с учетом затухания. Обе работают вместе в самосовершенствующемся цикле, чтобы контекст агента оставался актуальным.

2-промптовая система для переноса контекста между чатами Claude без потери токенов
Разработчик делится двумя подсказками для сжатия всего разговора с Клодом в структурированный блок контекста и загрузки его в новый чат, сохраняя решения, проделанную работу и следующие шаги.

Альтернативная настройка кодирования с ИИ после повышения цен Claude
Разработчик делится своей текущей настройкой ИИ для кодирования, используя GPT 5.4 в качестве основной модели, Codex в качестве резервной, включенной в подписку ChatGPT, и Minimax 2.7 в качестве запасного варианта с тарифным планом для программирования.