Минимально жизнеспособный объём

12.1 Первая версия

Первой версии не обязательно реализовывать все мультимодальные возможности, загрузку моделей или голос в реальном времени. Она образует работоспособный замкнутый цикл, как только предоставляет:

  1. Обнаружение сервиса через /.well-known/lmsp.json.
  2. Необязательное объявление _lmsp._tcp.local. в локальной сети.
  3. GET /lmsp/v1/models.
  4. POST /lmsp/v1/responses, как синхронно, так и в виде потока SSE.
  5. Асинхронные задачи: создание, опрос и отмена, с хранением в SQLite.
  6. Возобновление оборванных потоков с помощью Last-Event-ID или after.
  7. Bearer-токены, локальное сопряжение, а также защиту Origin и Host.
  8. Эндпоинты /v1/models и /v1/chat/completions, совместимые с OpenAI.
  9. Файл контракта OpenAPI 3.2 и межъязыковые тесты соответствия.
  10. Как минимум один настоящий бэкенд и проверку того, что задачи корректно восстанавливаются после перезапуска сервиса.

Суть замысла: LMSP даёт полный набор возможностей, интерфейс OpenAI даёт готовую совместимость, mDNS и описание сервиса дают автоматическое обнаружение, а модель задач на SQLite даёт локальное хранение.

12.2 Что может подождать

Всё, что не упомянуто в списке выше, может появиться в следующих выпусках. Сюда относятся необязательные эндпоинты (сохранённые ответы, а также загрузка и выгрузка моделей), эндпоинты OpenAI /v1/responses и /v1/embeddings, API, совместимый с Ollama, и все типы содержимого, кроме текста.

Этот объём — путь к работоспособному первому выпуску, а не профиль соответствия. Сервис, заявляющий о поддержке LMSP 1.0, по-прежнему реализует все обязательные эндпоинты со страницы 4 и обязательное поведение, описанное на остальных страницах.