DeepSeek Harness 是 DeepSeek 官方开源的 Agent Harness。
如果只是临时体验,直接在项目目录执行:
pnpm dsh web
就可以启动。
但如果准备长期在 Windows 本地使用,每次打开 CMD 再手动启动显然比较麻烦。
这篇文章记录一下如何从源码部署 DeepSeek Harness,并使用 NSSM 将它注册成 Windows 服务,实现开机自动启动。
一、准备环境
首先确保 Windows 已经安装:
Git
Node.js
pnpm
如果使用 nvm-windows 管理 Node.js,同样可以。
检查环境:
node -v
pnpm -v
git --version
二、下载 DeepSeek Harness
项目地址:
克隆源码:
git clone https://github.com/deepseek-ai/deepseek-harness.git
进入项目目录:
cd deepseek-harness
安装依赖:
pnpm install
编译项目:
pnpm run build
先手动测试:
pnpm dsh web
如果看到:
dsh web: http://127.0.0.1:3080
说明项目本身运行正常。
浏览器访问:
http://127.0.0.1:3080
确认页面可以正常打开。
三、下载 NSSM
NSSM 可以把普通程序注册成 Windows 服务。
这里提供一个 NSSM 2.24 的下载地址:
下载并解压,例如:
C:\nssm\
64 位 Windows 使用:
C:\nssm\win64\nssm.exe
四、确认 pnpm 路径
在 CMD 中执行:
where pnpm
例如我的环境返回:
C:\nvm4w\nodejs\pnpm
C:\nvm4w\nodejs\pnpm.CMD
因此 NSSM 中使用:
C:\nvm4w\nodejs\pnpm.cmd
如果你的路径不同,请以 where pnpm 的实际结果为准。
五、使用 NSSM 创建 Windows 服务
使用管理员权限打开 CMD。
执行:
C:\nssm\win64\nssm.exe install DeepSeekHarness
随后会弹出 NSSM 配置窗口。
Application
Path
填写 pnpm 的完整路径:
C:\nvm4w\nodejs\pnpm.cmd
Startup directory
填写 DeepSeek Harness 项目目录。
例如:
F:\Jacky\deepseek-harness
Arguments
填写:
dsh web
也就是:
Path:
C:\nvm4w\nodejs\pnpm.cmd
Startup directory:
F:\Jacky\deepseek-harness
Arguments:
dsh web
六、非常重要:配置 Corepack
这里是整个配置过程中最容易踩坑的地方。
如果直接启动 Windows 服务,日志中可能出现:
Corepack is about to download https://registry.npmjs.org/pnpm/-/pnpm-11.7.0.tgz
? Do you want to continue? [Y/n]
手动在 CMD 中运行没有问题,但是 Windows 服务没有交互式终端,无法输入 Y。
结果就是:
服务卡住,DeepSeek Harness 没有真正启动。
解决方法非常简单。
在 NSSM 配置窗口中进入:
Environment
增加:
COREPACK_ENABLE_DOWNLOAD_PROMPT=0
也就是:
这个配置的作用就是:
禁止 Corepack 在服务环境中等待用户确认。
七、配置日志
继续进入 NSSM 的:
I/O
配置标准输出:
F:\Jacky\deepseek-harness\logs\stdout.log
错误输出:
F:\Jacky\deepseek-harness\logs\stderr.log
如果 logs 目录不存在,可以提前创建:
mkdir F:\Jacky\deepseek-harness\logs
这样以后服务启动异常时,可以直接查看:
F:\Jacky\deepseek-harness\logs\stderr.log
八、安装并启动服务
确认 NSSM 配置无误后,点击:
Install service
然后执行:
net start DeepSeekHarness
检查:
sc query DeepSeekHarness
如果看到:
STATE : 4 RUNNING
说明服务已经正常运行。
然后访问:
http://127.0.0.1:3080
即可使用。
九、设置开机自动启动
执行:
sc config DeepSeekHarness start= auto
这样以后 Windows 开机时,DeepSeek Harness 会自动启动。
最终运行关系:
Windows
↓
DeepSeekHarness Windows 服务
↓
NSSM
↓
pnpm.cmd
↓
Corepack
↓
pnpm dsh web
↓
DeepSeek Harness
↓
127.0.0.1:3080
以后不需要再打开 CMD 手动启动。
十、如何更新 DeepSeek Harness
如果项目有新的代码,可以先停止服务:
net stop DeepSeekHarness
进入项目目录:
cd /d F:\Jacky\deepseek-harness
拉取最新代码:
git pull
重新安装依赖:
pnpm install
重新构建:
pnpm run build
然后重新启动:
net start DeepSeekHarness
十一、如何卸载 Windows 服务
如果以后不再需要 Windows 服务,可以先停止:
net stop DeepSeekHarness
然后使用 NSSM 删除:
C:\nssm\win64\nssm.exe remove DeepSeekHarness confirm
也可以使用 Windows 自带命令:
sc delete DeepSeekHarness
删除后可以检查:
sc query DeepSeekHarness
如果出现:
[SC] OpenService FAILED 1060
说明服务已经删除。
需要注意:
删除 Windows 服务不会删除 DeepSeek Harness 项目文件。
例如:
F:\Jacky\deepseek-harness
这个目录依然会保留。
十二、遇到服务无法启动怎么办?
首先查看:
F:\Jacky\deepseek-harness\logs\stderr.log
如果看到:
Corepack is about to download ...
? Do you want to continue? [Y/n]
检查 NSSM 的 Environment 是否配置:
COREPACK_ENABLE_DOWNLOAD_PROMPT=0
然后重新启动:
net stop DeepSeekHarness
net start DeepSeekHarness
正常情况下,日志应该能够看到:
$ node --import tsx/esm apps/cli/src/bin.ts "web"
dsh web: http://127.0.0.1:3080
这就说明 DeepSeek Harness 已经正常启动。
写在最后
本地部署 DeepSeek Harness,其实并不复杂。
源码部署完成后,真正需要解决的只是一个问题:
如何让它从“需要手动执行命令的开发工具”,变成“电脑开机就能自动运行的本地服务”。
NSSM 刚好解决了这个问题。
最终只需要:
Windows 开机
↓
DeepSeekHarness 服务自动启动
↓
pnpm dsh web
↓
http://127.0.0.1:3080
以后电脑开机,不需要再打开 CMD,也不用记得执行启动命令。
打开浏览器,就能直接使用。
对于本地运行的 AI 工具来说,这样就足够了。