大数跨境

DeepSeek Harness v0.2.2-alpha.3:更新了什么,以及一个被悄悄关掉的护栏

DeepSeek Harness v0.2.2-alpha.3:更新了什么,以及一个被悄悄关掉的护栏 创见AI实验室
2026-11-04
3
导读:DSH v0.2.2-alpha.3 这次更新:体验层三项优化,底层一行 disabled: true 把「先读后写」护栏默认关掉了——agent 现在可以不读就改文件。

DeepSeek Harness 又发新版了,v0.2.2-alpha.3⁠,离上一个 alpha 版六天。这次更新清单里,有封面能看到的体验优化,也有一行藏得很深、但影响挺大的配置改动。先把这次改了什么列清楚。

这次更新了什么

体验层,一眼能看到的:

  • 统一右键菜单:以前不同位置右键弹的东西不一样,现在收口了。
  • 文件预览常驻目录树:选文件不用再开一次,直接在树里看内容。
  • 「Git 工作树」入口并进了「变更请求与工作树」,两个入口合成一个。

底层,不那么显眼但关键的:

  • 关掉了「先读后写」的文件护栏(下面重点讲)。
  • 新增一个 apply_patch 工具,但目前是默认关闭、而且实际没启用。
  • 定时任务从插件收归到宿主层统一管。
  • TypeScript 和 Python SDK 补了原生命令,run() 的返回值变了。

就这些,一页能看完。真正值得单独拎出来说的,是那个护栏。

一个被关掉的护栏:写文件不再要求先读

以前 base 组合包挂着一个策略:agent 想改一个文件,得先读过它⁠。没读过就写,直接报错拦下;读过之后文件被别人动过,再改也报错。这是防止 agent 不看内容就乱改文件的保险。

dsh0223a-03-guard.png

这一版里,这行配置被改成了 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⁠,写着「临时禁用」。

dsh0223a-04-conflict.png

所以现在的真实状态是:护栏关了,那个本来用来替换它的新工具也没开⁠。也就是说,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 框架长什么样?》。

精选系列





【声明】内容源于网络
0
0
创见AI实验室
创见AI实验室,我们不只是介绍工具,我们共同创造工作方式的未来。
内容 236
粉丝 0
创见AI实验室 创见AI实验室,我们不只是介绍工具,我们共同创造工作方式的未来。
总阅读24.4k
粉丝0
内容236