dsh-git-graph-view: Read-Only Viewing of Git Commit Graph in DSH Session Page

前言

用 DeepSeek Harness(DSH)做智能体开发时,会话往往绑定一个工作区目录。要弄清分支从哪分叉、HEAD 指哪、某次提交改了什么,常见做法是切到终端跑 git log --graph,或在 IDE 里开 Git 历史面板。DSH Web GUI 本身不自带这类可视化。社区插件 dsh-git-graph-view(维护者 LUOZIR)在会话视图里增加 「Git 图谱」 标签,把当前(或任选已注册)工作区的提交 DAG 画成泳道图,并支持点选查看提交详情;全程只读,不写仓库。

下面介绍插件定位、能力、安装方式与使用要点。事实以 GitHub 仓库 README 为准;当前文档记载的最新版本为 v0.2.1,许可证 MIT,依赖 DSH 0.2.1 系列(开发与验证于 0.2.1-rc.5 桌面版)。

这是什么

dsh-git-graph-view 是 DSH 的 双半体 bundle 插件(dsh.bundle.patch + dsh.client):宿主 Node 半体通过只读 git 命令拉取数据,浏览器 client 半体在官方 conversation.view 槽位注册标签页,渲染彩色泳道、分支/标签/远程引用与详情抽屉。分类上属于 客户端 向能力;在 SkillHub 插件目录 可查到条目(社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系)。

插件只执行 git rev-parse、status、log、show、diff-tree 等读操作;不切分支、不建 worktree、不写仓库。Host 半体仅使用 Node 内置模块,client 半体无额外 npm 运行时依赖,React 由 DSH 宿主提供。

核心功能

会话页「Git 图谱」标签

标签 order=6,位于「对话」(0)与「轨迹」(10)之间,栏位示意:对话 | Git 图谱 | 轨迹。

头部与工具条

头部展示仓库图标块、仓库名、当前分支或游离 HEAD、变更/冲突/ahead-behind 状态胶囊,以及工作区下拉、刷新、回到 HEAD。工具条支持按 subject、作者、sha、ref 搜索提交(不匹配行会淡化),并显示「N 个提交 · M 分支 · K 标签」摘要。

提交列表与泳道

列表行高约 46px(两行布局):SVG 泳道表达分叉、合流、八爪鱼合并、被截断的父提交;refs chip 区分 HEAD、本地分支、远程分支、标签;每行含 subject、作者、相对时间、短 sha。支持 hover/选中强调、骨架屏加载,以及 ↑/↓/Enter/Esc 键盘导航。

工作区切换

工作区列表来自 DSH 已注册工作区。若当前会话工作区不是 Git 仓库,界面会给出空态,并可通过下拉切换到其他已注册仓库查看图谱。

提交详情抽屉

右侧约 380px 宽、可独立滚动:完整 commit message、作者头像/邮箱/时间、完整 sha(可复制)、可点选的父提交、合并标记、文件状态色块与 +/- 统计;左侧列表滚动与右侧详情互不影响。

分页与刷新

默认加载 200 条提交,「加载更多(+200)」最多到 1000 条;约 20 秒内存缓存;窗口重新聚焦时自动刷新。明暗主题跟随 DSH 的 data-ds-dark-theme;中英文案随页面语言切换。对非 Git 仓库、未注册工作区、git 缺失、超时、宿主路由不可用等情形有明确空态与错误态。

安装与启用

安装前请自行审阅 GitHub 源码 与 LICENSE。插件以当前 DSH 进程权限在工作区上执行只读 git;仅安装 tgz 而不读源码时,也应至少确认许可证与行为说明。

方式 A:web profile(源码 checkout 运行 Harness)

适用于本地以 web profile 跑 DSH 的用户:

dsh plugin --profile web add github:LUOZIR/dsh-git-graph-view#main
# 安装后重启 web:dsh web

锁定版本可将 #main 换成 tag,例如 #v0.2.1。Release 页提供 dsh-git-graph-view-0.2.1.tgz 直接下载。

方式 B:DSH Desktop(推荐 GUI 安装)

  1. 打开 DSH Web GUI → 设置 →「插件」分区(或侧边栏插件面板)→ 安装;
  2. 粘贴来源之一:GitHub 仓库 https://github.com/LUOZIR/dsh-git-graph-view,或本地目录 / npm pack 生成的 .tgz 绝对路径;
  3. 完全退出并重新启动 DeepSeek Harness(bundle 层在启动时合成)。

Desktop profile 由 Electron 应用独占,不要在桌面端使用 dsh plugin --profile desktop ...(会被拒绝)。

方式 C:手动安装(GUI 不接受来源时)

会修改 $env:DSH_HOME 下 profile 目录,请先备份。概要步骤:将 tgz 放入 profiles\desktop\vendor\,在 package.json 的 dependencies 与 dsh.profile.bundles 中登记 dsh-git-graph-view,解包到 node_modules 对应目录后重启。仓库内 scripts/install-profile.ps1 封装了部分步骤;可用 node scripts/validate-install.mjs 做只读校验。详见 README「方式 C」全文。

环境要求

  • DSH 0.2.1 系列及官方 conversation.view / client-modules 双半体机制;
  • 宿主 PATH 中需有 git(Windows 亦会探测 C:\Program Files\Git\cmd\git.exe);
  • 仅运行插件不需要 Node;开发/测试需 Node 20.11+。

典型用法与验证

经过上面的安装并重启 DSH 后,可按 README 建议做快速验证:

  1. 可选:检查宿主启动标记 %TEMP%\dsh-git-graph-view-boot.json(host 半体 apply 时写入版本/路由/时间);
  2. 打开任意会话,标签栏应出现「Git 图谱」;
  3. 若当前工作区非 Git 仓库,使用工作区下拉切到已注册的 Git 工作区,应看到完整图谱;
  4. 点击一行提交,右侧详情抽屉展示 message、作者与文件列表;左右滚动区域独立;
  5. 启动异常时查看 $env:DSH_HOME\logs\startup-*.log,并按 README 回滚说明处理。

日常使用中:在头部确认分支与 dirty/ahead-behind 状态,用搜索框定位提交,用「加载更多」扩展历史深度;需要回到当前检出版本时用「回到 HEAD」。数据经宿主 HTTP API(前缀 /git-graph-view)获取,浏览器侧不直接跑 git。

架构与安全(简要)

Host 半体注册 /git-graph-view 路由,经 信任闸(loopback、Origin 一致等)与 工作区闸(path 的 realpath 必须属于已注册工作区)后,用 execFile 调用 git(无 shell,GIT_TERMINAL_PROMPT=0)。主要 POST 接口包括 /graph、/commit、/workspaces;响应用 {ok, value} / {ok, error} envelope。详细契约见仓库 docs/CONTRACT.md,视觉规范见 docs/DESIGN.md(使用 --dsw-font-*、--dsw-radius-* 等官方 theme 令牌)。

适用场景与注意

适合:在 DSH 会话里快速对照 Agent 改动与 Git 历史,不想离开 Web GUI 或频繁切终端/graph 命令的用户;需要在多个已注册工作区之间切换查看图谱的场景。

注意:图谱为 只读 视图,不能替代 git checkout、合并、推送等写操作。Desktop 与 web profile 安装路径不同,勿混用 CLI profile。社区插件 star 数与版本以仓库与目录页为准;本文不写未在资料中出现的用户案例或反馈数据。

结尾

dsh-git-graph-view 把 DSH 工作区的提交 DAG、引用与提交详情收进会话页的一个标签,并与官方主题和非聊天视图外壳对齐。需要安装来源与 API 细节时,请直接查阅仓库 README 与 release。

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

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

Xiaoye