前言¶
DeepSeek Harness (DSH) 采用插件化架构,扩展能力通过插件实现。在 Web 界面中直接调用本地模型通常需要手动管理 llama-server 进程或通过外部工具。vmarcelo49/dsh-local-models 插件为此提供了解决方案,它直接在 DSH 的 Web 界面中添加了“Local Models”选项卡,允许用户选择 .gguf 文件,调整推理参数,并通过 llama-server (llama.cpp) 启动模型。
该插件由 Vmarcelo49 维护,采用 MIT 许可证。它不 fork llama.cpp,而是直接使用上游二进制文件,并提供了零构建步骤的安装方式。
核心功能¶
模型选择器¶
界面内嵌文件浏览器,仅显示目录和 .gguf 文件。后端通过解析 GGUF 头部信息,展示架构、量化类型、层数、上下文长度以及 MoE 检测结果。
启动选项¶
提供细粒度的模型加载参数控制:
* 上下文滑块:以 8K 为步长调整,上限受限于模型训练的上下文长度。
* KV Cache 量化:分别选择 K 和 V 的量化类型,界面显示每元素字节数。
* MTP 与思考:固定 MTP 草稿深度(0-7)和思考级别(off/low/medium/xhigh),支持保留思考内容的开关。
* 视觉与 MoE:支持可选的视觉投影仪(mmproj)和 MoE 专家放置设置。
实时 VRAM 估算¶
系统会检测 GPU(NVIDIA 通过 nvidia-smi,AMD 通过 sysfs),计算权重、KV 缓存、计算图开销与 GPU 总显存的对比。界面会显示“适合”、“安全余量”以及“最大上下文”三行建议值。
配置文件与路由模式¶
- 配置文件:保存命名后的启动配置,支持一键重载。
- 路由模式:通过 OpenAI 兼容端点提供服务。模型按需加载,默认同时驻留一个。启动路由器后,插件会自动将模型注册为 dsh 的 LLM 提供商路由。
终端覆盖¶
提供实时日志查看功能,可以直接在选项卡内查看 llama-server 的运行状态和输出。
安装与启用¶
安装步骤¶
该插件通过 pnpm 管理依赖,需确保 pnpm 已在系统 PATH 中。
# 从 npm 注册表安装
dsh plugin --profile web add dsh-local-models
# 或直接从 Git 克隆安装(无构建步骤)
dsh plugin --profile web add github:Vmarcelo49/dsh-local-models
安装后,插件会被写入 dsh.profile.bundles 数组。由于涉及 Node 端路由注入,安装后必须重启 DSH Web 进程,然后刷新浏览器,并在设置中打开 Local Models 选项卡。
前置要求¶
- DSH 需要启用
web配置文件。 - 系统中需安装
llama-server二进制文件(上游llama.cpp)。
典型用法¶
- 加载模型:在 Local Models 选项卡中,通过文件浏览器选择一个
.gguf文件。 - 调整参数:根据 VRAM 估算结果,调整上下文长度、KV 量化类型、MTP 深度以及思考级别。保存配置后点击加载。
- 注册与使用:模型加载成功后,点击“Register in dsh”按钮。该插件会将运行中的服务注册为
llm-pi-ai提供商路由,随后可在 DSH 的通用模型选择器中找到并调用。 - 配置路由:如果想在一个端点中切换多个模型,可以将配置保存为 Profiles,然后点击“Start router (from profiles)”。
- 自动启动:在 Router 卡片中勾选“Start the router automatically when dsh starts”,插件会在 DSH 启动时自动加载路由器并注册模型,无需手动操作。
配置说明¶
插件运行依赖以下环境变量(可通过代码块 lib/client.js 修改默认值):
| 变量名 | 默认值 | 说明 |
|---|---|---|
LOCAL_MODELS_PORT |
8080 |
llama-server 监听端口 |
LOCAL_MODELS_ROUTER_MAX |
1 |
路由模式下同时驻留的最大模型数 |
LOCAL_MODELS_MMPROJ_CPU |
1 |
视觉投影仪权重是否保持在 RAM 中(0 为全 GPU) |
DSH_HOME |
~/.dsh |
DSH 数据目录 |
注意事项¶
- 无版本门控:该插件声明无 peer dependencies,因此不会因 DSH 版本不匹配而被拒绝安装。
- 变更生效时机:Node 端的配置或路由变更需要重启 DSH;客户端界面的变更仅需刷新页面。
- 资源管理:路由模式支持闲置驱逐(Idle eviction),默认 30 分钟无请求后卸载模型以释放显存,防止资源耗尽。