前言¶
在 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 時):
- 已加載上下文長度:例如通過 LM Studio 原生
/api/v0/models區分loaded_context_length與max_context_length。 - 工具調用:用
get_weatherschema 做真實往返,確認模型能輸出可解析的tool_calls。 - 兼容項:是否接受
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。