在侧边栏查看分支图谱与提交历史,安全回退改动
31.5/100
综合分
2
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/11/6 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add LingQi-07-std/dsh-client-ui-git该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-typert-protocol给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
README
由 DeepSeek 最新模型翻译生成dsh-client-ui-git — DSH Git 可视化插件
在 DeepSeek Harness Web GUI 侧边栏底部放一个 Git 按钮(显示当前分支名 + 未提交改动徽标),点击打开右侧抽屉:当前会话工作区的仓库概览、工作区状态、提交历史图,以及单提交的 diff 浏览与安全回退操作。
- 语言/框架:纯 JS(无构建步骤),host 半 ESM(cordis 插件),client 半 __ModuleLoader__ bundle
- 依赖:host 半只依赖 @deepseek-ai/dsh-typert-protocol(运行时);client 半无外部依赖(内联 mini-zod)
- 只读方式:浏览类方法都是只读 git 命令;写入分「安全写」(init/commit/checkout/revert/merge)与「危险写」(restore/reset)两档,危险写只出现在 UI 里,必须经确认弹窗
结构
| 文件 | 职责 |
| lib/index.js | host 半:GitGateway(git Remote 服务),用 child_process.spawn 跑 git 命令 |
| lib/git-core.mjs | 纯函数层:命令封装、porcelain 解析、读写实现 |
展开完整文档(README 剩余 1 节)
dsh-client-ui-git — DSH Git 可视化插件
在 DeepSeek Harness Web GUI 侧边栏底部放一个 Git 按钮(显示当前分支名 + 未提交改动徽标),点击打开右侧抽屉:当前会话工作区的仓库概览、工作区状态、提交历史图,以及单提交的 diff 浏览与安全回退操作。
- 语言/框架:纯 JS(无构建步骤),host 半 ESM(cordis 插件),client 半 __ModuleLoader__ bundle
- 依赖:host 半只依赖 @deepseek-ai/dsh-typert-protocol(运行时);client 半无外部依赖(内联 mini-zod)
- 只读方式:浏览类方法都是只读 git 命令;写入分「安全写」(init/commit/checkout/revert/merge)与「危险写」(restore/reset)两档,危险写只出现在 UI 里,必须经确认弹窗
结构
| 文件 | 职责 |
| lib/index.js | host 半:GitGateway(git Remote 服务),用 child_process.spawn 跑 git 命令 |
| lib/git-core.mjs | 纯函数层:命令封装、porcelain 解析、读写实现 |
| lib/typert.host.js | host 半 TYPERT manifest(exports["./typert"]),由 dsh-typert-loader 自动注册 |
| lib/client.js | client 半:内联 mini-zod + 侧边栏入口 + 抽屉面板 |
| packages/dsh-client-git-remote/ | client 半的 git namespace 挂载插件(ctx.remote.$mount) |
| locale/{zh,en}.json | 插件页显示名称与描述 |
Remote 服务(namespace git,共 14 个方法)
| 分组 | 方法 | 请求 | 返回 |
| 读 | snapshot | {path} | {repo, path, root?, branch?, head?, clean?, changes?, ahead?, behind?} |
| 读 | log | {path, limit?} | {commits: [{hash, short, parents[], refs[], author, email, date, subject}]} |
| 读 | status | {path} | {clean, entries: [{x, y, path}]}(porcelain 语义) |
| 读 | diff | {path, commit} | {commit, files: [{path, added, removed, binary}], patch, truncated} |
| 读 | branch | {path} | {branches: string[]} |
| 读 | isRepo | {path} | {repo, error?} |
| 安全写 | init | {path, userName?, userEmail?} | {ok, message} / {ok:false, error} |
| 安全写 | commit | {path, message} | {ok, message, id?}(自动 add -A) |
| 安全写 | createBranch | {path, name, from?} | {ok, message} |
| 安全写 | checkout | {path, target} | {ok, message}(非本地分支则游离 HEAD) |
| 安全写 | revert | {path, commit} | {ok, message}(生成反向提交) |
| 安全写 | merge | {path, target} | {ok, message} / {ok:false, error, conflicts?} |
| 危险写 | restore | {path, paths?} | {ok, message}(丢弃未提交改动) |
| 危险写 | reset | {path, commit} | {ok, message}(--hard,仅本地未推送) |
调用示例(浏览器,返回 {ok, value}):
const result = await ctx.remote.git.snapshot({ path: "G:/repo" });
if (result.ok) console.log(result.value.branch);
MCP 工具(mcp/server.mjs,本地能力,不含联网)
源在仓库 mcp/server.mjs,运行副本 $DSH_HOME/mcp-git/server.mjs(用 node scripts/sync-mcp.mjs 部署,改完重启 DSH)。
| 分组 | 工具 |
| 只读 | snapshot、log(可按 paths/author/since/grep 过滤)、status、diff(提交 / 工作区 / 暂存区,可限定 paths 或只看 stat)、show_file、branch、is_repo、blame、reflog |
| 安全写 | init、commit(stagedOnly 可选)、add、unstage、create_branch、branch_admin(rename/delete)、checkout、revert、merge、reset_soft(撤销提交保留改动)、abort(merge/revert/cherry-pick)、stash(push/pop/apply/drop/list/show)、tag(list/create/delete) |
| 危险(默认关闭) | restore(丢弃改动)、reset(硬回退) |
危险工具默认不注册,开启方式(后续设置页就是写这个配置):
// $DSH_HOME/mcp-git/config.json
{ "allowDangerousTools": true }
或临时用环境变量 DSH_GIT_ALLOW_DANGEROUS=1。
UI
- 挂载点:sidebar.footer.action(侧边栏底部,与设置、用量统计同排)
- 撑开模式:分支图标 + 分支名 + 未提交数徽标;收起模式:图标 + 徽标
- 工作区由 useSessions(当前会话的 cwd)决定,切换会话自动刷新;无会话时退到最近工作区
- 抽屉(宽 min(440px, 100vw-32px)):
- 头部:仓库名、干净/改动徽标、分支徽标、刷新、关闭
- 操作行:提交存档 / 新建分支 / 切换分支 / 合并分支 / 丢弃改动(全部二次确认)
- 工作区状态:按目录分组、可折叠,状态字母着色
- 提交时间线:第一父链 + merge 标记 + refs 标签
- 选中提交后切到 40/60 详情:该提交的文件 numstat + patch(截断提示)+ 回退/还原/硬回退
- 样式全部走 DSH alias-token CSS 变量(--dsw-alias-),light/dark 与阿罗娜主题自动适配
安装与部署
本机链路(file: 依赖 + 复制安装):
1. 工作区 → G:\DSHDesktopPluginRemove\_stage\pkgs\dsh-client-ui-git
2. _stage → %DSH_PROFILE_DIR%\node_modules\@dsh-external\dsh-client-ui-git
3. 重启 DSH(host 半/manifest 改动必须重启;仅 client 改动可先刷新页面试)
profile 的 package.json 需要两行:
{
"dependencies": { "@dsh-external/dsh-client-ui-git": "file:G:/DSHDesktopPluginRemove/_stage/pkgs/dsh-client-ui-git" },
"dsh": { "profile": { "bundles": ["@dsh-external/dsh-client-git-remote", "@dsh-external/dsh-client-ui-git"] } }
}
cordis.patch.yml 里插入两行(git-remote 必须先于 ui-git,前者负责挂载 remote.git):
- insert:
- id: git-remote
name: '@dsh-external/dsh-client-git-remote'
- insert:
- id: ui-git
name: '@dsh-external/dsh-client-ui-git'
开发/验证
node test-gitcore.mjs # git-core 读写全流程(临时仓库)
node test-host.mjs # GitGateway 端到端
node test-contract.mjs # TYPERT schema 与 client mini-zod 双端契约
node test-install.mjs # 安装校验 + 部署漂移(DSH_PROFILE_DIR,逐文件 SHA256)
node test-client-offline.mjs # 真 bundle 离线渲染:入口 / 抽屉 / 提交 diff
node test-live.mjs [dir] # 打真实 GUI 的 /api/git/(DSH_WEB_URL,可带 ?token=)
node test-manual-rpc.mjs [dir] # 真实 GUI 上的 init/commit 流程
工作区没有真实依赖树:node_modules/@deepseek-ai、node_modules/zod 是指向 harness / desktop profile 的 junction(已在 .gitignore)。
注意:
- host 半不能用原生 decorator 语法(@Remote),strict 路径由 manifest 提供,类方法普通实现即可
- client 半不要 inject "remote.git" 之外的挂载逻辑($mount 在 git-remote 的 apply 内),此处只声明注入
- client 半 schema 会被 api-gateway 真实 parse()(参数与结果都校验),mini-zod 必须返回真值
- 分支规矩:任何改动先开分支,老师验收通过后再合并 main预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
LingQi-07-std/dsh-client-ui-git
在侧边栏查看分支图谱与提交历史,安全回退改动
相关插件 · UI / 主题
破甲增强版JeffKeeping/dsh-purge-plus
dsh-purge 的非官方分支fork:适配 DeepSeek Harness 0.2.1-rc.2、破甲内核…
★ 387已汉化DeepSeek 客户端
71.9
无代码业务系统平台nocobase/nocobase
NocoBase 是什么
★ 24,804已汉化DSH
71.8
1Panel 服务器面板1Panel-dev/1Panel
全球 250 万+ 自托管用户共同喜爱。
★ 37,380已汉化DSH
71.5
AI 矢量设计工具ZSeven-W/openpencil
全球首个 AI 原生开源矢量设计工具。
★ 7,119已汉化DSH
71.2
终端编码代理esengine/DeepSeek-Reasonix
· 指南 · ACP · 扩展开发 · 规格 · 官方网站 · Discord · QQ
★ 36,129已汉化DSH
71.2
工作状态行动态ccch1mneyyy/working-activity
作者:chimney@ccch1mneyyy。社区项目,非 DeepSeek 官方项目。
★ 664已汉化DSH
71.2
这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。