本地模型服务协议(LMSP)
- 草案 1.0
- 更新于
- 查看 Markdown
LMSP 解决什么问题
LMSP(Local Model Service Protocol,本地模型服务协议)是一套开放协议,面向在用户自己设备或局域网中运行语言模型的软件,以及使用这些软件的客户端。
常驻的本地服务会在约定地址上描述自己并列出模型,用 JSON 或服务器发送事件(SSE)回应生成请求,并把长时间的生成作为持久化任务来运行:任务可以取消,客户端断线后也可以重新接上。同一个服务还兼容 OpenAI API,因此今天已有的客户端可以继续使用。
LMSP 并不取代 OpenAI API、Ollama 或 MCP,而是把它们的优点组合成一个适合本地常驻服务的协议层。
概览
| 主题 | 概要 |
|---|---|
| 默认地址 | http://127.0.0.1:17832 |
| 服务描述 | GET /.well-known/lmsp.json |
| 核心接口 | /lmsp/v1,基于 HTTP 的 JSON,流式传输使用服务器发送事件(SSE) |
| 兼容接口 | 面向 OpenAI 客户端的 /v1,面向 Ollama 客户端的可选 /api |
| 服务发现 | 手动配置、探测本机约定地址、可选的 mDNS 与 DNS-SD(_lmsp._tcp.local.) |
| 认证 | 通过本机配对获取的 Bearer Token |
| 持久化 | 嵌入式 SQLite,任务在服务重启后仍然保留 |
| 契约 | OpenAPI 3.2 |
快速试用
如果你的机器上正运行着 LMSP 服务,完整流程如下。请先按第 10.2 节完成配对以获得令牌,并把它保存在 LMSP_TOKEN 中。
# 1. 发现服务
curl http://127.0.0.1:17832/.well-known/lmsp.json
# 2. 列出本地模型
curl http://127.0.0.1:17832/lmsp/v1/models \
-H "Authorization: Bearer $LMSP_TOKEN"
# 3. 生成响应
curl http://127.0.0.1:17832/lmsp/v1/responses \
-H "Authorization: Bearer $LMSP_TOKEN" \
-H "Content-Type: application/json" \
-d '{"model":"qwen3:14b-q4_k_m","input":[{"type":"message","role":"user","content":[{"type":"input_text","text":"Hello"}]}]}'
与其他协议的关系
| 协议 | 覆盖范围 | 与 LMSP 的关系 |
|---|---|---|
| OpenAI API | 云端托管的模型,Responses API 是其最新接口。 | LMSP 的核心接口沿用 Responses 的结构,服务同时提供兼容 OpenAI 的接口。 |
| Ollama | 本地运行时,已提供兼容 OpenAI 的接口。 | 它可以作为适配器放在 LMSP 服务之后,LMSP 也定义了可选的兼容 Ollama 的接口。 |
| MCP | 把智能体连接到工具和上下文。 | LMSP 把智能体连接到模型。两者都倾向于无状态发现,而不是强制会话。 |
| A2A | 智能体之间的协作。 | LMSP 的服务描述和任务分别借鉴了其服务卡片和显式任务状态。 |
资源
- 规范 1.0 版(草案)。
- OpenAPI 契约,提供 JSON 和 YAML 两种格式。
- 面向语言模型的 llms.txt 和 llms-full.txt。
- 每个页面都提供 Markdown 版本:把页面地址末尾的斜杠换成
.md即可,例如/zh-cn/lmsp/1.0/tasks.md。
协议规范 1.0
- 概述
LMSP 1.0 草案概述:本地模型服务协议是什么、它所借鉴的设计、分层架构、阅读规范的方法,以及全文使用的术语。
- 传输与部署
LMSP 服务的默认监听地址、传输方式、流式格式和 URL 布局,以及它如何作为独立于模型进程的操作系统服务常驻运行。
- 服务发现
LMSP 客户端如何通过手动配置、探测本机地址和可选的 mDNS/DNS-SD 找到本地服务,以及如何读取 Well-Known 服务描述文档。
- 接口总表
LMSP 1.0 全部接口的总表,包含方法、路径、必需性和用途,以及关于路径、认证和可选接口的约定。
- 模型目录
LMSP 服务如何列出本地模型,包括模型对象及其能力标志、模型生命周期状态、稳定的模型 id 和目录修订号。
- 响应与流式传输
LMSP 的核心对话接口:Responses 风格的请求与输出项、同步与流式生成、服务器发送事件的类型、事件 id、断线重连以及工具调用。
- 异步任务
LMSP 如何把长时间的生成作为持久化任务来运行,包括创建任务、任务状态机、幂等取消、事件流,以及未完成任务的重启策略。
- OpenAI 与 Ollama 兼容层
LMSP 服务如何通过叠加在同一个执行内核之上的轻量数据转换层,兼容现有的 OpenAI 和 Ollama 客户端,以及这种兼容性的边界。
- 通用协议规则
适用于所有 LMSP 接口的通用规则,包括版本请求头与扩展、幂等键、带错误码的 problem+json 错误格式,以及健康检查。
- 本地安全要求
LMSP 服务的安全要求,包括回环绑定、配对与 Bearer Token、权限范围、防范恶意网页的 Origin 与 Host 校验、局域网模式和日志规则。
- 持久化
LMSP 服务如何保存自己的状态:嵌入式 SQLite 数据库、建议保留的表、任务与事件的事务规则、保留期,以及启动时的恢复。
- 最小可用范围
首个 LMSP 实现的建议范围:构成可用闭环的十项内容,以及规范中可以推迟到后续版本的部分。
常见问题
LMSP 是什么?
LMSP(Local Model Service Protocol,本地模型服务协议)是一套开放协议,面向运行在用户自己设备或局域网中的语言模型服务,规定客户端如何发现服务、列出模型、请求响应、接收流式输出以及运行长任务。
LMSP 会取代 OpenAI API、Ollama 或 MCP 吗?
不会。LMSP 建立在它们之上:核心接口沿用 OpenAI Responses 的结构,服务可以同时提供兼容 OpenAI 和兼容 Ollama 的接口,协议还借鉴了 MCP 的无状态发现和 A2A 的任务状态。
现有的 OpenAI 客户端可以使用 LMSP 服务吗?
通常可以。只需把 base URL 改为 LMSP 服务的地址,并把 LMSP 令牌作为 API Key。但它们无法自动发现服务,因为服务发现需要支持 LMSP 的客户端。
客户端如何发现本地的 LMSP 服务?
按顺序尝试三种方式:先使用用户手动输入的地址,再访问本机约定地址的 /.well-known/lmsp.json,最后在局域网中通过可选的 mDNS 与 DNS-SD 浏览 _lmsp._tcp.local.。
只监听 localhost 的模型服务安全吗?
不一定,因为网页可能尝试访问本机端口。LMSP 服务默认绑定回环地址,要求客户端通过本机配对获取 Bearer Token,校验 Origin 与 Host 请求头,局域网模式下必须启用认证。
这份规范目前处于什么状态?
1.0 版是首个公开草案,仍可能发生不兼容的修改。英文文本是规范性文本,译文仅为方便阅读而提供。