前言¶
在 DeepSeek Harness(DSH)里和模型对话时,工作区往往已经绑定了某个 Git 仓库。改完代码若还要切到终端做 git status、看 diff、写提交说明,上下文会被打断。DSH 社区里也有其它做法,例如在侧边栏单独挂工具页;dsh-git(维护者 Weidows,npm 包名 @weidows/dsh-git)把仓库名、分支、变更列表、提交历史和 patch 收进 Composer 芯片、会话顶栏按钮和右侧分栏面板,尽量在同一界面里走完常见 Git 操作。
这是什么¶
dsh-git 是面向 web profile 的 DSH 客户端插件:在 Composer 尾部展示「仓库 / 分支」芯片,在已打开会话的顶栏提供 Git 入口,并在右侧边栏提供分屏 Git 面板(变更与暂存、历史、diff)。Host 侧通过 POST /plugins/dsh-git/api/<method> 调用本机 git(execFile,不走 shell),并受 Harness 连接与 working directory 约束。当前资料中的版本为 0.7.0,许可证 MIT,要求 dsh >= 0.2.0。
核心功能¶
Composer 分支芯片¶
芯片位于 Composer 右侧控件簇中(模型选择与会话统计左侧),示意形态如下:
main-repo / feature/login ↑2
显示仓库名、当前分支、ahead/behind 标记,以及工作区脏状态圆点;点击可打开 Git 面板。
会话顶栏 Git 按钮¶
在已打开会话右上角工具行提供与芯片相同的打开面板动作。
右侧分屏 Git 面板¶
布局大致为:
+----------------------+----------------------+
| changes + staging | history |
| staged / unstaged | branch + filter |
| [ AI ] [ ] [commit] | expandable commits |
+----------------------+----------------------+
| diff |
+--------------------------------------------+
- 左上:已暂存与未暂存文件,按仓库目录树折叠展示(非扁平列表)。可对单文件或全部 stage/unstage;对已跟踪文件的 discard 需内联确认;可填写提交说明,或用 AI 生成(使用 Harness 默认模型,未配置模型时会给出明确错误)。Ctrl/Cmd+Enter 提交。
- 右上:提交历史,含分支切换、文本过滤、左侧连续分支轨线、可展开查看单次提交涉及文件;右键菜单支持复制 hash、
reset --soft/mixed/hard、revert。行内 ref 芯片区分 HEAD、本地分支、远程跟踪、标签等;下方显示short hash · author · age。 - 底部:展示当前选中项的 unified diff——工作区文件、暂存文件,或某次提交中的单个文件 patch(仅该文件,非整次提交)。
视口宽度低于 720px 时,两列网格会堆叠为「变更 → 历史 → diff」单列,各 pane 独立滚动,并针对触控调整布局与可点区域。
与 dsh-better-sidebar 的配合¶
若已安装 dsh-better-sidebar(peer 依赖 >=0.28.0,可选),插件优先通过 ctx.betterSidebar.registerTab 注册面板(order 25,单实例),并跳过原生右侧标签,避免出现两个 Git 标签。未安装 better-sidebar 时回退为普通右侧边栏标签。
其它插件也可打开同一面板,例如:
ctx.betterSidebar.openTab({ type: "dsh-git-by-weidows", title: "Git by@Weidows", meta: { cwd } }, { sessionId })
Host API 概览¶
请求体为 JSON,成功返回 { ok: true, data },失败返回 { ok: false, error: { message } };非 Harness 连接会收到 403。常用 method 包括:state、diff、log、commit、commit-files、commit-file、stage / unstage、discard、commit-create、branches、checkout、reset、revert、suggest(基于 staged/working diff 生成提交说明)。单次 git 输出上限 24 MB。
安装与启用¶
客户端插件在 Harness 启动时加载,安装后需重启。
# from npm (scoped: the unscoped name dsh-git belongs to another author)
dsh plugin --profile web add @weidows/dsh-git
# from source
dsh plugin --profile web add github:Weidows/dsh-git
说明:未 scoped 的 dsh-git npm 名属于另一位作者,安装时应使用 @weidows/dsh-git。
典型用法¶
- 安装并重启 DSH 后,打开绑定 Git 工作区的会话。
- 在 Composer 右侧查看分支芯片上的仓库名、分支与 dirty 状态;需要完整操作时点击芯片,或使用会话顶栏 Git 按钮。
- 在面板左上按目录树 stage 文件、填写或 AI 生成 commit message,Ctrl/Cmd+Enter 提交。
- 在右上浏览历史、切换分支、过滤提交;对某次提交展开文件列表,在底部查看 diff;必要时通过右键菜单 copy hash 或执行 reset/revert(均为面板内显式点击,见下文安全说明)。
- 若同时使用 dsh-better-sidebar,Git 会出现在 better-sidebar 的标签体系中,而不是重复的原生 Git 标签。
适用场景与注意¶
适合:在 DSH web 界面内频繁查看 diff、暂存、提交、翻历史的开发者;希望 Composer 上始终可见分支与工作区状态的用户。
安全与权限:
- 插件以 当前 DSH 进程权限 在会话 working directory 内执行
git;安装前建议阅读 GitHub 源码 与 MIT 许可证,确认行为符合预期。 reset --hard、revert、discard为破坏性操作,仅能通过面板内明确点击触发;revert 若冲突会用git revert --abort回滚,避免工作区停在合并中间态。- 不会 discard 未跟踪文件,面板也不会对未跟踪文件显示 discard。
- 不启 shell、不交互式要凭证(
GIT_TERMINAL_PROMPT=0),不读取会话 working directory 之外的路径。
DSH 生态强调「一切皆插件」;社区目录(如 dsh-plugin.org 与 skillhub.cn 插件页)为独立收录站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-git 把分支状态、暂存区、提交历史与 diff 嵌进 Harness 的 Composer 与侧边栏,减少在终端与 Web UI 之间来回切换。进一步了解可访问插件目录页与仓库:
- 目录页:https://www.skillhub.cn/plugins/Weidows/dsh-git
- GitHub:https://github.com/Weidows/dsh-git