dsh-diff-review:DeepSeek Harness 代码变更审查插件

前言

在智能体开发中,让 Agent 调整文件后,开发者往往需要逐个查看变更、核对 diff,再决定是否回滚。如果变更较多,这种手动操作会明显拖慢迭代节奏。DeepSeek Harness(DSH)的插件生态支持将这类能力下沉为原生 UI 组件,减少手动跳转与复制粘贴。下面介绍 dsh-diff-review,它为 DSH 提供类似 Codex 的变更审查流:输入框上方出现计数胶囊,hover 展开文件列表,右侧打开语法高亮的 diff 页与一键回退。

这是什么

dsh-diff-review 是一个客户端插件,由 ChiffonOwO 维护。它为 DSH 的对话界面注入两类 UI:
- 位于输入框上方的胶囊,实时统计当前轮次中修改的文件数与增删行数;
- 右侧侧边栏中的标签页视图,显示单个文件的 diff,支持按语言语法高亮与一键回退。

插件不依赖 git,内部使用 LCS 算法计算 diff,适用于任意目录下的文件编辑。它通过 host 的 tools/post-execute 与 session/event 事件记录前后内容,并利用浏览器会话的同源接口返回变更与 diff 数据。

核心功能

1. 变更计数胶囊

  • 胶囊居中悬浮于输入框上方,显示格式为 N files changed +M −K,其中 N 为文件数,M 为新增行,K 为删除行。
  • 计数仅统计当前轮次内工具 edit/write 返回的文件变更,同一文件的多处编辑按本轮起始内容计算,而不是仅取最后一次编辑。
  • 胶囊旁有数字变化时的微动效,可通过 prefers-reduced-motion 禁用。

2. 文件列表悬停展开

  • 将鼠标悬停在胶囊上时,列表从胶囊上方浮出,箭头向上 (▴);移出时淡出。
  • 列表宽度自适应最长文件名,不会出现拉伸的空白右侧;超长路径在宽度受限时截断显示省略号。
  • 文件名左对齐,计数列右对齐,不干扰原生待办与队列 dock 的布局。

3. 右侧 diff 审查页

  • 点击文件名后,右侧侧边栏打开审查页,顶部为横向可滚动的标签页,下方显示选中文件的 diff。
  • 语法高亮依据文件扩展名(dart、cpp、py、js、mjs 等),颜色取自客户端的 shiki 高亮器与主题 token。
  • 未加载语法时先以纯文本渲染,加载后自动重绘。

4. 一键回退

  • 审查页提供“Revert all”按钮,可将本轮所有变更回写到原文件。
  • 回退操作仅在文件内容与记录一致时写入,若出现冲突则报告错误,避免盲目覆盖。

5. 性能优化

  • Diff 行按 60 行一组打包到 content-visibility: auto 盒中,离屏组跳过布局与绘制。
  • 高亮与元素构建按 payload 缓存,减少重复计算。
  • 在 2000 行 diff 的场景下,滚动帧 p50 约 16.7ms,p95 约 17.7ms(逐行渲染时退化至 p50 20.6ms)。

安装与启用

从预构建 tarball 安装(无需构建):

dsh plugin --profile web add https://github.com/ChiffonOwO/dsh-diff-review/releases/latest/download/dsh-diff-review.tgz

或直接从源码安装:

dsh plugin --profile web add github:ChiffonOwO/dsh-diff-review

安装后需重启应用,插件列表在启动时读取。在桌面端使用时,将 --profile web 替换为你的 profile 名称。

典型用法

让 Agent 进行一次文件编辑,当轮次中出现变更时,输入框上方会出现计数胶囊。此时:

  1. 将鼠标悬停在胶囊上,查看本轮修改的文件列表与增删行数。
  2. 点击任意文件名,在右侧打开该文件的 diff 审查页。
  3. 在审查页中切换不同文件(通过顶部标签页),或使用“Revert all”将本轮变更回退。

若要移除插件,在 profile 的 package.json 中删除 dsh.profile.bundles 列表里的 dsh-diff-review,然后重启应用。

适用场景与注意

  • 适合需要频繁查看与控制 Agent 文件变更的开发者,尤其是多文件、多轮次的迭代场景。
  • 插件以当前 DSH 进程权限运行,建议在安装前阅读源码与许可证(MIT),确认无安全风险。
  • 已知限制:变更记录仅保存在进程内存中,重启后旧会话的历史 diff 需等新轮次生成;每会话最多保留最近 12 轮;diff 单侧超过 4000 行会被截断;删除文件不会触发 edit/write,因此不会显示为变更;修改 client.js 需重启应用,客户端 HMR 不覆盖已打开的页面。

总结

dsh-diff-review 通过计数胶囊与右侧审查页,将 Agent 的文件变更集中展示,提供语法高亮与一键回退能力,减少手动比对与操作步骤。如果你在 DSH 中频繁处理多文件变更,这个插件可以显著提升审查与回退的效率。

  • 目录页:https://www.skillhub.cn/plugins/ChiffonOwO/dsh-diff-review
  • GitHub:https://github.com/ChiffonOwO/dsh-diff-review
羽毛球分组比赛记分
小程序二维码

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

小夜