DeepSeek Harness 磁盘布局全景:DSH plugin 装在哪、会话与缓存在哪
理解 DeepSeek Harness 的磁盘布局,只要先分清两棵树:程序安装目录与数据目录。 前者是「可重装的部分」(可执行文件与依赖),后者是「你的东西」(profile 配置、已装 DSH plugin 记录、会话、凭据)——插件的安装记录在数据目录里,不跟程序走,这就是为什么删掉程序目录重装后插件还在、而换个数据目录启动插件就「消失」了。搞清楚这条,备份、清理、迁移、多机对齐四件事都会变简单:该备份的是数据目录,该清理的是缓存,该重装的是程序。
DeepSeek Harness 的两棵树:安装目录、数据目录与三种管理做法
一句话结论:程序目录可删可重装、数据目录不可删;两者分离是理解其余所有问题的前提。
| 安装目录 | 数据目录(DSH_HOME) | |
|---|---|---|
| 内容 | 可执行文件、依赖包 | profile 配置、已装 DSH plugin 记录、会话、凭据 |
| 删掉后果 | 重装即可恢复 | 丢配置与会话,插件需重装 |
| 换位置 | 重新安装 | 改环境变量即可 |
| 备份价值 | 无(可再生) | 高(不可再生) |
| 多机一致性 | 各自安装即可 | 决定「两台机器像不像」 |
- 查数据目录:
echo $DSH_HOME——为空说明用的是默认目录(位置由程序约定),此时更需要显式设定,避免「不知道数据在哪」。 - 查程序位置:
which -a dsh与npm ls -g @deepseek-ai/dsh,确认装在哪、有几个入口。
方案 A:用环境变量固定数据目录(推荐)
一句话结论:显式设定数据目录是后续一切(备份、迁移、多入口共享)的基础动作,成本是一行配置。
- 设定并持久化:
export DSH_HOME="$HOME/.dsh" # 写进 ~/.bashrc / ~/.zshrc
mkdir -p "$DSH_HOME"
- 让所有入口读到同一值:CLI 继承 shell 环境;桌面端与网页端需要在其启动环境里也能读到该变量,否则会出现「桌面端和 CLI 数据不一样」。
- 验证:
ls -la "$DSH_HOME" # 预期:能看到 profile、会话等子目录(名称随版本可能不同)
- 好处:数据位置确定后,备份脚本、迁移、容器挂卷都能直接引用它。
方案 B:按 profile 隔离多套环境
一句话结论:需要「工作一套、实验一套」时用 profile 隔离,而不是靠切换数据目录——更清晰、也更少误操作。
- 用
--profile指定不同 profile(参数名以dsh --help为准),各自持有独立配置与 DSH plugin 集合。 - 实验环境指向单独的数据目录,彻底与日常环境隔离——这也是排查插件冲突时推荐的隔离手段(见 DeepSeek Harness 插件冲突总览)。
- 给每套环境写一行说明(在哪个目录、装了什么插件),避免几个月后自己都分不清。
- 清理时按 profile 粒度走,不要整目录删。
方案 C:把数据目录放到别处(外置盘 / 大容量盘)
一句话结论:本地盘紧张或要跨机复用时,把数据目录整体外移;要点是「移动 + 改指向 + 验证」三步。
- 先备份再移动(移动前做一份副本,出问题能退回):
cp -a "$DSH_HOME" "${DSH_HOME}.bak"
mv "$DSH_HOME" /Volumes/外置盘/dsh-data # 路径按你的实际盘位替换
export DSH_HOME=/Volumes/外置盘/dsh-data
- 改指向并让所有入口生效(含桌面端/网页端的启动环境)。
- 验证三件事:会话能打开、插件清单完整、服务能启动。
- 外置盘的额外注意:网络盘或外置盘可能带来权限与文件系统差异(大小写敏感、锁行为),移动后先跑一轮再删旧副本。
- 确认无误后再清理旧目录,别急着删。
DSH plugin 数据的三张备份优先级表
一句话结论:数据目录里也要分轻重——凭据与配置必须备份、会话建议备份、缓存不必备份。
| 优先级 | 内容 | 说明 |
|---|---|---|
| 必须备份 | 凭据文件、profile 配置 | 丢了要重新配置与授权,且部分内容不可再生 |
| 建议备份 | 会话数据 | 丢了无法恢复历史;长期积累价值高 |
| 不必备份 | 缓存、索引类中间产物 | 可重建,重跑一次即可 |
- 备份频率:凭据与配置在改动后备份;会话按你的使用强度定期增量备份。
- 备份方式:直接复制数据目录(注意权限位),或按子目录分别打包。
- 验证备份可用:在另一台机器或临时数据目录里恢复一次——没验证过的备份不算备份。
DeepSeek Harness 磁盘清理与回收:三种做法
一句话结论:清理只动缓存与历史会话,别动配置与凭据;先看体积分布再动手。
- 做法一:清包缓存(最安全、见效快):
npm cache verify # 先校验
npm cache clean --force # 需要时再清(会影响下次安装速度)
- 做法二:清理历史会话:按保留策略删除过期会话(
uninstall/delete-session一类操作),比整目录删除安全。 - 做法三:重建索引与投影缓存:把它们删掉后由程序重建,通常能回收可观空间——前提是你确认这些目录属于缓存而不是业务数据。
- 先看体积再决定:
du -sh "$DSH_HOME"/* 2>/dev/null | sort -h | tail -5
# 预期:列出占空间最多的子目录,按此决定清理对象
- 别用整目录删除代替清理——那会连配置与凭据一起丢掉。
DSH plugin 排查注意事项
一句话结论:数据位置的排查顺序永远是「先确认 DSH_HOME、再确认版本、最后才怀疑插件」。
- 插件不见了→ 查
DSH_HOME是否变了(换 shell、换容器、换入口都会变)。 - 换机后插件缺失→ 按清单重装(包本体不随数据目录搬走)。
- 磁盘不够→ 按三张表清理:先缓存、再历史会话,最后才考虑迁移数据目录。
- 迁移后行为异常→ 查外置盘权限与文件系统差异。
- 要多套环境→ 用 profile 隔离,不要靠来回改数据目录(容易记错)。
- 修复状态如实:本文对目录职责的划分基于官方 CLI 的 home/profile 说明与通用实践;具体子目录名称与结构随版本变化,查证时以你机器上
ls "$DSH_HOME"的实际结果与官方 README 为准。
不确定某个插件装没装、装在哪个 profile 时,DSH Plugin Hub 的已安装列表比翻目录更快给出答案。

来源:apps/cli/README.md、apps/desktop/README.zh.md、npm Docs · npm cache。
常见问题
可以分成两类:程序安装目录(重新安装即可恢复)与数据目录(由 DSH_HOME 指向,里面是 profile 配置、已装 DSH plugin 记录、会话与凭据)。程序目录可以放心删,数据目录删了会丢会话与配置,插件也要重装。所以清理磁盘前,务必先确认删的是程序目录还是数据目录。
在 DeepSeek Harness 里,这是最常见的一个误解:插件的安装记录与配置落在数据目录(DSH_HOME)里,不跟随程序安装目录。所以删掉程序目录后重装,插件清单可能仍然在;反过来,换一个数据目录启动,插件看起来就「不见了」。判断依据永远是数据目录指向哪,而不是程序装在哪。
在 DeepSeek Harness 里,把数据目录整体移到目标位置,再通过环境变量把 DSH_HOME 指向新路径即可;关键是保证所有入口(CLI、桌面端、网页端)都读到同一路径,否则会出现「换个入口数据就不一样」。移动前先备份,移动后验证会话与插件清单是否完整。
在 DeepSeek Harness 里,可以删的是缓存类(重新下载或重建即可恢复);不建议删的是数据目录里的 profile 配置、会话数据与凭据。执行清理前先看目录体积分布,通常缓存与历史会话是占地大头——优先处理它们,而不是整目录删除。
在 DeepSeek Harness 里,搬两样:数据目录(保住配置、会话与插件清单)与插件清单里的包(按清单在新机器重装,因为包本体在各自的安装位置)。搬完在新机器上验证三件事:会话能打开、插件清单一致、服务能正常启动。
相关术语
- DSH_HOME(数据目录)
- DSH_HOME 是 DeepSeek Harness 存放可变状态的目录,包含 profile 配置、已装 DSH plugin 的安装记录、会话数据与凭据。它与程序安装目录分离,因此可以独立备份、迁移与清理。— https://github.com/deepseek-ai/deepseek-harness/blob/master/apps/cli/README.md
- 安装目录(install directory)
- 安装目录是 DeepSeek Harness 程序本体所在的位置(例如全局安装目录)。它只包含可执行文件与依赖,删除或替换都不会影响你的会话与插件记录,是最安全的重装对象。— https://docs.npmjs.com/cli/v10/commands/npm-cache
- profile
- profile 是 DeepSeek Harness 隔离配置与插件集合的单元,其数据落在数据目录下。按 profile 分类存放,是「同一台机器跑多套互不干扰环境」的实现方式。— https://github.com/deepseek-ai/deepseek-harness/blob/master/apps/cli/README.md
- 缓存目录(cache directory)
- 缓存目录用于存放可重建的中间产物,例如包缓存与索引类数据。它的特点是删了不会丢业务数据,只会让下次运行变慢或需要重新下载,因此是清理磁盘的首选目标。— https://docs.npmjs.com/cli/v10/commands/npm-cache
来源
- deepseek-ai/deepseek-harness — apps/cli/README.md(home 与 profile 相关说明)· deepseek-ai(GitHub)
- deepseek-ai/deepseek-harness — apps/desktop/README.zh.md(桌面端数据位置差别)· deepseek-ai(GitHub)
- npm Docs — 缓存目录与位置(cache 相关命令)· npm