DSH 插件「当前变更」:在会话里查看工作区 Git 改动与 diff

前言

在 DeepSeek Harness(DSH)里跑 Agent 时,改动的文件往往分散在终端命令、多轮对话和多个子项目之间。若工作区根目录本身不是 Git 仓库,或一个容器里并列着 frontend、backend 等多个独立仓库,单靠本地 git status 很难在「当前 Session」的上下文里快速对齐:改了哪些文件、暂存与未暂存如何区分、本轮对话里各分支又多了哪些 commit。

下面介绍维护者 xuex991 发布的客户端插件 Working Changes(DSH 界面中常显示为 当前变更,仓库 xuex991/dsh-working-changes)。它只做只读展示:对比当前工作区与 HEAD 的变更,并在 DSH 原生右侧栏查看 unified diff;同时可按 Session 范围浏览本地分支上新增的 commit。分类为客户端;社区目录页见 SkillHub 条目。

这是什么

当前变更 是一个体量较小的只读 DSH 插件:在当前 DSH 工作区内展示相对 HEAD 的文件改动,并支持在右侧栏逐文件查看 diff;多仓库工作区会按仓库分组。它不替代 Git 客户端做暂存、提交或推送,而是把「Session 里到底动了什么」嵌进 DSH 会话界面。

维护者:xuex991(GitHub:xuex991/dsh-working-changes)。

核心功能

会话顶部的变更摘要

  • 单仓库:显示 分支 · 更改文件数 · +新增行 −删除行。
  • 多仓库:显示 仓库数 · 文件数 · +新增行 −删除行,文件按仓库分组。
  • 鼠标悬停总览可看到各项目与当前分支(含刚初始化、尚无 commit 的仓库),并列出变更文件及每个文件的行数变化。
  • 点击总览或某个文件,在 DSH 原生右侧栏打开 diff。

工作区与 Git 状态

  • 区分 已暂存、未暂存、未跟踪、冲突 等状态;支持文件筛选、状态标记、重命名、二进制文件列表与手动刷新。
  • 使用 Codex 风格的层级文件树,支持按路径搜索与目录折叠,只展示包含变更文件的目录。
  • 在右侧栏渲染带行号与平台 diff 配色的 unified diff。

多仓库自动发现

工作区根目录不是 Git 仓库时,插件会尝试发现其下并列的独立仓库(默认扫描一层,并跳过依赖目录与构建目录)。典型布局如下:

project/                 ← 不是 Git 仓库
  frontend/.git          ← 会发现
  backend/.git           ← 会发现
  infra/.git             ← 会发现
  node_modules/...       ← 跳过

每个文件归属唯一仓库;某一仓库读取失败不会隐藏其他仓库的改动。

Session 内的 commit 历史(只读)

从「当前变更」相关入口可选择 本 Session 内、各本地分支上产生的 commit(按项目分组、时间倒序)。选中 commit 后查看其相对第一个父提交的文件变更,并继续打开文件 diff。历史不展示远程分支、Push 状态或 Push 事件。

刷新时机

Agent 每轮结束、窗口重新聚焦以及手动刷新时会更新视图。

明确不提供的能力

只读:没有暂存、提交、切分支、stash、push、pull 或 worktree 等写操作。

安装与启用

插件以当前 DSH 进程权限运行;安装前请自行查看仓库源码与 LICENSE(README 标注为 MIT)。DSH 生态采用「一切皆插件」思路;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。

环境要求(来自 README):

  • DeepSeek Harness 0.2.1-rc.2 或更新版本。
  • DSH 宿主机环境中可用的 git 命令。

通过 DSH 插件页

  1. 打开 DSH 的 插件。
  2. 点击 添加插件。
  3. 输入仓库地址:
https://github.com/xuex991/dsh-working-changes
  1. 安装并启用 当前变更(Working Changes)。

通过插件市场索引

在 插件 → 发现 → 索引源 中添加:

https://xuex991.github.io/dsh-working-changes/index.json

安装后,在发现页找到 当前变更。xuex991 相关插件的稳定安装入口也汇总在 xuex991.github.io/dsh-working-changes。

典型用法

  1. 在 DSH 中打开含 Git 仓库(或多子仓库)的工作区,启用插件后查看会话顶部的变更摘要。
  2. 悬停摘要确认分支与各文件行数;点击摘要或文件,在右侧栏阅读 diff。
  3. 多仓库时按分组确认每个子项目的改动;需要时用文件树路径搜索缩小范围。
  4. Agent 跑完一轮后视图会自动刷新;也可手动刷新。
  5. 若需回顾本 Session 内在本地分支上新增的 commit,使用 revision 选择器选中 commit,再逐文件查看相对父提交的 diff。

适用场景与限制

适合:在 DSH Session 内快速核对 Agent 或人工编辑带来的改动;多仓库容器工作区统一浏览;需要只读 diff 而不想在 IDE 与终端之间来回切换时。

实现与边界(README「说明 / Limits」):

  • 文件状态区分 staged / unstaged,但文件 diff 仍比较完整工作区与 HEAD。
  • 历史仅读本地分支;以 Session 首次观察到分支时的 HEAD 为祖先基线,只展示之后产生的 commit。
  • 每个仓库最多 200 个本地分支、每分支最多 500 个 commit,超出会提示截断。
  • 二进制文件仅列在列表中,不渲染正文;单个 diff 最多 400,000 字符。
  • 不展开 submodule;不展开已发现仓库内部的嵌套仓库。

发现相关 Host RPC 配置(可选):支持 discoverDepth、repos、repoLabels、untracked、maxRepos、concurrency、repoTimeoutMs。默认发现一层、最多 20 个仓库、4 个仓库并发、每仓库 15 秒超时;显式传入 repos 时关闭自动发现。

结尾

当前变更 把「相对 HEAD 的工作区改动」和「本 Session 内本地 commit」收进 DSH 会话 UI,并与原生右侧栏 diff 联动,适合需要只读、可刷新视图的场景。

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

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

Xiaoye