GitPanel:在 DSH Web 客户端里用三栏面板管 Git

前言

在 DeepSeek Harness(DSH)里做智能体或日常开发,工作区往往不止一个仓库,还要在会话、终端和文件预览之间来回切。官方 Web 客户端能跑 Git,但若你习惯 IntelliJ IDEA 里那种「分支 / 历史 / 提交详情」并排的工具窗口,在浏览器里往往得靠命令行或零散入口补位。GitPanel 是社区维护的 DSH 客户端插件,把一套全页三栏 Git 界面挂进左侧面板栏,右侧 guide 胶囊只负责打开面板;Host 侧通过本地 git 执行读写,浏览器半负责 UI 与 diff。

这是什么

项 说明
包名 / 版本 GitPanel / 0.2.0(private,仓库根即包根)
维护者 relaxyabc
分类 客户端(DSH 插件 bundle,dsh.manifestVersion: 1,client 平台 web)
运行要求 DSH ≥ 0.1.7-rc.1;使用 Web 客户端的 profile;Host 机器 PATH 中有 git
目录页 https://www.skillhub.cn/plugins/relaxyabc/dsh-GitPanel
源码 https://github.com/relaxyabc/dsh-GitPanel

插件无运行时依赖、无构建步骤:Host 半一个文件 + 浏览器半若干分片,交付即运行。简介可概括为:类似 IntelliJ Git 工具窗口的 DSH Web Git 管理界面。

核心功能

下面按 README 已列能力归纳,便于对照是否满足你的日常流程。

仓库与工作区

  • 递归发现工作区下全部仓库与子模块工作树(含位于父仓库树之外的子模块),自动跳过 node_modules、.git、dist、vendor 等目录。
  • 多工作区浏览;打开面板自动选中当前会话所在工作区,顶栏下拉与左侧列表名称、完整路径一致。
  • 扫描深度可配置(见下文「配置」),切换仓库不重新扫描。

分支

  • 本地 / 远程分组、可折叠、可按名称过滤;当前分支带 HEAD 标记,显示上游与最新提交说明。
  • 右键或双击:Checkout、从远程建本地分支、删除分支(默认安全删除)、从任意提交 New branch from here。
  • Merge into <当前分支>、Rebase <当前分支> onto this branch 会先确认(要求干净工作区);冲突时面板显示黄色横幅,并提供 Commit merge / Merge –abort 或 Rebase –continue / Rebase –abort;冲突文件与普通改动一样列在工作区,解决后 stage 即可。

提交历史与 diff

  • 中间栏为历史列表:提交人、日期、lane 提交图、信息;窗口化渲染,滚到底或 Load more / Load all 续读;支持按信息/哈希、作者、日期筛选,条件下推 Host(--since / --until / --author / --grep 等)。
  • 选中提交后右栏显示完整信息与文件列表;双击文件弹出左右双栏 diff,带改动导航与概览条;未跟踪文件也可 diff。
  • 提交右键:Copy hash、Amend message(仅最新)、Checkout、Cherry-pick、New branch from here、Reset (soft/mixed/hard)、Revert commit。

工作区改动与提交

  • 基于 git status --porcelain=v2 -z 的改动列表;复选框仅表示选中,表头全选 +「暂存选中 / 取消暂存选中」;Commit / Commit all / Commit & push,Ctrl/Cmd+Enter 快捷提交。
  • 自动读取提交模板(commit.template 或仓库根 .gitcommit);提交框支持多行与 Amend 模式;Push / Fetch / Pull(Pull 需当前分支有上游)。
  • 暂存、提交、推送只重载相关数据,避免整面板长时间「载入中」。

子模块与界面

  • 列出子模块状态,支持 init / update / sync(递归)。
  • 面板文案中英双语,跟随 DSH locale;Git 命令名(Checkout、Cherry-pick 等)保持英文;样式用 DSH 设计令牌,适配明暗主题。

安装与启用

1. 安装到 profile

dsh plugin 把参数原样转给 pnpm。从 GitHub 公开仓库默认分支 main 安装的是拷贝:

dsh plugin --profile <name> add github:relaxyabc/dsh-GitPanel

升级用 dsh plugin --profile <name> update GitPanel 重新解析;固定版本可写 github:relaxyabc/dsh-GitPanel#v0.2.0 或 #<commit>。本地路径形式装的是指向仓库的链接,改代码后重启即生效,适合边改边用。

2. 写入 Cordis patch

在 profile 的 cordis.patch.yml(或以 --patch 叠加层)里插入(包内 cordis.patch.yml 即此内容):

- insert:
    - id: GitPanel
      name: 'GitPanel'

3. 重启 profile

启用 dsh-hmr 时会自动重载。

典型用法

安装并重启后,可按 README 描述的路径操作:

  1. 左侧面板栏点 Git 图标 → 打开全页三栏:左(分支 + 改动 + 提交框)、中(历史)、右(提交信息与该提交的文件改动)。
  2. 右侧边栏 guide 胶囊里的 Git → 打开同一全页面板并关掉当前标签页(布局按会话持久化)。
  3. 顶栏显示工作区目录与仓库(下拉切换,悬停见完整路径),当前分支芯片带 ahead/behind;面板打开时自动对齐当前会话工作区。
  4. 在提交信息框填写说明,Ctrl/Cmd+Enter 提交;危险操作(hard reset、删分支、删文件)有确认框。

Host 与浏览器通过认证 Fetch 路由通信,例如:

POST /api/local-git
{ "op": "state", "args": { "workspaceRoot": "E:/ws", "path": "alpha" } }

错误以 200 + ok: false 返回;路径超出工作区围栏时会明确报错。

配置

在插件页面「已安装」分组里的 GitPanel 上配置(保存后即时生效,无需重启):

配置项 类型 默认 说明
discoveryDepth number(1–8) 3 仓库发现递归层数
wholeFileDiff boolean false 为 true 时 diff 显示整文件
filePreviewFix boolean true 修复 Chromium 上 dsh-resource:// 文件预览找不到提供方(见 DSH discussion #6437)

filePreviewFix 只处理 dsh-resource:// 地址;上游修好后可关闭。Office / PDF 预览若报 n.toHex is not a function,与旧浏览器上 pdf.js 依赖的新引擎 API 有关,需升级浏览器,非本插件地址修复能覆盖的范围。

适用场景与注意

适合谁: 已在 DSH Web 客户端 profile 里开发、希望用图形界面完成分支、历史、暂存与提交,且习惯 IDE 式三栏布局的开发者。

权限与安全: Host 半在 DSH 进程内 execFile(git),路径经 resolveInside 围栏;插件仍以当前 dsh 进程权限访问本机 Git 与工作区文件。安装前应在 GitHub 阅读源码与许可证(仓库为 private 包描述,以仓库实际 LICENSE 为准),确认符合你的安全策略。

环境: 必须 Web 客户端 profile 且本机可调用 git;DSH 版本不低于 0.1.7-rc.1。

DSH 生态强调「一切皆插件」;SkillHub 等社区目录独立于 DeepSeek / 幻方,并非官方应用商店。

结尾

GitPanel 把 IntelliJ 风格的 Git 工具窗口以 bundle 形式挂进 DSH Web 客户端:多仓库与子模块发现、分支与合并/变基、可筛选历史、工作区提交与 push/pull,以及可配置的 diff 与仓库扫描深度。若你正在 profile 里用浏览器半开发,可从官方 README 的安装命令装入 profile,用左栏 Git 图标或右侧 guide 入口打开三栏面板。

  • 目录页:https://www.skillhub.cn/plugins/relaxyabc/dsh-GitPanel
  • GitHub:https://github.com/relaxyabc/dsh-GitPanel
羽毛球分组比赛记分
小程序二维码

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

小夜