DeepSeek Harness 又发新版了,v0.2.2-alpha.3,离上一个 alpha 版六天。这次更新清单里,有封面能看到的体验优化,也有一行藏得很深、但影响挺大的配置改动。先把这次改了什么列清楚。
这次更新了什么
体验层,一眼能看到的:
-
统一右键菜单:以前不同位置右键弹的东西不一样,现在收口了。 -
文件预览常驻目录树:选文件不用再开一次,直接在树里看内容。 -
「Git 工作树」入口并进了「变更请求与工作树」,两个入口合成一个。
底层,不那么显眼但关键的:
-
关掉了「先读后写」的文件护栏(下面重点讲)。 -
新增一个 apply_patch 工具,但目前是默认关闭、而且实际没启用。 -
定时任务从插件收归到宿主层统一管。 -
TypeScript 和 Python SDK 补了原生命令, run()的返回值变了。
就这些,一页能看完。真正值得单独拎出来说的,是那个护栏。
一个被关掉的护栏:写文件不再要求先读
以前 base 组合包挂着一个策略:agent 想改一个文件,得先读过它。没读过就写,直接报错拦下;读过之后文件被别人动过,再改也报错。这是防止 agent 不看内容就乱改文件的保险。
这一版里,这行配置被改成了 disabled: true。意味着所有叠 base 的 profile——headless、web、sdk、acp——现在都允许 agent 不读就改:write 直接覆盖,edit 直接替换。沙箱、事件、review 这些别的保护都没动,动的就这一条「能不能不读就改」。
官方不是偷偷改的,理由写在了一份设计文档里,结论写得很直白:
A model can overwrite or edit a file it never read.
一个模型,可以覆盖或编辑它从没读过的文件。他们自己把这句话写进了「后果」那一栏。
但有个对不上的地方。 那份文档和升级指南里,都写新增的 apply_patch 工具应该是开着的(applyPatch: true)。可实际上 tag 里是 false——我核了 base、Web、npm 三处,全是关的。git 提交记录里有一条 temporarily-disable-apply-patch,写着「临时禁用」。
所以现在的真实状态是:护栏关了,那个本来用来替换它的新工具也没开。也就是说,agent 现在既没有「先读后写」的约束,也没有 apply_patch 这个更稳的写文件方式,就剩最直接的那两个:直接覆盖、直接替换。
顺带提一句 apply_patch
那个被临时关掉的新工具,设计思路其实值得说。它是 Codex 风格的补丁工具——喂给它一段 *** Begin Patch 到 *** End Patch 的文本,它就能批量加文件、改文件、删文件,参数名都照着 Codex 的模型习惯来起的。
最有意思的是它的两阶段设计:语法检查和预检阶段如果出错,一个文件都不会动;但一旦进入真正的写入阶段,就是按顺序执行、遇到第一个失败就停、而且不回滚。所以官方提示里专门写了句「重试前先重读受影响的文件」——前面的改动已经留下了。
这个工具要等它真正打开才有用,现在知道有这回事就行。
升级要留意的
升级本身很简单:
npx @deepseek-ai/dsh@alpha web
不过 npm 的 latest 标签还停在 0.2.1-rc.5,跟 alpha 标签才是 0.2.2-alpha.3,别装错了。
有两点值得在升级前确认:
如果你依赖「先读后写」这条约束(比如怕 agent 乱改代码),它现在默认是关的。想加回来,编辑 $DSH_HOME/profiles/<profile>/cordis.patch.yml:
- id: fs-observation-policy disabled: false
改完用 dsh --profile <profile> --dump-config 看 fs-observation-policy 的 disabled 是不是没了,再对个没读过的文件试下 edit,正常应该报错拦下。
如果你之前单独启用过「工作树」插件,这次它并进了主入口,得手动从 dsh.profile.bundles 里删掉 @deepseek-ai/dsh-experimental-tool-worktree,否则两个包会撞出重复 id,让面板变只读。
我的看法
这版我最在意的,其实不是功能,是「默认值」这件事。一个 Agent 框架把「改文件要不要先读」从产品决策,变成了配置文件里的一行默认值——而这份默认值,本身就是产品决策。
官方把为什么关、关了有什么后果写进文档,这点很坦荡,比很多项目强。但「文档写开启、实际是关闭」这种对不上,又让坦荡打了折扣。一个写反了的布尔值,读者自己是很难察觉的——除非你像我一样去 dump 一遍配置。
所以提醒一句:如果你机器上跑着会改代码的 agent,现在去 dump 一下 config,看一眼 fs-observation-policy 到底是开是关。默认,是关的。
系列导航:本篇是 DSH 版本观察的最新一篇。上一篇是《DeepSeek Harness v0.2.2-alpha.2:一个 alpha 版写了 116 条变更,49 小时 2161 个提交》,最早那篇介绍在《DeepSeek Harness(dsh)正式开源:DeepSeek 出的 Agent 框架长什么样?》。






