前言¶
在 DeepSeek Harness(DSH)里用 llama-swap 做本地模型调度时,模型一旦加载就会长期占着 VRAM。换模型、调试插件或暂时不用推理,若只能重启整个 DSH 或手动找进程,既慢又容易误关调度器。下面介绍社区插件 dsh-gpu-cleanup:在 Web UI 里点一次,卸载 llama-swap 上已加载的模型并清扫陈旧引擎进程,同时保留 llama-swap 本身,下次对话仍可按需加载。
这是什么¶
dsh-gpu-cleanup 是 fataldeity-lab 维护的 DSH Web UI 插件(MIT,当前包版本 0.2.1,peer 对齐 DSH 0.2.0-rc.2)。分类属于模型推理相关能力:面向「本地 llama-swap + llama.cpp 系引擎」场景,解决显存释放与进程残留不同步的问题。
浏览器无法直接调用 llama-swap(跨端口且无 CORS),因此插件在 DSH 宿主进程里起本机控制服务,页面只访问 http://127.0.0.1:11436。
核心功能¶
两个入口均为一次点击、无二次确认:
- 设置 → 插件配置 → dsh-gpu-cleanup:大按钮「一键释放显存」,附带控制服务健康状态与完整日志;
- 对话页右上角(Session log 旁)「释放显存」小按钮,结果在右下角浮层(Esc 关闭,成功约 12 秒后自动收起)。
点击后宿主端大致执行:
- 对 llama-swap 调用
POST /api/models/unload,卸载全部已加载模型(不结束 llama-swap); - 扫描并结束残留的
llama-server/ninfer-serve/strata引擎,仅终止启动超过 90 秒的进程,避免打断刚启动、正在生成的引擎; - 复核清扫结果:
taskkill失败会如实报「清理失败,仍驻留」,不谎报成功; - 复查 llama-swap(默认
127.0.0.1:11435)仍在线,并把剩余引擎信息写入日志。
不做的事:不关 llama-swap、不处理 comfyui / ollama、不杀 90 秒内的新引擎、不删模型文件。
控制服务主要端点(资料原文):
| 端点 | 作用 |
|---|---|
GET /health |
{ ok, version },设置卡「控制服务:正常」来源 |
GET /status |
引擎列表、llama-swap 在线情况、已加载模型 |
POST /free-vram |
卸载 + 清扫 + 复查,返回逐步日志(按钮调用) |
GET /list-llama |
只读列出引擎 PID(旧版兼容) |
POST /kill-llama |
仅清扫引擎(旧版兼容,同样只杀 ≥90 秒) |
自 0.2.1 起的安全边界:服务能结束进程,故不对外暴露——只绑定 127.0.0.1:11436、校验 loopback 的 Host、不再对任意站点返回通配 CORS;所有 POST 须带 X-DSH-Plugin: gpu-cleanup 头。
安装与启用¶
先做安装,再重启宿主并强刷页面(bundle 列表在启动时读取,仅刷新页面不会加载新插件)。
方式一:从 GitHub 安装(维护版推荐)
dsh plugin --profile web add github:fataldeity-lab/dsh-gpu-cleanup
包内已声明 dsh.bundle.patch(cordis.patch.yml),dsh plugin add 会作为 profile bundle 激活,无需再手动往 ~/.dsh/profiles/web/cordis.patch.yml 里 insert(手动 insert 可能与 bundle 层重复挂载)。
方式二:本地源码目录(改代码时用)
dsh plugin --profile web add I:/DPHs/dsh-gpu-cleanup
(路径以你本机为准,README 示例为 Windows 盘符路径。)
方式三:手动 clone 到 profile node_modules
mkdir -p ~/.dsh/profiles/node_modules/@princepainter
cd ~/.dsh/profiles/node_modules/@princepainter
git clone https://github.com/fataldeity-lab/dsh-gpu-cleanup.git
启用检查:
- 重启 DSH Web 宿主;
- 浏览器强制刷新(
Ctrl+Shift+R); - 对话页右上角出现「释放显存」;设置卡显示「控制服务:正常(v3)」表示宿主端控制服务已起来。
依赖要点(README):DeepSeek Harness 0.2.0-rc.2(^0.2.0-rc.2,不支持 0.1.x);llama-swap 在 127.0.0.1:11435(可选——未运行时按钮仍可见,点击会清扫孤儿引擎并提示)。宿主端仅使用 Node 内置模块,无额外 npm 运行时依赖。
典型用法¶
- 打开 DSH Web UI(示例地址
http://127.0.0.1:3080); - 点右上角 「释放显存」,或设置卡 「一键释放显存」;
- 按钮显示「释放中…」及实时耗时,右下角浮层滚动逐步日志;
- 出现「确认:当前没有已加载模型,显存已释放」即完成——llama-swap 仍在运行,后续使用模型会按需加载。
请求超时约 210s(避免 llama-swap 卡住时按钮永远处于「释放中」);同一 /free-vram 在宿主端单飞,多标签同时点击不会重复跑两遍。
适用场景与注意¶
适合:长期在 DSH Web 里用 llama-swap 调度本地模型、需要频繁腾 VRAM 又希望保留调度器的开发者。
注意:
- 插件逻辑在 当前 DSH 进程权限下执行(含
taskkill);安装前请自行查看 GitHub 源码 与 MIT 许可证,确认符合你的安全策略。 - README 中进程枚举与
taskkill路径面向 Windows(PowerShell) 环境;若在 Linux 上部署,需以实际仓库行为为准,勿假设与 Windows 完全一致。 - 社区插件目录 skillhub.cn 为独立生态站点,与 DeepSeek / 幻方无官方从属关系;DSH 本身倡导「一切皆插件」,本插件为社区维护 fork。
结尾¶
dsh-gpu-cleanup 把「卸载 llama-swap 模型 + 清扫陈旧引擎 + 保留调度器」收成 Web UI 里的一键操作,并通过 loopback 控制服务与请求头约束降低误用风险。需要安装说明与变更记录时,可看目录页 fataldeity-lab/dsh-gpu-cleanup 与仓库 github.com/fataldeity-lab/dsh-gpu-cleanup。