dsh-session-git: View Git History and Working Tree Directly in DSH Sessions

前言

在 DSH 里和智能体改代码时,提交历史、分支和工作区状态往往要切到终端或独立 Git 客户端。会话一多,每个项目对应哪条历史、当前目录是不是仓库根,也容易搞混。下面介绍社区插件 dsh-session-git(维护者 koi128bit,分类为客户端):它在每条会话顶部增加 Git 页签,绑定当前会话的工作目录与所选仓库,而不是全局单一仓库。

这是什么

dsh-session-git 把 Git 能力嵌进 DSH 对话界面:页签与 Chat | Trajectory 并列,打开的是该会话关联的仓库(工作目录由主机按 sessionId 解析)。两个会话可以各自看不同项目的历史,互不影响。插件当前版本 1.1.1(MIT),依赖 Node.js 22+ 与 DSH >=0.2.1-rc.2 <0.3.0-0;README 写明在 macOS 的 DSH 0.2.1-rc.2 上验证过。

若无法解析会话目录,插件会按文档顺序回退到配置项或主机默认工作目录;操作前应以面板里显示的仓库路径为准。

核心功能

插件通过 conversation.view 槽位注册 Git 页签,后端在 /api/git-panel 下调用本机 git(走 DSH Connection 的认证与请求信任检查;1.1.1 起替代 1.1.0 未校验的自建接口,升级后需重启 DSH)。

已核实的能力包括:

  1. 提交图与分支泳道:按真实父子关系分配列,线性历史单列展示;合并提交用曲线跨列,列颜色固定,刷新不会乱序。
  2. 提交详情:作者、时间、短 SHA(可点击复制)、增删行统计、按文件的 numstat、提交说明;支持 detached checkout、在该提交创建分支或标签、revert、cherry-pick。
  3. Diff:按文件按需拉取,大行数 diff 有大小限制;工作区、暂存区、指定提交均可查看。
  4. 工作区:暂存/未暂存/未跟踪计数;单文件 stage、unstage、discard;可选 add -A 后提交、amend、stash 已跟踪改动。
  5. 引用:本地与远程分支、标签、stash 同页展示;切换、合并、创建/删除分支与标签、pop stash。
  6. 按会话记住仓库:用户选择的仓库保存在 dsh-git-panel:repo:<sessionId>,换项目不会串会话。

未在面板内提供的操作:push、pull、fetch(需凭据与网络,README 说明仍在终端执行)。

仓库解析顺序(显式无效路径会报错,不会静默换库):面板 ?repo= → 配置 repoRoot → 从会话工作目录自动探测 → 主机 workingDirectory.defaultDirectory → process.cwd()。自动探测会先对会话 cwd 执行 git rev-parse --show-toplevel,否则在有限深度内查找 .git,跳过 node_modules 等目录,最多收集 40 个仓库。

默认允许写仓库,提交前默认暂存全部改动;配置里可设 allowWrite: false 只读。路径白名单用于限制插件可选仓库,不是 OS 沙箱;Git 与 hooks 仍以当前 DSH 进程用户权限运行。

安装与启用

环境:Node.js 22 或更高,DSH 0.2.1-rc.2 或兼容的 0.2.x(<0.3.0-0)。

安装到 Web profile:

dsh plugin --profile web add github:koi128bit/dsh-session-git

也可从 Release 安装固定版本 tarball(示例为 v1.1.1):

dsh plugin --profile web add https://github.com/koi128bit/dsh-session-git/releases/download/v1.1.1/dsh-session-git.tgz

安装后重启 dsh web。打开已有至少一条消息的会话,在顶部选择 Git(全新空会话不渲染视图区,页签会在有首条消息后出现)。DSH Desktop 用户可在插件管理器中添加相同 GitHub 地址并重启 Desktop;若使用非 web 的 profile,将命令中的 web 换成对应 profile 名。

卸载:

dsh plugin --profile web remove dsh-session-git

卸载后同样需要重启主机。若仍在使用 1.1.0,请升级到 1.1.1 并重启,以启用 DSH Connection 认证。

典型用法

  1. 在目标项目下开启或继续 DSH 会话,确认会话工作目录落在该 Git 仓库或其子目录内。
  2. 切换到 Git 页签;若存在多个嵌套仓库,在面板中选择正确根目录(与会话 ID 绑定的选择会持久化)。
  3. 在提交图中点选 commit 查看文件列表与 diff,按需 checkout、打 tag 或 cherry-pick。
  4. 在工作区视图暂存、提交或 stash;需要同步远端时在终端执行 pull/push/fetch。
  5. 只读审计时将配置设为 allowWrite: false,避免误提交。

适用场景与注意

适合在 DSH Web 或 Desktop 中同屏查看智能体对话与 Git 状态的开发者:多会话并行、每会话独立仓库记忆、图形化历史与工作区操作,减少窗口切换。

使用前建议自行阅读 GitHub 仓库 源码与 MIT 许可证;插件会执行本机 Git 命令,权限与你在终端运行 git 相同。社区目录 SkillHub 插件页 与 GitHub 为独立信息源,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-session-git 把「当前会话的 Git 仓库」收进 DSH 对话顶栏:历史、diff、分支与工作区在一处完成,远端同步仍交给终端。安装与细节以 README 为准。

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

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

Xiaoye