前言¶
在 DeepSeek Harness(DSH)里用 Agent 写代码时,工作目录往往就是某个 Git 仓库。模型和工具会改文件、切分支,但界面本身不一定告诉你「现在在哪个分支、有没有未提交改动、和远程差多少」。若每次都要切到终端跑 git status,会话上下文容易被打断。
社区插件 dsh-plugin-git-status(维护者 zmy15,分类为客户端)在 DSH 界面里加一条克制的 Git 状态提示:读当前会话绑定的工作目录,展示分支、最近提交、改动统计与同步状态,并支持在本地分支间切换,同时对未提交改动和冲突做保护。下面介绍它做什么、怎么装、怎么用,以及使用时要注意的限制。
这是什么¶
dsh-plugin-git-status 给 DSH 增加一条可直接操作的 Git 状态条:新会话时显示在工作区名称与 Agent 模式同一行的最右侧;对话开始后显示在会话标题栏右侧工具区。点击分支名可切换分支,点击状态区域可查看改动、与上游的领先/落后情况以及最近提交。
宿主侧只根据浏览器提交的 session id 解析 ctx.sessions.get(sessionId).header.cwd,再在该目录执行 Git 命令;浏览器不能指定路径,避免被篡改后读写任意目录。插件以当前 DSH 进程权限运行,安装前建议自行查看 GitHub 仓库 源码与 MIT 许可证。社区目录页见 SkillHub(独立站点,与 DeepSeek / 幻方无官方从属关系)。
核心功能¶
状态条针对当前会话工作目录展示(资料中已核实的能力如下):
- 当前分支:普通分支、未出生分支、游离 HEAD(显示为
HEAD @ 1a2b3c4)均有明确展示。 - 最近提交:短哈希、提交标题、作者与相对时间。
- 未提交改动:统计已暂存、未暂存、未跟踪与冲突文件;展开后列出改动路径(最多 8 行,其余折叠为「还有 N 个」)。工作区干净时只显示绿色对勾。
- 同步状态:上游分支及 ahead / behind 提交数。
- 本地分支:菜单中列出本地分支,可搜索、切换,或在底部输入名称创建并检出;当前分支的最近提交信息也会出现在菜单里。
- 改动保护:有未提交改动时先展示文件并要求确认,不会静默丢弃;若目标分支会覆盖本地文件,Git 拒绝切换,原分支保持不变。
- 自动刷新:页面可见时每 10 秒刷新;窗口重新聚焦或标签页恢复可见时立即刷新。宿主侧还有约 1.5 秒缓存与并发合并。
- 非 Git 目录 / Git 不可用:静默隐藏;打开弹层若刷新失败,在弹层内展示原因。
插件不提供暂存、提交、拉取、推送等写操作;只对 live session 生效。
安装与启用¶
环境要求(来自 README):
- Node.js
>=22.19.0 - DSH
>=0.2.1-rc.1 - 系统
PATH中可用的 Git
package.json 中版本为 1.2.2;安装方式以 README 原文为准,不要凭插件名拼接 dsh plugin add github:owner/repo。
Web profile¶
先将仓库克隆到本地,再把当前 profile 链接到克隆目录:
git clone https://github.com/zmy15/dsh-plugin-git-status.git
dsh plugin --profile web add link:<本仓库绝对路径>
然后把 dsh-plugin-git-status 加入该 profile 的 package.json 里 dsh.profile.bundles,重启 DSH。
桌面端(Electron)¶
桌面 profile 由 Electron 独占,dsh plugin 会拒绝直接修改。可以:
- 用 DSH 的 Plugin Manager 安装;或
- 手工建符号链接并把包名加入 profile:
<profile>/node_modules/dsh-plugin-git-status -> <本仓库绝对路径>
"dsh": { "profile": { "bundles": [ ..., "dsh-plugin-git-status" ] } }
桌面端宿主半边在启动期加载 bundle,装完后必须重启 DSH;只刷新页面不够。
典型用法¶
安装并重启后,在已绑定 Git 仓库工作目录的会话中,状态条会自动出现。
- 看状态:点击右侧改动数、干净对勾或 ahead/behind 数字,打开状态面板,查看文件列表与最近提交详情。
- 换分支:点击分支名,在本地分支菜单中搜索并选择目标分支;若需新分支,在底部输入名称后回车创建并检出。
- 有脏工作区时:切换分支前会先列出改动并要求确认;确认后由 Git 判断是否可安全携带改动,不能则保持原分支并提示冲突说明。
- 关闭面板:点击外部或按
Esc关闭分支菜单与状态面板。
界面颜色、圆角等走 --dsw-* 主题 token,适配亮/暗色皮肤。
适用场景与注意¶
适合:在 DSH 里长时间做仓库内 Agent 开发、需要频繁确认分支与工作区是否干净、又不想为看一眼状态离开会话界面的开发者。
注意:
- 插件以 DSH 宿主进程权限执行
git;大仓库下git status可能较慢,8 秒超时后弹层显示错误,状态 chip 保留上一次成功结果。 - 每 10 秒轮询是刻意设计,未引入 SSE,以减少桌面 IPC 与远程 web 两种传输上的生命周期复杂度。
- 分支切换分两步确认;插件不会自动暂存、丢弃或覆盖改动。
结尾¶
dsh-plugin-git-status 把「当前分支、改动、同步、最近提交」收进会话标题栏一侧,并在切换分支时守住工作区安全,适合作为 DSH 客户端侧的 Git 只读与本地切换补充。
- 目录页:https://www.skillhub.cn/plugins/zmy15/dsh-plugin-git-status
- 源码与完整说明:https://github.com/zmy15/dsh-plugin-git-status