DeepSeek Harness 应用

DSH 实战教程:把算错的 55 元修复为 83 元

正确合计应为 83 元,程序却得到 55 元。用带测试的练习包学习文件读取、局部修改、失败排查与独立验收。

新手 预计 25 分钟 更新 2026/9/5 核验 2026/9/5
本页目录

完成结果

学完后你会留下什么

一份带文件依据的项目说明,以及一次经过人工检查的小改动。

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

已经装好 DSH 的读者,可以直接用这一篇完成一次有明确答案的练习。我们要修复采购合计:当前结果 55 元,正确结果 83 元。这不是“帮我优化项目”的开放题;允许修改的文件、输入数据和通过条件都写好了。

下载材料,知道每个文件的职责

下载练习 ZIP,解压到独立目录。里面有四个文件,没有依赖;只需要 Node 即可运行测试。安装与工作区配置尚未完成时,先读 一站式上手

文件用途本次能否修改
README.md需求说明不修改
budget.mjs合计计算函数只修改这里
budget.test.mjs三项自动验收不修改
task.txt完整任务提示不修改

这一练习没有数据库、网络请求或个人材料,便于比较同一个任务在不同模型、权限和提示下的表现。

先用人工算出标准答案

商品单价(分)数量小计(分)
笔记本120022400
台灯350013500
80032400
合计8300

程序当前把单价直接相加,得到 1200 + 3500 + 800 = 5500。单位使用整数“分”,是为了让本次练习不混入浮点精度问题;这不是完整的财务计算系统。

第一次运行:失败是正确起点

在练习目录执行:

node --test budget.test.mjs

**本站实际基线:**三项测试,一项通过、两项失败。合计测试为 5500 !== 8300;三件单价 199 分的商品应为 597 分,程序却返回 199。空订单测试通过。

为什么要先测?它让你确认材料真的有这个问题,也排除了“模型把测试命令说对了,但根本没跑”的误判。把这次输出留着,稍后做前后比较。

第一个提示:只收集依据

在 DSH 标准模式中选择练习工作区,发送:

阅读 README.md、budget.mjs、budget.test.mjs。
请解释当前实现与需求的差异,引用具体文件和表达式。
暂时不要修改,不要安装依赖,不要执行命令。
如果你没读取到文件,明确说明。

检查过程里是否有文件读取记录。答案应该提到数量被忽略,而不是先建议增加框架、调整目录或重写全部测试。

如果模型直接给出修复代码也不用立刻复制:先问“这个判断来自哪个文件和测试?”本轮练习的重点是把结论与证据连接起来。

第二个提示:授权一个明确改动

确认分析后发送:

请按刚才的分析修复。
只允许修改 budget.mjs,不改函数导出名,不改测试,不添加依赖。
使每项金额等于 unitPriceCents * quantity,再求和。
完成后运行 node --test budget.test.mjs,并报告实际输出。
如果命令无法运行,保留改动并说明未验证,不要编造结果。

允许文件修改不代表授权其他行为。遇到范围外操作,应暂停并检查。readedit 是默认文件工具的真实名称;模型也可能选择其他可用工具,不能要求所有真实运行都逐字复刻演示。

观察 DSH 做了什么

对于默认文件工具,一条常见路线是:

  1. 模型返回 read 调用,参数指向 budget.mjs
  2. DSH 读取文件,把结果写回会话并用于下一次模型请求。
  3. 模型返回 edit 调用,带上精确匹配的旧文本与新文本。
  4. DSH 经过当前权限与执行策略处理后,修改文件或返回失败。
  5. 模型在后续请求中看到工具结果,继续测试、解释或结束。

这不是“模型直接写磁盘”。模型产生调用意图,DSH 的工具执行器操作文件。默认组合的读后改约束由另一个观察策略插件提供,不是所有 edit 的硬编码通用规则。更多解释见 机制文章

第三个步骤:独立检查产物

在自己的终端执行:

node --test budget.test.mjs

本站修复后结果为 三项通过、零项失败。用编辑器看差异,应只需要把合计表达式改成:

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

你的模型可以使用等价写法。验收应看行为与修改范围,不能仅因代码排版不同就判失败。

如果使用 Git,运行 git diff -- budget.mjs budget.test.mjs 检查。没有 Git 也可以把原 ZIP 解压到另一个目录,在编辑器里比较两个文件。尤其确认测试仍在检查 8300 和 597,而不是把期望值改成错误输出。

没有全通过,按结果处理

结果通常应该先查什么下一次给模型的信息
仍为 5500改动没有落盘、改错目录或编辑失败真实文件内容与 edit 结果
语法错误括号、导出或意外改动完整错误首行和对应代码
测试找不到文件终端所在目录不对pwd / Get-Location 的目录
聊天说通过,终端失败模型未测试或测试的是其他文件独立测试输出,要求解释差异
不断重复失败操作没有利用错误结果更新策略停止重复,先总结失败原因

避免发送“再试试”让它无目标重跑。给出新证据,再要求一个具体修正。

进阶练习:把拒绝也当成结果

在新的会话中选择只读权限,再要求修改练习文件。观察实际策略是否拒绝或要求确认。不要预设一定出现某一种弹窗;不同工具和配置的处理可能不同。

如果拒绝修改,正确状态是“文件仍旧、测试仍失败,模型应解释限制”,而不是动画直接跳到绿色成功。完成观察后通过 /permission 调整当前会话权限,再重新提出合法改动。

本站验证范围与可复现记录

我们用 DSH 0.1.2-rc.1 的真实执行器验证了 read → edit → 工具结果回传,并独立运行测试;返回工具调用的是本地确定性脚本服务,没有使用 DeepSeek API。它验证传输与工具链,不验证模型能否自主发现错误。

查看验证摘要 JSON。你用真实模型完成后,可以留下如下记录:

DSH 版本 / Node 版本 / 系统:
模型与提供方:
权限模式:
基线:pass __ / fail __
修改了哪些文件:
独立验收:pass __ / fail __
未完成的检查:

不要在记录中写密钥。一次成功之后,再考虑把这套步骤保存成 Skill,而不是立刻扩大到整个生产仓库。

官方资料

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

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

常见问题

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

三项测试通过就代表任务完成了吗?

还需要确认只改了 budget.mjs、没有改测试。测试只覆盖本练习规定的输入,不代表完整业务验证。

本站是否用 DeepSeek 模型自主完成了修复?

没有。本站使用本地脚本模型验证了 DSH 的真实 read/edit 工具链,再独立运行测试;真实模型自主表现由读者练习验证。

继续学习

按当前任务继续推进