前言¶
用 DSH 做智能体开发时,当前会话往往绑定一个工作目录。分支名、暂存/未暂存改动、与 upstream 的领先/落后,这些信息分散在终端或 IDE 里,切回 Web 界面时不一定一眼能看到。下面介绍社区插件 dsh-git-statusline(维护者 pinzza,分类:客户端):在 DSH Web 里用一行紧凑文本展示 Git 工作区与 upstream 状态,显示位置可在设置里切换。设计参考了 ccstatusline-zh 的 Git widgets,适合希望在浏览器里常驻 Git 摘要的 DSH 0.2.x 用户。
这是什么¶
dsh-git-statusline 是面向 DSH Web 的纯 JavaScript 客户端插件,通过 DSH 插槽把 Git 状态渲染到侧边栏底部、会话标题旁或对话框上下方。非 Git 仓库的会话会按设计隐藏;无 upstream 时不会给出错误的「已推送」结论,悬停提示会说明无法判断。
- 目录页:https://www.skillhub.cn/plugins/pinzza/dsh-git-statusline
- 源码与文档:https://github.com/pinzza/dsh-git-statusline
- 当前资料中的版本:0.2.1(MIT 许可证)
显示内容与格式¶
典型一行形如:
main (+16,-2) ↑2 ↓1
含义(与 README 一致):
(+16,-2):已暂存与未暂存文本改动的新增/删除行数。↑2:当前分支相对 upstream 待推送的提交数。↓1:当前分支相对 upstream 待拉取的提交数。✓:工作区干净,且相对 upstream 没有领先或落后。
插件每 5 秒轮询一次,窗口重新获得焦点时立即刷新;同一时刻最多一个进行中的请求(客户端并发去重)。Git 命令均为只读,并设置 GIT_OPTIONAL_LOCKS=0。服务端先用 .git/HEAD 与 .git/index 的 mtime 预检,工作区未变则命中缓存、不拉起 git 进程;在 Windows 挂载路径(如 WSL 的 /mnt/*)上另有超时与结果缓存策略,详见仓库 README。
显示位置¶
在 DSH 中打开:设置 → Git 状态栏 → 显示位置。选项保存在浏览器 localStorage(键 dsh-git-statusline:config),改完立即生效,无需重启 DSH。
| 位置 | 说明 |
|---|---|
| 侧边栏底部(默认) | 侧边栏一行;收起成 56px 轨道时退化为 ↑ / ↓ / ± / ✓ 单字符 |
| 会话顶部标题后方 | 标题栏内的小 chip |
| 对话框上方 | 输入框上方的 chip,独占一行 |
| 对话框下方 | 输入框下方状态行内的纯文本(与用量统计等同处一行,带宽紧,故为无边框纯文本) |
| 不显示 | 不注册插槽,也不发请求 |
若在意对话框下方那一行的排版,README 建议优先选「会话顶部标题后方」。
与 DSH 版本的兼容性¶
要求 DSH >=0.2.0-rc.1 <0.3.0(插件 0.2.1 起)。DSH 启动时会校验插件 package.json 里 @deepseek-ai/dsh* peer 是否覆盖当前运行时;不覆盖会打印 skipping profile bundle 并静默跳过整个插件,界面上无报错。
| DSH 版本线 | 可用插件版本 |
|---|---|
>=0.2.0-rc.1 <0.3.0 |
0.2.1 起 |
0.1.x |
0.2.0(在 0.2.x 上会被跳过) |
安装与启用¶
插件预构建代码在仓库 lib/ 中,不需要构建步骤。以下命令在 README 中标注为在 DSH 0.2.0-rc.1 + pnpm 11.21.0 上实测通过。
从 GitHub 直接安装(推荐):
dsh plugin --profile web add github:pinzza/dsh-git-statusline
从 Release 预构建 tarball 安装(与上一方式等价,可离线):
curl -L -o dsh-git-statusline.tgz \
https://github.com/pinzza/dsh-git-statusline/releases/latest/download/dsh-git-statusline.tgz
dsh plugin --profile web add ./dsh-git-statusline.tgz
固定版本可将 URL 改为钉住 tag 的形式,例如 .../releases/download/v0.2.1/dsh-git-statusline.tgz。
安装后重启 dsh web;若 Web 由其他进程管理,重启该进程并刷新 http://127.0.0.1:3080。
验证插件层是否加载:
dsh --profile web --dump-config | grep -A2 dsh-git-statusline
应能看到 # == dsh-git-statusline。若同时出现 dsh: skipping profile bundle "dsh-git-statusline",说明 peer 与当前 DSH 不匹配,需按兼容性表升级插件或调整 DSH 版本。
卸载:
dsh plugin --profile web remove dsh-git-statusline
不显示时的排查¶
README 给出的顺序:
- 插件层是否被跳过:执行上面的
dump-config | grep,看不到# == dsh-git-statusline或出现skipping profile bundle→ peer 不兼容(升级 DSH 后常见)。 - 当前会话工作目录不是 git 仓库(
isRepo=false,插件隐藏)。 - 显示位置选了「不显示」。
若浏览器 Network 里没有 POST /git-statusline/status,多为 ① 或 ③;有请求却无渲染则多为 ②。
适用场景与注意¶
- 适合:在 DSH 0.2.x Web 端开发、希望少切终端即可看到分支与 upstream 摘要的用户。
- 权限与安全:插件随当前 dsh 进程运行,会通过服务端执行只读 Git 查询;安装前请自行查看源码与 MIT 许可证,确认符合你的环境策略。DSH 社区目录(如 SkillHub)为独立生态站点,与 DeepSeek / 幻方无官方从属关系。
- 0.1.x DSH:应使用插件 v0.2.0 或更早 tag,勿在 0.2.x 上误用旧 peer 包。
仓库内可用 node --test 跑 8 个测试(4 个 Git 解析 + 4 个兼容性回归)。
结尾¶
dsh-git-statusline 把 Git 分支、行级改动摘要和 upstream 领先/落后压成 Web 里可配置位置的一行状态,并针对轮询与慢速文件系统做了缓存与预检。需要安装命令与性能细节时以 GitHub README 为准。
- 插件目录:https://www.skillhub.cn/plugins/pinzza/dsh-git-statusline
- 仓库:https://github.com/pinzza/dsh-git-statusline