本地模型服務協定(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 | 把 AI 代理連線到工具和上下文。 | LMSP 把 AI 代理連線到模型。兩者都傾向於無狀態發現,而不是強制工作階段。 |
| A2A | AI 代理之間的協作。 | LMSP 的服務描述和任務分別借鑑了其服務卡片和顯式任務狀態。 |
資源
- 規範 1.0 版(草案)。
- OpenAPI 合約,提供 JSON 和 YAML 兩種格式。
- 面向語言模型的 llms.txt 和 llms-full.txt。
- 每個頁面都提供 Markdown 版本:把頁面位址末尾的斜線換成
.md即可,例如/zh-tw/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 版是首個公開草案,仍可能發生不相容的修改。英文文本是規範性文本,譯文僅為方便閱讀而提供。