dsh-vcs
已验证@feng0531/dsh-vcs · v0.3.77 · SEE LICENSE IN LICENSE · Web 界面
Read-only Git and SVN change preview for DSH
安装
dsh plugin add @feng0531/dsh-vcs 用 dsh --profile default --dump-config 确认 layer 已生效 —— 参见安装指南。
源码
标签
作者
说明文档
DSH VCS
在 DeepSeek Harness(DSH)Web 中查看 Git / SVN 文件变更和提交历史的只读插件。
你可以查看差异、浏览历史、追溯文件,但不能通过本插件修改文件、暂存、提交、拉取或推送。
能做什么
| 场景 | 功能 |
|---|---|
| 查看工作区变更 | Git 全部、已暂存、未暂存文件;SVN 本地基线与工作副本、属性差异 |
| 阅读代码差异 | 默认 Monaco 只读 Diff,支持并排/行内、换行、忽略行尾空白、上一处/下一处差异 |
| 浏览 Git 历史 | 搜索提交说明、作者和路径;查看本地分支、提交图、提交详情与目录 |
| 比较历史版本 | 比较提交与选定父提交,或选择两个本地提交进行 A/B 比较 |
| 追溯代码来源 | 文件历史、唯一来源重命名追踪(含改名同时修改)、Blame(逐行查看最后修改者和提交) |
| 查看其他内容 | 支持部分静态图片比较;较大历史 UTF-8 文件可分段阅读 |
| 浏览 SVN 历史 | 明确同意连接后,查看 HTTPS 仓库日志、修订差异和文件历史 |
提供中英文界面。编辑器加载失败时会显示基础文本比较;它不是完整的 Monaco 替代品。
安装
需要:
- Node.js 22 或更新版本。
- DSH Web:声明兼容 0.1.7-rc.2 或 0.2.0-rc.2。
- 系统 PATH 中有 Git 或 SVN;只使用 Git 时无需安装 SVN。
profile是DSH的配置和插件环境,不是Session。下面的web是示例,请先确认运行中的DSH使用哪个profile;若不同,替换命令中的web。宿主插件命令通过pnpm执行,需确保该工具可用。
在终端执行:
dsh plugin --profile web add @feng0531/[email protected]
安装后由你自行重启 DSH,再刷新原来的 Web 页面。安装会改变所选 profile;升级前请备份配置。本项目的发布不会自动升级或重启你的 DSH。
也可以从 GitHub Release 下载 tgz 和校验文件,核对 SHA-256 后安装:
dsh plugin --profile web add "<tgz 的绝对路径>"
升级、旧包迁移和回滚见安装指南。
开始使用
- 在 DSH 中选择一个 Session,确认它的工作目录在项目内。
- 打开 VCS 页面,发现仓库,再从顶部下拉框选择仓库。
- 点击文件查看差异,或进入历史视图浏览提交。
- SVN远程历史需先审阅并明确同意。复制成员可主动查看范围内的固定来源历史,不自动跨复制追溯。
- 外部工具修改了项目后,手动刷新;可见窗口重新获得焦点时也会刷新。没有定时轮询。
默认发现当前目录、一级子目录以及包含当前目录的上级仓库。项目更深时,输入相对 Session 目录的子目录,例如 packages/example;不接受任意绝对路径或越界路径。
注意:Session 位于仓库子目录时,发现后的查看范围可以覆盖整个仓库。
左右两侧比较的是什么
| 模式 | 左侧 | 右侧 |
|---|---|---|
| Git 全部 | 最近提交(HEAD) | 当前工作区 |
| Git 已暂存 | 最近提交(HEAD) | 暂存区(Index) |
| Git 未暂存 | 暂存区(Index) | 当前工作区 |
| SVN 本地变更 | 本地基线(BASE) | 当前工作副本 |
新增文件可能使用空白左侧。冲突文件只供查看,不提供三方合并或冲突解决。
SVN 历史需要单独同意
本地 SVN 变更比较不连接服务器。打开远程历史前,需要审阅服务器与路径范围并勾选同意;授权约 5 分钟后过期,须重新手动同意。
目前仅支持系统信任、无需额外认证的 HTTPS SVN 服务。不提供用户名/密码、自定义证书或其他协议。历史范围固定在本地工作副本的修订,不自动获取服务器最新版本。
目前的限制
- 不是完整的 Fork 客户端:没有仓库写操作,历史图和列表都有容量限制;分支导航使用本地分支、标签及本地缓存的远程跟踪引用,不连接远端、不 fetch。
- 普通文本比较每侧最多 2MiB。Git提交/A-B/工作区三个模式比较超限时可手动加载完整UTF-8文本,每侧最多 8MiB、10万行,单行最多65536字符;计算超时会明确提示结果不完整。工作区读取期间发生变化会拒绝结果,但不是系统级原子快照;SVN大文件仍不支持。
- 历史 UTF-8 正文分段最多 16MiB;分段阅读不是完整Diff,与上述完整比较是不同功能。
- 重命名追溯仅沿第一父链,至少50%相似且确认唯一删除源/新增目标;合并、复制、歧义或累计32次确认后停止。
- 树浏览和来源行预览可手动查看该历史路径的文件历史,并可选跟随重命名;路径必须存在于所选提交,跟随规则与路径历史一致(第一父链、≥50%相似、唯一确认、32次上限)。
- 冲突文件可额外手动查看 Git Index 阶段1/2/3,任意两阶段可只读比较。缺失阶段显示为空、不推断原内容;阶段编号不声称合并/变基归属。每阶段仍为 2MiB 预览;不读取工作文件、不解决冲突,子模块只显示提交引用,链接只显示目标文本。
- 图片支持 PNG、基线 JPEG 和简单静态 VP8/无损VP8L WebP;动画、扩展 WebP 等不支持。
- 支持 UTF-8、GBK、带 BOM 的 UTF-16;不是通用编码检测器。
- 取消状态/比较请求不保证立即停止底层进程,进程仍受超时和输出上限控制。
常见问题
- 找不到仓库:检查 Session 工作目录和 Git/SVN 的 PATH;更深项目使用相对子目录发现。
- 提示重新发现:目录变了或发现授权过期,手动重新发现即可。
- 高级编辑器加载失败:确认安装了完整正式包并重新加载宿主;失败时仍可使用基础比较。
- SVN 历史连接失败:先确认是受信任 HTTPS 服务,且不要求本插件未支持的额外认证。
正式版本通过自动测试、Windows/Linux 检查和隔离浏览器回归。这些不证明你的当前 DSH 页面已加载新版,也不代替你的实际环境验证。
开发与更多资料
界面设计参考 Fork,不代表与 Fork 官方有关联或获得背书。