Windows 安装 DeepSeek Harness (dsh) 完整流程
本文档记录在 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 version
1.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.0
npm --version # 应输出 11.x
1.3 配置 npm 全局目录与缓存(迁移到非系统盘,节省 C 盘空间)
先在目录下创建这两个文件夹:
npm config set prefix "D:\nvm\node_global"
npm config set cache "D:\nvm\node_cache"
设置国内镜像加速(可选,网络好可跳过):
npm config set registry https://registry.npmmirror.com
1.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 |
供 Node require 解析全局模块(可选,非必需) |
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.6
where.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.6
npm 上的历史版本不会消失,随时可回退。
七、故障排查速查表
| 现象 | 可能原因 | 解决 |
|---|---|---|
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
# 查 pnpm
pnpm --version
# 查 node 进程
Get-Process node | Select-Object Id, StartTime, Path
八、完整卸载(如需)
# 1. 停止服务(关闭所有 dsh cmd 窗口)
# 2. 卸载 dsh
npm uninstall -g @deepseek-ai/dsh
# 3. 删除数据目录(会丢失对话记录,先备份!)
Remove-Item -Recurse -Force "$env:USERPROFILE\.dsh"
# 4. 删除桌面 bat
Remove-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 整理
更多推荐
所有评论(0)