安装
在 DeepSeek Harness 里通过 dsh-market 安装
dsh plugin --profile web add dshmarket
或使用命令行
dsh plugin --profile web add github:sujingkpo/dsh-change-review-live
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络。请先审阅源码,并尽量锁定 commit(github:owner/repo#sha)。
截图
README
[!IMPORTANT] 本项目 fork 自 cirelir/dsh-change-review,并在其基础上持续改造(右侧栏 diff 标签页、实时审查列表、更名等)。 原作者版权与 MIT 许可保留:LICENSE 的 Copyright (c) 2026 cirelir 不变。
DeepSeek Harness(DSH)实时审查插件(dsh-change-review-live):实时追踪会话内的 write / edit 工具调用,把改动以行级 diff 呈现——改动列表常驻输入框上方,diff 正文在右侧栏的独立标签页里查看,可逐项或整文件撤回,颜色可自定义;会话隔离、子代理聚合、SSE 推送。
一个包同时承载 Host 逻辑与浏览器 UI(
dsh.bundle+dsh.client双 manifest)。
✨ 功能
| 功能 | 说明 |
|---|---|
| 自动追踪 | 监听 write / edit 工具调用,记录修改前后内容、时间与所属轮次 |
| 行级 diff | LCS 行级对比:新增(绿)/ 删除(红)/ 上下文(灰),带新旧两侧行号;无变化的长段折叠为「⋯ 省略 N 行(无修改)」 |
| 审查列表 | 输入框上方的常驻面板:状态胶囊 + 路径 + 所在轮次 + 该轮问题 + +N/−N + 时间;点标题栏折叠/展开,展开后可拖拽调整高度(高度按会话记录在 Host 端) |
| 右侧栏 diff 标签页 | 本插件自注册的侧栏标签类型:标题为「文件名 (diff)」并带红/绿 diff 图标,正文是该文件的完整 diff 与撤回操作 |
| 三段对比 | 每个文件可切换「会话记录」(本会话逐项改动)/「初始版本」(本会话首次修改前的样子)/「Git 版本」(HEAD)对比 |
| 撤回修改 | 单独撤回某一项(其后无冲突的修改保留),或撤回该文件的全部修改(恢复到本会话首次修改前;会话中新建的文件则删除)——每次二次确认,确认后直接改写磁盘 |
| 打开文件 | 优先在 DSH 右侧栏内预览该文件;服务缺失或地址无人认领时降级为系统默认程序打开 |
| 右键菜单 | diff 行右键:复制「文件地址#行号」(选中多行时复制行号范围) |
| 文件状态 | 新增 / 修改 / 删除 胶囊;删除 = 该文件当前不在磁盘上(新建后又删掉也算删除),文件名加删除线并禁用「打开文件」,但 diff 仍可查看与撤回 |
| 颜色自定义 | 设置 → 实时审查:12 项颜色,每项带透明度滑块(rgba),改动即时生效并自动保存;含浅色 / 深色预设与「恢复默认(随外观)」 |
| 会话隔离 / 子代理聚合 | 每个会话只展示自己的修改;子代理的修改沿 owner 链聚合到根父会话 |
| 实时刷新 | Host 记录后经 SSE 推送,列表与 diff 面板随改动实时刷新,另有轮询兜底 |
📸 截图
审查列表 —— 输入框上方实时列出本会话改动的文件:状态胶囊、路径、所在轮次、该轮问题与 +N/−N

侧栏 diff 标签页 —— 点文件名后在右侧栏查看逐项 diff、段落级撤回与三段对比模式

📦 安装
dsh plugin add
dsh plugin --profile web add github:sujingkpo/dsh-change-review-live
直接从 GitHub 仓库安装(npm 上还没有发布本包);装到 DSH Desktop 的 profile 时把
web换成desktop。安装后重启 DSH。客户端 bundle 声明
platform: web,dsh web与 DSH Desktop 共用;依赖 DSH 的右侧栏 API(sidebarRightTabs/sidebarRight)。
🚀 使用
- 会话里发生文件写入 / 编辑后,输入框上方出现 审查列表 面板(默认折叠;没有改动时不出现):点标题栏展开,列表按最近修改倒序排列
- 每行显示:状态胶囊、路径(目录段可省略,文件名恒完整)、
第 N 轮徽章、该轮问题、+N/−N、时间,行尾是 打开文件 - 点整行或点文件名 = 在右侧栏打开该文件的 diff;行尾「打开文件」= 在右侧栏打开文件本身(删除态置灰不可点)
- 侧栏 diff 面板顶部两行:第一行是状态胶囊 + 路径(悬停看完整绝对路径);第二行是操作 —— 复制路径 / 打开文件 / 刷新 / 对比模式(会话记录 · 初始版本 · Git 版本)/ 撤回全部(仅会话记录模式)
- diff 按「编辑 / 写入」分段,段头显示说明、时间、该轮问题、
第 N 轮与 撤回此项(仅会话记录模式) - 刷新语义:会话记录模式随改动自动刷新(SSE,另有 15 秒兜底轮询);初始版本 / Git 版本不自动刷新,用「刷新」按钮手动重取;面板不可见(侧栏收起或标签在后台)时暂停轮询
- 右键 diff 行 → 复制「文件地址#行号」(选中多行时复制行号范围)
- 颜色:设置 → 实时审查,改动即时生效并自动保存
🎨 颜色配置
| 配置项 | 键名 | 浅色默认 | 深色预设 | 作用位置 |
|---|---|---|---|---|
| 新增行背景 | addBg |
#e6ffec |
#10251c |
diff 新增行背景 |
| 新增行文字 | addFg |
#1a7f37 |
#7ee787 |
diff 新增行文字 |
| 删除行背景 | delBg |
#ffebe9 |
#2d1415 |
diff 删除行背景 |
| 删除行文字 | delFg |
#cf222e |
#ffa198 |
diff 删除行文字 |
| 上下文背景 | ctxBg |
#f6f8fa |
#161b22 |
diff 上下文行背景 |
| 行号 / 标记 | gutter |
#57606a |
#8b949e |
行号与 +/− 标记 |
| 角标背景 | badgeBg |
#0969da |
#4493f8 |
已无显示位置(见下) |
| 角标文字 | badgeFg |
#ffffff |
#0d1117 |
已无显示位置(见下) |
| 新增行数(对话底部) | turnAdd |
#1a7f37 |
#7ee787 |
列表行 +N、「新增」胶囊、侧栏图标右半 |
| 删除行数(对话底部) | turnDel |
#cf222e |
#ffa198 |
列表行 −N、「删除」胶囊、侧栏图标左半 |
| 背景色(对话底部) | turnBg |
rgba(255,183,77,.1) |
同左 | 已无显示位置(见下) |
| 边框色(对话底部) | turnBorder |
#ffb74d |
同左 | 已无显示位置(见下) |
badgeBg/badgeFg与turnBg/turnBorder原本服务于「审查」视图标签的数量角标和「本轮变更审查」卡片,这两个界面已移除;设置页仍保留这四项,但改动它们不会影响任何界面。
🧠 行为说明
- 追踪范围:本进程内所有会话的
write/edit调用,按会话分桶;子代理的改动沿 owner 链聚合到根父会话 - 实时性:Host 记录后广播 SSE(
/diff-review/events),客户端只处理当前会话的事件;另有轮询兜底 - 持久化:
- 修改记录:
$DSH_HOME/diff-review/<sessionId>.json(未设DSH_HOME时回退~/.dsh),防抖自动保存、退出时同步落盘,重启后自动恢复;删除该目录即清空历史 - UI 偏好:面板高度按会话存
$DSH_HOME/diff-review/ui/<sessionId>.json - 颜色:浏览器 localStorage(
dsh.diff-review.colors)
- 修改记录:
- 文件状态判定:新增 = 该文件的首个操作没有「修改前内容」(会话中新建);删除 = 该文件当前不在磁盘上(不解析删除命令);其余为修改
- 轮次归属:写记录时扫描会话日志的
turn/start给每项操作打轮次;升级前落盘、没有轮次的旧记录按时间线回填 - 撤回原理:每项操作记录 write / edit 返回的完整前后快照。撤回最后一项 = 精确还原快照;撤回中间一项 = 三路行合并(保留其后无冲突的修改),重叠即拒绝并提示
- 容量保护:单文件最多 100 次操作;单侧 diff 最多 1500 行;三路合并单侧上限 2000 行;展示用片段最多 350,000 字符;超过 5,000,000 字符的超大文件不存快照(该记录退化为片段 diff 且不可撤回)
- 生效范围:Host 端(
lib/index.js)改动需重启 DSH;浏览器端(lib/client.js)改动刷新页面即可
🗂 架构
Host(lib/index.js)
· tools/result 监听 → 按会话分桶记录 + 轮次归属
· LCS 行级 diff、三路合并撤回
· HTTP:/diff-review/{events(SSE) · summary · file · turn · against · revert · ui-prefs · open}
│ HTTP + SSE(同源)
Browser UI(lib/client.js,__ModuleLoader__ bundle)
· SessionProbe(隐藏)同步当前会话
· LivePanel:输入框上方的审查列表(conversation.input.dock)
· 自注册侧栏标签类型 dsh-change-review-live:diff-review:正文注册到 sidebar.right.pane.tab,标题图标注册到 sidebar.right.pane.tab.title
· 设置页「实时审查」颜色自定义
⚖️ 免责声明
插件代码与你的 harness 进程同权限运行。使用前请审阅源码;收录于社区市场不构成安全背书。
📄 License
MIT
评论
评论存放在 GitHub Discussions。用 GitHub 账号登录后可发表评论或点表情。