一、背景:为什么需要迁移
DSH 的数据默认存放在 C:\Users\<用户名>\.dsh,体积主要来自两部分:
| 子目录 | 内容 | 典型大小 |
|---|---|---|
dsh-runtimes\ |
Python / Node 运行时 | |
profiles\desktop\node_modules\ |
插件及其依赖 | |
sessions\ |
会话日志 | 取决于使用量 |
storages\ |
注册表、归档表 | 很小 |
attachments\ |
图片附件 | 取决于使用量 |
主要:DSH_HOME 只是 DSH 启动时动态注入给子进程的运行时变量,并非可配置项,且执行脚本时候DSH 必须完全退出
做法:让 C:\Users\<用户名>\.dsh 变成指向 E 盘的目录联接(Junction),DSH 完全无感知:
要确保迁移到的盘内存足够
文件清单
| 文件 | 用途 |
|---|---|
config.ps1 |
配置:目标盘符、目录名、路径变量和两个检查函数 |
01_copy.ps1 |
复制数据(源目录不动) |
02_verify.ps1 |
校验复制结果 |
03_switch.ps1 |
改名并建立 Junction |
04_cleanup.ps1 |
删除 C 盘备份 |
09_rollback.ps1 |
回滚 |
README.md |
简要说明 |
执行步骤
第 1 步:修改配置
打开 config.ps1,修改第 6、7 行:
$TARGET_DRIVE = 'E' # 你的目标盘符
$TARGET_DIR = 'DshData' # 目标目录名
第 2 步:复制
管理员 打开PowerShell:
cd E:\AI\test002\dsh-migrate
powershell -ExecutionPolicy Bypass -File .\01_copy.ps1
脚本会自动检查 DSH 是否已退出、目标盘空间是否足够,并执行 robocopy 复制。
第 3 步:校验
powershell -ExecutionPolicy Bypass -File .\02_verify.ps1
只有校验通过才会输出"下一步: 03_switch.ps1"。如果不通过,请不要继续。
第 4 步:切换
先完全退出 DSH (关闭托盘图标后,在任务管理器中确认没有 DeepSeek Harness 进程):
powershell -ExecutionPolicy Bypass -File .\03_switch.ps1
输入 YES 确认。脚本会把源目录改名为 .dsh.bak-before-migrate,再执行 mklink /J "源" "目标"。失败会自动回滚改名。
第 5 步:验证并清理
从开始菜单启动 DSH,确认会话、插件、设置都正常,然后:
powershell -ExecutionPolicy Bypass -File .\04_cleanup.ps1
输入 YES 后删除备份,释放 C 盘空间。
出问题就回滚
powershell -ExecutionPolicy Bypass -File .\09_rollback.ps1
关键注意
- 回滚时移除 Junction 只能用
rmdir(脚本已实现)。手动操作时切记不要用Remove-Item -Recurse,那会递归删除目标盘的真实数据。 01_copy.ps1只复制不删除;任何阶段停下,源目录都完好无损。- 迁移后若通过
link:安装的本地插件报错,在 DSH 里重装一次即可重建链接。