卸载 dsh 后磁盘没释放?DeepSeek Harness 全局包、缓存与 DSH plugin 占用定位
卸载 dsh 后磁盘没释放,根因是「卸程序 ≠ 清数据」:DeepSeek Harness 的占用分散在全局包目录、npx / npm 缓存、pnpm store、profile 的 node_modules 与 $DSH_HOME 数据目录五处,卸载只清可执行部分,缓存与共享数据原地不动(来源)。
这篇按「占用地图 → 逐目录定位体积 → 哪些能安全清」三步讲。残留清理的步骤见《DSH plugin 卸载后怎么清理残留》,本文落点是空间没释放的定位与量化。
卸载 dsh 后空间去哪了:五块占用地图
DeepSeek Harness 相关占用至少分五块:全局包目录、npx / npm 缓存、pnpm store、profile 的 node_modules、以及 $DSH_HOME 数据目录;卸载只动可执行部分,所以四块缓存与数据仍在(来源)。
对着五块占用逐项确认:
- 全局包 — 用 npm 装过就有全局包目录。预期:卸载后该包目录消失,若还在说明卸载没走全局包路径。
- npx 缓存 — 用 npx 跑过就留下缓存(常在
~/.npm/_npx一类位置)。预期:卸载不清它,空间原地不动。 - npm 缓存 — 下载过的包内容留在这里。预期:与卸载无关,永久保留到手动清理。
- pnpm store — 内容寻址存储,profile 依赖从中取用。预期:卸载不清它,且可能被其他项目共享。
$DSH_HOME与 profile 的node_modules— 会话、设置、插件与依赖装在这里。预期:卸载不清理,属于要保留的数据。
关键认知:这五块里只有第 1 块会随卸载消失(而且仅当你当初用全局包方式装),其余都是缓存或数据,卸载程序没有义务、也不会去清。所以「卸载了却感觉没省空间」是正常的,要腾空间得逐块手动处理。
逐目录定位 DeepSeek Harness 的磁盘占用
定位顺序是「先问工具目录在哪 → 再量各自体积 → 排出最大的块」:用 npm config get cache 找 npm 缓存、npm root -g 与 npm prefix -g 找全局包目录、pnpm store path 找 pnpm store、ls "$DSH_HOME/profiles" 找各 profile(来源)。
按命令逐块量,别凭感觉删:
- 找 npm 缓存 — 跑
npm config get cache,再du -sh "$(npm config get cache)"。预期:得到缓存目录与体积;这是最常被忽略的一块。 - 找全局包目录 — 跑
npm root -g与npm prefix -g,再量该目录。预期:确认全局包是否已随卸载移除,以及是否有其他全局包共用。 - 找 pnpm store — 跑
pnpm store path,再du -sh "$(pnpm store path)"。预期:得到 store 目录与体积;它通常比单个项目大,因为跨项目共享。 - 找 profile 与
$DSH_HOME— 跑ls "$DSH_HOME/profiles"与du -sh "$DSH_HOME"。预期:看清各 profile 的node_modules与数据目录各占多少。 - 排序列出最大块 — 把上面几个
du -sh结果并排。预期:一眼看出空间主要被缓存占、还是被数据占,决定下一步清哪块。
第 3 步要理解 pnpm 的机制:store 是内容寻址、跨项目共享的,所以它可能被其他项目引用着,体积大不等于都能删——这直接决定下一节能清到什么程度。
哪些能安全清、哪些清了要重装、怎么确认释放
区分标准很简单:「能重新拉回来的」可清,「配置与数据」别乱删。npm / pnpm 的下载缓存可以清,pnpm store prune 可清未被引用的内容,而 profile 的 node_modules 与 $DSH_HOME 里的插件数据清了就要重装或重配(来源)。
按「可清性」分三档处理,清完都重新量体积确认:
- 安全清:npm / npx 缓存 — 用对应包管理器的缓存清理命令清掉下载缓存。预期:缓存目录体积下降;下次安装会重新下载,不影响已装内容。
- 较安全清:pnpm store 未引用内容 — 跑
pnpm store prune。预期:store 体积下降,被引用的内容保留;其他项目若仍引用,相关包不会被删。 - 谨慎:profile 的
node_modules与$DSH_HOME插件 — 这些是要用的数据。预期:删了要重装插件或重配;决定删之前先想清楚。 - 清完复查 — 对每个目录重跑
du -sh,与清理前对比。预期:体积确实下降才算释放;命令执行成功不等于空间回来。
第 3 档的取舍最能体现「卸程序 ≠ 清数据」:$DSH_HOME 里是会话、设置、凭据与插件,删了没有备份。想彻底腾空间就在这里下手,想保留使用状态就把这块排除在清理之外。
卸载 dsh 后清理磁盘占用的注意事项
- 先量后删:每块都用
du -sh量过体积再决定,别凭感觉删大目录。 - 缓存可清、数据慎删:npm / npx 缓存与 pnpm 未引用内容相对安全,profile 的
node_modules与$DSH_HOME属于数据。 - store 是共享的:
pnpm store prune只清未被引用的内容,删不动正在被引用的包。 - 卸载只清一块:全局包方式装的会随卸载移除,其余缓存与数据不随卸载消失。
- 清完要复查:重跑体积命令对比,确认空间真正释放。
清完缓存、需要把 DSH插件装回来时,用 DSH Plugin Hub 在已安装列表里按需安装,比逐个记包名重新拉更省事。

来源:DeepSeek Harness 命令行 README(官方仓库)、npm Docs: npm cache、pnpm Docs: pnpm store
常见问题
卸载 dsh 后磁盘没释放,是因为卸程序不等于清数据。DeepSeek Harness 相关占用分成好几块:全局包目录、npx / npm 缓存、pnpm store、profile 里的 node_modules,以及 $DSH_HOME 里的会话与设置。卸载程序通常只清可执行部分,缓存与共享数据不在清理范围,所以空间看着没回来。
按块定位最清楚。用 npm config get cache 找 npm 缓存目录,用 npm root -g 与 npm prefix -g 找全局包目录,用 pnpm store path 找 pnpm store,用 ls "$DSH_HOME/profiles" 找各 profile 的 node_modules;再用 du -sh 逐个量体积。macOS 与 Linux 用 du,Windows 可用资源管理器或目录属性,逐块核对哪块最大。
npm 与 pnpm 的下载缓存可以安全清,清了只是下次重新下载;pnpm store 可用 pnpm store prune 清未被引用的内容,安全但会影响其他项目复用。而 profile 里的 node_modules 与 $DSH_HOME 里的插件属于要用的数据,清了就要重装或重配。区分标准是「能重新拉回来的」可清,「配置与数据」别乱删。
清完要重新量体积来确认。对每个目录再跑一次 du -sh,与清理前的数字对比;pnpm 可用 pnpm store path 再定位一次 store 体积,npm 缓存重跑 npm config get cache 确认路径未变。只有体积确实下降才算释放,光看到命令执行成功不代表空间回来了,因为部分缓存可能被其他项目引用。
pnpm store prune 删除的是 store 里没有被任何项目引用的内容,正在被 profile 或项目引用的包不会被删。它是内容寻址存储,多个项目共享同一份内容;所以清理 store 是相对安全的操作,但如果某个 profile 仍引用着包,store 会保留对应内容。要彻底腾空间,得先确认没有 profile 再引用。
相关术语
- npx 缓存
- npx 缓存是 npx 运行包时保存下载内容的目录(通常在 ~/.npm/_npx 一类位置),用 npx 方式运行过 DeepSeek Harness 会在这里留下内容,卸载程序不会清它。— npm Docs
- pnpm store
- pnpm store 是 pnpm 的内容寻址存储,多个项目共享同一份包内容;DeepSeek Harness 的 profile 依赖也从这里取用,可用 pnpm store path 定位、pnpm store prune 清未被引用的内容。— pnpm Docs
- $DSH_HOME
- $DSH_HOME 是 DeepSeek Harness 的产品数据根目录,默认位于 ~/.dsh,存放会话、设置、凭据与各 profile;它占空间且卸载不清理,属于要保留的数据而非缓存。— DeepSeek Harness 命令行 README
- profile 的 node_modules
- profile 的 node_modules 是 pnpm 把树外插件装进该 profile 时生成的依赖目录,位于 profile 内部,属于正在使用的数据,清理后相关插件需要重装。— DeepSeek Harness 命令行 README
来源
- DeepSeek Harness 命令行 README· deepseek-ai
- npm Docs: npm cache· npm
- pnpm Docs: pnpm store· pnpm