dsh-git:在 DeepSeek Harness 里用面板做 Git

前言

在 DSH 里写代码、跑智能体时,版本管理往往要切到终端或外部 IDE:看分支、翻历史、对比 diff、处理 worktree,和当前工作区上下文是割裂的。社区插件 dsh-git(维护者 cyrusgogogo)把 Git 操作收进宿主界面:紧凑的 IDE 风格底部面板,随 DSH 明暗主题自适应,对接当前注册工作区下的分支、提交历史、提交图、文件差异与 worktree 管理。分类为客户端插件;截至撰写时 GitHub 星标为 0,实现依据公开 README 与仓库 package.json(版本 0.1.2,MIT)。

这是什么

dsh-git 是面向 DeepSeek Harness 的原生 Git 客户端插件,不替代系统里的 git 命令,而是在 DSH 进程所在机器上通过宿主注册的 Cordis 服务驱动真实 Git(对接 Cordis ~4.0.4、DSH 0.2.0-rc.2 公开契约)。Windows 桌面版在标题栏「应用 / 编辑」右侧追加 Git 按钮打开底部面板;普通浏览器或不兼容宿主则保留会话右上角入口。

生态上 DSH 强调「一切皆插件」;SkillHub 目录页 与 GitHub 仓库 为社区来源,与 DeepSeek / 幻方无官方从属关系。

核心功能

下面按 README「已实现」归纳,均为插件自述能力。

界面与入口

  • 底部面板可拖动高度、键盘调整、最大化、收起;支持多个独立 Git 视图标签。
  • 表面、边框与文字色取自 DSH 宿主令牌;强调色、提交图与 diff 配色随明暗主题调整。
  • 三栏仓库视图:左侧分支与更改,中间提交历史及真实父子关系提交图,右侧变更文件树、提交正文、作者、时间与引用。
  • 宿主无公开 bottom-panel 插槽时,面板通过公开 shell.overlay 实现为固定、可缩放的底部覆盖层,不伪造不存在的 API。

分支、历史与日常 Git

  • 分支下拉:搜索本地/远程分支;更新、提交、推送、新建分支、抓取远程;签出前需确认。
  • 平铺历史筛选:分支、用户、日期(今天、7/30/90 天、最近一年)可组合,支持一键清除。
  • 日常操作:逐文件或全部暂存/取消暂存、提交已暂存内容、分支创建/重命名/安全删除、合并、变基、仅快进更新、设置上游、非强制推送、抓取远程、远程分支删除。
  • 优选(cherry-pick):在干净工作区将选中普通提交应用到当前本地分支;支持冲突后继续或中止;不猜测合并提交的主父提交。
  • 不提供强制推送、reset --hard、branch -D 等破坏性快捷方式。

工作树与多视图

  • 分支旁 + 可选「GIT 工作区」(新增仓库视图)或「工作树」(展示真实 git worktree list)。
  • 工作树:创建、查看、在插件内打开目录、复制路径、锁定/解锁、安全移除;保护主工作树、当前查看目录、已锁定或有改动的工作树。
  • 「打开」仅切换本插件的仓库查看目录,不会修改 DSH 会话的工作区或 cwd。

AI 提交与设置

  • AI 提交:会先自动暂存全部当前未暂存改动(含新文件、删除及部分暂存剩余),全选预览文件后生成可编辑提交说明;用户明确点击「提交」或「提交并推送」。差异与规范有体积与超时上限;密钥由 DSH 模型配置管理,设置仅保存在当前浏览器。
  • Git 设置:可选 DSH 已登记模型、编辑 Conventional Commits 规范、配置/录制提交、AI 生成、推送及获取快捷键。

初始化与空状态

  • 未使用 Git 的已注册工作区可经确认执行 git init --initial-branch=main;已有 .git(含损坏元数据)不会被覆盖。
  • 非 Git 目录、Git 未安装、目录消失、权限失败等会区分友好提示。

明确未覆盖的能力

README 写明:无 stash、revert、合并提交的 cherry-pick、复杂交互式 rebase;二进制 diff 无图像对比;视图可见时每 10 秒刷新本地状态,不会自动 fetch/push。

安装与启用

插件以组合包(bundle)安装:package.json 的 dsh.bundle.patch 向指定 profile 插入 dsh-git 一行。<你的-profile> 需替换为实际 profile 名(桌面应用可从 $DSH_HOME/profiles/ 目录名确认)。

方式一:从源码构建后安装(README 推荐)

需要 Node.js 22+、pnpm 与 Git:

git clone https://github.com/cyrusgogogo/dsh-git.git
cd dsh-git
pnpm install --frozen-lockfile
pnpm run build

dsh plugin --profile <你的-profile> add .

也可打包后安装:

pnpm pack
dsh plugin --profile <你的-profile> add ./dsh-git-0.1.2.tgz

方式二:直接从 GitHub 安装

dsh plugin --profile <你的-profile> add github:cyrusgogogo/dsh-git

从 GitHub 安装会拉源码并在本机执行 prepare 构建;pnpm ≥10 若拒绝构建脚本,需按提示在 profile 的 pnpm-workspace.yaml 中允许 dsh-git 构建。可信来源可锁定 commit:github:cyrusgogogo/dsh-git#<sha>。

安装后核对与卸载

dsh --profile <你的-profile> --dump-config

若宿主提示 restart-required,需重启 DSH 并刷新 Web 页面。卸载:

dsh plugin --profile <你的-profile> remove dsh-git

插件不会自行修改 DSH 运行中配置或重启宿主;安装前宜阅读源码与 MIT 许可证。Git 写操作以当前 dsh 进程权限在宿主机执行,hooks、SSH 与凭据助手仍可能触网或执行代码,仅对可信工作区使用。

典型用法

  1. 在 DSH 选择工作区/会话,点击 Git 打开面板;面板默认跟随主会话注册工作区,也可在右上角显式选目录。
  2. 非 Git 目录可选 初始化 Git 仓库;侧边栏点分支筛历史,双击或右键「签出」切换分支。
  3. 提交图顶部按分支、用户、日期筛选;点提交看文件树,点文件看只读统一 diff。
  4. 提交更改… 打开手动提交弹窗,支持全选、反选与批量暂存;普通提交只包含已暂存内容。
  5. AI 提交(默认 Ctrl+Shift+Enter,仅在 Git 面板聚焦时生效)按 README 流程暂存、生成说明后再确认提交或提交并推送。
  6. + → 工作树 管理 worktree;干净工作区下可对普通提交使用 优选。

若 AI 设置里模型列表报「Git 请求参数不合法」,README 建议完全退出并重启 DSH(含托盘),并确认 profile 链接的是含 AI 功能的新构建,而非旧 0.1.2 发布包 tarball alone 的局限说明以 README 为准。

适用场景与注意

适合:主要在 DSH 内完成智能体与工作区开发、希望少切终端即可完成分支、历史、diff、worktree 与常规推送/拉取的用户;需要 AI 辅助撰写 Conventional Commits 说明且已在 DSH 登记模型时,可使用 AI 提交(需接受「触发前会暂存全部当前改动」的数据边界)。

注意:

  • 当前 README 写明主要在 Windows 上完成实机验证;macOS/Linux 路径存在但未做实机验收。
  • AI 提交会修改暂存区;取消预览不自动撤销暂存。执行者是宿主机 Git,不是模型沙箱。
  • 从 GitHub 安装等于允许包在安装时于本机执行构建脚本,请只对可信来源授权。

结尾

dsh-git 把 Git 面板嵌进 DSH 工作流:三栏历史与 diff、worktree、受限但完整的日常 Git,以及可选的 AI 提交预览。安装与行为以仓库 README 为准。

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

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

小夜