Pull to refresh

Comments 3

По этой причине поддержка транспорта stdio в проекте была признана устаревшей

Зря. Это наиболее эффективный способ взаимодействия по MCP. Я даже писал (на Delphi) разделенный MCP сервер для удаленных серверов: локальная часть принимает MCP по stdio и общается с удаленной по сети. Преимущества: легкий бинарный протокол по TCP без HTTP(s)-оверхеда, встроенное сжатие, что уменьшает бутылочное горло сетевой передачи (для РФ актуально), простой upload/download файлов (с HTTP транспортом - как передавать файлы?). Для агента это выглядит как локальный MCP сервер.

Использование Readln в Delphi по умолчанию буферизует ввод

А не надо использовать эти странные вещи. Есть WinAPI.

Согласен, формулировка об «устаревании» stdio была – слишком. Скорее «устаревание» – это имелось ввиду для самого проекта.
Для локального использования это действительно самый эффективный стандарт MCP, а проблемы буферизации ввода в Delphi решаются отказом от Readln в пользу WinAPI (ReadFile/WriteFile поверх STD_INPUT_HANDLE). Мусор от DLL в stdout также лечится перехватом колбеков логирования OpenCV и FFmpeg. Схема с локальным stdio-прокси и удалённым TCP-мостом со сжатием должна работать прекрасно.
Что-то наподобие этого:
[ИИ-Клиент] <--- (stdio / JSON-RPC) ---> [Локальный прокси (Delphi)] <--- (TCP / Сжатие) ---> [Удаленный медиа-сервер (Delphi + GPU)]
Кроме этого, решает проблему передачи файлов без Base64-оверхеда.

Но там были еще аргументы для SSE:

  1. Позволяет держать один медиа-сервер с GPU и камерами на мощном ПК, а подключаться к нему с разных устройств (например, с ноутбука или из контейнеров в локальной сети). stdio – физически заперт на одной машине.

  2. Позволяет ИИ-агенту из WSL-окружения подключаться к Windows-хосту напрямую по сети без написания и поддержки прокси-прослоек или SSH-туннелей.

  3. При перезапуске IDE или падении ИИ-клиента HTTP-сервер продолжает работать, изолируя сессии по HTTP-заголовкам. В случае со stdio – падение клиента часто оставляет дочерний процесс сервера висеть в памяти Windows.

  4. Использование официального транспорта SSE (Server-Sent Events) позволяет серверу самому присылать агенту события (например, о сработке детектора движения) без постоянного опроса со стороны клиента.

Спасибо! Очень интересный материал , я так понимаю совместимо и с Lazarus

Sign up to leave a comment.

Articles