@kulebbb/dsh-git-tree:DSH 桌面端右侧栏 Git 提交图

前言

在 DeepSeek Harness(DSH)里做智能体或代码任务时,经常要在文件、浏览器、终端之间切换,却少一个和「当前会话工作目录」绑定的 Git 视图。命令行 git log --graph 能用,但需要另开终端;IDE 里的图形历史往往和 DSH 会话脱节。社区维护的 @kulebbb/dsh-git-tree 把提交与分支 DAG 放进桌面端右侧栏,与文件、浏览器、终端共用同一套标签页机制,面板随会话工作目录切换,无需在插件里再选项目。

这是什么

@kulebbb/dsh-git-tree 是 DSH 桌面端(DeepSeek Harness.app)右侧栏插件:在标签页中用 SVG 展示当前会话所属项目的 git 提交/分支图。维护者为 kulebbb,仓库见 GitHub,npm 包名为 @kulebbb/dsh-git-tree(当前资料版本 0.7.1,许可证 MIT)。本插件由社区维护,不是 DeepSeek 官方组件。

自 v0.7.0 起仅支持 DSH 桌面端,不再支持 dsh web;需要带右侧栏的 DSH 版本(文档写明 0.2.x)。本包是 bundle(组合包):dsh.bundle.patch 指向自带的 cordis.patch.yml,可在桌面端「插件」页直接安装、启用和卸载,无需手工编辑 profile 的 cordis.patch.yml。

核心功能

右侧栏标签页与快捷键

展开右侧栏 → 点「+」打开开始页 → 点「Git 提交图」卡片即可打开面板。也可使用快捷键 ⌘⇧G(Windows / Linux 为 Ctrl+Shift+G)。

项目不需手动选择:面板跟随会话工作目录;切换会话即切换项目。每个会话的右侧栏布局相互独立——在哪个会话打开过,就在哪个会话里出现。

提交图与交互

服务端通过只读接口拉取 git 数据并返回 JSON;前端注册右侧栏 tab 类型 git-tree 并渲染 SVG 提交图。

  • 提交说明过长时按像素宽度截断,SVG 宽度不超过面板可视宽度,不出现横向滚动条。
  • 悬停提交行可看到完整 subject、正文、哈希、作者、本地时间与 refs,以及 git log --shortstat 风格的变动量(无变动的 merge 提交不显示统计行)。
  • 点击提交行可复制完整哈希;说明末尾以弱化色展示 7 位短哈希(GitHub 风格)。

面板顶部常驻状态条,包括:

  • 当前工作目录目录名(悬停可看完整路径);
  • 分支名(HEAD 游离时显示「游离」);
  • 相对上游的领先/落后提交数(↑n ↓m),未配置上游时回退 origin/<分支名>;
  • 本地与云端 HEAD 的 7 位哈希色块;图上本地 HEAD 为绿色空心环,云端为蓝色虚线环;
  • 搜索(Esc 收起)与刷新按钮。

新版本提示

插件启动时静默查询 npm registry 是否有新版本(不阻塞启动,离线自动降级)。打开 Git 面板后,若存在更新,状态行下方会显示横幅,提示在 DSH 侧边栏「插件」页重装以更新;桌面端无独立「更新」按钮。

安装与启用

桌面端独占名为 desktop 的 profile,由 Electron 应用管理。文档明确:不要往 ~/.dsh/profiles/desktop 里执行 pnpm add,也不要用独立 CLI 启停 App。安装、更新、卸载走侧边栏「插件」页。

  1. 打开「插件」页 → 安装,填入下面任一地址:
    - Git:github:kulebbb/dsh-git-tree(也可粘贴 https://github.com/kulebbb/dsh-git-tree;未发版改动时用 Git 地址)
    - npm:@kulebbb/dsh-git-tree
  2. 安装完成后按提示重启 DeepSeek Harness(桌面端无 HMR,重启后插件才生效)。
  3. 重启后展开右侧栏 → 「+」→ 「Git 提交图」。

钉住 Git 某次提交时,安装地址可写成 github:kulebbb/dsh-git-tree#<40位commit>。注意:无作用域的 dsh-git-tree 是其他作者的包,不要安装。

若你使用非 desktop 名称的自有 profile,可用官方 CLI 将组合包装进组合层(界面仍只在桌面端右侧栏出现,dsh web 不支持本插件):

dsh plugin --profile <profile> add github:kulebbb/dsh-git-tree

也可通过 agent 的 plugin_manager 工具:action: install_bundle,target 填 github:kulebbb/dsh-git-tree 或 @kulebbb/dsh-git-tree。

更新与卸载:在「插件」页重新安装即覆盖更新并提示重启;卸载也在「插件」页,若需先停止 DSH,按提示退出 App 后再操作。

从旧版本升级(摘要)

  • v0.4.0 手工改 patch:先删除 ~/.dsh/profiles/desktop/cordis.patch.yml 里 id: git-tree 的 insert 段,再在「插件」页安装 0.7.1,避免同一 id 两条来源导致启用/禁用归因错误或卸载报错。
  • v0.5.0 / v0.6.0:在「插件」页正常重装即可。
  • 曾在 dsh web profile 安装:0.7.0 起不再支持 Web,需从该 profile 移除包并清理旧 patch 或 dsh.profile.bundles 中的条目。

典型用法

安装并重启后,在已绑定 git 仓库的会话中打开右侧栏 Git 提交图即可查看 DAG。非 git 目录时接口返回软错误(not-a-git-repo,HTTP 200 + ok:false),UI 会给出提示。

开发或集成时可关注只读 HTTP 接口(由 lib/index.js 在 webserver 注册):

GET /git-tree/graph?cwd=<绝对目录>&n=<1..2000>

成功时返回 {ok, repo, commits, refs};失败时 {ok:false, error:{code, message}},code 包括 invalid-cwd、not-a-git-repo、git-unavailable 等。n 控制展示的提交数量上限(资料写明范围 1..2000)。

版本检查:

GET /git-tree/update/status

返回 {ok, current, latest, newer, checkError},供面板横幅使用;插件不提供通过接口安装或更新自身的操作。

适用场景与注意

适合:在 DSH 桌面端写代码、跑 agent,且希望在同一右侧栏里对照文件/终端查看当前会话项目的分支与提交关系;需要快速对照本地与上游 HEAD、领先/落后提交数时。

注意:

  • 仅 DSH 桌面端;dsh web 自 v0.7.0 起不支持。
  • 插件以 当前 DSH 进程权限 调用本机 git,属于只读查询,但仍会读取仓库路径与提交元数据;安装前应查看 源码与许可证。
  • 社区插件目录(如 SkillHub 插件页)为独立生态站点,与 DeepSeek / 幻方无官方从属关系;安装来源以 GitHub / npm 与 DSH「插件」页为准。

结尾

@kulebbb/dsh-git-tree 把「当前会话项目」的 Git 提交图嵌进 DSH 桌面端右侧栏,与文件、浏览器、终端同级,减少在项目选择与终端图之间来回切换的成本。需要安装或了解元数据时,可访问 SkillHub 目录页 与 GitHub 仓库。

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

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

Xiaoye