前言¶
在 DeepSeek Harness(DSH)里跑智能体会话时,模型会通过 write 和 edit 工具改文件。一轮对话下来,改动往往分散在多个路径,单靠终端日志或事后 git diff 很难按「这一轮改了什么」来核对。
下面介绍的 dsh-change-review(维护者 cirelir)是 DSH 社区目录中的一款客户端插件,在 Web 界面里自动记录会话内的文件写入与编辑,用行级 diff 展示变更,并支持按会话隔离、子代理聚合和 SSE 实时推送。当前版本 v0.3.0,GitHub 上约 9 stars、2 forks,许可证为 MIT。
这是什么¶
一句话定位:会话级修改审查插件——监听 write / edit 工具调用,保存前后内容与时间戳,在浏览器里渲染可自定义颜色的行级 diff。
一个 npm 包同时携带 Host 逻辑与浏览器 UI(dsh.bundle + dsh.client manifest),面向 dsh --profile web 的 Web 配置,不适用于纯 CLI 场景。
核心功能¶
自动追踪与 diff 展示¶
插件监听会话中的 write 和 edit 调用,记录每次操作的前后快照。展示层用 LCS 行级 diff:新增行(绿)、删除行(红)、上下文行(灰),两侧带行号。
会话隔离与子代理聚合¶
每个会话只审查自己的变更;切换会话即切换审查范围。子代理(subagent)产生的改动会沿 owner 链汇总到根父会话,避免在子会话里漏看文件修改。
SSE 实时推送¶
Host 通过 SSE(/diff-review/events)推送事件,客户端只处理当前会话的更新。「审查」标签上的待审文件数会随改动实时递增,无需轮询。
会话级与单轮审查¶
「审查」标签(位于「对话」与「轨迹」之间)提供会话范围的文件列表与 diff 预览。左侧按目录分组列出文件(含 write/edit 次数与约增删行数),右侧展示选中文件的 diff;两侧滚动独立。顶部切换可限定为此会话或最新一轮。
每轮对话结束后,该轮尾部会出现本轮变更审查卡片,列出本轮改动的文件,可展开 diff 并对单次操作撤回。会话累计变更仍在「审查」标签中,两处视图互不替代。
撤回修改¶
所有撤回操作需确认,并直接写回磁盘:
- 撤回此项:针对某次 write/edit,恢复到该次操作前的内容;后续不重叠的改动保留,重叠时拒绝并提示。
- 撤回全部修改:将文件恢复到本会话首次记录前的状态;若文件是会话内新建的,则删除该文件。
升级前创建、未保存内容快照的记录无法撤回(界面不显示撤回按钮)。
颜色自定义¶
在 Settings → 修改审查 下可配置 12 项颜色(含增删行背景/文字、上下文、行号、徽章、单轮卡片等),每项带 rgba 透明度滑块,支持浅色/深色预设与恢复默认。配置保存在 localStorage(键名 dsh.diff-review.colors)。
其他界面行为¶
插件会隐藏左侧边栏中的 Cordis 插件运行指示器(cordis-panel),减少视觉干扰。
安装与启用¶
通过 dsh 命令安装(推荐)¶
插件发布到 npm 后,在 Web 配置下执行:
dsh plugin --profile web add dsh-change-review
安装完成后重启 dsh web。
手动部署¶
- 将包放到 harness 可解析的位置(例如
node_modules),在 profile 的cordis.patch.yml中注册:
- insert:
- id: diff-review
name: 'dsh-change-review'
- id: ui-diff-review
name: 'dsh-change-review'
- 重启
dsh web。
社区目录页:SkillHub — dsh-change-review。SkillHub 是独立社区站点,与 DeepSeek / 幻方无官方从属关系。
典型用法¶
- 打开一个会话,点击 「审查」 视图标签。
- 在文件列表中选中目标文件,右侧查看 diff;用顶部开关在「此会话」与「最新一轮」之间切换范围。
- 文件被修改时,标签徽章会实时更新;可用 ↻ 刷新、清空 清除当前会话记录。
- 需要回滚时,在 diff 区块头点击 撤回此项,或在详情顶部点击 撤回全部修改。
- 每轮对话结束后,在对话尾部查看 本轮变更审查 卡片,点击文件名展开 diff 并逐项撤回。
- 调整 diff 配色:进入 Settings → 修改审查,改完后自动保存,刷新页面仍生效。
审查记录会持久化到 ~/.dsh/profiles/web/diff-review-state.json(防抖自动保存,退出时同步刷盘),重启 dsh web 后自动恢复;删除该文件可清空全部历史。
行为边界与注意事项¶
容量限制(来自 README 行为说明):
- 每个文件最多记录 100 次操作
- 单次操作内容超过 120KB 会截断
- diff 展示每侧最多 1500 行
- 单次撤回使用的三路合并每侧最多 2000 行
升级注意:Host 侧改动需重启 dsh web;仅浏览器侧改动刷新页面即可。旧版无 turn 信息的记录不会出现在单轮卡片中,但仍可在「审查」标签查看。
权限与安全:插件以当前 dsh 进程权限运行,撤回操作会直接写磁盘。安装前建议阅读 源码 并确认 MIT 许可证;勿在未审阅的情况下在生产环境盲目启用。
适用人群:需要在 DSH Web 会话中实时看清 AI 改了哪些文件、按轮次或按操作撤回、并与子代理改动统一审查的开发者。若只关心最终 git 状态、不需要会话内可视化审查,可不必安装。
小结¶
dsh-change-review 把 DSH 会话里的 write/edit 变成可浏览、可 diff、可撤回的审查流,并靠会话隔离、子代理聚合和 SSE 推送适配多轮、多代理的复杂会话。在 Web profile 下一条命令即可安装。