前言¶
在 DeepSeek Harness(DSH)里改代码、跑智能体时,版本控制往往仍要切到终端或外部 GUI:看 diff 要另开窗口,暂存粒度粗,提交前很难一眼确认「哪一行进了 index、这次 commit 会落在哪条分支」。DSH 侧栏本就可扩展为类似 IDE 工具窗;若把 Local Changes、提交窗、历史图和 diff 嵌进 Web 会话界面,就不必在对话与 Git 之间来回切换。下面介绍社区插件 @yann9/dsh-git-workbench(GitHub:yann9/dsh-git-workbench),维护者为 yann9,分类为客户端插件,在 DSH 内提供接近 JetBrains 工作流的 Git 能力。
这是什么¶
dsh-git-workbench 是面向 DSH 的 JetBrains 风格 Git 工作台:Local Changes 树、hunk/行级 staging、并排 diff、提交窗、提交图、annotate、交互式 rebase、shelve、三路冲突视图等,与对话同屏使用。README 写明其目标不是「能 commit 就行」,而是像 IDEA 一样看清哪行变了、哪个 hunk 被 stage、commit 会落在哪条分支。
界面映射关系(资料原文):
| JetBrains | 插件中 | 内容 |
|---|---|---|
| Commit 工具窗 | Commit 标签 | 变更树、changelist、冲突、提交说明、AI / Recent / Checks / Amend |
| Log 工具窗 | History 标签 | 提交图、提交详情、文件列表(只读) |
| 编辑器 Diff 标签 | 主区 Diff 视图 | 并排/统一视图、hunk 与行级 staging、annotate、冲突视图 |
Diff 在主区以单例标签打开(再开文件会替换内容,不堆叠)。Commit 与 History 各自保留选中、滚动、过滤和草稿;Diff 是否可写由 source 决定(working 可写,commit / turn 只读)。仓库跟随会话 cwd,换会话即换仓库;并接入会话头部分支 chip、新建会话 hero 的分支选择、回合卡片与 Files 上的 Git 按钮、以及 composer 上方的 change bar。
核心功能¶
以下均来自 GitHub README 与文档索引,未在资料中出现的细节不写。
Staging 与 diff
- 整文件、hunk(裁剪 patch 后
git apply --cached)或单行 staging;unstage 同样精细;提交始终基于 index。 - 并排/统一 diff、双行号、词级高亮、只读模式下可忽略空白、上下文折叠、文件
‹ n/m ›导航与F7hunk 导航。
提交与检查
Ctrl+Enter提交、AI 起草说明、↑回忆历史说明、amend、changelist;提交前检查可读取仓库package.json中的 scripts。
History 与改写历史
- DAG 图、可排序可调列宽、按分支/作者/日期分组;结构化过滤(
author:、message:、hash:等);多选批量 cherry-pick / revert。 - 交互式 rebase(pick/squash/fixup/drop)、reword、undo commit、cherry-pick、revert、soft/hard reset,均需明确确认。
分支、远程与冲突
- 切换/创建/重命名分支、
↑N ↓Nahead/behind、upstream、compare、rebase onto、fetch/pull/push、管理 remote。 - 未合并变更单独分组;三路冲突视图可逐块选择或手写合并结果;merge/cherry-pick/rebase 暂停时状态栏 continue/abort。
其他
- Stash(命名 + 选文件,部分 stash 用临时 index);Git console 记录真实 argv、退出码、耗时与输出;空目录一键
git init;双语 UI 跟随 DSH 语言偏好。 /dsh-git/仅提供 JSON API 与 SSE,无独立页面(见 docs/api.md)。- 与 JetBrains 的 50+ 项对照见 docs/features.md。
常用快捷键(节选):
| 操作 | 快捷键 |
|---|---|
| 刷新 | F5 |
| 提交 | Ctrl/Cmd + Enter |
| 聚焦提交说明 | Ctrl/Cmd + K |
| 用模型起草说明 | Ctrl/Cmd + G |
| 上/下一个文件 | Alt + ↑ / Alt + ↓ |
| 上/下一个 hunk | Shift + F7 / F7 |
安装与启用¶
依赖:git 在 PATH 上、Node ^22.19.0 || >=24.0.0、pnpm,以及 DSH 0.2.1-rc.2 或更新。npm 包名 @yann9/dsh-git-workbench(package.json 当前版本 0.1.6),许可证 MIT。
从 npm 安装并启动 Web profile:
# install from npm
dsh plugin --profile web add @yann9/dsh-git-workbench
# the bundle layer is read at startup only
dsh web
执行 dsh web 后打开终端打印的 ?token=... URL。侧栏 + 引导页可添加 Commit、History 标签;会话头部分支 chip 默认可用。
若 link: / file: 安装时 profile 未自动注册 bundle,可手动写入(效果同 plugin add):
"dsh": { "profile": { "bundles": ["@deepseek-ai/dsh-base", "@deepseek-ai/dsh-web-app", "@yann9/dsh-git-workbench"] } }
本地开发可用 link:(需自行维护 bundle 条目,重启 dsh web 即可生效);file: 会复制代码,改代码需再次 add。
升级与移除(均需重启 dsh web):
dsh plugin --profile web add @yann9/dsh-git-workbench@latest
dsh plugin --profile web remove @yann9/dsh-git-workbench
配置¶
可在 Settings → Plugins → Git workbench 编辑,或在 profile 的 cordis.patch.yml 中 patch。未写的键使用下列默认值(摘自 README):
- insert:
- id: git-workbench
name: '@yann9/dsh-git-workbench'
config:
repoPath: '' # fallback repo when there is no session cwd
maxLog: 400
readOnly: false # true = every write API returns 403
branchPattern: 'session/{date}-{time}'
confirmDirtySwitch: true
diffFullFile: true
diffWrap: true
diffFoldThreshold: 8
diffSideBySide: true
listMode: 'last' # 'tree' | 'flat' | 'last'
commitLanguage: 'auto' # 'auto' | 'zh' | 'en'
llmProvider: '' # empty: the route DSH has selected
llmModel: '' # empty: that route's selected model
readOnly: true 时工作台变为只读审查:staging、提交、分支、网络与冲突解决均禁用,写 API 返回 403(/config 除外)。
典型用法¶
- 按上文命令安装并
dsh web,在浏览器打开带 token 的地址。 - 在侧栏通过
+打开 Commit、History;在会话对应仓库目录下工作,变更出现在 Local Changes 树中。 - 点击文件在主区打开 Diff;按需做 hunk 或行级 stage,填写说明或用
Ctrl/Cmd + G让模型起草,确认 staged 内容后Ctrl/Cmd + Enter提交。 - 在 History 查看提交图与详情;冲突时在 Commit 视图的未合并分组进入三路视图处理,sequencer 暂停时用状态栏 continue/abort。
- 需要只读审查时,在设置中将
readOnly设为true。
中文 README 见仓库 README.zh.md;架构与设计说明见 docs/architecture.md、docs/jetbrains-parity.md。
适用场景与注意¶
适合谁:习惯 IntelliJ IDEA / JetBrains 系 Git 工具窗、希望在 DSH Web 会话旁完成精细 staging、diff、提交与历史操作的开发者。
生态说明:DSH 采用「一切皆插件」的扩展方式;社区目录 SkillHub 插件页 为独立站点,与 DeepSeek / 幻方无官方从属关系,本文不将其描述为官方应用商店。
安全与权限:插件在 当前 DSH 进程权限 下执行真实 git 命令(Git console 会记录 argv 与输出)。安装前请自行查看 GitHub 源码 与 MIT 许可证,仅在可信环境启用写操作;生产或敏感仓库可先用 readOnly: true 做只读浏览。
结尾¶
@yann9/dsh-git-workbench 把 Commit、History 与主区 Diff 嵌进 DSH Web,用 hunk/行级 staging、并排 diff、提交图与三路冲突视图,减少在对话、终端与外部 Git 客户端之间的切换。安装与配置以 README 为准;目录页:https://www.skillhub.cn/plugins/yann9/dsh-git-workbench,仓库:https://github.com/yann9/dsh-git-workbench。