前言¶
在 DeepSeek Harness(DSH)里和 Agent 对话时,改代码往往就在当前工作区里完成。若每次暂存、提交、切分支或看 PR 都要切到终端或浏览器,对话上下文容易被打断。常见做法是并排开一个 IDE 或终端窗口做 Source Control,但右侧栏本身并未提供与 Cursor / VS Code 相近的 Git 面板。
dsh-git-management 是社区维护的 DSH 客户端插件,在右侧边栏增加「源代码管理」分页,背后直接调用系统上的 git,变更状态与终端里 git status 一致,并可在同一栏内查看 diff、提交图、worktree 与 GitHub 信息。下面介绍它是什么、能做什么、如何安装与常见用法。
这是什么¶
- 定位:DSH 外挂(客户端),维护者 ET921,仓库 ET921/dsh-git-management,已发布 npm 包
dsh-git-management(当前资料中版本为0.1.2),授权 MIT。 - 分类:客户端;依赖 DSH
>=0.1.1-rc.1,Node^22.19.0 || >=24.0.0。 - 核心思路:不内嵌 Git,Host 通过
subprocess执行本机git;面板是入口,文件差异、单次提交差异、工作树、GitHub 均在右侧开分页,不盖住主对话区。
插件目录页:skillhub.cn/plugins/ET921/dsh-git-management。社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系;安装前建议自行查看源码与许可证。插件以当前 DSH 进程权限运行,请确认本机 Git 与凭据配置符合你的安全要求。
核心功能¶
界面按区块划分,与 README 中的「介面地图」一致。
| 区块 | 作用 |
|---|---|
| 分支列 | 当前分支、ahead/behind、Fetch / Pull / Push |
| 提交框 | 提交说明、全部暂存、amend |
| 变更清单 | 已暂存 / 更改 / 冲突;点文件看差异 |
| 工作树 | 同一 repo 的多个 checkout(含 DSH 的 .agents/worktrees/*) |
| Graph | 提交列表与分支轨道;点某次提交看「提交差异」 |
| GitHub | 识别 origin;查看 repo / PR / Issue;可从当前分支新建 PR |
提交与暂存:在「更改」列表 hover 文件可暂存、放弃、删除未跟踪文件;Ctrl+Enter 或点「提交」;支持「全部暂存」与「修改上次提交」;存在冲突时提交按钮会停用并提示原因。
看差异:点文件打开「文件差异」分页(双栏行号、统一/并排);分页头可直接暂存或放弃。Graph 中点某一列打开「提交差异」,按文件竖排,只渲染有变更的 hunk。
同步与分支:分支名可切换;Fetch 仅更新远端引用;Pull 为快进合并;Push 推送(首次可设 upstream)。↑2 ↓1 表示本地领先 2、落后 1。
工作树:可新建 worktree(例如落在 .agents/worktrees/<name>、分支 worktree-<name>),并打开为另一 DSH 工作区,便于 Agent 并行改代码。
GitHub:自动识别 origin(含 ssh/https、GitHub Enterprise)。GitHub token 存于本机 DSH 凭据区(权限 0600,与模型 API key 同一 store);推送仍走本机 git 凭据。面板可「忘记 token」清除。
其他:多 workspace 下拉切换;非 git 目录可一键 git init;可见时每约 8 秒只读 status(非文件监听);错误与成功提示 sticky 在顶部。
已知边界(来自 README):无内置冲突解决器;大仓库首次 status --untracked-files=all 可能较慢;提交差异为 hunk 级、单提交最多 60 个文件;修改 Host 侧代码需完全重启 DSH Desktop,仅改 client 可 Ctrl+R。
安装与启用¶
从插件市场(npm)安装——资料给出的命令为:
dsh plugin --profile web add dsh-git-management
另可在 DSH Desktop 的 Plugin Manager 安装 Release 预构建包 dsh-git-management.tgz,无需本地构建。
本地开发(需自行 build):
npm install
npm run build
在 profile 的 cordis.patch.yml 末尾插入插件 id git-management / name dsh-git-management,并在 profile 的 node_modules 下链接到本仓库目录,然后重启 DSH Desktop。验证构建:
npm run build
典型用法¶
打开面板¶
右侧边栏与 session 绑定,须先打开 session。
- 右侧栏切到「开始」,向下找到「源代码管理」卡片。
- 点击后右侧出现 Git 分页,默认选中当前 workspace 的 repo。
若看不到卡片:确认已开 session,必要时 Ctrl+R 重载;Host 与 client 版本不一致时出现 unknown action: commitDiff 时,需从菜单/托盘完全退出 DSH Desktop 再启动。
改完代码并推送¶
- 「更改」列表中 hover 文件点
+暂存,或「全部暂存」。 - 填写提交说明后提交。
- 分支列点 Push(首次会设 upstream)。
查看某次提交改了什么¶
- 滚动到 Graph,点目标提交行。
- 右侧打开「提交差异」分页,按文件查看 hunk。
切分支并同步¶
- 点分支名选择分支。
- Fetch 更新远端引用;Pull 快进合并;Push 推送。
用 worktree 让 Agent 并行工作¶
- 在「工作树」点
+,输入名称(如fix-ui)。 - 创建在
.agents/worktrees/fix-ui,分支worktree-fix-ui。 - 点「开启」作为另一 DSH 工作区使用。
开 Pull Request¶
- 先将分支 Push。
- 在「GitHub」区点「新建 PR」,填写标题、说明与目标分支;或使用「在 GitHub 打开」。
适用场景与注意¶
适合:在 DSH 内完成日常 Git 流程、快速 review diff 与提交历史、需要与 Agent 对话同时管理分支与 PR 的开发者;不熟悉 git 命令时也可按 README「常见情境」逐步点击操作。
注意:
- 面板状态与终端一致的前提是使用同一 repo 路径与本机 git;凭据问题需在终端侧配置(例如先
git push让 Credential Manager 记住)。 - 看不到同事新分支时,先在 Graph 或分支列执行 Fetch,更新 remote-tracking ref。
- 架构上 UI 经
POST /dsh-git/api调 Host,Host 以 argv 调用 git(不经 shell);请求 path 须在已注册 workspace 内,否则 403。使用 GitHub 功能需在本机配置 token(存 DSH 凭据区,不由 client 随请求携带)。
结尾¶
dsh-git-management 把 Source Control 收进 DSH 右侧栏:暂存、提交、分支、同步、Graph、worktree 与 GitHub 集成,对话不必为 Git 频繁切窗。如需详情与截图,见 GitHub README;插件索引见 SkillHub 目录页。