dsh-git-idea:在 DSH 会话里用 IDEA 风格做 Git

前言

在 DeepSeek Harness(DSH)里和模型协作时,工作区里的分支、未提交改动和提交历史往往要切到终端或外部 IDE 才能看清。模型本身可以通过 bash 跑 git,但界面侧缺少一套与当前会话工作区绑定的可视化 VCS。dsh-git-idea 由社区维护者 mays-hi 发布,分类为客户端插件:在 Web 会话输入框「权限模式」旁提供 Git 芯片,悬停可切分支,点击打开 IDEA 风格的 VCS 面板,并附带设置页;不向 DSH 注册任何模型工具,也不注入 prompt。插件当前版本 0.3.0,依赖 DSH >=0.1.5-rc.1(engines.dsh),peer 为 @deepseek-ai/cordis ^4.0.2,许可证 MIT。仓库:https://github.com/mays-hi/dsh-git-idea;社区目录:https://www.skillhub.cn/plugins/mays-hi/dsh-git-idea(独立站点,与 DeepSeek / 幻方无官方从属关系)。

这是什么

dsh-git-idea 把 IntelliJ IDEA 那套 VCS 交互搬进 DSH Web 会话:分支名与待提交文件数、分支切换器、含提交图的历史与变更、差异与提交详情、多仓库时的仓库切换器,以及管理提交身份与 git 路径等的设置页。面板跟会话走,不跟浏览器窗口绑死;同一页面里每个会话各自对应各自的工作区。当 DSH 官方 create_worktree 把会话迁到链接工作树后,芯片与面板会跟随该工作树的 Git 状态,并在界面上标明工作树身份——插件不创建、不删除、不迁移工作树,只读取已有布局。

与「给模型再注册一套 git 工具」不同,本插件刻意不占用模型工具槽位:git 操作仍可由模型经 shell 完成,人类侧则用 UI 完成查看、暂存、提交、拉推等常见流程。

核心功能

输入框旁的 Git 芯片

操作 结果
看 当前分支;有未提交改动时显示数量徽标。不在仓库内时会写明原因(如「不是仓库」「没有 git」「目录不存在」等)。改动数核对中会用空心数字或 … 表示,避免与「正在切分支」的转圈混淆
悬停 分支切换卡片:检出分支;工作区存在多个 Git 仓库时可切换当前查看的仓库(可在设置中关闭)
点击 打开或收起 VCS 面板

VCS 面板

顶栏在「变更 / 历史」页签间切换,并提供重读、fetch、pull、push(按钮仅显示记号,名称在 aria-label 中);中间为当前分支名,可点开切换器;多仓库时另有仓库 chip。左栏为分支树(HEAD / 本地 / 远程);中栏在变更页显示工作区树,在历史页显示提交列表与提交图;右栏显示 patch、提交详情或提交信息与提交按钮。面板尺寸可拖拽并会记住。

常见路径包括:在变更页勾选文件并写提交信息后「全部暂存并提交」或「全部暂存」;在分支树或切换器里检出、新建分支、合并;在历史页对提交做 cherry-pick、还原、打标签;顶栏执行 fetch / pull / push。合并冲突时顶栏会提示冲突文件数,并提供继续、跳过、中止等操作。

设置页

可配置提交身份(user.name / user.email,与 git config 等价)、git 可执行文件位置及网络相关参数。若本机未配置提交身份,git commit 会被拒绝;面板会在提交区说明,并给出 git config --global user.name / user.email 的示例命令。

平台差异(选用前须知)

  • DSH 桌面端(dsh-app://app):面板 RPC 经 Electron 主进程代理,认证与 Host 的 connection.requestRejection 规则一致;旧版若错误要求 Origin,可能导致桌面端面板空白。
  • Windows:插件后端脚本为 POSIX sh;当 DSH 的 shell 为 PowerShell 时,会尝试通过 Git for Windows 自带的 usr/bin/sh.exe 执行脚本。找不到 sh.exe 时行为与未适配前相同,设置页会提示「读命令的 shell」相关情况。

安装与启用

要求 DSH >=0.1.5-rc.1。官方 README 给出的安装方式如下(均需 --profile web):

dsh plugin --profile web add dsh-git-idea                    # npm
dsh plugin --profile web add github:mays-hi/dsh-git-idea      # GitHub
dsh plugin --profile web add /path/to/dsh-git-idea            # 本地目录

安装完成后重启 dsh web。若出现 ERR_PNPM_ADDING_TO_ROOT,在包名前加 -w。

若本机仍运行旧版动态插件桥(<DSH_HOME>/dsh-git-idea),应先停用,否则会出现两个 chip、两个面板争抢同一 UI 位。

典型用法

下面按 README 描述的交互顺序说明,便于在已安装插件的 Web 会话中复现。

  1. 确认工作区在 Git 仓库内
    打开会话并选中含 .git 的项目目录。输入框旁 Git 芯片应显示分支名;若有改动,显示待提交文件数。

  2. 悬停芯片切换分支
    指针移到芯片上,在卡片中搜索或选择分支并检出。多仓库工作区时,列表顶部可选当前查看的仓库(仅改变 UI 所读的仓库,不移动会话目录)。

  3. 点击芯片打开面板 — 提交
    切到「变更」页,在树中勾选要纳入提交的文件;右栏填写提交信息,使用「全部暂存并提交(N 项)」或先「全部暂存」。仅提交部分文件时,只勾选对应条目;再次点击勾选框可取消暂存。

  4. 查看历史与差异
    切到「历史」页,在左栏分支树选中分支,在中间列表选提交;右栏查看详情与文件列表,点文件行打开 diff。列表底部「加载更多」每次加载 200 条;支持字面/正则搜索及分支、作者、时间、路径等筛选。

  5. 与远端同步
    在顶栏使用 ⇣(fetch)、↓(pull)、↑(push)。当前分支无上游时,面板会给出补全上游的一键建议;从未配置 remote 的本地仓库,按钮会说明未执行原因并提示需运行的命令,而不是静默失败。

  6. 配置提交身份(首次提交前)
    在设置页「dsh-git-idea 配置 → 提交身份」填写,或在终端执行:

git config --global user.name "你的名字"
git config --global user.email "你的邮箱"

适用场景与注意

适合:经常在 DSH Web 会话里改代码、希望分支与改动一眼可见、又不想为日常 git 来回切 IDE 或终端的开发者;会话已使用或计划使用 DSH create_worktree、需要在链接工作树上继续用同一套 VCS UI 的场景。

注意:

  • 插件以当前 dsh 进程权限运行,安装前请自行查看源码与 MIT 许可证,并评估是否信任维护者与 npm / GitHub 分发渠道。
  • 不向模型注册工具:自动化 git 仍依赖模型自带的 shell;本插件主要服务人在界面上的操作与读状态。
  • 大仓库上核对整棵工作树改动可能耗时数秒至约 8–10 秒,芯片会用数字状态而非长时间转圈表示「核对中」。
  • 社区目录页星标等统计会变动;以仓库 README 与 package.json 中的版本、依赖为准。

结尾

dsh-git-idea 把 IDEA 式 Git 面板嵌进 DSH 会话输入区旁,用芯片 + 面板覆盖分支、变更、历史、diff 与常用同步操作,且与工作树感知对齐,同时保持「零模型工具」边界。需要安装说明与完整行为细节时,以 GitHub README 为准:https://github.com/mays-hi/dsh-git-idea;社区索引:https://www.skillhub.cn/plugins/mays-hi/dsh-git-idea。

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

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

Xiaoye