DSH Git 插件
在 DeepSeek Harness(DSH)会话中管理 Git 项目:查看改动、提交代码、同步分支、浏览历史、整理提交、解决冲突——全部在一个独立的工作台窗口里完成,不用离开对话再开一个 Git 客户端。
支持中文与英文界面,跟随 DSH 的深色、浅色主题与字号设置。

亮点
- 敢放手操作的安全设计:改写历史前自动记录恢复点,一键撤销;误操作还能从本地操作记录(reflog)创建恢复分支找回提交。删除、移动、清理、强制推送等破坏性操作一律先预览、再确认。
- 完整工作台,不是简版面板:泳道提交图、逐块暂存、交互式变基与历史改写、批量挑选(cherry-pick)、三方冲突编辑器、blame 行内归属、工作树管理、Git LFS 迁入迁出——这些通常要命令行才能完成的操作,全部有图形界面。
- 与 DSH 深度集成:Git 始终跟随当前工作区与会话;新建项目、克隆仓库后自动进入对应会话;工作树可以直接“打开为 DSH 工作区”;AI 功能默认复用会话所选模型。同时它是纯界面插件——不向对话 Agent 注册任何工具或提示,不会干扰你的会话。
- 日常操作零门槛:会话标题栏常驻分支、改动数与同步状态芯片,不打开工作台也能切分支、看改动、Fetch/Pull/Push;新会话未发第一条消息就能切分支。
- 开箱即用:安装即用,无需构建;除系统 Git 外无强制依赖,AI 功能之外不联网。
安装
- 安装 Git 2.36 或更高版本,确保
git在 PATH 中可用;未检测到时可在插件设置中指定可执行文件路径。 - 在 DSH 的 插件 → 添加插件 中输入
@happyqu/dsh-plugin-git,安装并启用。 - 打开项目工作区,进入 Git 工作台。
入口有两处:
- 新会话选好工作区后,无需先发送消息,即可通过“标准模式”等模式选择器右侧的分支按钮切换或新建分支;分支弹窗底部可打开 Git 工作台。
- 开始对话后,入口位于会话标题栏的 Git 按钮;旁边的芯片常驻显示当前分支、改动数量与同步状态,点击芯片即可就地切换分支、查看改动或同步。
Git 始终跟随当前工作区;切换工作区期间暂不可操作 Git。插件前端和 Host 使用同一版本协议,更新后需一并重新加载;旧 Git 和旧 Host 不提供替代执行流程。
界面结构
工作台是一个可拖动、可缩放的独立窗口:左侧活动栏切换模块,中间是列表,右侧是差异与预览区,底部状态栏常驻显示分支、领先/落后、提交数、最近 Fetch 时间、当前用户和 Git 版本。
活动栏包含七个模块——改动、提交图、历史、储藏、工作树、输出、设置;比较视图从提交详情进入。界面语言与主题跟随 DSH。
改动与提交
- 改动列表区分未暂存与已暂存,支持整文件或逐块(hunk)暂存与丢弃;文件状态按 M/U/D 分色,删除文件带删除线,列表支持搜索与树形/平铺布局。
- 提交范围预览:提交前确认将包含哪些文件与代码块,未选中的块自动排除,不会误提交。
- 提交框支持 Ctrl+Enter 提交;拆分按钮提供“提交并推送”“发布分支”等后续步骤。
- 多改动列表:把不同任务的改动分到多个列表,拖拽排序、跨列表移动文件,按列表分别暂存、提交,甚至可以只储藏某一个列表的改动,其他列表不受影响。
- 未注册的 Git 仓库:改动列表会识别未跟踪目录中的独立 Git 仓库并提示,可直接打开该仓库管理、选择“仅本机忽略”(写入外层仓库的
.git/info/exclude),或“添加到 .gitignore”(可随提交共享)。丢弃更改会保留这些仓库及其内部文件。
分支与同步
- 分支、标签、远程仓库的新建、重命名、删除、切换与上游设置;分支选择器扁平展示本地分支并支持搜索,标签分组折叠。
- 同步操作带引导:标题栏的“下一步”按钮会按当前状态给出建议——落后就拉取、领先就推送、远端没有就发布分支、有冲突就去解决、与远端分叉时让你选择合并还是变基。
- Fetch(含清理失效的远程跟踪引用)、拉取并合并或拉取并变基、推送与带租约的强制推送;操作前均展示将受影响的提交。
- 后台自动 Fetch 可在 设置 → 同步 中开启并配置间隔。
- 从侧栏或新会话菜单的 添加工作区 进入,可选择新建项目、本地目录或克隆仓库;新建项目会记住上次使用的保存目录,完成后自动进入对应会话。
历史与对比
- 提交历史按分支组织,可展开查看每个提交改动的文件并直接跳到该文件的版本差异。
- 提交图以泳道方式展示分支与合并拓扑,本地分支、远程分支、标签用不同颜色区分,可限定范围与排序。
- 比较视图:任意两个引用(分支、标签、提交)之间的逐文件差异与提交列表。
- 预览:完整文件与图片预览,图片支持缩放与灯箱对比;代码带语法高亮、行号与差异概览标尺,长行可换行显示。
- 逐行归属(blame):行内注释列显示每行的提交与作者,未提交行单独标出,点击任意行可查看该行历史。
- 导出:历史文件与整个仓库快照可导出为 ZIP。
整理历史
- 交互式变基:对未推送的提交重排顺序、修改提交信息、合并(squash)、并入(fixup)、停下来修改(edit)或丢弃;界面提供操作预览与逐步进度。
- 变基到分支:从分支菜单把当前分支变基到其他分支。
- 挑选(cherry-pick):一次挑选多个提交到当前分支,可选在提交信息末尾追加“(cherry picked from …)”便于回溯。
- 撤销与恢复:撤销提交(revert)生成反向提交;每次改写前自动记录恢复点,可从界面一键回到改写前;reflog 中任意记录可创建恢复分支。
冲突与储藏
- 冲突文件提供“共同基准 / 当前版本 / 传入版本”三方对照,可逐块选择、接受双方或手动编辑合并结果,保存后标记已解决;二进制冲突选择完整版本。变基时界面会说明 ours/theirs 的对应方向。
- 也可调用 VS Code 等外部合并工具。
- merge / rebase / cherry-pick 进行中时,可查看操作进度与将使用的暂存文件,继续、跳过或中止。
- 储藏(stash):创建、应用、弹出与删除,附带完整差异预览;可整列表储藏。
工作树
同一仓库并行开多个目录做不同任务时,这个模块尤其有用:
- 查看与打开:列出各工作树的分支、改动与进行中的操作。“在 Git 中打开”仅切换 Git 操作目录;“打开为 DSH 工作区”进入对应工作区会话,优先复用已有工作区。分支菜单也可新建工作树或直接打开占用该分支的工作树。
- 安全删除:删除会移除目录及关联记录,保留分支;不提供强制删除。主工作树、当前工作树、锁定目录,以及含有改动、未跟踪或被忽略文件、未完成 Git 操作的目录均不能删除。执行前预览阻塞原因。
- 锁定 / 移动 / 修复关联:暂时离线的磁盘可先锁定,避免记录被清理;锁定/解锁无需目录在线。移动会保留本地文件和分支,目标目录必须不存在。手动移动目录后,可选中旧记录“修复关联”。移动和修复不会改写 DSH 已有工作区路径,请从新目录重新打开工作区。
- 清理失效记录:先预览全部可清理记录,只清理关联元数据,保留分支及工作目录;需要保留的离线工作树请先锁定。
- 任务备注与草稿:列表默认优先显示最近使用的目录,支持按分支排序与搜索任务备注。备注只保存在当前设备,不写入仓库;切换工作树前可保存或放弃草稿,未保存的草稿在插件运行期间保留。
- 比较工作树内容:比较两个目录当前磁盘上的文件(含暂存、未暂存与未跟踪),支持差异与左右预览。使用只读快照,不改变文件、索引或仓库对象;快照有效期 5 分钟,上限 5000 个文件、总量 32 MiB、单文件 4 MiB。
Git LFS
在 设置 → Git LFS 中管理:查看安装与仓库状态、维护 .gitattributes 跟踪规则、查看与同步 LFS 内容,以及带备份与回滚的历史迁入(install)与迁出(migrate)。
AI 辅助
- 生成提交信息:基于当前暂存差异生成,一键填入提交框后再编辑。
- 提交解释:在提交详情中就地渲染 AI 对这次改动的说明。
- 支持选择模型与思考模式,默认跟随会话所选模型。
- 差异排除规则:在 设置 → AI 助手 中每行一条,例如
dist/**、**/*.map,用!dist/important.js设置例外。匹配文件只提供文件信息、不读取差异正文,不影响实际提交;常见产物和大文件默认只提供摘要。
差异阅读
差异视图支持:忽略空白、按词比较(行内标出改动词)、切换差异算法(默认 / histogram / patience)与上下文行数。这些选项只影响显示,不改变仓库内容。
设置与诊断
插件设置按作用域分组:常规(本机的 Git 与编辑器路径、界面开关、差异显示)、同步(后台 Fetch)、当前仓库(提交身份、认证与远端、本机忽略规则)、AI 助手、Git LFS、诊断。前两组只影响本机,切换仓库不会改变它们的含义。
- 添加工作区入口:默认使用本插件的选择窗口(新建项目 / 本地目录 / 克隆三选一)。在 设置 → Git → 常规 → 界面与入口 关闭后,该入口直接打开系统目录选择器;重新开启即可恢复。
- 输出模块:记录插件执行过的每一条 Git 命令、退出码、耗时与标准输出/错误,排查问题先看这里。
- 诊断:展示 Git 与 Node 版本、各仓库能力检测与缓存状态。
使用须知
- 提交前需配置 Git 用户名与邮箱;远端认证沿用 Git 凭据管理器或 SSH 配置。
- AI 功能需要 DSH 中可用的模型服务,普通 Git 操作不依赖 AI。
- Git LFS 功能需要另行安装 Git LFS。
- 连接远程 DSH 时,文件操作、Git 和外部编辑器均运行在远程设备上。
- 更新后若提示功能尚未加载,请重新加载 Git 插件 Host 或重启 DSH;仅刷新页面不会更新 Host。
维护者
版本发布与 npm 授权配置见 发版指南。
反馈
提交问题时,请附上插件版本、Git 版本、复现步骤和相关错误信息。失败命令可在插件的“输出”中查看。
许可证
MIT
No comments yet. Be the first to write one.