dsh-local-model:让 DeepSeek Harness 直连本地推理服务

前言

DeepSeek Harness(DSH)默认通过云端 API 完成对话与 Agent 工具调用。若你已在本机部署 Ollama、LM Studio、llama.cpp server 或 vLLM 等推理后端,仍走云端会消耗账号 token,且与「数据不出本机」的需求相悖。社区插件 dsh-local-model(维护者 songzhiyin)在 Harness 内注册 provider 路由 local,把模型请求转发到本机端点,不访问 api.deepseek.com,也不读取账号凭据。下面介绍其能力、安装方式与典型用法。

这是什么

dsh-local-model 是分类为「模型推理」的 DSH 插件,npm 包名同为 dsh-local-model,当前版本 1.0.0,许可证 MIT,要求 Node >= 20 与 DSH ^0.2.0-rc.2。它在 Harness 中注册自定义 LLM 适配器,兼容 OpenAI 协议(如 Ollama /v1、LM Studio、llama.cpp、vLLM / SGLang 等)与 Ollama 原生 API,并自带「设置 → 模型」页的 Local Model 卡片,用于测试连接与查看本机模型列表。

核心功能

路由与协议

插件通过 ctx.llm.registerAdapter(["local"], adapter) 注册适配器,将 Harness 的 GenerateOptions 转为目标协议请求,再把流式响应映射为 StreamChunk(含文本、reasoning、工具调用等块)。支持两种传输:

模式 api 取值 典型 baseURL
OpenAI 兼容 openai 如 http://127.0.0.1:11434/v1(Ollama)、http://localhost:1234/v1(LM Studio)
Ollama 原生 ollama http://127.0.0.1:11434

README 建议:后端已有 OpenAI 兼容端点时优先用 openai;需要 Ollama 原生 thinking / reasoning 时用 ollama。

工具调用与兜底

适配器会转换 Harness 的工具调用与工具结果历史,Agent 的 bash、文件、子代理等工具可照常使用。部分本地模型会把工具调用写成纯文本 JSON;插件内置兜底,可识别 {...} JSON、<tool_call>...</tool_call> 以及 markdown 代码块中的 JSON,并在工具名匹配时转为真正的工具调用。跑 Agent 时 README 建议选用原生支持 function calling 的模型(如 qwen3-coder、llama3.1、devstral)。

模型发现与配置热更新

可从本地端点自动拉取模型列表(Ollama /api/tags、OpenAI /v1/models)。配置字段均为 volatile,修改后无需重启 Harness。端点不支持列表查询时,可在 models 数组中静态声明模型。

可视化配置

客户端向「设置 → 模型」的 settings.models.provider-card 扩展槽注册 Local Model 卡片:可切换 openai / ollama、填写端点、执行「测试连接」并展示发现的模型;完整配置项在插件配置表单或同一设置页完成。

连通性细节

「测试连接」优先经宿主进程 ctx.remote.llm.discoverModels() 探测,以规避浏览器 CORS 与 localhost 解析到 IPv6 导致失败等问题;默认端点使用 127.0.0.1 而非 localhost,并对回环地址做自动兜底重试。

安装与启用

命令行安装(README 推荐,其中 web 为 profile 名,桌面版常见为 desktop):

dsh plugin --profile web add dsh-local-model

也可在 Harness 设置 → 插件市场(或 插件 页)搜索 dsh-local-model 一键安装;多数情况下刷新页面即可生效。

从 GitHub 安装(资料原文命令):

dsh plugin --profile web add github:<songzhiyin>/dsh-local-model

安装后,在 插件页 → dsh-local-model → 配置 或 设置 → 模型 → Local Model 中填写端点与协议。

典型用法(Ollama)

先在本机启动推理服务并拉取模型(示例使用带 tools 能力的模型):

ollama serve
ollama pull qwen2.5-coder:14b

安装插件:

dsh plugin --profile web add dsh-local-model

在 Harness 中:

  1. 打开 设置 → 模型,找到 Local Model,确认端点(OpenAI 模式默认 http://127.0.0.1:11434/v1);
  2. 在会话的模型选择器里将 provider 切到 Local Model 并选择模型;
  3. 开始对话,推理全程在本机完成。

若长对话被截断,需留意本地服务的上下文上限(例如 Ollama 可通过 OLLAMA_CONTEXT_LENGTH=32768 ollama serve 等环境变量调整,详见 README 常见问题)。

主要配置项

在插件配置或 Local Model 设置中可调整(节选,默认值以 README 为准):

字段 类型 默认值 说明
api "openai" \| "ollama" "openai" 传输协议
baseURL string http://127.0.0.1:11434/v1 本地端点根地址
apiKey string "" 本地服务需鉴权时填写
defaultModel string "" 无法枚举模型时的兜底名
contextWindow integer 8192 默认上下文窗口
maxTokens integer 2048 默认单次最大输出 token
temperature number 0.7 采样温度
streamIdleTimeoutMs number 300000 流式空闲超时(毫秒)
models array [] 静态模型清单

models 示例:

[
  { "id": "qwen2.5-coder:14b", "name": "Qwen2.5-Coder 14B", "contextWindow": 32768, "maxTokens": 4096 }
]

适用场景与注意

适合谁: 已在本机或内网部署 OpenAI 兼容或 Ollama 推理服务、希望用 DSH 的 Agent 与工具能力但不想登录 DeepSeek 账号或消耗云端 token 的开发者。

使用前注意:

  • 插件在 当前 DSH 进程权限 下运行,安装前请阅读 GitHub 仓库 源码与 MIT 许可证,确认行为符合你的安全策略。
  • 社区插件目录(如 skillhub.cn)为独立生态站点,与 DeepSeek / 幻方无官方从属关系;安装来源以 npm、插件市场或你信任的 GitHub 地址为准。
  • 工具调用稳定性取决于所选本地模型;纯文本 JSON 工具输出依赖插件兜底,仍不稳定时应更换模型。

结尾

dsh-local-model 把 Harness 的 local provider 接到本机 OpenAI 兼容端点或 Ollama 原生 API,配合模型发现、工具历史转换与设置页连通性测试,适合本地优先的 Agent 开发流程。进一步了解可访问 插件目录页 与 GitHub README。

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

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

Xiaoye