Back to home@ayumedaze

dsh-git

dsh-plugin

Stars
0
Language
JavaScript
Created
Aug 29, 2026
Updated
Aug 29, 2026
GitHub repo

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 桌面端的设置/插件管理中查看。

使用

  1. 打开 DSH,点击左侧边栏底部的 Git(⏣)按钮。
  2. 在弹出的 Git GUI 浮层中点击 Open…,粘贴一个本地 git 仓库路径即可。

最近打开过的仓库会写入插件目录下的 repos.json,下次启动自动恢复。

配置

环境变量默认值说明
GIT_GUI_PORT3417Git GUI 后端监听端口

端口仅绑定 127.0.0.1,不会对局域网开放。

开发说明

  • 宿主端插件导出 name / inject / applyinject = ['webServer'],与 dsh-community-market 等官方插件一致。
  • 客户端为 window.__ModuleLoader__.load({ id, factory }) 形式的模块包,仅依赖 react@deepseek-ai/dsh-client-runtime/clientdefineStore),因此无需 额外构建步骤即可被 DSH 的浏览器模块系统加载。
  • 独立(非 DSH)运行的原版 Web Git GUI 位于原 git-gui 项目;本插件的 lib/git-gui-server.js 是其可嵌入重构版本,二者功能一致。