dsh-local-llm:探測並註冊本地 OpenAI 兼容 LLM 爲 DSH 模型提供商

前言

在 DeepSeek Harness(DSH)裏把模型提供商指到 http://127.0.0.1:1234/v1,看起來只是改一行地址,實際常會卡在兩類問題上:Harness 自帶的系統提示與工具 schema 在未輸入用戶內容前就約佔 30,000 tokens,而本地服務若仍用 8192 的默認上下文,會直接拒絕請求;不少本地 chat 模板也不認識 OpenAI 擴展裏的 developer 角色或 reasoning_effort,會返回 400。手工寫 YAML 往往要在踩坑之後才知道該關哪些兼容開關。

下面介紹社區插件 dsh-local-llm(維護者 philo-max,分類:模型推理)。它在寫配置之前探測端點能力,並把 LM Studio、Ollama、vLLM、llama.cpp server 等一切實現 OpenAI chat-completions 協議的本地服務,註冊進 Harness 的 llm-pi-ai 配置。

這是什麼

插件倉庫:philo-max/dsh-local-llm。目錄頁:skillhub.cn/plugins/philo-max/dsh-local-llm。許可證 MIT,當前 package 版本 0.1.0。

一句話定位:檢測、探測並註冊本地 OpenAI 兼容 LLM 服務爲 DeepSeek Harness 的 model provider。README 還列明可與 SGLang、KoboldCpp、text-generation-webui、Jan、LocalAI 等配合使用。

核心功能

上線前探測

插件針對兩類常見失敗做可檢測的探針(在 local_llm_scan 中設置 probe: true 時):

  1. 已加載上下文長度:例如通過 LM Studio 原生 /api/v0/models 區分 loaded_context_length 與 max_context_length。
  2. 工具調用:用 get_weather schema 做真實往返,確認模型能輸出可解析的 tool_calls。
  3. 兼容項:是否接受 developer 角色與 reasoning_effort;不支持的端點會帶 warnings。

註冊時只需寫入端點實際需要的開關(例如 supportsDeveloperRole: false 會寫入 compat.supportsDeveloperRole: false)。

Settings 面板

Bundle 在 Settings → Local LLM 提供界面:填寫 host 與端口、掃描後每個端點以卡片展示廠商、已加載/最大上下文、是否支持 tool calling;選定模型後點 Register as provider,無需手寫 YAML。面板通過 Host 上 ctx.webServer 註冊的同源路由 /local-llm/scan 與 /local-llm/register 與 Host 通信(純 JS Client 模塊無法直接調 Host 服務)。

工具

local_llm_scan

探測常見端口上可達的服務。

參數 類型 默認 含義
ports integer[] 1234, 11434, 8000, 8080, 5000, 3000, 7860, 8888 要探測的端口
host string 127.0.0.1 探測目標主機
probe boolean false 是否運行能力探針
apiKey string — 需要 Bearer 的服務可填

local_llm_register

向 llm-pi-ai 配置寫入可用的 provider 條目。必填:providerId(小寫連字符路由名)、baseUrl(含 /v1 的 OpenAI 兼容 URL)、modelId(與服務端報告一致)。可選包括 displayName、contextWindow(應使用已加載上下文,而非模型最大值)、maxTokens(默認 8192)、apiKey、以及若干 supports* 與 dryRun。變更在下一次模型請求生效,無需重啓 Harness。

插件通過 cordis.patch.yml 自行掛載;bundle 配置字段均可選,例如:

- id: local-llm
  name: 'dsh-local-llm'
  config:
    host: 127.0.0.1
    ports: [1234, 11434, 8000, 8080]
    probe: true
    timeoutMs: 5000

安裝與啓用

官方 README 給出的方式是克隆倉庫後,將目錄作爲 bundle 安裝到 Harness profile;插件會自動通過 cordis.patch.yml 掛載,無需手工改 profile:

git clone https://github.com/philo-max/dsh-local-llm

安裝前請自行審閱源碼與 MIT 許可證。插件在當前 DSH 進程權限下運行,會掃描本機端口並寫入模型提供商配置,僅在信任環境與來源時使用。

DeepSeek Harness 生態強調「一切皆插件」;skillhub.cn 爲社區目錄站點,與 DeepSeek / 幻方無官方從屬關係。

典型用法:LM Studio

先做掃描(含探針):

local_llm_scan { probe: true }

示例返回片段(字段以實際掃描爲準):

{
  "baseUrl": "http://127.0.0.1:1234/v1",
  "vendor": "lmstudio",
  "models": ["gemma-4-12b-it-qat-uncensored-heretic-v3"],
  "context": { "loadedContext": 32768, "maxContext": 262144 },
  "tools": { "supported": true },
  "compat": { "supportsDeveloperRole": true, "supportsReasoningEffort": true }
}

再註冊 provider;contextWindow 使用 loaded 值 32768,若聲明 262144 的最大值,Harness 可能構造出服務端仍會拒絕的請求:

local_llm_register {
  providerId: "local-lmstudio",
  baseUrl: "http://127.0.0.1:1234/v1",
  modelId: "gemma-4-12b-it-qat-uncensored-heretic-v3",
  contextWindow: 32768
}

適用場景與注意

適合誰:在本機跑 OpenAI 兼容推理服務、希望 DSH Agent 直接走本地模型、又不想反覆手調 YAML 與兼容開關的開發者。

README Gotchas 中值得留意的點(均爲文檔自述,非第三方案例):

  • 滑動窗口模型佔用的 VRAM 可能遠低於名義上下文;LM Studio 的 --estimate-only 按全注意力估算,可能高估 2–3 倍,應以真實加載爲準。
  • 推理模型可能把輸出預算全用在 chain of thought 上;文檔示例中 max_tokens: 200 時 content 爲空,建議輸出側至少留 1000–2000 tokens。
  • 方向性 ablation 需要全精度權重;.gguf 已量化,若需改模型應使用原始 safetensors。

結尾

dsh-local-llm 把「本地端點能不能扛 Harness 默認負載」從試錯改成掃描與探針,再用工具或 Settings 面板寫入 llm-pi-ai。需要細節與 issue 時見 GitHub:https://github.com/philo-max/dsh-local-llm;目錄入口:https://www.skillhub.cn/plugins/philo-max/dsh-local-llm。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜