用 dsh-git-graph 在 DeepSeek Harness 会话里查看 Git 提交图

前言

用 DeepSeek Harness 做 AI 编程时,对话、轨迹、工作区改动往往挤在同一个 Web 界面里。Git 历史却常常还在别处:终端里敲 git log --graph,或者再开一个 VS Code、GitHub Desktop。来回切换并不复杂,但上下文会断——刚才模型改了哪几个文件、当前 HEAD 在哪条分支、工作区是干净还是脏的,都要重新确认一遍。

DeepSeek Harness(dsh)的设计是「一切皆插件」:模型、工具、会话、沙箱和 UI 都可以挂载替换。社区因此出现了一批只改界面、不改核心的增强插件。dsh-git-graph 就是其中面向 Web GUI 的 Git 可视化插件:把提交历史图、分支过滤、文件 diff 和 VS Code 风格的未提交改动,嵌进会话页的「Git 图谱」标签。

本文按插件目录页、GitHub 仓库 README / package.json,以及 DeepSeek Harness 官方仓库 交叉核对后整理。社区插件目录是独立站点,与 DeepSeek / 幻方没有官方从属关系,下文不当成官方应用商店来写。

这是什么

dsh-git-graph 是 DeepSeek Harness Web GUI 的嵌入式 Git 仓库图谱插件,由 GitHub 用户 1841220388zzzcccxxx-star 维护,仓库地址为 1841220388zzzcccxxx-star/dsh-git-graph。目录页将它归在「界面增强」。许可证为 MIT。仓库 package.jsondsh.plugin.json 中的版本号均为 0.10.0,并声明客户端平台为 web

它要解决的问题很具体:在当前对话的工作区里,直接看清提交拓扑、分支关系和未提交改动,而不必离开 Harness 界面。README 的定位是:在对话界面内嵌入 GitHub 风格的提交历史图、分支管理、代码 Diff,以及 VS Code 风格的未提交改动面板。

需要分清的是:GitHub 上还有其他同名或相近的 DSH Git 插件(例如只读图谱、状态浮窗)。本文只写目录页收录、维护者为 1841220388zzzcccxxx-star 的这一份。核对当日 GitHub API 显示该仓库 12 星;目录页当时仍显示 7 星,星标以仓库页面为准。仓库 README 写明本项目由 AI 辅助开发。

核心功能

仓库 README 列出的能力可以分成「看历史」和「管工作区」两块。下面只写已在 README 与源码结构里核对过的部分。

提交历史图与分支

图谱按 GitHub 风格列出提交,本地分支和远程分支各自成组,可以折叠,并按分支着色。打开哪个会话,就显示哪个会话工作区的 Git 仓库;切换会话会自动跟随。工作区不是 Git 仓库时,只显示空态,不画图谱。

分支过滤用勾选控制:勾选则显示该分支,不勾则完全隐藏;全部不勾选时列表为空。提交列表分页加载,README 写明每页 200 条,并提供「加载更多」。图谱页头部有下拉框,用于在多个仓库之间切换。

提交详情与 Diff

点击提交行打开详情:提交信息、变更文件列表、单文件 diff。Ctrl+点击 可以选两次提交做对比。详情里的文件历史入口(README 用「📜」标注)用来查看单个文件相关的历史提交。

未提交改动

未提交改动区块常驻图谱顶部,分组方式接近 VS Code:已暂存、更改、未跟踪。每行有状态徽标(A / M / D / R / U / ?)和 +/- 行数,点击行展开带语法高亮的单文件 diff。重命名显示为 旧 → 新;未跟踪文件直接显示内容。分组开关可以单独隐藏某一组,面板和分组都可以折叠。

行内可以暂存、取消暂存、还原;顶栏可以全部暂存、提交。勾选复选框后可批量暂存、取消暂存、还原、忽略或提交选中文件。README 写明破坏性操作执行前会弹确认框。提交对话框内可以依据 diff 生成候选提交信息,生成结果可编辑;英文 README 将其描述为基于 diff 的启发式候选,而不是单独的模型调用说明。

右键与远程操作

提交行右键菜单包括:复制哈希或消息、查看详情、打标签(可改名/删除)、从该提交新建分支、打开 GitHub 提交页、复制仓库路径、在文件管理器中打开。

顶栏提供 ⬇ 拉取git fetch)和 ⬆ 推送git push 当前分支,确认后执行)。分支组头也可右键:本地分支可切换、推送、删除(README 写明已合并才可删,HEAD 受保护);远程分支可拉取、复制远程分支名。远程分支组头即使与本地完全同步也会显示,并标注「已同步」或「已包含」。

刷新、快捷键与主题

页面可见时,每 5 秒监听工作区改动与新增提交,并更新统计和列表。快捷键包括:Ctrl+F 搜索、Ctrl+/ 打开快捷键面板、Ctrl+B 折叠或展开全部分支组、↑↓ / j / k 导航、Enter 打开详情、Esc 关闭。

主题可自动跟随系统,也可固定深色或浅色;另外提供 8 种风格方案(樱花、海洋、森林、夜空、糖果、商务、星河、科技)。分支过滤、分组开关、折叠状态和主题会保存,刷新后保留。README 写明自 v0.8 起存储键统一为 gg2-*,首次打开时分支默认全部展开。

图谱打开时会静默检查 GitHub 上的最新版本;发现新版本后,顶栏显示「🔄 新版本 vX.Y」,点击后下载并替换插件文件(先备份旧版,失败则回滚),重启后生效。这是写权限操作,安装前应当和源码一起审查。

挂载位置在会话页内「Git 图谱」标签,位于「轨迹」标签旁。package.json 里客户端注入槽为 slots,并通过 cordis.patch.yml 声明 bundle patch。

安装与启用

目录页给出的安装命令如下,在 DeepSeek Harness 终端中运行:

dsh plugin add github:1841220388zzzcccxxx-star/dsh-git-graph

目录页同时说明:如需可复现安装,可固定 commit 哈希:

dsh plugin add github:1841220388zzzcccxxx-star/dsh-git-graph#commit

#commit 换成实际的 40 位提交哈希,不要原样复制占位符。DeepSeek Harness 官方 CLI 文档里,插件管理的完整形式是 dsh plugin --profile <profile> add ...。这个插件声明平台为 web,装到 Web 界面时应对准 web profile,例如:

dsh plugin --profile web add github:1841220388zzzcccxxx-star/dsh-git-graph

Git 源安装拉取的是源码而不是构建产物。官方开发文档指出,pnpm ≥10 默认拦截 git 依赖的 prepare 脚本,第一次 add 可能失败,需要按提示把包名写入该 profile 的 pnpm-workspace.yamlallowBuilds 后再执行一次。本仓库 package.json 未声明 prepare;若安装报错,以终端提示为准,不要假设必须允许构建。

目录页的安全提示需要原样理解:插件以当前 dsh 进程的权限运行,安装时可能执行代码。安装前应检查源代码仓库和许可证。

仓库 README 还提供了一套从本地源码挂载的写法,适合已经把插件拷到 profile 目录的情况。

  1. 在 web profile 的 package.json 中加入依赖(路径按实际调整):
{
  "dependencies": {
    "dsh-git-graph": "file:./plugins/git-graph"
  }
}
  1. 在 profile 的 cordis.patch.yml 中挂载。仓库里的示例是:
- insert:
    - id: git-graph
      name: dsh-git-graph
      config:
        repo: "C:/path/to/your/repo"

config.repo / config.repos 是图谱面板初始可访问的仓库白名单。README 写明:运行中被会话工作区发现的仓库也会自动加入可访问集合。示例路径是 Windows 风格,换成自己的仓库路径。

  1. 安装并重启:
pnpm install

然后重启 dsh web。官方默认 Web UI 地址是 http://127.0.0.1:3080。打开任意会话页,点「轨迹」旁的「Git 图谱」标签即可。

典型用法

README 中的操作可以按这个顺序试一遍(工作区必须已经是 Git 仓库,否则只会看到空态)。

  1. 打开会话页的「Git 图谱」标签,确认显示的是当前对话工作区的仓库。
  2. 用分支组标题折叠或展开某条分支;用勾选框过滤要看的分支。
  3. 看图谱顶部的「未提交改动」:已暂存 / 更改 / 未跟踪。点击某一行展开 diff。
  4. 需要暂存或还原时,用行内按钮;需要提交时用顶栏「提交」。破坏性操作会先弹出确认框。
  5. 点击某次提交查看详情;按住 Ctrl 再点另一次提交,对比两次提交。
  6. 在提交行上右键:复制哈希、打标签、从该提交拉新分支,或打开 GitHub 提交页。
  7. 远程同步用顶栏拉取 / 推送;切换或删除本地分支用分支组头右键。
  8. 底部状态栏的「未提交改动」可以滚回顶部改动区块;↻ 刷新 会重新加载仓库数据。

仓库结构在 README 里写得很清楚,方便对照源码:

git-graph/
├── index.js          # 服务端 git API
├── client.js         # 会话页Git 图谱标签
├── web/index.html    # iframe 内的图谱页面
├── package.json      # 插件清单
└── cordis.patch.yml  # profile 挂载点

源码文件头注释写明:服务端在 /git-graph 下提供 API,命令通过 execFile 执行(不走 shell),参数列表是固定的。也就是说,本机需要能调用 git。服务端(index.js)或客户端(client.js)改动后要重启 dsh web;只改 web/index.html 时刷新页面即可。

适用场景与注意事项

比较适合这几类用法:

  • 已经在用 dsh web 做 AI 编程,希望在同一个会话页里看提交图和工作区改动
  • 需要比 git log --graph 更直观的分支过滤、文件 diff、两次提交对比
  • 偶尔要在界面里做暂存、提交、拉取、推送,但不想为此再开一个 Git 客户端

不适合、或需要额外小心的地方:

  • 它只声明了 Web 客户端,不是 TUI / headless 插件。
  • 工作区不是 Git 仓库时没有图谱,只有空态。
  • 插件会执行 git fetchgit push、切换分支、删除已合并分支、还原文件等写操作。虽然 README 写了确认框和 HEAD 保护,权限仍等于当前 dsh 进程。
  • 自动更新会下载并替换插件文件。如果环境不允许插件自行改磁盘上的安装目录,应关闭或不要使用该入口,改为固定 commit 再手动升级。
  • config.repo 是白名单,但会话工作区发现的仓库会在运行时加入可访问集合。不要把 dsh 指到你不希望被 Git 面板触及的目录。
  • 社区目录和 GitHub 上存在多个 Git 可视化插件,安装命令必须对准 github:1841220388zzzcccxxx-star/dsh-git-graph,不要按名字随便拼。

再次强调:插件以当前 dsh 进程权限运行,安装时可能执行代码。安装前检查源代码与 MIT 许可证;生产或共享环境建议固定 commit 哈希。DeepSeek Harness 仍处于 developer preview,官方 README 写明会有破坏性变更,插件接口也可能跟着变。

小结

dsh-git-graph 把提交历史、分支过滤、文件 diff 和 VS Code 风格的未提交视图嵌进 DeepSeek Harness 的会话页,减少「一边跟模型改代码、一边切到别的 Git 客户端」的往返。它是社区 MIT 项目,不是官方内置功能。

目录页:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-git-graph/

GitHub:https://github.com/1841220388zzzcccxxx-star/dsh-git-graph

羽毛球分组比赛记分
小程序二维码

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

小夜