前言¶
在 DeepSeek Harness (DSH) Web 界面中,当使用 write 或 edit 工具时,文件通常会以普通文本形式打开。如果希望直观地看到当前对话对文件的具体修改(如新增或删除的行),默认视图往往不够直观。这需要一种能自动识别会话变更并提供 git 风格差异展示的方案。
这是什么¶
dsh-session-diff 是一个由 2002XiaoYu 维护的客户端插件。它的核心功能是在 DSH Web 右侧边栏提供会话作用域的 git 风格差异装饰。它解决了在对话过程中无法快速查看代码变更细节的问题,将原本普通的文本查看器转变为带有高亮标记的代码差异视图。
核心功能¶
插件提供以下核心能力:
- 装饰的文件视图:在右侧侧边栏渲染带 git 风格高亮(添加/删除行背景、+/− 标记)和语法高亮的文件。
- 会话变更页面:列出当前对话更改的所有文件及其变更统计(+/− 计数和目录)。
- 实时更新:每次新编辑都会重新读取文件并重新计算差异。
- 未触及文件保持出厂行为:未更改的文件仍使用原有的文本查看器,不影响其他文档(如图片、PDF)的渲染。
- 无宿主行为:插件不运行 shell、git 或直接接触文件系统,仅通过 DSH 的
workspaceFiles远程获取内容。 - 支持常见语言的手写分词器:内置了对多种主流编程语言的语法高亮支持。
安装与启用¶
由于目前没有 npm 发布,需通过仓库安装。安装或升级后必须重启 dsh web 并刷新浏览器。
dsh plugin --profile web add github:2002XiaoYu/dsh-session-diff
典型用法¶
- 打开当前对话中更改的文件,侧边栏会显示 git 风格的差异视图。
- 点击会话变更页面中的条目打开装饰视图。
- 使用头部按钮切换“仅变更”和“整个文件”视图,或重新读取文件。
适用场景与注意¶
- 仅限当前对话:仅显示当前对话的变更,不显示其他对话或手动编辑的变更。
- 长对话限制:在长对话中,最早的变更条目可能会丢失,因为列表是基于客户端保留的对话窗口计算的。
- 文件读取上限:文件读取上限为 20,000 行。
- 路径匹配:分片路径通过后缀匹配地址路径,错误的匹配无法通过。
- 错误处理:重写的文件条目会被标记为未定位;删除的文件报告读取失败而不是崩溃。
- 语言支持:分词器支持 Dart, JS/TS, JSON, YAML, Python, shell, CSS, HTML/XML, Markdown, SQL, Java/Kotlin/Swift/C-family, Go, Rust, PHP。不支持的文件后缀渲染无颜色。
总结¶
对于需要在 DSH Web 界面中快速审查代码变更的开发者,dsh-session-diff 提供了一个轻量级且无侵入性的解决方案。它通过侧边栏装饰和会话变更列表,将 git 风格的差异视图无缝集成到对话流中。