dsh-git-panel: Git Panel Plugin for DSH Web GUI

DSH Web GUI 的插件生态允许开发者通过会话标签页扩展功能。Git 操作通常依赖外部终端或手动文件管理,如果需要在智能体会话中直接管理代码改动,往往需要频繁切换上下文。dsh-git-panel 插件提供了一个可视化的 Git 面板,直接集成在会话标签栏中,用于查看、暂存、提交、Diff、历史记录及分支管理。

该插件由 fengbinmov 维护,采用 MIT 许可证,以 profile bundle 的形式提供宿主与浏览器两端的逻辑。

核心功能

会话页集成

插件在会话标签栏中新增一个 Git 标签页,紧挨「对话 / 轨迹」标签。面板内部包含两个子视图:更改页与历史页。

更改页(Changes)

  • 双区布局:上方为「未暂存的更改」,下方为「已暂存的更改」。一个文件若同时存在两处改动,会同时在两侧出现。
  • 拖拽操作:支持将文件或文件行从「未暂存」拖拽到「已暂存」进行暂存;拖拽组标题可整组移动。
  • 行级操作:在行号栏按下并拖动可选中若干行,浮出操作条(暂存/取消暂存/丢弃);在代码文字上拖动为浏览器原生划词选择。
  • 快捷键:Delete 键可丢弃未暂存的改动(无二次确认)或取消暂存已暂存的改动。

历史页(History)

  • 三栏视图:提交列表 / 文件列表 / 选中文件的补丁。分隔条可拖动、双击复位。
  • 实时同步:与更改页的分隔条位置对齐,支持跨页拖动复位。

分支与远端

  • 工具栏:显示当前分支、上游分支、ahead/behind 计数。
  • 操作:下拉菜单支持切换本地分支、合并、rebase、fetch/pull/push。
  • 冲突处理:有未解决冲突或进行中的操作时,切换/合并会被拦截并提示原因;检测到进行中的 merge/rebase 会显示警告条及中止按钮。

Diff 渲染与乐观 UI

  • 渲染器:更改页和历史页共用同一个 Diff 渲染器,支持等宽字体、行级标记。处理二进制文件、截断补丁及重命名时有明确提示。
  • 乐观策略:操作先在本地视图生效(预测函数),等待 Git 真实答复后替换;失败则回滚并报错。

安装与启用

该插件依赖 DSH 版本 >= 0.1.5-rc.1 及 Node.js 版本 ^22.19.0 或 >=24.0.0。

dsh plugin --profile web add @fengbinmov/dsh-git-panel@latest

安装后重启 dsh web 即可生效。

典型用法

  1. 在会话界面添加 Git 标签页,查看当前仓库的代码改动。
  2. 拖拽文件行或使用行号栏选中特定行,通过浮出的操作条快速暂存或丢弃。
  3. 通过工具栏管理分支和远程仓库,执行合并或拉取操作。

注意事项

  • 所有 Git 操作由界面触发,插件本身不注册工具或写入 system prompt,模型在界面上看不到它。
  • 插件采用乐观 UI,操作失败时会自动回滚并显示错误。
  • 浏览器端通过 Web Locks 机制保证跨标签页只开一条 SSE 事件流,避免连接池阻塞。

插件目录 | GitHub 仓库

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

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

Xiaoye