用 dsh-file-review 在 DeepSeek Harness Web 里审查智能体刚改过的文件

前言

用 DeepSeek Harness(dsh)跑一轮任务,智能体常常会在工作区里连续改好几个文件。对话里能看到工具调用,但要确认「这一轮到底改了什么」,还得自己去翻工作区、对 diff,或者把变更丢到编辑器里再看一遍。改得越多,漏看一行、误覆盖一段的概率就越高。

dsh-file-review 把这件事收回到 Web 界面里:智能体刚改过的文件会出现在当前轮次末尾,点开就能看带行号的 unified diff,必要时还能撤销这一轮的文本修改。它是社区维护的界面增强插件,不是 DeepSeek 官方内置功能。本文按社区目录页、GitHub 仓库、npm 包和源码交叉核对后整理:它是什么、能做什么、怎么装、怎么用。

这是什么

dsh-file-review 是一款面向 DeepSeek Harness Web 界面的文件审查插件,由 GitHub 用户 left0ver 维护,采用 MIT 许可证,主要语言是 TypeScript。社区目录把它归在「界面增强」,一句话介绍是:审查智能体刚改过的文件,一眼看到 diff。

仓库 README 写得更具体:不必离开 DeepSeek Harness Web,就能审查 Agent 刚刚修改的每个文件。npm 上的说明则是:把 Harness 各轮产出的文件,放进带行号的 unified diff 抽屉里查看。当前 npm 版本是 0.3.1(2026-08-15 发布)。GitHub 仓库在本文核对时显示 16 个 star;社区目录页当时标注为 11,以仓库页面为准。

DeepSeek Harness 的官方定位是「一切皆插件」:模型、工具、会话、沙箱、UI 都做成可替换插件。dsh-file-review 挂在 Web 对话的轮次尾部,给「这一轮写了哪些文件」补一块审查面板。收录它的 DeepSeek Harness 插件库 是独立的社区站点,与 DeepSeek / 幻方没有官方从属关系,不要把它当成官方应用商店。

它解决的问题很具体:

  • 智能体这一轮创建或修改了哪些文件
  • 每个文件相对改动前差在哪几行
  • 改错了,能不能把这一轮的文本修改撤回去

核心功能

仓库 README 列出两项能力,源码与界面文案可以对上。

1. 当前轮次的产出文件列表和 diff 面板

插件会监听本轮成功的文件变更,而不是去读模型收尾那句话里有没有提到文件名。源码里的判定依据是工具结果的展示形态:diff 卡片,或者 kindedit 的通用卡片(例如 str_replace_editor 的插入)。只读、删除、失败的调用不会进入列表——读文件不会「产出」文件,删除后也没有可打开的对象。

同一轮里先写后改的路径只保留一条,按首次出现的顺序排列。对话轮次末尾会出现「已编辑文件」卡片,可以点某个文件审查,也可以审查全部产出文件。点开后是一块可拖动缩放的审查面板(双击恢复默认大小),内容是带旧/新行号的 unified diff:新增行、删除行、上下文行分开显示,未改动的大段可以折叠。面板上还能看到「新增 / 删除行数」、复制差异、在编辑器中打开当前文件。

宿主侧还会往系统提示里加一段说明:模型成功创建或修改文件后,应在最终回复里用 Markdown 行内代码写出确切路径(或本轮内唯一的文件名)。这样收尾文字里的文件名也可以点开。两个文件如果 basename 相同,行内代码不会乱猜,避免点错文件。

2. 撤销 / 重新应用这一轮的文本修改

审查面板提供「撤销」和「重新应用」。撤销针对的是当前轮次里已经落到磁盘上的文本 hunk,不是整份 Git 历史,也不是跨轮次的工作区快照。

宿主服务会在智能体空闲时做维护写入(agent.runMaintenance),并且有几条硬限制,都写在源码里:

  • 路径必须落在当前会话工作区内,解析后也不能越出工作区
  • 不支持符号链接,只处理普通文件
  • 文件必须是合法 UTF-8 文本;二进制会直接拒绝
  • 必须有完整、可双向还原的 diff;对不上、同时匹配撤销和重做两个方向、写入过程中文件被外部改过,都会标成冲突或 unsupported,而不会强行覆盖

某一文件无法安全还原时,界面会提示「本次更改中没有可安全还原的文件」,并跳过这部分,而不是假装全部成功。

安装与启用

目录页给出的安装命令如下,在 DeepSeek Harness 终端中运行即可:

dsh plugin add github:left0ver/dsh-file-review

这是 Web 专用插件。作者 README 要求显式指定 web profile,并同时提供 npm 包名安装:

dsh plugin --profile web add dsh-file-review

从 GitHub 安装的等价写法:

dsh plugin --profile web add github:left0ver/dsh-file-review

装完后启动 Web 界面:

dsh web

README 徽章标明兼容 DeepSeek Harness 0.1.xpackage.json 的 peerDependencies 把宿主包限制在 >=0.1.0-rc.5 <0.2.0dsh.client.platformweb。不要指望它出现在纯终端 TUI 会话里。

pnpm 冷静期

较新版本的 pnpm 会拦截刚发布的包。要从 npm 装到最新版,README 要求先编辑 ~/.dsh/profiles/web/pnpm-workspace.yaml,把包名加入排除列表:

minimumReleaseAgeExclude:
  - dsh-file-review

固定 commit

目录页提醒:如需可复现安装,请固定 commit 哈希。写法是在仓库说明符后面加 #commit。本文核对时,仓库 main 最新提交是 4e4e17ce8e1b1811ba280dcd3c50ad7f1ff07532(2026-08-15),可以写成:

dsh plugin add github:left0ver/dsh-file-review#4e4e17ce8e1b1811ba280dcd3c50ad7f1ff07532

使用 web profile 时,把同样的 #commit 接到 README 那条 --profile web 命令后面即可。固定哈希之后,仓库后续推送不会在你下次安装时悄悄换成另一份代码。

从源码安装、更新与卸载

从源码安装(作者文档):

git clone https://github.com/left0ver/dsh-file-review.git
cd dsh-file-review
pnpm install
pnpm run build
dsh plugin --profile web add ${PWD}

更新与卸载:

dsh plugin --profile web update dsh-file-review
dsh plugin --profile web remove dsh-file-review

目录页和 README 都写明:插件以当前 dsh 进程的权限运行,安装时可能执行代码。安装前应检查源代码仓库和许可证。

典型用法

作者把操作路径写成四步:Chat → Generate → Click a changed file → Review。按仓库说明,可以这样走一遍。

  1. dsh web 打开 Web 界面,在某个有工作区的会话里发任务,让智能体创建或修改文件,例如改一个源文件、补一段配置。
  2. 等这一轮结束。如果确实发生了成功的写入 / 编辑,对话该轮末尾会出现「已编辑文件」卡片,列出本轮产出路径。
  3. 点某个文件名上的「审查」,或点「审查所有产出文件」。右侧(或底部,取决于面板布局)会打开审查抽屉,显示带行号的 unified diff、新增 / 删除行统计。未改动的上下文默认折叠,可以展开。
  4. 需要对照完整文件时,用「在编辑器中打开」。需要把 diff 带走时,用「复制差异」。
  5. 确认这一轮改错了,且文件仍是可还原的 UTF-8 文本,再点「撤销」。撤销成功后可以用「重新应用」加回去。智能体仍在跑的时候不要指望立刻写入,宿主会等到维护窗口。

模型如果在收尾里用行内代码写出了路径(或本轮唯一的文件名),这段文字本身也可以点,效果和卡片上的打开操作一致。

适用场景与注意事项

适合这些情况:

  • 日常在 DeepSeek Harness Web 里让智能体改代码、改配置、写文档,希望当场核对这一轮 diff
  • 改动集中在文本文件,需要一行行看增删,而不是只看工具调用摘要
  • 改错了想立刻撤回本轮文本修改,还不想为此切到外部 Git 工具

使用前注意下面几条,均来自目录页、README 或源码,不是额外发挥:

  1. 只覆盖 Web profile。 package.json 声明 platform: web,终端 TUI 或其他 profile 装上也不会出现这套卡片和抽屉。
  2. 审查范围是当前轮次的成功变更。 只读、删除、失败调用不进列表;跨轮次的工作区脏状态、未纳入工具 locations 的改动,插件不会自动补齐。
  3. 撤销不是 Git revert。 它按记录的 hunk 在磁盘上做文本还原,且必须能严格对上当前内容。二进制、符号链接、工作区外路径、不完整 diff、外部同时改文件,都会失败或跳过。
  4. 宿主版本要匹配。 README 标明 DeepSeek Harness 0.1.x;peer 依赖卡在 0.2.0 以下。升级到不兼容的宿主版本前,应先看插件是否同步更新。
  5. 权限与供应链。 插件以当前 dsh 进程权限运行,安装可能执行代码。社区目录不是官方商店。安装前阅读仓库源码和 MIT 许可证;需要可复现环境时固定 commit,不要只信包名。
  6. 同类插件不要混为一谈。 社区里还有 dsh-change-reviewdsh-review-loopdsh-revdiff 等审查类插件,跟踪范围、入口(Web / 终端 / 命令)和能否把意见回写给智能体并不相同。本文只核对 left0ver/dsh-file-review

小结

dsh-file-review 给 DeepSeek Harness Web 补了一块很窄的界面:智能体这一轮改了哪些文件、diff 长什么样、能不能把这一轮文本改动撤回去。它不替代 Git,也不做跨会话的代码审查流水线,只把「刚改完、马上对一下」留在对话旁边。

目录页与仓库:

  • 社区目录:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-file-review/
  • GitHub:https://github.com/left0ver/dsh-file-review
  • npm:https://www.npmjs.com/package/dsh-file-review
  • DeepSeek Harness:https://github.com/deepseek-ai/deepseek-harness
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜