メインコンテンツへスキップ
W

dsh-wdx-git

wdxtub/dsh-wdx-git

Git inside your DSH session: a right-sidebar panel for the current workspace and a global page listing every workspace, one sync button that becomes Fetch, Pull, Push, Publish branch or Sync, a commit tab that opens first with every change checked, AI-written commit messages from the staged diff, plus history, branches, stash and in-panel conflict resolution.

インストール

dsh plugin --profile web add github:wdxtub/dsh-wdx-git

README

WDX Git

Git,不再打断你的 AI 会话。

WDX Git 是 DeepSeek Harness 里的 Git 面板:右栏管当前会话的仓库,左侧栏的全局页 一次列出所有工作区。AI 改完代码,你不需要切到终端, 也不需要在一排 Pull / Push / Fetch 按钮里做选择:一个同步按钮完成拉取、合并和推送, 并会按仓库状态显示 Fetch origin / Pull origin / Push origin / Publish branch / Sync; 提交页默认打开,改动默认全选;提交信息可以让 AI 顺手写好。

DSH 0.2.x · macOS / Windows / Linux · MIT

WDX Git 提交页

为什么做 WDX Git

AI 让写代码变快了,但 Git 流程还是旧的:

  • 改完要切终端,记 pull、merge、push;
  • 回来还要想哪些文件该 stage、提交信息怎么写;
  • 冲突了再切工具,处理完已经忘了刚才在做什么。

WDX Git 把这段流程留在会话旁边,只保留真正需要你做的决定:

常见流程WDX Git
先 Fetch,再判断 Pull / Push顶栏按钮自动显示 Fetch / Pull / Push,点一下完成需要的事
手动勾选要提交的文件默认全选,不想提交的再取消
手写提交信息AI 读本次 diff,按仓库风格写
冲突时切到外部工具在面板里看 ours / theirs,解决后继续

它不是另一个 GitHub Desktop,而是把 GitHub Desktop 最顺手的部分带进 DSH。

适合谁

  • 在 DSH 里用 AI 写代码、改文档,提交频率高的人;
  • 不想为了 pull / push / stage 反复切到终端的人;
  • 希望提交信息规范、但不想每次都手写的人;
  • 喜欢 GitHub Desktop 的顺手,但希望它长在 AI 会话旁边的人。

三个核心体验

一个按钮,完成同步

顶栏只有仓库、分支和一个同步按钮。按钮会按仓库状态显示:

状态按钮
已同步Fetch origin
只落后远端Pull origin
只有本地提交Push origin
两边都有新提交Sync
还没有 upstreamPublish branch

落后或领先远端时,按钮内会出现带方向箭头的计数徽标:↓ 是待拉取的远端提交, ↑ 是待推送的本地提交。

不管显示哪一个,点下去都由 WDX Git 完成:

fetch → 补 upstream → 快进或合并 → 需要时推送
冲突 → 解决 → continue / 恢复 stash → 推送

工作区有改动时先自动 stash,合并后恢复;推送被拒时自动合并并按需重试(最多 4 轮)。 冲突时停下来等你处理,处理完自动继续和推送,不用懂 commit / continue / stash。 不 force push,不自动 rebase,不改写已有历史。

提交页先出现,改动默认全选

打开面板先看到提交表单:通用提交者图标和 Summary 一行,Description 单独一行, AI 区域和提交按钮依次排开。所有改动默认勾选;取消某个文件,它就只留在工作区, 不会进入这次提交。

提交时只暂存选中的路径。想全部提交,直接写标题、点按钮;想精细一点, 去「变更」里取消勾选即可。

AI 写提交信息,但不替你做决定

  • 一次生成标题 + 正文:正文按 PR 摘要的密度写——一句动机,再 2–4 条具体改动;涉及测试时说明覆盖范围,不写空话;
  • 格式不合格(被截断、标题半句、缺正文)会自动重试,最多 3 次;仍不行为你保留可提交的降级文案;
  • 默认跟随当前会话模型,思考等级自动压低;也可以在设置里换成更便宜的模型;
  • 只读取本次会提交的 diff 和文件;取消勾选的文件不会出现在提交信息里。

AI 只负责生成内容。提交、推送和冲突文件的写入,都在你点下按钮后执行。

一眼看懂

变更:默认全选差异:词级高亮
变更差异
历史:SVG 车道图分支与 Stash
历史分支
AI 与同步设置冲突解决
设置冲突

还有这些

  • 跨项目仓库页:左侧栏的 Git 入口列出当前 DSH 里所有工作区,像 GitHub Desktop 一样按父目录分组,显示分支、ahead/behind 和改动数;点开任意仓库就能直接提交,不必先 进项目新建会话。概览每 30 秒刷新一次;手动刷新时按钮会旋转,完成后显示绿色对勾和 更新结果,有变化的仓库行会短暂高亮。

跨项目仓库页

  • 一体化界面:顶栏、tab、内容共用一层背景,没有卡片和外框;颜色全部来自 DSH 主题 token,深浅主题自动适配。
  • 变更、历史、分支、差异:逐文件查看、提交搜索、所有分支 / 当前分支切换、 SVG 提交车道图。
  • 冲突不硬来:可看 ours ↔ theirs,AI 生成合并建议(只预览,确认后才写入)、 一键「AI 解决全部」逐个文件自动合并并暂存(大文件按冲突块处理),也可取某一侧 或手工标记已解决;设置里可打开「冲突后自动用 AI 解决」(默认关闭),同步一产生 冲突就自动处理。最后一项冲突解决后自动 commit merge / continue rebase、恢复自动 stash,并按最初的 Sync / Push 意图自动推送;仍支持中止 / 继续。
  • 系统代理:macOS 自动读取系统 HTTP/HTTPS 代理,Finder 启动的 DSH 也能正常 fetch / push;也尊重你已有的代理环境变量。
  • 数据留在本地:Git 操作、历史、分支、stash 都在你本机;插件不保存 token, 也不做遥测。
  • 头像不读个人资料:提交表单左侧是 wdxtub-blog 的 W 标记(单色简化版,保留右上角小装饰), 不读取、不展示你的 DSH 账户头像或 GitHub 头像。

安装

从插件页安装

打开 DSH 侧栏 插件 → 添加插件,输入包名:

dsh-wdx-git

安装源选 npm 官方源,装好后点 立即启用。如果镜像还没同步,切换安装源再试一次即可。

npm 包主页:https://www.npmjs.com/package/dsh-wdx-git

从源码安装

git clone https://github.com/wdxtub/dsh-wdx-git.git
dsh plugin --profile desktop add ./dsh-wdx-git

安装后刷新页面。入口有三个:

  1. 左侧栏的 Git(全局仓库页);
  2. 会话头部工具栏的 Git 分支图标;
  3. 右栏的 + → 开始 →「WDX Git」。

更新了 Host 代码(index.js / src/)后,重开一次 DSH 让 Host 重新加载; 只刷新页面只会更新客户端。

上手

  1. 打开任意会话的 Git 面板;默认就在「提交」。
  2. 顶栏按钮会显示 Fetch origin / Pull origin / Push origin / Sync,点一下同步远端; 需要时它会自动合并、推送。
  3. 写 Summary,或者点 AI 生成。
  4. 点「提交 N 个文件到 main」;勾选「提交后推送」可以接着同步。

常见问题

Q:顶栏按钮为什么会变?

A:它只反映一件事:点下去主要会发生什么。已同步是 Fetch origin,落后是 Pull origin, 有本地提交是 Push origin,两边都有是 Sync,没有 upstream 是 Publish branch。 按钮内会显示上次 fetch,以及带方向箭头的领先 / 落后计数徽标;仓库行显示 upstream。 点下之后,状态栏会告诉你这次是 fetch、merge 还是 push,以及是否动过 stash。

Q:会不会自动 force push?

A:不会。远端前进导致 push 被拒时,只 fetch + merge + 重试一次;再失败就把 git 的错误原样告诉你。也不会自动 rebase 或改写历史。

Q:AI 会看到我的整个仓库吗?

A:不会。它看到的是本次待提交的 diff、文件列表、最近提交标题,以及选中的 未跟踪文本文件。请求发送给你在设置里选择的模型服务商。

Q:私有仓库能用吗?

A:能。WDX Git 使用你本机已有的 git 凭据;能在这台机器上用 git 访问的仓库, 面板就能用。

Q:代理怎么处理?

A:macOS 下自动读取系统代理;其他平台使用 HTTPS_PROXY / HTTP_PROXY / ALL_PROXY,或 git 自身的 http.proxy 配置。

Q:冲突怎么办?

A:同步遇到冲突会停下来等你处理,不会在你没动手时合并。你可以在面板里看两边差异、 取某一侧,点「AI 解决全部」让它逐个文件合并并暂存(大文件按冲突块逐个解决),或 手工改完后「标记为已解决」。全部解决后插件自动 create merge commit / continue rebase、把自动 stash 的本地改动放回,并按最初的动作自动推送。

Q:和 GitHub Desktop 是什么关系?

A:交互灵感来自 GitHub Desktop,但这是为 DSH 会话重新设计的原生面板: 一个按钮、默认提交、默认全选,不替代你现有的 Git 工作流。

我们刻意不做

  • 不 force push,不自动 rebase,不改写提交历史;
  • 不绕过 hooks,不做 commit signing;
  • 不做 hunk 级 / 行级 partial staging(选择到文件级);
  • 不做远端选择 UI:多远端时优先 origin;
  • 不在后台静默提交;冲突解决后的 commit / continue 只在你处理完冲突(或点了 「AI 解决」)之后发生。

开发者

  • RPC、数据结构和 Host ↔ Client 契约:PROTOCOL.md
  • 版本记录:CHANGELOG.md
  • 发布流程:RELEASING.md
  • 运行测试:npm test(当前 55 个测试)
  • 实现:Host 侧 index.js / src/,客户端单文件 lib/client.js,无构建步骤。

License

MIT

関連プラグイン