本文档记录在 Windows 上从零安装 dsh、配置启动方式的完整流程,可作为新机器部署手册照做。
环境:Windows 10/11 + nvm-windows + Node.js v24.19.0
一、前置环境准备
参考文献:1、2,注:文献2里创建node_global与node_cache文件夹的位置并非最优解
1.1 安装 nvm-windows
下载地址:https://github.com/coreybutler/nvm-windows/releases
安装到D:\nvm(或任意非系统盘),安装程序会自动配置:
NVM_HOME=D:\nvmNVM_SYMLINK=D:\nvm\nodejs- PATH 中加入上述两个路径
验证:
nvm version1.2 安装 Node.js(满足 dsh 要求:^22.19.0 或 >=24.0.0)
方式 A:通过 nvm 在线安装
nvm install 24.19.0 nvm use 24.19.0方式 B:手动下载安装(适合离线/网络差)
- 从 https://nodejs.org/dist/v24.19.0/ 下载
node-v24.19.0-win-x64.zip - 解压到
D:\nvm\v24.19.0 - 执行
nvm use 24.19.0(nvm 会自动建立D:\nvm\nodejs符号链接指向该版本)
验证:
node--version# 应输出 v24.19.0npm--version# 应输出 11.x1.3 配置 npm 全局目录与缓存(迁移到非系统盘,节省 C 盘空间)
先在目录下创建这两个文件夹:
npm configsetprefix"D:\nvm\node_global"npm configsetcache"D:\nvm\node_cache"设置国内镜像加速(可选,网络好可跳过):
npm configsetregistry https://registry.npmmirror.com1.4 配置环境变量
用户环境变量
| 变量名 | 变量值 | 说明 |
|---|---|---|
NVM_HOME | D:\nvm | nvm 安装目录(nvm 安装程序通常已自动设置) |
NVM_SYMLINK | D:\nvm\nodejs | Node 当前版本的符号链接(nvm 安装程序通常已自动设置) |
Path(追加以下路径) | D:\nvm或 %NVM_HOME% | nvm 主程序所在目录 |
D:\nvm\nodejs或 NVM_SYMLINK | node/npm 可执行文件目录(指向当前nvm use的版本) | |
D:\nvm\node_global | npm 全局安装的命令所在目录(dsh、pnpm 等都在这里) |
系统环境变量
| 变量名 | 变量值 | 说明 |
|---|---|---|
NODE_PATH | D:\nvm\node_global\node_modules | 供 Noderequire解析全局模块(可选,非必需) |
Path(追加以下路径) | D:\nvm\node_global\node_modules | 冗余项,无害,可留可删 |
D:\nvm\node_global | 最好加上 |
说明:
NVM_HOME和NVM_SYMLINK一般由 nvm-windows 安装程序自动配置,无需手动添加。Path中最重要的是D:\nvm\node_global——dsh、pnpm 等通过npm install -g安装的命令都在这里,不加这个路径,dsh、pnpm命令会找不到。NODE_PATH和系统 Path 里的node_modules是可选的,不影响 dsh 运行。- 修改环境变量后,已打开的 cmd/PowerShell 窗口需重新打开才能生效。
二、安装 pnpm(关键步骤,不可省略)
这是 dsh 能否正常启动的关键依赖。dsh 通过 pnpm 安装 profile 的 200+ 插件依赖到
~/.dsh/profiles。没有 pnpm,依赖装不出来,dsh 会报Cannot find package '@deepseek-ai/dsh-client-ui-plan'之类错误崩溃。
npm install-g pnpm验证:
pnpm--version# 应输出 11.x故障信号:如果 dsh 启动时报
ERR_MODULE_NOT_FOUND或plugin tree failed to load,第一时间检查 pnpm 是否存在。这是最常见的根因。
三、全局安装固定版本 dsh
全局安装而非 npx 临时运行,理由:
- 避免 npx 缓存被清理/版本更新时重置,导致 profiles 依赖 junction 失效(这是之前踩过的大坑)
- 启动更快,不再每次检查新版
- 版本锁死,行为可预期
npm install-g @deepseek-ai/dsh@0.1.0-rc.6安装时会有若干allow-scripts警告(npm 11 的安全机制,拦住原生模块的安装脚本)。建议补跑一次允许脚本,确保node-pty(终端)、koffi(FFI)等原生模块编译完成:
npm install-g--allow-scripts=@deepseek-ai/dsh-subprocess-local,koffi,node-pty,@google/genai,protobufjs @deepseek-ai/dsh@0.1.0-rc.6验证:
dsh--version# 应输出 0.1.0-rc.6where.exe dsh# 应指向 D:\nvm\node_global\dsh.ps1安装可能残留临时目录
D:\nvm\node_global\node_modules\@deepseek-ai\.dsh-xxxxxx,无影响,可手动删除。
四、创建桌面启动批处理
4.1 确认真实桌面路径
Windows 桌面可能被 OneDrive 重定向,先确认真实位置:
[Environment]::GetFolderPath('Desktop')- 输出
C:\Users\<用户名>\Desktop→ 用这个路径 - 输出
D:\Desktop之类 → 用输出的路径(本文档假设为D:\Desktop)
4.2 创建启动 bat
在真实桌面新建文件dsh-web.bat,内容如下:
@echo off chcp 936 >nul title DeepSeek Harness (dsh web) echo. echo 正在启动 dsh web 服务... echo 浏览器将在几秒后自动打开 http://localhost:3080 echo 关闭此窗口即可停止服务。 echo. start "" http://localhost:3080 dsh web手动创建步骤(记事本法):
- 打开记事本(Win+R 输
notepad) - 粘贴上述内容
- 文件 → 另存为
- 保存位置选桌面
- 文件名填
dsh-web.bat - 保存类型选"所有文件 (.)"(否则会变成
.bat.txt) - 编码选 UTF-8(有中文 echo 必须用 UTF-8)
- 保存
两个关键点:后缀
.bat、编码UTF-8。搞错任一项都会导致文件无法使用。
4.3 使用方法
- 启动:双击
dsh-web.bat→ 弹出黑色 cmd 窗口 → 自动打开浏览器访问http://localhost:3080 - 停止:关闭那个黑色 cmd 窗口
- 服务监听在
127.0.0.1:3080,仅本机可访问
五、数据存储说明
dsh 的所有数据都在C:\Users\<用户名>\.dsh\下,纯本地存储,无云同步:
| 路径 | 内容 | 备注 |
|---|---|---|
sessions\ | 对话记录(session.jsonl.zstd) | 核心数据,务必备份 |
settings.yaml | 全局设置 | 可备份 |
.credentials.yaml | API 凭据 | 敏感,谨慎备份 |
storages\ | 工作区状态 | 可备份 |
profiles\ | profile 依赖安装区 | 不要备份,让 dsh 自行生成 |
.anonymous-user-id | 匿名 ID | 无关紧要 |
关闭浏览器、结束 node 进程,对话记录依然保留,下次启动还在。
六、版本更新
全局安装的版本固定,不会自动升级。想升级时手动操作:
6.1 查看可用版本
npm view @deepseek-ai/dsh version# 最新版npm view @deepseek-ai/dsh versions--json# 所有历史版本6.2 升级到新版
# 升级前先备份 sessions 目录!npm install-g @deepseek-ai/dsh@<新版本号> dsh--version# 验证升级后若启动报错,可能是旧 profiles 不兼容,删除
~/.dsh/profiles让 dsh 重建。
6.3 回退到旧版
npm install-g @deepseek-ai/dsh@0.1.0-rc.6npm 上的历史版本不会消失,随时可回退。
七、故障排查速查表
| 现象 | 可能原因 | 解决 |
|---|---|---|
Cannot find package '@deepseek-ai/xxx' | 缺 pnpm | npm install -g pnpm |
plugin tree failed to load | profiles 依赖未安装 | 检查 pnpm,删~/.dsh/profiles重启 |
| 端口 3080 不监听 | 进程未起 / 启动崩溃 | cmd 前台跑dsh web看日志 |
| 端口被占用 | 上次进程未退出 | netstat -ano | findstr :3080找 PID,Stop-Process -Id <PID> -Force |
| 双击 bat 闪退 | 编码非 UTF-8 / dsh 命令不存在 | 检查 bat 编码、dsh --version |
| 找不到桌面 bat | 桌面被 OneDrive 重定向 | [Environment]::GetFolderPath('Desktop')查真实路径 |
glibc/not a valid Win32 application | 用错平台包 / Start-Process 跑 .ps1 | 用 cmd 或直接双击 bat |
通用排查命令
# 端口状态netstat-ano|findstr :3080# 查 dsh 版本dsh--version# 查 pnpmpnpm--version# 查 node 进程Get-Processnode|Select-ObjectId,StartTime,Path八、完整卸载(如需)
# 1. 停止服务(关闭所有 dsh cmd 窗口)# 2. 卸载 dshnpm uninstall-g @deepseek-ai/dsh# 3. 删除数据目录(会丢失对话记录,先备份!)Remove-Item-Recurse-Force"$env:USERPROFILE\.dsh"# 4. 删除桌面 batRemove-Item"D:\Desktop\dsh-web.bat"附:关键路径速查
- nvm 安装目录:
D:\nvm - Node 当前版本:
D:\nvm\v24.19.0 - Node 符号链接:
D:\nvm\nodejs(指向当前 use 的版本) - npm 全局目录:
D:\nvm\node_global - npm 缓存目录:
D:\nvm\node_cache - dsh 可执行:
D:\nvm\node_global\dsh.ps1 - dsh 数据目录:
C:\Users\<用户名>\.dsh\ - 桌面启动 bat:
D:\Desktop\dsh-web.bat(或C:\Users\<用户名>\Desktop\dsh-web.bat)
文档版本:2026-08-19 基于 dsh 0.1.0-rc.6 + Node v24.19.0 + pnpm 11.x 整理