这篇从准备环境开始,直到你亲眼看到一个计算错误被修复、测试由失败变成通过。**不需要先读完其他五篇,也不需要 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 步。
- 打开 Node.js 官方下载页,选择 24.x 和你的操作系统。
- 安装完成后,关闭并重新打开终端。Windows 打开 PowerShell;macOS 打开“终端”。
- 分别执行:
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 版仍处于预览阶段,点“继续”。

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

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 读不到练习文件。
- 点击左侧“工作区”右边的“添加工作区”图标(文件夹加号),在系统弹出的文件夹选择框里选中
dsh-lab-v2。要选包含 budget.mjs 的文件夹,不是下载目录。 - 在输入框上方的工作区下拉里,切换到
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,所以那一项测试能通过。它没有修改文件,也没有执行命令。

不要只看它口头说“读过了”。切到会话顶部的“轨迹”标签,能看到三条 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”。

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

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结果,以及前后哈希对比。 - 一段能解释“错误在哪里、为什么这样改”的文字。