前言¶
在 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¶
面板顶部常驻状态条,包括:
- 当前工作目录目录名(悬停可看完整路径);
- 分支名(HEAD 游离时显示「游离」);
- 相对上游的领先/落后提交数(
↑n ↓m),未配置上游时回退origin/<分支名>; - 本地与云端 HEAD 的 7 位哈希色块;图上本地 HEAD 为绿色空心环,云端为蓝色虚线环;
- 搜索(Esc 收起)与刷新按钮。
新版本提示¶
插件启动时静默查询 npm registry 是否有新版本(不阻塞启动,离线自动降级)。打开 Git 面板后,若存在更新,状态行下方会显示横幅,提示在 DSH 侧边栏「插件」页重装以更新;桌面端无独立「更新」按钮。
安装与启用¶
桌面端独占名为 desktop 的 profile,由 Electron 应用管理。文档明确:不要往 ~/.dsh/profiles/desktop 里执行 pnpm add,也不要用独立 CLI 启停 App。安装、更新、卸载走侧边栏「插件」页。
- 打开「插件」页 → 安装,填入下面任一地址:
- Git:github:kulebbb/dsh-git-tree(也可粘贴https://github.com/kulebbb/dsh-git-tree;未发版改动时用 Git 地址)
- npm:@kulebbb/dsh-git-tree - 安装完成后按提示重启 DeepSeek Harness(桌面端无 HMR,重启后插件才生效)。
- 重启后展开右侧栏 → 「+」→ 「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 webprofile 安装: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 仓库。