DeepSeek Harness 安装教程:Windows 5 分钟上手 + 飞牛 NAS 完整架设(含踩坑实录)
2026 年 8 月 14 日,DeepSeek 官方开源了自己的 Agent 框架 DeepSeek Harness(dsh),口号是「Everything is a Plugin」——一切皆插件。本文分两篇:Windows 篇(5 分钟上手,无坑)和飞牛 NAS 篇(保姆级 + 踩坑实录,照着抄就能装好)。
这套东西是啥?
- DeepSeek Harness(dsh):DeepSeek AI 官方出品的 Agent 智能体框架(开源、MIT 协议)
- 核心设计:一切皆插件——模型、工具、界面全部可插拔,基于 Cordis 框架
- 能干嘛:一个带 Web 界面的 AI 智能体环境,可以接 DeepSeek 模型对话、跑任务
- 项目地址:https://github.com/deepseek-ai/deepseek-harness
当前状态:0.1.0-rc.6 开发者预览版,官方明说「迭代很快、会有不兼容变更」。尝鲜可以,生产环境别指望。
第一篇:Windows 安装(5 分钟上手)
Windows 是最简单的平台——因为 dsh 的依赖 node-pty(终端原生模块)在 npm 包里自带 Windows 预编译版,不需要编译、不需要 Docker、没有权限坑,一路绿灯。
第一步:装 Node.js
官网下载 LTS 版安装包:https://nodejs.org
下载 .msi 文件 → 双击 → 一路「下一步」→ 装完。
验证:
node --version
npm --version第二步:安装 dsh
用管理员身份打开 PowerShell(Win+X → Windows PowerShell(管理员)):
npm install -g @deepseek-ai/dsh等它装完(500+ 依赖,几分钟)。不会报编译错误,这就是 Windows 最省心的地方。
第三步:配置 API Key 并启动
$env:DEEPSEEK_API_KEY = "sk-你的DeepSeekKey"
dsh --profile web看到 dsh web: http://127.0.0.1:3080 就说明起来了。
第四步:打开使用
浏览器访问 http://127.0.0.1:3080
- 首次打开显示 「Add an API key to get started」 引导页 → 说明 key 还没生效
- key 配置正确的话,刷新后引导页消失,进入主界面(New Session / Workspaces / Settings)
- 点 New Session 即可开始对话
Windows 常见问题
| 问题 | 解决 |
|---|---|
dsh 不是内部或外部命令 | 管理员 PowerShell 重装,或检查 npm 全局路径是否在 PATH |
| 打开是引导页 / 提示无 key | 确认 $env:DEEPSEEK_API_KEY 设置后再启动 |
| 想关掉服务 | 直接关 PowerShell 窗口即可(Ctrl+C) |
第二篇:飞牛 NAS 完整架设(保姆级·含踩坑实录)
NAS 上就没那么顺利了:node-pty 没有 Linux 预编译、系统缺 g++、npm 全局目录没权限……三个坑一个接一个。这篇全部踩过并解决了,照着抄。
一、环境准备
- 飞牛 NAS(fnOS,x86_64 架构)
- Node.js ≥ 20(飞牛应用中心直接装,本文用 v24.15.0)
- Docker(飞牛自带,后面编译原生模块要用)
node --version # v24.15.0
npm --version # 11.12.1
docker ps # 确认 docker 可用二、安装 dsh(含三个坑)
坑 1:npx 直跑不靠谱
官方文档说一行命令:
npx -y @deepseek-ai/dsh web实际:国内网络下载巨慢(依赖 500+ 包),中途大概率失败。不推荐。
坑 2:全局安装没权限
npm install -g @deepseek-ai/dsh
# npm error The operation was rejected by your operating system.NAS 上 /usr/lib/node_modules 属于 root,普通用户装不了。
坑 3(大坑):装到用户目录,node-pty 编译失败
npm install -g --prefix ~/.npm-global @deepseek-ai/dsh会看到编译报错:
make: g++: No such file or directory
gyp ERR! build error原因:node-pty 的 npm 包只有 macOS/Windows 预编译,没有 Linux 的,必须现场编译,而 NAS 没装 g++(且没 root 装不了)。
三、核心解决:--ignore-scripts + Docker 编译 pty.node
先跳过所有编译脚本,装 dsh 主体:
npm install -g --prefix ~/.npm-global @deepseek-ai/dsh --ignore-scripts
# added 532 packages启动会报缺 pty.node:
Failed to load native module: pty.node
checked: build/Release, build/Debug, prebuilds/linux-x64用 Docker 起带编译器的容器来编译它:
# 1. 拉编译镜像(国内用加速源,不然等死)
docker pull docker.m.daocloud.io/library/node:24-bookworm
# 2. 容器里编译 node-pty
mkdir -p /tmp/node-pty-build
docker run --rm -v /tmp/node-pty-build:/build -w /build node:24-bookworm bash -c "
npm config set registry https://registry.npmmirror.com
npm init -y >/dev/null 2>&1
npm install node-pty@1.1.0 --build-from-source
"
# 3. 把编译产物拷到 dsh 的 node-pty 目录
DEST=~/.npm-global/lib/node_modules/@deepseek-ai/dsh/node_modules/node-pty
mkdir -p $DEST/build/Release $DEST/prebuilds/linux-x64
cp /tmp/node-pty-build/node_modules/node-pty/build/Release/pty.node $DEST/build/Release/
cp /tmp/node-pty-build/node_modules/node-pty/build/Release/pty.node $DEST/prebuilds/linux-x64/小提示:容器内npm install node-pty会自动触发编译(bookworm 镜像自带 g++),产物就是build/Release/pty.node(约 67KB)。
四、配置 API Key 并启动
export PATH=$HOME/.npm-global/bin:$PATH
DEEPSEEK_API_KEY=sk-你的key setsid nohup dsh --profile web --host 127.0.0.1 --port 3080 > /tmp/dsh_web.log 2>&1 < /dev/null &验证:
curl -s -o /dev/null -w "%{http_code}" http://127.0.0.1:3080/ # 200浏览器访问 http://127.0.0.1:3080,key 生效后「Add an API key」引导页消失,进入主界面。
五、远程访问(官方故意留的坑)
dsh 默认只监听 127.0.0.1。想绑定 0.0.0.0?直接拒绝:
error: --host 0.0.0.0 is intentionally not supported yet for safety:
it would expose remote code execution to the network; use 127.0.0.1 instead官方原话:暴露到网络 = 公网 RCE 风险(Web UI 能执行代码)。这是安全设计,别硬来。
方案 A:SSH 隧道(推荐,安全)
你电脑上执行(NAS 的 sshd 需 AllowTcpForwarding yes):
ssh -N -L 3080:127.0.0.1:3080 用户名@NAS的IP浏览器打开 http://127.0.0.1:3080,流量走加密隧道。
方案 B:局域网 TCP 转发(简单,局域网内可见)
NAS 上跑 Python 转发器,0.0.0.0:13080 → 127.0.0.1:3080:
# dsh_lan_proxy.py —— TCP 转发:0.0.0.0:13080 -> 127.0.0.1:3080
import socket, threading
def pipe(src, dst):
try:
while True:
data = src.recv(65536)
if not data: break
dst.sendall(data)
except Exception: pass
finally:
for s in (dst, src):
try: s.close()
except Exception: pass
def handle(client):
try:
server = socket.create_connection(('127.0.0.1', 3080), timeout=10)
except Exception:
client.close(); return
threading.Thread(target=pipe, args=(client, server), daemon=True).start()
threading.Thread(target=pipe, args=(server, client), daemon=True).start()
s = socket.socket(); s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind(('0.0.0.0', 13080)); s.listen(50)
print('forwarding 0.0.0.0:13080 -> 127.0.0.1:3080')
while True:
c, _ = s.accept()
threading.Thread(target=handle, args=(c,), daemon=True).start()python3 dsh_lan_proxy.py &⚠️ 方案 B 等价于把 dsh 暴露到局域网,仅限信任的家庭网络;绝对不要用 ddnsto / frp 把 3080 / 13080 暴露到公网。
六、卸载(装完后悔?一条龙清干净)
# 1. 杀进程
ss -tlnp | grep 3080 # 找到 pid
kill <pid>
# 2. 删 npm 包
rm -rf ~/.npm-global/lib/node_modules/@deepseek-ai/
rm -f ~/.npm-global/bin/dsh
# 3. 删配置
rm -rf ~/.dsh
# 4. 删编译残留(root 权限删不掉的用 docker)
docker run --rm -v /tmp:/tmp alpine rm -rf /tmp/node-pty-build
# 5. 删编译镜像(省 1GB+)
docker rmi docker.m.daocloud.io/library/node:24-bookworm总结
| 对比 | Windows | 飞牛 NAS |
|---|---|---|
| 安装难度 | ⭐ 极简(node-pty 自带预编译) | ⭐⭐⭐⭐⭐(要 Docker 编译) |
| 耗时 | 5 分钟 | 30-60 分钟 |
| 访问方式 | 本机直接开 | 锁 127.0.0.1,需 SSH 隧道/转发 |
| 适合场景 | 尝鲜体验 | 24 小时挂机跑任务 |
建议:想快速体验 → Windows 装一个,5 分钟跑起来;想让 AI 挂 NAS 上随时待命 → 按飞牛篇折腾(坑我都填平了,照抄即可)。
⚠️ 当前只是开发者预览版,插件生态基本空白,日常主力工具不建议迁移。等它迭代成熟了,值得再认真玩一次。有啥问题评论区交流~