DSH plugin 卸载后残留配置、缓存怎么彻底清理?DeepSeek Harness 数据清除指南
DSH plugin 卸载后,残留主要在两处:profile 目录里的依赖声明与配置覆盖层、pnpm store 里的包文件。按「查残留 → 清 profile → 清缓存」三步就能清干净。
概览
dsh plugin remove 只把插件从依赖里摘掉,不保证清掉所有痕迹。 想彻底清干净,需要知道残留在哪、怎么逐层清理,以及各平台数据目录的默认位置。动手删之前,先备份会话数据。这篇按「残留什么 → 怎么清 → 数据目录在哪」的顺序讲,每一层都给了具体命令和兜底方案,照着做不会误删其他插件的数据。先记住一个前提:pnpm 的 node_modules 是软链接结构,remove 只是把插件从依赖树里摘掉,物理包文件仍留在全局 store 里——所以「卸载了但数据还在」是设计使然,不是 bug。
DSH plugin 卸载后残留什么
卸载后残留分三类:依赖、配置覆盖层、包缓存。 具体来说:
- 依赖声明:
dsh plugin --profile web remove <包名>转发给 pnpm 移除依赖(来源),但被其他插件依赖的包不会一起删,属于正常行为——删了反而会连带破坏还在用的插件。 - 配置覆盖层:profile 目录的
cordis.patch.yml、home 级的~/.dsh/cordis.patch.yml里如果写过该插件的config行,卸载不会自动删除,下次启动可能残留旧配置。这正是「卸载了但行为没变」的常见原因:配置还在,插件框架照读。 - 包缓存:pnpm store 里留着下载过的包文件,pnpm 自己管理,一般不用手动清;store 里的包是全局复用的,同一个包可能同时被其他项目引用,所以
remove不会主动删它,只有pnpm store prune会回收没有被任何项目引用的包。
动手前先备份,一条命令搞定:cp -r ~/.dsh ~/.dsh.bak(Windows 用 xcopy /E /I %USERPROFILE%\.dsh %USERPROFILE%\.dsh.bak)。备份对象是整个 ~/.dsh 数据目录而不是单个 profile——它同时覆盖依赖声明、配置覆盖层与会话记录,一处备份全部兜住;清理出错时把目录整体拷回即可。
从 DSH Plugin Hub 安装的插件卸载后残留位置相同;DSH Plugin Hub 的卸载是可视化操作、成功即生效,且每次安装/升级/卸载都会写入通知中心,方便回查。
DSH plugin 残留配置和缓存怎么清理
清残留分两步:先查再清,配置和缓存分开处理。 操作顺序:
- 查残留:
dsh plugin --profile web why <包名>看依赖关系;dsh --dump-config看配置树里还有没有该插件的行(来源)。 - 清 profile:编辑 profile 目录的
package.json删掉残留依赖行、cordis.patch.yml删掉对应config行;编辑前先备份。注意package.json里残留的是「依赖声明」,cordis.patch.yml里残留的是「配置覆盖」,两处都要看,别只清一处。 - 清缓存:源码构建的 DSH 执行
pnpm store prune,移除未被任何项目依赖的包。 - 兜底方案:不想要某个 profile 了,直接删除整个目录(如
~/.dsh/profiles/web),DSH 下次启动会自动重建内置的web、headlessprofile(来源)。
清理完可以再跑一遍第 1 步确认:why 查不到该插件、--dump-config 里也没有它的行,才算真正清干净。手动编辑 package.json 前先用 pnpm list 确认包名与版本,别删错行;改完不需要重新安装依赖,profile 下次启动会按新声明加载。
删掉整个 profile 目录后,下次启动 dsh web 会重建一个全新的 web profile——之前装过的第三方插件需要重新安装,模型等运行配置回到默认值。所以「删整个目录」适合你已经决定重来的情况;只想摘掉某一个插件,还是优先走 package.json 与 cordis.patch.yml 的定点清理,别让其它插件一起陪葬。
DeepSeek Harness 数据目录位置与彻底清理
DSH 的数据目录由环境变量 $DSH_HOME 决定,默认是 ~/.dsh。 各平台默认位置:
- macOS:
/Users/<你的用户名>/.dsh - Linux:
/home/<你的用户名>/.dsh - Windows:
%USERPROFILE%\.dsh
如果想确认当前机器实际用的路径,在终端执行 echo $DSH_HOME(Windows 用 echo %DSH_HOME%):有输出就用它,没输出就是默认值 ~/.dsh。
Windows 下若 %DSH_HOME% 未设置,默认目录是 %USERPROFILE%\.dsh,不在 AppData 里——别去 %APPDATA% 里找。路径带用户名,换机器或迁移用户时目录名会随之变化,脚本里写死路径要留意。
彻底卸载 DSH 本体时,核心是清这个目录:npx 方式删掉 ~/.dsh 就算卸载完成;源码构建还要删除克隆的 deepseek-harness 仓库并执行 pnpm store prune(来源)。删除前务必确认:~/.dsh 里既有 profile 配置,也有全部会话记录,先备份 ~/.dsh/sessions 再动手。目录删了就真没了,会话、历史、插件配置全在里面,没有回收站兜底。常规卸载命令看《DSH plugin 怎么卸载》,命令卸不掉时的强制清理看《DSH plugin 卸载失败怎么办》。
常见问题
会有。remove 只把插件从依赖里摘掉,被其他插件依赖的包不会删,profile 里写过的配置覆盖层也不动,pnpm store 里还有下载过的包文件。
用 dsh --dump-config 看配置树里还有没有该插件的行,手动编辑 profile 目录的 cordis.patch.yml 删掉对应 config 行;想省事直接删整个 profile 目录,web、headless 下次启动会自动重建。
通常不用,pnpm 自己管理 store。源码构建装的 DSH 想彻底清干净,可执行 pnpm store prune 移除未被任何项目依赖的包。
由 $DSH_HOME 决定,默认是 ~/.dsh:macOS/Linux 在 /Users/<你>/.dsh、/home/<你>/.dsh,Windows 在 %USERPROFILE%\.dsh。彻底卸载本体时删掉这个目录即可,删除前先备份里面的 sessions。
来源
- dsh CLI README· deepseek-ai
- DeepSeek Harness 官方文档 - Quickstart· deepseek-harness