DSH Hub
dsh-git-panel cover

xbzbing/dsh-git-panel

dsh-git-panel

UIWeb UI23 GitHub stars· updated 2026-10-27

an IDE-style Git panel for the Web GUI — branches & history, commit/amend for local changes, AI-generated commit messages, a file browser, code & image before/after diffs, an input-bar branch marker, optimized for mobile

Install

npx @deepseek-ai/dsh plugin --profile web add @xbzbing/dsh-git-panel@latest

Restart `dsh web` after install. Bundle APIs can change during the developer preview.

README badge

dsh-git-panel DSH Hub badge
[![DSH Hub](https://dshhub.dev/badge/dsh-git-panel.svg)](https://dshhub.dev/plugins/dsh-git-panel)

Paste this into your README. The star count updates with every catalog sync.

From the README

Excerpt from xbzbing/dsh-git-panel, cleaned of badges and images.

dsh-git-panel

English | 简体中文

dsh-git-panel 是一个 DSH Web GUI 插件,在对话工作区里提供 IDE 风格的 Git 面板。它把分支列表、提交历史图、未提交变更的提交与 amend、语法高亮的差异对照集中到一个常驻标签页,并在输入框左侧放一个 zsh 风格的分支标记,让你在对话过程中随手查看仓库状态、提交改动,不必切到终端或另开 IDE。

面板只读取当前会话工作目录所在的 Git 仓库,所有 git 命令都以 argv 数组经宿主的 subprocess 服务执行,不拼接 shell 字符串,工作目录锁定在仓库根,并带超时与输出上限。插件不改动 git 配置,写操作(提交、amend、暂存、丢弃)都有明确入口。

安装

# 正式版(npm)
dsh plugin --profile web add @xbzbing/dsh-git-panel@latest

# 预发布(GitHub Release 附件,不发 npm)
dsh plugin --profile web add https://github.com/xbzbing/dsh-git-panel/releases/download/v1.8.0-rc.1/xbzbing-dsh-git-panel-1.8.0-rc.1.tgz

预发布版本号带 -(如 1.8.0-rc.1),只出现在 GitHub Release,不会推送 npm,也不会触发面板里的「有新版本」提示;正式版发布时 npm 与稳定 Release 同时上线。lib/ 不随仓库提交,请不要用 dsh plugin add github:… 安装——改用上面的 npm 或 Release 附件 URL。

安装或更新后,工作区标签栏(「对话」「轨迹」之后)就会出现 Git 面板,无需重启服务、也无需刷新页面:dsh 的 hmr 监听 profile 的 package.json 与 patch 文件,插件装好即热挂载;client 半产物(lib/client.js)被替换后也会被秒级轮询拾取,经 /plugins/events 推给浏览器原地热替换(拆掉旧 fiber 重挂新代码),已打开的页面不刷新即可拿到更新。仅 host 半模块(lib/host/*.js,进程内已加载的旧代码会一直跑到重启为止)与 hmr 不可用时的 profile 变更仍需重启服务。面板内的配置项(详情页的输入框标记开关、差异默认视图)走配置热写,改动即时生效。

兼容性:已在 [email protected] 上实测,安装、Git 面板、输入框标记与 host RPC 均可正常使用。

功能

  • Git 总览:三栏——分支 / 标签列表、可搜索(提交信息、commit 哈希、作者、日期)的提交历史图、选中提交的变更文件树与提交信息;点文件在 modal 里查看该文件在此提交中的差异。
  • 变更记录:逐文件暂存 / 取消暂存 / 丢弃;批量暂存选中文件、批量放弃选中改动(二次确认);手动提交与 Amend;贮藏(创建 / 应用 / 弹出 / 丢弃);以及文件数与增删行统计。
  • 常用 Git 操作:分支切换(远程引用落为同名跟踪分支,不留游离 HEAD;有未提交改动可先贮藏再切换)、标签创建与删除、提交还原 / 重置(硬重置会列出将丢弃的改动并要求额外勾选)。都只改写本地仓库,不自动推送。
  • AI 生成提交信息:按当前未提交变更与仓库既有提交风格生成提交信息,语言默认跟随仓库历史自动推断(也可固定中文 / English);模型可在详情页从 DSH 模型列表中固定选择(提供方 → 模型 → 推理强度三级级联,默认跟随当前会话),并可关闭生成或调整输入预算、输出上限与超时。生成会把 diff 内容发送给你所选模型的供应商。
  • 输入框 Git 标记:zsh 风格的 <仓库名> (<分支>),已同步为绿色、有未提交变更为橙色;悬停显示仓库路径,点击跳转面板。可在插件详情页关闭,改为在「Git」标签旁显示状态圆点。
  • 文件浏览:面板内直接浏览工作区目录树(按需加载、.gitignore 项半透明、不显示 .git)并预览代码 / Markdown / HTML / 图片(Markdown 渲染视图内嵌的本地图片可直接显示,如 README 配图;```mermaid 代码块渲染为图表,解析失败回退为代码块);源码预览默认自动换行,可切换为横向滚动查看长行;非 Git 目录也能用,以当前工作目录为根。
  • 差异与源码查看:统一 / 对照 / 变更前 / 变更后四种视图,语法高亮、词级改动强调、块间隐藏上下文按需展开,<kbd>Ctrl</kbd>/<kbd>⌘</kbd>+<kbd>F</kbd> 就地查找;图片以光标为锚点缩放(10%–800%)、可拖拽平移与全屏。
  • 窄面板 / 移动端:宽度 ≤620px 时自动切为单栏「钻取」布局(分支筛选改为底部弹层、提交行改两行式),变宽后自动恢复三栏。
  • 共享工作区护栏:与 dsh 的 AI 共用同一仓库,写操作弹窗统一提示「可直接让 AI 执行 Git 操作」;撞上 .git/index.lock 会自动重试一次并提示「Git 正忙」。
  • UI 跟随 DSH 系统语言设置,支持简体中文和英文。

权限与数据边界

面板以 DSH 进程的权限运行,安装前值得知道这些边界:

  • Git 命令:所有 git 命令都经宿主的 subprocess 服务执行——argv 数组、不拼接 shell 字符串、工作目录锁定在仓库根,每条命令带超时与输出上限;不使用 --force,也不改动 git 配置。
  • 文件访问:只读工作区内的文件(差异、文件浏览、AI 生成的输入),路径经校验并做 realpath 包含检查——软链指向仓库外一律拒绝,.git 不可浏览。唯一的写盘动作是「放弃未跟踪条目」:按你的确认直接删除工作区文件,条目本身是 Git 仓库时整批拒绝。
  • 网络:插件自身只发起一个请求——GET https://api.github.com/repos/<owner>/<repo>/releases/latest,用于版本条上的「有新版本」提示(5 秒超时,结果带进程内缓存)。fetch / pull / push / publish 只在你点击后经 git 命令联网,凭据始终由 git 处理;插件不读取、不存储、不返回任何令牌或凭据。
  • 外部服务:只有「AI 生成提交信息」会把 diff 内容发送给你在 DSH 中配置的模型供应商;模型调用由宿主完成,插件不持有凭据。
  • 系统依赖:需要 git CLI;未安装 git 或目录不是 Git 仓库时只显示文件浏览,以当前工作目录为根。

客户端 bundle(lib/client.js)不发起网络请求,只与宿主走同源 RPC;插件不采集遥测。面板字号、分栏宽度这类界面偏好只存在浏览器 localStorage,不含仓库内容。除 git 命令与被确认的删除外,插件代码不在工作区之外读写文件;详情页的配置项由宿主写进 profile 配置。

界面

Git 总览文件差异 modal
变更记录文件浏览
窄面板 / 移动端插件配置

架构

插件分 host / client 两半,通过 typert Remote 网关通信。

…

Related plugins