dsh-git
dsh-plugin
- Stars
- 0
- Language
- JavaScript
- Created
- Aug 29, 2026
- Updated
- Aug 29, 2026
Introduction
dsh-git
把 Fork 风格 Git 图形界面(Express 后端 + 浏览器前端)打包成 DeepSeek Harness(DSH)插件,可在 DSH 桌面端 / Web 端内嵌使用。
目录结构
.
package.json # DSH 插件清单(dsh.bundle + dsh.client)
cordis.patch.yml # bundle patch:把本插件插入 profile 层级栈
lib/
index.js # 宿主端入口:启动 Git GUI 服务 + 注册 /api/git-gui/info
git-gui-server.js # Express 后端(从原项目 server.js 重构为可嵌入 ESM 模块)
client.js # 客户端入口:侧边栏按钮 + shell.overlay 内嵌 iframe
public/
index.html # 前端(与原项目一致)
style.css
app.js
工作原理
- 宿主端(
lib/index.js):插件被加载时在本机回环地址127.0.0.1:<port>启动 Express 后端(默认端口3417,可用环境变量GIT_GUI_PORT覆盖),并在 DSH 的webServer上注册GET /api/git-gui/info,返回当前 Git GUI 的{ running, url, port }。 - 客户端(
lib/client.js):在 DSH 侧边栏底部注册一个Git按钮,点击后通过shell.overlay弹出浮层,用<iframe>内嵌 Git GUI;浮层同时提供 “在新窗口打开”的兜底入口(桌面端会交给系统浏览器打开)。
Git GUI 前端保持原样,仍通过 /api/... 访问同一后端,功能与原项目一致。
安装
需要本机已安装 Node.js(≥22)和 git。用 dsh 自带的插件管理(本质是 pnpm add
到目标 profile,再把它计入 dsh.profile.bundles):
# 克隆本仓库后,在仓库根目录执行
dsh plugin --profile <profile-name> add .
也可以从 npm 安装(发布到插件市场后):
dsh plugin --profile <profile-name> add @ayumedaze/dsh-git
或者指定绝对路径:
dsh plugin --profile <profile-name> add file:C:/path/to/dsh-git
安装完成后 重启 DSH(桌面端或 dsh --profile <profile-name> 重新启动),
侧边栏底部即出现 Git 按钮。
如果 profile 不存在,
dsh plugin会先初始化它。桌面端的 profile 名可在 DSH 桌面端的设置/插件管理中查看。
使用
- 打开 DSH,点击左侧边栏底部的
Git(⏣)按钮。 - 在弹出的 Git GUI 浮层中点击
Open…,粘贴一个本地 git 仓库路径即可。
最近打开过的仓库会写入插件目录下的 repos.json,下次启动自动恢复。
配置
| 环境变量 | 默认值 | 说明 |
|---|---|---|
GIT_GUI_PORT | 3417 | Git GUI 后端监听端口 |
端口仅绑定 127.0.0.1,不会对局域网开放。
开发说明
- 宿主端插件导出
name/inject/apply,inject = ['webServer'],与dsh-community-market等官方插件一致。 - 客户端为
window.__ModuleLoader__.load({ id, factory })形式的模块包,仅依赖react与@deepseek-ai/dsh-client-runtime/client(defineStore),因此无需 额外构建步骤即可被 DSH 的浏览器模块系统加载。 - 独立(非 DSH)运行的原版 Web Git GUI 位于原
git-gui项目;本插件的lib/git-gui-server.js是其可嵌入重构版本,二者功能一致。