Обновить
8K+
13

Пользователь

7
Рейтинг
1
Подписчики
Отправить сообщение

Согласен, формулировка об «устаревании» 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) позволяет серверу самому присылать агенту события (например, о сработке детектора движения) без постоянного опроса со стороны клиента.

В Delphi порог вхождения определяется наличием или отсутствием компонент.

А замена универсальной функции набором функций с разными типами параметров – это тоже, только в профиль. Алгоритм один, на вход принимает данные в жестко заданном виде. Даже если определена функция, принимающая на вход данные в необычной форме, все равно их нужно будет преобразовать под формат алгоритма. А как это делается – неважно. Скрыто, как это делает OpenCV, или вызовом одной из специфических функций, которая все равно делает скрыто такие преобразования. Для пользователя проще скрытое преобразование.

Тогда уж

With TFileStream.Create('C:\hiberfil.sys', fmOpenRead) do
try
  // Делаем что-то полезное
finally
	Free;
end;

Надеюсь на советы знатоков...
А так - у каждого своя мечта и путь свой...

А хотите, я его стукну? Он станет фиолетовым, в крапинку!
Тайна третьей планеты ©

Информация

В рейтинге
1 100-й
Зарегистрирован
Активность