2026 年 8 月 14 日,DeepSeek 官方开源了自己的 Agent 框架 DeepSeek Harness(dsh),口号是「Everything is a Plugin」——一切皆插件。本文分两篇:Windows 篇(5 分钟上手,无坑)和飞牛 NAS 篇(保姆级 + 踩坑实录,照着抄就能装好)。
这套东西是啥?



第一篇:Windows 安装(5 分钟上手)
第一步:装 Node.js
node --versionnpm --version
第二步:安装 dsh
npm install -g @deepseek-ai/dsh第三步:配置 API Key 并启动
$env:DEEPSEEK_API_KEY = ”sk-你的DeepSeekKey”dsh --profile web
第四步:打开使用
Windows 常见问题
dsh | |
$env:DEEPSEEK_API_KEY 设置后再启动 | |
第二篇:飞牛 NAS 完整架设(保姆级·含踩坑实录)
一、环境准备
node --versionv24.15.0npm --version# 11.12.1docker ps# 确认 docker 可用
二、安装 dsh(含三个坑)
坑 1:npx 直跑不靠谱
npx -y @deepseek-ai/dsh web坑 2:全局安装没权限
npm install -g @deepseek-ai/dshnpm error The operation was rejected by your operating system.
坑 3(大坑):装到用户目录,node-pty 编译失败
npm install -g --prefix ~/.npm-global @deepseek-ai/dshmake: g++: No such file or directorygyp ERR! build error
三、核心解决:--ignore-scripts + Docker 编译 pty.node
npm install -g --prefix ~/.npm-global @deepseek-ai/dsh --ignore-scriptsadded 532 packages
Failed to load native module: pty.nodechecked: build/Release, build/Debug, prebuilds/linux-x64
1. 拉编译镜像(国内用加速源,不然等死)docker pull docker.m.daocloud.io/library/node:24-bookworm# 2. 容器里编译 node-ptymkdir -p /tmp/node-pty-builddocker 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-ptymkdir -p $DEST/build/Release $DEST/prebuilds/linux-x64cp /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:$PATHDEEPSEEK_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
五、远程访问(官方故意留的坑)
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
方案 A:SSH 隧道(推荐,安全)
ssh -N -L 3080:127.0.0.1:3080 用户名@NAS的IP方案 B:局域网 TCP 转发(简单,局域网内可见)
dsh_lan_proxy.py —— TCP 转发:0.0.0.0:13080 -> 127.0.0.1:3080import socket, threadingdef 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: passdef 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# 找到 pidkill# 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
总结

夜雨聆风