dsh-git-change: 在 DSH 输入框显示 Git 状态角标

DSH(DeepSeek Harness)采用插件化架构,允许开发者根据需求扩展功能。在开发智能体或调试代码时,开发者需要频繁确认当前分支的变更情况。dsh-git-change 插件通过在界面右上角展示角标,解决了这一问题,无需离开输入框即可获取状态。

插件由 melo7up 维护,当前获得 4 颗星,基于 MIT 许可证开源。

核心功能

该插件主要在 DSH 的输入框工具行右侧、模型选择器左侧显示一枚角标。

  • 显示逻辑:
    • 如果当前工作区未在 git 仓库中,整个图标不渲染。
    • 默认显示一枚 14px 的灰色分支图标,无圆底。
    • 悬停时,向上弹出浮层,显示分支名、变更文件数以及新增/删除的行数(绿色/红色)。
  • 统计口径:
    • 统计本分支自己 commit 但未 push 的提交(按净差异计)。
    • 统计工作区已暂存 + 未暂存文件。
    • 统计未跟踪文件(按整文件行数计入新增)。
  • 排除规则:
    • 忽略 git pull 别人的提交。
    • 忽略 merge 带进来的内容。
    • 无 upstream(如新 git init 或 detached HEAD)时,只统计工作区。
  • 刷新机制:
    • 挂载时、会话状态变化时、悬停时自动刷新。
    • 请求失败时自动重试。

安装与启用

安装过程分为两步:配置本地依赖路径并挂载到 profile。

  1. 编辑 profile/package.json,添加依赖与 bundle 配置:
    {
      "dependencies": {
        "dsh-git-change": "link:/absolute/path/to/dsh-git-change"
      },
      "dsh": {
        "profile": {
          "bundles": [ ..., "dsh-git-change" ]
        }
      }
    }
*注意:本地开发通常使用 `link:/...` 路径。*
  1. 进入 profile 目录并执行安装命令,建立软链并写入 lockfile:
    cd ~/.dsh/profiles/desktop && pnpm install
  1. 重启 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 仓库。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜