DSH(DeepSeek Harness)采用插件化架构,允许开发者根据需求扩展功能。在开发智能体或调试代码时,开发者需要频繁确认当前分支的变更情况。dsh-git-change 插件通过在界面右上角展示角标,解决了这一问题,无需离开输入框即可获取状态。
插件由 melo7up 维护,当前获得 4 颗星,基于 MIT 许可证开源。
核心功能¶
该插件主要在 DSH 的输入框工具行右侧、模型选择器左侧显示一枚角标。
- 显示逻辑:
- 如果当前工作区未在 git 仓库中,整个图标不渲染。
- 默认显示一枚 14px 的灰色分支图标,无圆底。
- 悬停时,向上弹出浮层,显示分支名、变更文件数以及新增/删除的行数(绿色/红色)。
- 统计口径:
- 统计本分支自己 commit 但未 push 的提交(按净差异计)。
- 统计工作区已暂存 + 未暂存文件。
- 统计未跟踪文件(按整文件行数计入新增)。
- 排除规则:
- 忽略
git pull别人的提交。 - 忽略 merge 带进来的内容。
- 无 upstream(如新
git init或 detached HEAD)时,只统计工作区。
- 忽略
- 刷新机制:
- 挂载时、会话状态变化时、悬停时自动刷新。
- 请求失败时自动重试。
安装与启用¶
安装过程分为两步:配置本地依赖路径并挂载到 profile。
- 编辑
profile/package.json,添加依赖与 bundle 配置:
{
"dependencies": {
"dsh-git-change": "link:/absolute/path/to/dsh-git-change"
},
"dsh": {
"profile": {
"bundles": [ ..., "dsh-git-change" ]
}
}
}
*注意:本地开发通常使用 `link:/...` 路径。*
- 进入 profile 目录并执行安装命令,建立软链并写入 lockfile:
cd ~/.dsh/profiles/desktop && pnpm install
- 重启 DSH。配置仅在启动时装配,且运行中的 host 会缓存模块,修改代码后必须重启才能生效。
典型用法¶
安装并重启后,插件会自动生效。若需验证安装或调试,可使用提供的验证脚本:
- 验证客户端:
node tools/verify-client.mjs
- 验证主机:
node tools/verify-host.mjs
注意事项与限制¶
- 位置漂移:角标在
conversation.input.right,受模型名长度影响,会在模型选择器左侧左右漂移(模型名越长,角标越靠左)。 - 统计上限:未跟踪文件统计有上限(最多 200 个文件或单文件 1MB),超时显示“统计已截断”。
- 非 Live 会话:在历史会话或归档会话中,由于拿不到 header,角标不会显示。
- 权限模式:插件以只读模式运行,设置了
GIT_OPTIONAL_LOCKS=0、GIT_TERMINAL_PROMPT=0和LC_ALL=C。 - 无构建步骤:客户端代码需直接调用
window.__ModuleLoader__.load加载,不经过打包工具。
结语¶
dsh-git-change 提供了轻量级的 Git 状态反馈,帮助开发者更直观地掌握当前分支的变更情况。如需查看源码或提交 Issue,可访问 GitHub 仓库。