dsh-local-llm:在 DSH 设置页管理本机 llama.cpp Qwen3.5-4B

前言

在 DeepSeek Harness(DSH)里跑本地小模型,常见做法是单独起 llama-server,再在 profile 里手写 OpenAI 兼容路由。启停、上下文与路由不一致、长对话压缩溢出、以及「线上模型能不能把翻译/OCR 这类杂活甩给本机」往往要分好几处改配置。维护者 verson00 的 dsh-local-llm 把本机 llama.cpp 上的 Qwen3.5-4B 收进 设置 → 本地模型 一页:启停、启动参数、部署路径、与 cordis 的路由和压缩策略联动,并附带请求形状诊断与 local_worker 混合作业。插件分类为模型推理,当前 GitHub 星标为 0,许可证 MIT,版本 1.0.2。

这是什么

dsh-local-llm 是 DSH 的 bundle 插件:host 半为 ESM(index.js),client 半为手写模块,零依赖、零构建,装进 profile 即可用。面向 DSH 0.2.x(README 写明在 0.2.1-rc.5 上开发与验证;package.json 要求 engines.dsh 为 >=0.2.2-rc.1 <0.3.0)。运行环境文档写明为 Windows + NVIDIA GPU(8 GB 显存可跑 4B Q4),需自备 llama-server.exe(项目在 b12069 验证)及 Qwen3.5-4B 的 GGUF 与 mmproj。

目录与源码:

核心功能

启停与状态

插件自行 spawn 本机 llama-server,参数由设置页决定,支持一键启动、停止、重启。状态灯含义:绿为就绪、黄闪为加载中、灰为已停止、红为失败;失败时可展开 server.err.log 末尾。页面显示加载耗时、PID、端口、显存占用与当前启动参数。可与手动脚本共存:与 start.ps1 共用 pid 文件与日志时,页面显示「已就绪(外部启动)」,也可从页面停止。

启动参数

可配上下文长度(512–262144,8 GB 卡建议 ≤ 65536)、线程数、端口、主模型与视觉投影文件(自动扫描模型目录 .gguf)、视觉开关、思考模式与预算、历史思考保留、采样温度等。

部署路径与检测

四项路径——安装根目录、llama-server.exe、模型目录、日志目录——留空时按根目录推导:

exe    = <root>\bin\llama-b12069\llama-server.exe
models = <root>\models
logs   = <root>\logs

「检测」会校验存在性、列出模型目录中的 .gguf,给出「部署可用」或「不完整」。模型装在其它盘时改路径即可,无需改插件代码。

模型路由与压缩策略联动

自动将 provider local-qwen 的 contextWindow、maxTokens、baseURL 与页面设置对齐(写 cordis.patch.yml 并保留注释)。对 compaction-basic 写入本地模型专用压缩策略(headroomTokens: 0 加显式摘要上限),避免小窗口下触发点为负、每步压缩、摘要请求自身溢出的默认行为。

请求捕获(诊断)

插件在默认 loopback 端口 8091 起透明反向代理,把 provider 路由指过去后可观察 DSH 真实请求形状:消息数与角色分布、思考字段形态、工具输出体量、schema 字节数、max_tokens、是否流式等。只记录形状、不存正文、不落盘。页面可一键切换「经代理」或「直连」。

混合工作流(local_worker)

开启后注册 local_worker 工具与系统提示,在线模型可把自包含杂活交给本地 4B:

action 用途 输入
text 翻译、摘要、改写、提取要点、格式化 path 或 input
image 看图、OCR、抄写画面文字 paths
video 等距抽帧后逐帧分析,返回带时间戳文字 path + frames

每请求自动带 chat_template_kwargs: { enable_thinking: false },避免输出预算耗尽在思考块、正文为空。

安装与启用

前置

  • DSH >=0.2.2-rc.1 <0.3.0(不满足时组合阶段会跳过本 bundle)。
  • Windows、NVIDIA GPU、llama-server、Qwen3.5-4B GGUF 与 mmproj(见下文模型文件)。

安装步骤

  1. 取得插件目录(克隆或解压),确认含 package.json、index.js、lib/、client/。

  2. 装进 DSH profile:让 agent 执行(路径换成本机绝对路径):

   plugin_manager install_bundle(action: install_bundle, target: <本目录的绝对路径>)

等价做法:在 profile 的 package.json 增加 "dsh-local-llm": "link:<本目录>",并在 bundle 选择列表加入 dsh-local-llm。

  1. 重启 DSH(host 半在启动时加载)。重启后设置页左侧出现「本地模型」。

  2. 若尚未配置路由,在 profile 的 cordis.patch.yml 增加 OpenAI 兼容路由(示例与 README 一致):

   - id: llm-pi-ai
     name: "@deepseek-ai/dsh-llm-pi-ai"
     config:
       providers:
         local-qwen:
           displayName: 本地 Qwen3.5 4B
           api: openai-completions
           baseURL: http://127.0.0.1:8080/v1
           headers:
             Authorization: Bearer local-no-auth
           models:
             - id: qwen3.5-4b
               name: Qwen3.5 4B (本地)
               contextWindow: 65536
               maxTokens: 8192
               input: [text, image]
               reasoningEfforts: false
  1. 将 Qwen3.5-4B-UD-Q4_K_XL.gguf 与 mmproj-F16.gguf 放入 <安装根目录>\models\,确认 llama-server.exe 在 <安装根目录>\bin\llama-b12069\。

收录进插件市场前,也可在 插件 → 添加插件 填仓库地址,或命令行:

dsh plugin --profile <profile> add github:verson00/dsh-local-llm
https://github.com/verson00/dsh-local-llm

典型用法

  1. 打开 设置 → 本地模型。
  2. 展开「部署路径」,确认四项均为 ✓,或改为本机路径后点「检测」。
  3. 展开「启动参数」,按显存设置上下文(8 GB 卡建议 ≤ 65536),点「保存」。
  4. 在「服务状态」点「启动」,待状态灯变绿(约 3–10 秒)。
  5. 在模型选择器选「本地 Qwen3.5 4B」对话;或在会话中让 agent 使用 local_worker。
  6. 需要混合作业时,展开「混合工作流」打开开关并保存。

停止:设置页点「停止」,或 stop-llm.cmd。插件停止时不会结束已独立运行的模型进程。

spawn 失败或旧版崩溃时的外部启动

1.0.1 曾因未监听 spawn 的 error 事件导致点「启动」后 DSH 整体退出;1.0.2 已修复为仅标红并提示原因。若 Windows 上仍无法由插件 spawn,可按 README 用 PowerShell 外部启动;插件通过 /health 与 logs\server.pid 识别,页面显示「已就绪(外部启动)」,路由与 local_worker 仍可用。外部启动示例参数中强调 --parallel 1、--ctx-size 与设置页一致、--reasoning off、看图需 --mmproj。

模型文件

  • 基座:Qwen/Qwen3.5-4B
  • 本机常用:Qwen3.5-4B-UD-Q4_K_XL.gguf(约 2.8 GB)、mmproj-F16.gguf(约 0.7 GB)
  • GGUF 可从 Hugging Face 上 Qwen3.5-4B 的 GGUF 仓库获取,例如 unsloth/Qwen3.5-4B-GGUF

README 给出 RTX 4060 8 GB 下的实测表(32768 ctx 约 62.9 tok/s;162144 ctx 约 17.7 tok/s 且更多分页到系统内存)。超过约 64K 上下文速度会明显下降,长对话应依赖压缩策略。

适用场景与注意

适合谁:已在 DSH 0.2.x 上开发、想在 Windows 本机固定跑 Qwen3.5-4B,并希望路由、压缩、诊断与「线上主模型 + 本地杂活」在同一套 profile 里维护的开发者。

环境与权限:插件以当前 DSH 宿主进程权限运行;安装前应阅读仓库源码与 MIT 许可证,确认路径与 spawn 行为符合本机安全策略。请求捕获代理仅记元数据,但仍会短暂经过 loopback,诊断结束后建议改回直连。

常见问题(摘自 README):模型路径错误导致红灯;8080 端口占用;路由「不一致」时点「同步」;local_worker 报未运行时需先启动服务或开启「需要时自动拉起」。

DSH 生态强调「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-local-llm 把本机 llama.cpp Qwen3.5-4B 的运维面、与 Cordis 的路由/压缩一致性、请求形状诊断和 local_worker 混合作业收进一页设置,减少「脚本、YAML、手动对齐」的分散操作。详情与 issue 见 GitHub:https://github.com/verson00/dsh-local-llm;目录条目见 https://www.skillhub.cn/plugins/verson00/dsh-local-llm。

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

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

小夜