前言¶
用 DeepSeek Harness(DSH)的 WebUI 工作时,看当前仓库改了什么、提交、推送,通常要切回终端敲 git status、git commit,一来一回容易打断手头的事。
dsh-git-component 解决的就是这个问题:它在 WebUI 右侧挂一个悬浮面板,实时显示工作区变更,提交和推送直接在面板里完成,提交信息留空还能自动生成。下面介绍这个插件的定位、功能、安装和用法。
这是什么¶
dsh-git-component 是 DeepSeek Harness Web GUI 的 Git 插件,由 nieyunliang 维护,MIT 协议,当前版本 0.1.1。
它悬浮在窗口右侧(376px 宽,透明卡片风),可以把当前更改按「已暂存 / 未暂存 / 未跟踪」三组展示,并支持提交、提交并推送、推送三种操作。提交信息留空时,自动用当前默认模型生成中文提交信息。
核心功能¶
查看变更¶
- 右侧悬浮面板,可折叠为右上角的 Git 分支小图标,需要时再展开。
- 三个分组:已暂存 / 未暂存 / 未跟踪,底层用
git status的 porcelain v1 输出做精确解析,重命名文件也能正确归类。 - 点击文件名可内联查看 diff,最多显示 400 行。
- 每 15 秒自动刷新一次。
提交与推送¶
- 三种操作:提交、提交并推送、推送(推送当前分支到上游)。
- 提交前会自动执行
git add -A暂存全部更改。 - 提交信息留空时,点提交会自动用当前默认模型生成中文提交信息(不超过 60 字,单行),然后提交。
- 面板里支持 Ctrl/⌘+Enter 快捷提交。
会话跟随与执行方式¶
- git 命令在当前会话的工作目录下执行,插件会自动用
git rev-parse --show-toplevel定位仓库根;切换会话或工作区后面板自动重载。 - 操作通过宿主的
shell服务执行 git,按会话沙箱策略走,不会放宽当前的文件权限模式;同时设置GIT_TERMINAL_PROMPT=0,禁止 git 弹交互提示。
安装与启用¶
要求:web profile(提供 webServer 与 shell 服务)、Node ≥ 22、Git ≥ 2.x。插件零运行时依赖,不引入其他包。
从 GitHub 安装(git 源,推荐):
dsh plugin --profile web add github:nieyunliang/dsh-git-component
安装后需要重启 webui 进程才能生效——Node 的模块缓存不会热替换旧代码。
关于构建脚本:本插件没有构建脚本,git 源安装通常不需要额外的 prepare/allowBuilds 配置;如果 pnpm 仍提示构建脚本被拦截,再在 profile 的 pnpm-workspace.yaml 的 allowBuilds 中加入对应 key 后重试。
典型用法¶
- 重启后打开 WebUI,右侧出现 Git 面板(右上角小分支图标可展开/收起)。
- 面板显示当前仓库的三个分组与变更文件;点击文件可查看 diff。
- 提交:填入提交信息后点「提交」或「提交并推送」(或直接 Ctrl/⌘+Enter);提交前会自动
git add -A暂存全部更改。 - 留空提交信息:点提交后自动生成 AI 提交信息并提交。
- 「推送」按钮把当前分支推送到上游。
如果是本地开发调试,想从源码目录安装或重装,在插件的父目录执行:
dsh plugin --profile web add ./dsh-git-component
再用下面这条命令确认配置里已出现 git-component 这一行,然后重启 webui 进程:
dsh --profile web --dump-config | grep git-component
适用场景与注意事项¶
适合在 WebUI 里以会话为单位驱动开发的人:边看智能体改代码、边核对变更并提交,不用来回切终端。
几点需要注意:
- 面板的 git 操作与在终端里敲等价命令的风险一致,尤其是提交前自动
git add -A会暂存全部更改,提交前先确认面板里的文件列表。 - 插件以当前 dsh 进程的权限运行,按会话沙箱策略执行,不会放宽文件权限模式;但安装任何第三方插件前,都建议先检查源码与许可证。本项目采用 MIT 协议。
- 从本地源码目录安装时,必须在插件的父目录执行命令。
小结¶
dsh-git-component 把查看变更、diff、提交、推送这几步收进 WebUI 右侧的一个面板,配合 AI 自动生成提交信息,减少在终端和界面之间的来回切换。安装只需一条命令加一次重启。