跳到主内容

dsh-git-graph

14Star1Fork0Issue0Watching

在 DeepSeek Harness 对话页内嵌入 Git 图谱、分支管理、未提交改动面板与代码 diff,让 AI 编程时无需切走即可查看版本历史并执行读写操作。

机审证据5/5方法论数据来源安装命令持续维护DSH 版本风险扫描
机审证据安装命令仓库已核验dsh-plugin Topic许可证READMEAI 百科
语言
HTML
License
MIT
分支
main
deepseekdeepseek-harnessdshdsh-plugingitgit-graph

安装

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

在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程

对话式安装

帮我安装 DeepSeek Harness 插件 1841220388zzzcccxxx-star/dsh-git-graph:先查看仓库 https://github.com/1841220388zzzcccxxx-star/dsh-git-graph 确认安全性,然后执行安装命令并验证插件加载成功。

把这段指令粘贴给 DSH Web GUI 里的助手,由它代你完成安装与验证。

一句话定位

在 DeepSeek Harness 对话页内嵌入 Git 提交图谱、分支管理、文件 diff 与 VSCode 风格的未提交改动面板,让 AI 编程时不用切到外部 Git 客户端就能查看版本历史并执行读写操作。

核心能力

  • 浏览提交历史:GitHub 风格的提交列表,分支分组折叠、本地/远程分支各自着色,Ctrl+点击对比两次提交,配 Ctrl+F 搜索、Ctrl+B 折叠全部分支组、↑↓/j/k 导航、Enter 详情、Esc 关闭等快捷键
  • 查看未提交改动:常驻图谱顶部,已暂存 / 更改 / 未跟踪三组文件列表(含未跟踪文件原始内容),每行 +/- 行数与语法高亮 diff,可折叠面板与分组
  • 管理文件改动:单行暂存 / 取消暂存 / 还原,勾选复选框可批量暂存选中、取消暂存选中、还原选中、忽略选中、提交选中,提交对话框内置「✨ AI 生成提交信息」候选
  • 远程与分支操作:顶栏 ⬇ 拉取 / ⬆ 推送,本地分支可 🔄 切换 / 🗑️ 删除(已合并才允许,HEAD 受保护),远程分支组头始终显示并标注「已同步」/「已包含」状态
  • 浏览任意仓库:顶栏「📂 打开」或空态「打开文件夹」可逐层进入磁盘目录挑选 Git 仓库,添加过的路径通过 localStorage 持久化,跨刷新可继续切换查看
  • 一键自更新:打开图谱静默检查 GitHub 最新版本,发现新版本顶栏显示「🔄 新版本 vX.Y」,确认后自动下载并替换(备份旧版、失败回滚),重启 dsh web 生效;自带 8 种风格方案(🌸 樱花 / 🌊 海洋 / 🌲 森林 / 🌙 夜空 / 🍬 糖果 / 💼 商务 / ✨ 星河 / 🤖 科技)

技术实现

  • 语言: JavaScript(Node type: module,纯 ESM)
  • 关键依赖: 仅使用 Node 内置模块 node:child_process、node:fs、node:path、node:os、node:url、node:net,加上宿主提供的 React 与 slots 服务
  • 架构模式: Host 半 / Client 半双端插件——服务端 index.js 通过 inject: ['webServer'] 注册 /git-graph 前缀路由提供 git API(graph / branches / workstatus / workfile / gitop / show / diff / filelog / remoteinfo / checkupdate / autoupdate / listdir / addrepo / repos 等),客户端 client.js 通过 inject: ['slots'] 在会话页注册 conversation.view 插槽下的「Git 图谱」标签(label 为 Git 图谱,order=20),标签页内嵌 iframe 加载 web/index.html
  • 入口文件: 服务端 index.js,客户端 client.js,界面 web/index.html(3414 行内联脚本,零外部构建产物)

适用场景

想在 DSH 对话里一边让 AI 改代码,一边不离开当前页面查看提交历史、切换分支、暂存/还原改动或推送到远程的开发者。当 Agent 帮你生成了一波改动,你需要在合并到主干前肉眼 review 每一个文件的 diff、查看上一次谁改过同一行、确认有没有遗留的未跟踪文件时,这个面板就比反复切到 SourceTree / GitHub Desktop 高效得多。

前置依赖与兼容性

依赖最低版本说明
DeepSeek Harness>=0.0.1(dsh.plugin.json engines.dsh)仅声明了最低版本;插件使用了 webServer 服务(index.js:20 inject: ['webServer'])与 slots 服务(client.js:44),宿主需具备这两个注入点
Node.js未声明源码未在 package.json 写明 engines.node;语法使用 ESM 与顶层 await,运行时需 Node ≥ 14+(建议 ≥ 18)
系统 Git任意版本index.js:26 通过 execFile('git', ...) 直接调用 git CLI,必须在系统 PATH 中可找到
平台macOS / Windows / Linuxreveal 操作按平台分支调用 explorer / open / xdg-open(index.js:673-675),其余逻辑跨平台一致
原生模块无全部使用 Node 内置模块,未引入 node-gyp / prebuilt 二进制

安装方式

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

配置项

配置类型说明默认值
repo字符串(路径)可选初始白名单:允许图谱访问的单个仓库绝对路径。如配置且为有效 Git 仓库,会出现在仓库下拉中不配置
repos字符串数组(路径)可选初始白名单:与 repo 同义但支持多个;配置后会出现在仓库下拉中不配置

这两项都是可选的,不配置也能用——通过顶栏「📂 打开」或空态「打开文件夹」按钮随时浏览并添加任意路径的 Git 仓库,添加过的路径在浏览器 localStorage 中持久化(键 gg2-repos,每次加载通过 repos?add= 重新注册到服务端)。

常见问题

Q: 装好之后在对话页哪里能看到?

A: 打开任意一个对话页,标签栏里在「轨迹」旁边会多出一个「Git 图谱」标签,点进去就是本插件的可视化界面。

Q: 不写 config.repo/config.repos 也能用吗?

A: 可以。这两个字段是可选白名单,写与不写都不影响基本功能;不写时图谱默认跟随当前对话的 Git 工作区,要看其他仓库就用顶栏「📂 打开」或空态「打开文件夹」手动添加。

Q: 系统必须装 Git 吗?

A: 必须。服务端通过 execFile('git', ...) 直接调用 git CLI(index.js:26),没装 git 任何 API 都会失败并返回 git 的错误信息。

Q: 大仓库会卡吗?怎么加载更多?

A: 默认每页 200 条提交,上万提交也不会卡。页面底部会有「加载更多」按钮,点击按需拉取下一页;总数通过 git rev-list --all --count 实时显示在状态栏。

Q: 推送 / 拉取需要怎么配凭证?

A: 走你全局的 git 配置(SSH key、git credential helper、HTTPS token 等)。插件不会管理凭证,认证失败时把 git 的 stderr 原样回传。

Q: 自更新会不会把当前版本覆盖坏?

A: 不会。更新前会在插件目录同级创建一份 .bak-<ts> 备份再开始替换,任何步骤失败都会从备份回滚;成功后自动清理历史备份,只保留最新一份。

Q: 怎么卸载?

A: dsh plugin --profile web remove github:1841220388zzzcccxxx-star/dsh-git-graph,然后重启 dsh web。配置过的白名单只是初始可访问集合,未持久化到插件目录,卸载即清空。

Q: 写操作(如还原、推送、删分支)会误触吗?

A: 不会直接执行。所有破坏性动作客户端都会先弹确认框,破坏性写操作还要勾选「确认」按钮才走服务端;服务端再校验路径必须落在仓库内,校验失败返回 path-outside-repo。

上手难度

入门 — 安装即用,顶栏按钮和右键菜单都是常见 Git 客户端的翻译;只有路径白名单、自更新触发逻辑等少量概念需要看一眼 README 或 AGENTS.md。

已知问题与限制

  • 必须系统装 git:所有数据来自 execFile('git', ...),没有 git 就完全不可用
  • 更新必须手动重启 dsh web:自更新只替换磁盘文件,运行中的进程仍持有旧代码;AGENTS.md / README / autoupdate 注释里都明确要求重启
  • 大文件 diff 会被截断:服务端 MAX_DIFF_CHARS = 240000(index.js:17),单文件 diff / 提交 patch 超过该长度会被截断并返回 truncated: true 标记
  • Windows 上 schema 假阳:写操作路径校验依赖正反斜杠归一化(replace(/\\/g, '/')),如果仓库本身不在标准盘符路径上,可能需要重启后再访问
  • 远程操作可能凭证失败:push / pull / fetch 不带任何凭证处理,完全依赖用户的 git 全局配置;非 fast-forward 或认证错误会原样回传 git 报错
  • 写操作依赖客户端确认:服务端不会拦截「丢弃全部改动」「强推」等危险操作的安全门,确认 UI 全在客户端;自定义客户端/逆向调用需自行处理确认流

查看使用指南 →

该插件的安装步骤、关键要点、FAQ 与兼容性说明(基于已收录字段派生)。

收录徽章

Listed on deepseek-plugin.org
[![Listed on deepseek-plugin.org](https://img.shields.io/badge/listed_on-deepseek--plugin.org-007EC6)](https://deepseek-plugin.org/plugins/1841220388zzzcccxxx-star/dsh-git-graph)

把这段 markdown 粘贴到你的 GitHub README,链接回本插件详情页。徽章只声明已被本站收录,不代表安全认证。

返回插件目录