前言¶
在 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 描述的路径操作:
- 左侧面板栏点 Git 图标 → 打开全页三栏:左(分支 + 改动 + 提交框)、中(历史)、右(提交信息与该提交的文件改动)。
- 右侧边栏 guide 胶囊里的 Git → 打开同一全页面板并关掉当前标签页(布局按会话持久化)。
- 顶栏显示工作区目录与仓库(下拉切换,悬停见完整路径),当前分支芯片带 ahead/behind;面板打开时自动对齐当前会话工作区。
- 在提交信息框填写说明,
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