DeepSeek Harness 安装

DSH 一站式上手:从安装到修复第一个项目(0.2 实测,附练习包)

用 DSH 0.2.0-rc.2 和真实 DeepSeek 模型,从启动、模型、工作区到修复采购合计并亲自验收,全程使用可下载材料。

新手 预计 35 分钟 更新 2026/10/7 核验 2026/10/7
本页目录

完成结果

学完后你会留下什么

修复后的 budget.mjs、独立运行得到的 3 pass / 0 fail 结果,以及一份可解释的修改记录。

验证版本
0.2.0-rc.2
适合谁
希望在独立练习环境中学习 DSH 的开发者和 Agent 用户
开始前确认
  • 了解当前为开发者预览版
  • 准备可丢弃或已备份的练习材料

这篇从准备环境开始,直到你亲眼看到一个计算错误被修复、测试由失败变成通过。**不需要先读完其他五篇,也不需要 Git、Python、pnpm 或额外插件。**你需要能打开终端、解压文件,并准备自己的模型 API 凭据。

我们使用同一份采购合计练习:两本笔记本、一盏台灯、三支笔,正确合计为 83 元,程序却算成 55 元。你会让 DSH 读取代码、定位原因、修改代码,再由你自己检查结果。

0. 这篇实测到了哪里

项目本文情况
DSH 包@deepseek-ai/dsh@0.2.0-rc.2,固定版本命令
实测环境macOS 26.4(Apple Silicon)、Node v24.21.0,2026-10-07
模型真实 DeepSeek 模型,界面显示 DeepSeek-V41-Flash,推理强度 High
已实测启动、预览版说明、模型识别、添加工作区、只读分析、修改并运行测试、独立复验
实测结果2 轮对话、6 步、约 54.7K tokens(缓存命中 83%),修改后 3 pass / 0 fail,只有 budget.mjs 被改
凭据方式本次通过环境变量提供 DeepSeek 凭据,也可以在设置页填写

**版本变化提醒:**本站 9 月版教程使用的 0.1.2-rc.1,在 2026-10-07 用 Node 24.21.0 启动会立即崩溃,报错 user patch-layer watching requires the Cordis HMR service。本文已整体改为 0.2.0-rc.2。DSH 仍是预览版,后续版本可能继续改变界面或参数。

1. 安装 Node,再确认终端能找到它

已经有 Node 24.x 可以直接跳到第 2 步。

  1. 打开 Node.js 官方下载页,选择 24.x 和你的操作系统。
  2. 安装完成后,关闭并重新打开终端。Windows 打开 PowerShell;macOS 打开“终端”。
  3. 分别执行:
node --version
npm --version

**成功标志:**两条命令都返回版本号,Node 显示 v24...。本站实测为 v24.21.0。

**不成功:**提示 command not found 或“不是内部或外部命令”时,先重新打开终端;仍失败就检查安装器是否配置了 PATH。若 PowerShell 只对 npm.ps1 提示脚本执行限制,可以改用 npm.cmd --version,后文的 npx 同理用 npx.cmd。

2. 下载练习包,进入正确目录

下载采购合计练习 ZIP,解压后打开其中的 dsh-lab-v2 文件夹。你应看到:

dsh-lab-v2/
├── README.md           任务说明
├── budget.mjs          唯一允许修改的文件
├── budget.test.mjs     三项测试,不允许修改
└── task.txt            可以直接粘贴的任务

macOS / Linux:

cd "$HOME/Downloads/dsh-lab-v2"
ls

Windows PowerShell:

Set-Location "$env:USERPROFILE\Downloads\dsh-lab-v2"
Get-ChildItem

**成功标志:**文件列表中有 budget.test.mjs。如果多解压了一层,先进入真正包含这个文件的目录。

建议同时记下四个文件的哈希,最后用来证明测试文件没被改:

shasum -a 256 README.md budget.mjs budget.test.mjs task.txt > ../dsh-lab-v2.before.sha

3. 先看到错误,建立验收基线

node --test budget.test.mjs

这次应该失败。本站实测输出的汇总:

ℹ tests 3
ℹ pass 1
ℹ fail 2

两个失败分别是 5500 !== 8300 和 199 !== 597,单位都是“分”。练习包没有依赖,不用执行 npm install。如果首次就三项全通过,说明材料已经被修复过,重新解压一份到新目录。

4. 启动固定版本的 DSH

仍在练习目录执行:

npx @deepseek-ai/dsh@0.2.0-rc.2 web

首次运行 npx 会下载软件包,可能询问是否继续,确认包名和版本后继续。终端打印类似下面这行后,浏览器通常会自动打开:

dsh web: http://127.0.0.1:3080/?token=……

**一定使用终端打印的完整地址。**本站实测:只访问 http://127.0.0.1:3087/ 而不带 token,会得到 401。带 token 的地址是本地访问凭据,不要贴进公开求助截图。保持这个终端运行,不要关闭。

端口被占用时换一个端口;不想自动打开浏览器就加 --no-open。本站实际命令是:

npx @deepseek-ai/dsh@0.2.0-rc.2 web --no-open --port 3087

如果你的系统设置了 SOCKS 代理,终端会提示 all_proxy names a SOCKS proxy, which is not supported,DSH 会改为直连。需要代理才能访问模型时,改设 http:// 或 https:// 代理。

第一次打开会看到“预览版说明”,说明 0.2 版仍处于预览阶段,点“继续”。

DSH 0.2.0-rc.2 首次打开的预览版说明弹窗

**成功标志:**看到“探索未至之境”主界面,左侧有“新会话”“插件”“工作区”“设置”。

DSH 0.2.0-rc.2 主界面:左侧工作区列表,中间输入框显示默认工作区、标准模式、工作区内修改和 DeepSeek-V41-Flash 模型

5. 配置自己的模型

使用 DeepSeek 时,先在 DeepSeek 官方平台 准备自己的 API 凭据,并确认账户可以调用模型。

0.2 版有两种提供方式:

  • **环境变量(本站实测方式):**启动前在同一个终端设置 DEEPSEEK_API_KEY。DSH 启动后自动识别,输入框右下角直接显示 DeepSeek-V41-Flash,没有出现“添加 API Key”的引导。
  • **设置页:**左下角“设置 → 模型”,在 DeepSeek 卡片里粘贴并保存。菜单名称以你的界面为准。

macOS / Linux 只给这一次启动设置环境变量:

DEEPSEEK_API_KEY="你的凭据" npx @deepseek-ai/dsh@0.2.0-rc.2 web

不要把凭据写进练习目录里的文件,也不要提交到 Git。

**成功标志:**输入框右下角显示一个可用模型。显示了模型名不等于凭据有效,第 7 步的真实请求才是验收。

6. 添加练习目录为工作区

0.2 版的变化:“默认工作区”不是你启动 DSH 时所在的目录。本站实测,默认工作区位于 ~/Documents/deepseek-harness/default-workspace。直接在默认工作区里提问,DSH 读不到练习文件。

  1. 点击左侧“工作区”右边的“添加工作区”图标(文件夹加号),在系统弹出的文件夹选择框里选中 dsh-lab-v2。要选包含 budget.mjs 的文件夹,不是下载目录。
  2. 在输入框上方的工作区下拉里,切换到 dsh-lab-v2。
  3. 模式保持“标准模式”,权限保持“工作区内修改”。

在 DSH 0.2 输入框上方切换到 dsh-lab-v2 工作区

**成功标志:**输入框上方显示 dsh-lab-v2,左侧该工作区下出现“新会话”。

7. 先确认能读到练习文件

发送下面的提示,不要一次就让它全面重写:

这是一个独立练习项目。
请只阅读 README.md、budget.mjs 和 budget.test.mjs。
告诉我:项目要算什么,正确合计是什么,当前代码为什么可能算错。
本轮不修改文件,不安装依赖,也不执行命令。
请给出你实际读取的文件名作为依据。

**本站实测结果(约 5 秒):**模型列出实际读取的三个文件,逐项算出 2400 + 3500 + 2400 = 8300 分,并指出 budget.mjs:2 的累加式 sum + item.unitPriceCents 没有乘以 quantity,所以文具订单被算成 5500、199 × 3 被算成 199;空数组初值为 0,所以那一项测试能通过。它没有修改文件,也没有执行命令。

DSH 用真实 DeepSeek 模型只读分析后的回答:定位到 budget.mjs 第 2 行没有乘数量

不要只看它口头说“读过了”。切到会话顶部的“轨迹”标签,能看到三条 read 工具调用,分别指向三个文件的绝对路径。

如果它找不到文件,先核对第 6 步的工作区。出现凭据或模型名称错误时,进入 模型配置排错,不要重装整个 DSH。

8. 让它修复,但不允许修改测试

确认理解无误后发送:

现在只修改 budget.mjs:计算每项单价乘以数量后的合计。
不要修改 budget.test.mjs、README.md、task.txt,不要新增依赖。
修改后运行 node --test budget.test.mjs。
最后报告改动内容,以及真正执行过的测试结果。
如果工具执行被拒绝或无法运行测试,请明确说明,不要声称通过。

**本站实测结果:**这一轮它依次调用了 edit(修改 budget.mjs)、bash(运行测试)和 read(回读确认),然后贴出测试原始输出:tests 3 / pass 3 / fail 0,退出码 0。界面在回答末尾显示“已编辑 budget.mjs +4 −1”。

DSH 修改 budget.mjs 后贴出的测试原始输出:3 项通过、0 项失败

在“工作区内修改”权限下,本次的编辑和测试命令都没有弹出审批:运行时上下文显示文件策略是 workspace-write、审批策略是 ask,工作区内的这两步被直接放行。想在修改前逐步确认,先把权限切到“仅可查看”,或用会话里的 /permission 调整,详见 DSH 权限与安全。

DSH 轨迹视图:按轮次列出用户输入、运行时上下文、read、edit、bash 等工具调用

9. 你亲自验收,不依赖聊天结论

新开一个终端,进入相同练习目录,运行:

node --test budget.test.mjs

本站独立复验结果:

ℹ tests 3
ℹ pass 3
ℹ fail 0

再比对第 2 步记下的哈希:

shasum -a 256 README.md budget.mjs budget.test.mjs task.txt | diff - ../dsh-lab-v2.before.sha

**应该只有 budget.mjs 一行不同。**本站实测正是如此:测试文件、README 和 task.txt 的哈希都没变。修改后的 budget.mjs 为:

export function totalCents(items) {
  return items.reduce(
    (sum, item) => sum + item.unitPriceCents * item.quantity,
    0,
  );
}

核心改动只有乘以 item.quantity 一处,“+4 −1”是因为它把一行拆成了多行格式。三项测试只覆盖本练习规定的整数价格和数量,不等于覆盖所有财务规则。

至此你完成了“启动 → 模型 → 工作区 → 读取 → 修改 → 独立检查”的闭环。想理解文件内容为什么要回到模型,接着看 一次请求如何继续成多轮工具调用。

10. 停止、下次继续与重新练习

回到运行 DSH 的终端按 Ctrl+C,等待进程退出。关闭网页标签不等于停止服务。下次进入同一目录,用相同命令启动。

想从头练习,解压到新的文件夹即可,不必删除配置或撤销 API Key。想避免影响自己现有的 DSH 环境,可以按 独立配置目录做法 另开一套实验配置。注意:本站实测 0.2 版即使设置了独立 DSH_HOME,会话里仍会出现用户级共享目录中的 Skills,独立配置目录不等于隔离所有扩展。

完成后应该留下这三样东西

  • 一份修复后的 budget.mjs,修改范围明确。
  • 一次你亲自运行得到的 3 pass / 0 fail 结果,以及前后哈希对比。
  • 一段能解释“错误在哪里、为什么这样改”的文字。

官方资料

版本和参数,以这些来源为准

本文按实际任务重写,快速变化的信息仍应在操作前回到官方页面核对。

常见问题

继续操作前,先确认这些边界

按旧教程运行 0.1.2-rc.1 报错 user patch-layer watching requires the Cordis HMR service 怎么办?

2026-10-07 本站在 Node 24.21.0 上复现:0.1.2-rc.1 启动后立即崩溃。改用当前版本 0.2.0-rc.2 即可正常启动,本文命令已更新。

需要先安装 pnpm 或 Git 吗?

不需要。本文使用 npm 发布包和无依赖练习;源码开发和插件管理是另外的路径。

第一次测试失败,是环境没装好吗?

不是。本练习故意保留计算错误,初始预期是 1 项通过、2 项失败,修复后才是 3 项通过。

为什么直接打开 127.0.0.1:3087 显示 401?

DSH 启动时打印的地址带有访问 token。只输端口没有 token,会被拒绝。请复制终端打印的完整地址,并且不要公开分享它。

继续学习

按当前任务继续推进