dsh-disk-janitor:看清 DSH 占盘并清理可再生缓存

前言

DeepSeek Harness(DSH)会在本机留下 Bash 运行时解压副本、请求用图片缓存、会话投影缓存,以及桌面端的 Electron 渲染缓存等。时间一长,$DSH_HOME 和系统临时目录里的 dsh-* 会占掉不少磁盘,但哪些目录能删、哪些属于会话数据,单靠手工翻路径很容易误删或漏清。

社区插件 dsh-disk-janitor(维护者 Algorandius)面向上述问题:先扫描并展示 DSH 各顶层目录占用,再按固定类别清理可再生缓存;会话日志与附件不在清理范围内。

这是什么

dsh-disk-janitor 是 DSH 的磁盘清理插件,在 SkillHub 目录中归类为「记忆」,当前版本 v0.1.0(MIT 许可证)。它不替代会话列表里的删除操作,而是专门处理 Host 侧已定义的几类缓存根目录。

实现上 Host 侧仅使用 node: 内建模块,不依赖 DSH 包 import;客户端通过 dsh.bundle.patch 与 dsh.client 契约接入,要求 DSH 0.2.x。

核心功能

三种使用入口

  1. 设置页:设置 → 磁盘清理(settings.section,排在「插件」之后),可查看占用并执行清理。
  2. 对话:对 Agent 说明「看看 DSH 占了多少磁盘」或「清理一下缓存」,会调用 disk_janitor 工具。
  3. 自动模式(可选):默认可关闭,仅支持自动清理 temp-scratch 与 request-image-cache。

清理项与扫描范围

除 acl-backups(权限修复回滚记录,不是缓存)外,其余条目均为可再生缓存;两类都不碰会话、附件、插件与运行时。

id 内容 说明
bash-runtime $DSH_HOME/dsh-ops/bash-ipc/* Windows 沙箱 Bash 解压副本,删后下次终端调用会重新解压,通常最大的一块
request-image-cache $DSH_HOME/cache/attachments 为模型请求生成的图片副本
projection-cache $DSH_HOME/storages/session_projcache 会话视图派生缓存,清理后首次打开会话稍慢
acl-backups $DSH_HOME/dsh-ops/acl-backups 回滚记录,删掉不影响使用
temp-scratch 系统临时目录里的 dsh-* 只清理 6 小时前未改动过的
desktop-cache %APPDATA%\@deepseek-ai\dsh-desktop\{Cache,GPUCache,…} Electron 渲染/着色器缓存,重启 DSH 后重建

扫描时会同时给出 $DSH_HOME 每个顶层目录的占用(插件、运行时、会话、附件等),便于判断「盘被谁吃了」。

安全设计(摘要)

  • 删除只作用于六个固定缓存根目录内的条目;路径由 Host 解析,客户端只能传类别 id。
  • HTTP 路由只认 loopback(127.0.0.1 / localhost / ::1),非本机 Host 返回 403。
  • 写操作要求 Content-Type: application/json,并带有 CSRF 相关校验;?force=1 强制扫描 2 秒内只生效一次。
  • 自动清理默认关闭,且可选类别仅限 temp-scratch / request-image-cache。

配置

设置页改动会写入 $DSH_HOME/dsh-disk-janitor.json,也可手改:

{
  "autoClean": { "enabled": false, "intervalHours": 6, "categories": ["temp-scratch", "request-image-cache"] }
}

enabled 为 false 时不会后台定时清理;开启后按 intervalHours 与 categories 执行。

安装与启用

DSH 生态以「一切皆插件」为主;SkillHub(skillhub.cn)是社区独立目录站点,与 DeepSeek / 幻方无官方从属关系。该插件在目录页标注为「可安装」,安装方式为将插件信息发送给 DeepSeek Harness 完成安装(目录页:Algorandius/dsh-disk-janitor)。

已抓取资料与 README 中未给出形如 dsh plugin add … 的固定 CLI 字符串,本文不自行拼接命令。安装前建议在 GitHub 仓库阅读源码与 MIT 许可证;插件以当前 DSH 进程权限运行,清理能力仅覆盖上述缓存类别。

典型用法

  1. 打开 设置 → 磁盘清理,查看 $DSH_HOME 分项占用与各缓存类别大小,按需勾选后清理。
  2. 在对话中直接说明需求,例如让 Agent 扫描占用或清理缓存(由 disk_janitor 工具执行)。
  3. 若希望定期清理临时目录与图片请求缓存,在设置页或 dsh-disk-janitor.json 中开启 autoClean,并保持 categories 在文档允许的范围内。

需要强制刷新扫描时,接口支持 ?force=1,但 2 秒内重复强制扫描会被限流,避免本地刷接口占满 CPU。

适用场景与注意

适合:长期在本机跑 DSH、尤其是 Windows 沙箱 Bash 副本变大、或桌面端 Electron 缓存膨胀时,想先看清再清缓存的使用者。

注意:

  • 会话日志、附件不在清理范围内;删除会话请用会话列表中的操作。
  • bash-runtime 清理后首次终端调用会重新解压,可能略慢,但不影响数据。
  • projection-cache 清理后首次打开对应会话会稍慢。
  • 要求 Node >= 20(见仓库 package.json 的 engines)。

结尾

dsh-disk-janitor 把 DSH 占盘拆成可读的目录视图与六类可控清理项,并在 Host 侧用路径白名单与 loopback 校验约束写操作。需要安装或查看更新时,可访问 SkillHub 目录页与 GitHub 仓库:

  • 目录页:https://www.skillhub.cn/plugins/Algorandius/dsh-disk-janitor
  • GitHub:https://github.com/Algorandius/dsh-disk-janitor
羽毛球分组比赛记分
小程序二维码

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

Xiaoye