dsh-git-tab:在 DSH Web 右侧栏审查 Git 变更并一键提交

前言

在 DeepSeek Harness(DSH)里跑智能体或写代码时,工作区往往已经是一个 Git 仓库:改文件、看 diff、提交、拉取、切分支,这些操作如果每次都切到终端,会打断 Web 会话里的上下文。DSH 生态里插件可以扩展 Web 界面能力;下面介绍维护者 hejingzhou 发布的 dsh-git-tab(仓库 hejingzhou/dsh-git-change),在会话右侧栏增加「Git 变更」页签,把变更列表、统一 diff、提交树和常用 Git 动作收进同一面板。

这是什么

dsh-git-tab 是面向 DSH Web profile 的界面插件(npm 包名 dsh-git-tab,当前资料中版本 1.0.0,许可证 MIT)。Host 半侧在 Web server 上注册同源 JSON 路由,对当前 Session 记录的 cwd(无则回退部署默认目录)执行 git 子进程;Client 半侧通过 ctx.sidebarRightTabs 注册页签与指南入口,样式使用 DSH 主题 token(--dsw-alias-*),文案走 DSH locale(中文 / English)。

社区目录页:https://www.skillhub.cn/plugins/hejingzhou/dsh-git-change。该目录为独立社区站点,与 DeepSeek / 幻方无官方从属关系;安装与使用前请自行查看仓库源码与许可证。

核心功能

变更与 diff

  • 列出已修改(已暂存 / 未暂存)、新增、删除、重命名和未跟踪文件,并显示 +新增 / −删除 行数。
  • 选中文件后在下方渲染统一 diff(行号、hunk 头、增删着色);未跟踪文件按整文件新增展示;二进制与超大文件有明确标注。

提交树

  • 使用 Git 自身的 ASCII 拓扑(等价于 git log --graph),展示短 hash、refs(HEAD / 分支 / 远端分支 / tag)、提交说明与日期;合并提交的图线完整保留。

一键提交与拉取

  • 提交:可选择 仅本地提交 或 提交并推送。仅本地 = git add -A + git commit;提交并推送 = 提交后 git push;工作区已干净时改为推送已有本地提交;无上游时自动 git push -u origin <branch>。推送失败不会丢失本地提交,界面会提示「已本地提交 {hash},但推送失败」。
  • 拉取:git pull --ff-only,只允许快进;分叉、无上游、本地改动冲突等错误直接提示。

切换分支

  • 点击顶部当前分支名打开本地分支列表(含上游与「当前」标记),选择即切换。
  • 仅当工作区完全干净时可用(含未跟踪文件);界面与 Host 侧均会校验 git status --porcelain,非空即拒绝。

刷新与主题

  • 提供刷新按钮;页签重新可见、窗口重新获得焦点时自动刷新;提交 / 拉取 / 切换分支成功后自动刷新。
  • 跟随 DSH 明暗主题。

安装与启用

插件以当前 dsh 进程权限在 Session 工作目录下执行 Git 命令;安装前请确认信任维护者与仓库内容。

从 GitHub 安装(源码)

dsh plugin --profile web add github:hejingzhou/dsh-git-change

从 npm 安装(发布后)

dsh plugin --profile web add dsh-git-tab

安装后在左侧栏「插件」页确认已启用,刷新 Web 页面;展开会话右侧栏,在指南里点 Git 变更 即可打开面板。

典型用法

  1. 在 DSH Web 中打开目标会话,确认 Session 的 cwd 指向你要操作的 Git 仓库根目录(或依赖部署默认目录)。
  2. 展开右侧栏,进入 Git 变更 页签:在「变更」区浏览文件列表,点选文件查看 diff。
  3. 需要提交时点击「提交」,填写说明并选择 仅本地提交 或 提交并推送(注意:一键提交会 git add -A 暂存整个工作区,含未跟踪文件)。
  4. 需要同步远端时使用 拉取(仅快进);工作区干净后可在顶部分支名处 切换分支。
  5. 在「提交树」区查看 git log --graph 风格的拓扑与 refs。

Host 侧对外暴露的路由(资料原文)包括:GET /dsh-git-changes/status、GET /dsh-git-changes/diff、GET /dsh-git-changes/log、GET /dsh-git-changes/branches、POST /dsh-git-changes/switch(body:{ branch })、POST /dsh-git-changes/commit(body:{ message, mode: 'local' | 'remote' })、POST /dsh-git-changes/pull。git 以参数数组执行、不经过 shell;只读命令设置 GIT_OPTIONAL_LOCKS=0;请求带自定义头与本机同源校验,路径校验为仓库相对路径。

适用场景与注意

适合:主要在 DSH Web 里开发、希望在不离开会话的情况下审查改动、看提交图、做常规 commit / ff-only pull / 干净工作区下切分支的用户。

限制与注意(来自 README):

  • 拉取仅快进;分叉分支请在终端处理。
  • 切换分支要求工作区完全干净;Host 侧强制校验。
  • 提交遵循仓库 hooks 与 Git 用户身份;hook 失败或身份缺失会显示 Git 原文。
  • ahead/behind 反映最近一次 fetch 的上游状态,拉取会刷新。
  • 一键提交会暂存整个工作区,请按需使用。

结尾

dsh-git-tab 把 Git 工作区审查、提交树浏览和 commit / push / pull / 切分支收进 DSH 右侧栏,减少在 Web 会话与终端之间来回切换。进一步了解可访问社区目录页与 GitHub 仓库:

  • 目录页:https://www.skillhub.cn/plugins/hejingzhou/dsh-git-change
  • GitHub:https://github.com/hejingzhou/dsh-git-change
羽毛球分组比赛记分
小程序二维码

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

小夜