🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

Git 工作区管理 MoonlitDropOfBlood/dsh-git-manager

DeepSeek Harness
MoonlitDropOfBlood64 天前有提交已提供中文文档扫描:含敏感能力

在对话界面内完成提交、分支与冲突处理

29/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/9/18 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add MoonlitDropOfBlood/dsh-git-manager
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么[目录]—
dsh 原生插件 · market
暂无时间戳·判据 →
装得上吗[实装验证]—
静态安装检查有提示项,装前建议看一眼 README
L4 · 真实安装等级说明 →
数据截至 2026/10/06·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]—
更新放缓:最近一次提交在 64 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

安装兼容性检查⚠ 装前注意

未发布到 npm registry,仅可从源码安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包@duke-dsh-plugins/dsh-git-manager(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/9/23 11:36:52

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 44 处,展示前 21 条)
  • 读取本地文件
    index.js:164
    const s = statSync(path);
  • 发起网络请求
    index.js:421
    async fetch(request) {
  • 执行外部命令固定命令
    git-core.mjs:45
    execFile(
  • 读取本地文件
    git-core.mjs:221
    if (!existsSync(path) || !statSync(path).isDirectory()) {
  • 读取本地文件
    git-core.mjs:221
    if (!existsSync(path) || !statSync(path).isDirectory()) {
  • 读取本地文件
    git-core.mjs:290
    const merging = existsSync(join(gitDirAbs, "MERGE_HEAD"));
  • 读取本地文件
    git-core.mjs:291
    const rebasing = existsSync(join(gitDirAbs, "rebase-merge")) || existsSync(join(gitDirAbs, "rebase-apply"));
  • 读取本地文件
    git-core.mjs:476
    merging = existsSync(join(gitDirAbs, "MERGE_HEAD"));
  • 读取本地文件
    git-core.mjs:477
    rebasing = existsSync(join(gitDirAbs, "rebase-merge")) || existsSync(join(gitDirAbs, "rebase-apply"));
  • 写入本地文件
    git-core.mjs:1216
    await writeFile(tmpFile, patch, "utf8");
  • 删除本地文件
    git-core.mjs:1222
    await rm(tmpFile, { force: true });
  • 写入本地文件
    git-core.mjs:1368
    await writeFile(tmpFile, patch, "utf8");
  • 删除本地文件
    git-core.mjs:1376
    await rm(tmpFile, { force: true });
  • 写入本地文件
    git-core.mjs:1402
    await writeFile(tmpFile, patch, "utf8");
  • 删除本地文件
    git-core.mjs:1405
    await rm(tmpFile, { force: true });
  • 删除本地文件递归
    git-core.mjs:1482
    await rm(abs, { force: true, recursive: true });
  • 删除本地文件
    git-core.mjs:1652
    if (armed.scriptPath) await rm(armed.scriptPath, { force: true });
  • 写入本地文件
    git-core.mjs:1800
    await writeFile(abs, content || "", "utf8");
  • 删除本地文件
    git-core.mjs:2191
    try { await rm(join(gitDirAbs, REBASE_QUEUE_FILE), { force: true }); } catch (_) { }
  • 写入本地文件
    git-core.mjs:2197
    await writeFile(queuePath, JSON.stringify({ messages, cursor: 0 }), "utf8");
  • 写入本地文件
    git-core.mjs:2206
    await writeFile(scriptPath, REBASE_EDITOR_SCRIPT, "utf8");
扫描于 2026/11/4(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-typert-protocol
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 对话界面内提交
  • 分支管理
  • 冲突处理

README

由 DeepSeek 最新模型翻译生成
DeepSeek Harness Git 管理插件 为 DeepSeek Harness(DSH) Web UI 打造的 Git 工作区管理插件:不用再切到外部 Git 客户端——输入框工具行的 Git 按钮一键打开与「设置」同规格的居中面板,覆盖日常全部 Git 操作:status / diff、分支管理、合并冲突解决、commit / fetch / pull / push、worktree 管理,以及带分支线图形的提交历史。 功能 | 功能 | 说明 | | 🔘 仓库感知入口 | composer 底部「模式」选择器旁的 Git 按钮(分支图标 + 当前分支名),hero 页与会话内都有;仅当前目录是 git 仓库时显示(60s 轮询缓存,非仓库完全不占位) | | 🪟 设置同规格面板 | 800px 居中弹窗、圆角 24、毛玻璃遮罩;Esc 与遮罩点击均可关闭;DOM 经 Portal 落到 body 层(z-index 1000),不被任何侧栏插件遮挡 | | 📝 变更 | staged / unstaged / untracked 三组文件,stage / unstage / discard(CJK 文件名完整支持),自绘 unified diff 渲染器,commit(含 amend / 全部暂存并提交) |
展开完整文档(README 剩余 1 节)
DeepSeek Harness Git 管理插件

为 DeepSeek Harness(DSH) Web UI 打造的 Git 工作区管理插件:不用再切到外部 Git 客户端——输入框工具行的 Git 按钮一键打开与「设置」同规格的居中面板,覆盖日常全部 Git 操作:status / diff、分支管理、合并冲突解决、commit / fetch / pull / push、worktree 管理,以及带分支线图形的提交历史。

功能

| 功能 | 说明 |
| 🔘 仓库感知入口 | composer 底部「模式」选择器旁的 Git 按钮(分支图标 + 当前分支名),hero 页与会话内都有;仅当前目录是 git 仓库时显示(60s 轮询缓存,非仓库完全不占位) |
| 🪟 设置同规格面板 | 800px 居中弹窗、圆角 24、毛玻璃遮罩;Esc 与遮罩点击均可关闭;DOM 经 Portal 落到 body 层(z-index 1000),不被任何侧栏插件遮挡 |
| 📝 变更 | staged / unstaged / untracked 三组文件,stage / unstage / discard(CJK 文件名完整支持),自绘 unified diff 渲染器,commit(含 amend / 全部暂存并提交) |
| 🌿 分支 | 本地 / 远程列表(upstream、ahead/behind 角标),新建(带起点)/ 切换 / 改名 / 删除(未合并需二次确认)/ 合并,与当前分支对比 diff |
| 🕸 历史 | 分支线图形(git log --all --date-order + Host 侧布局计算 + Client 纯 SVG 渲染,长跨度边自动省略淡化、悬停高亮单条分支走向)+ refs 徽章 + 分页加载;点击提交查看 commit diff,窗口内一键 cherry-pick 到当前分支(冲突自动跳转冲突页,继续/中止全链路支持) |
| 🔀 冲突 | 合并进行中横幅(继续 / 中止)+ 每文件三种解决方式:ours / theirs / 手动编辑(base / ours / theirs 三栏对照 + 可编辑区) |
| 🌳 Worktree | 列表 / 添加(可带新分支;成功后自动注册为 DSH 工作区,workspace-write 沙盒下直接可写)/ 删除(脏目录需 force 二次确认)/ prune |
| 🎨 主题适配 | 颜色全部走 DSH 设计 token(主按钮与输入框发送按钮同色),明暗主题自动跟随 |

工作原理

Composer Git 按钮(conversation.input.left,仅仓库显示) └─ probe 轮询探测(60s 缓存,非仓库返回 null) └─ 点击 → 全屏面板(ReactDOM.createPortal → document.body,z-index 1000) └─ Remote RPC(gitManager.,返回值网关 JSON-safe 校验) └─ Host:git-core.mjs(execFile argv 数组,无 shell 拼接) └─ git 子进程(GIT_TERMINAL_PROMPT=0,凭证挂起免疫)

- 所有 git 调用走 execFile argv 数组,无 shell 注入;Windows 下隐藏子进程窗口。
- 危险操作全部 UI 二次确认;force push 只允许 --force-with-lease。
- 输出有上限保护:diff 超 1.5MB 截断提示、log 默认 200 条 / 页。
- 仓库路径防护:涉及写文件的操作(未跟踪 discard / 手动解冲突)先校验路径不越出仓库根。

安装

标准安装(推荐)

本插件是标准 DSH bundle:package.json 声明 dsh.bundle.patch,包内自带 cordis.patch.yml,用官方 dsh plugin 命令安装:

npm(推荐)
dsh plugin --profile web add @duke-dsh-plugins/dsh-git-manager

或从 GitHub Release tarball 安装
dsh plugin --profile web add https://github.com/MoonlitDropOfBlood/dsh-git-manager/releases/download/v1.0.0/duke-dsh-plugins-dsh-git-manager-1.0.0.tgz

本地开发:pnpm 软链到本仓库,改代码即生效(无需重新复制)bash
dsh plugin --profile web add /path/to/dsh-git-manager

重启 DSH 后:当前工作区是 git 仓库时,输入框「模式」选择器旁出现 Git 按钮。

dsh plugin add 把插件装成 profile 的 npm 依赖并追加到 dsh.profile.bundles,启动时 DSH 自动应用包内的 cordis.patch.yml 挂载插件。卸载:dsh plugin --profile web remove dsh-git-manager。

使用

1. 打开面板:当前工作区是 git 仓库时,点击输入框工具行的 Git 按钮(分支图标 + 分支名)。
2. 变更:勾选文件 stage / unstage;点击文件看 diff;底部输入提交信息 commit(可 amend、可一键全部暂存并提交)。
3. 分支:顶部 Fetch / Pull / Push(ahead/behind 角标同步状态);分支列表里切换、新建、改名、合并、删除。
4. 历史:分支线 + 提交列表;点击提交展开该 commit 的文件级 diff。
5. 冲突:合并冲突时出现在此 Tab——逐文件选 ours / theirs,或手动编辑后保存标记已解决;全部解决后「继续合并」。
6. Worktree:添加 worktree(可同时开新分支);添加成功后自动注册为 DSH 工作区,直接在侧栏打开开会话即可让 agent 在沙盒内读写。
7. 关闭:Esc 或点击遮罩。

目录结构

dsh-git-manager/
├── index.js # Host 半:GitManagerService(TypertRemoteService 子类,类插件) ├── client.js # Client 半:__ModuleLoader__ bundle(composer 入口按钮 + 弹窗面板) ├── typert.host.js # Typert Host manifest:gitManager 全方法的 wire schema ├── git-core.mjs # 零依赖:runGit 封装 + 全部查询/变更函数 + 解析器 ├── git-graph.mjs # 零依赖:computeGraph 分支线布局(纯函数) ├── cordis.patch.yml # dsh bundle patch(挂载行) ├── scripts/self-test.mjs # 独立自测:解析器 fixture + 临时仓库 live 集成(不依赖 DSH 进程) ├── .github/workflows/ # GitHub Actions 发布(tag → npm OIDC + GitHub Release) ├── AGENTS.md # 面向 AI agent 的开发指南(含踩坑) └── LICENSE # MIT

开发 bash
npm run check # 语法检查全部 JS
npm test # 自测(解析器 fixture + 临时仓库 live 集成,61 项)
dsh plugin --profile web add /path/to/dsh-git-manager # 安装/重装到本机 DSH profile

改插件后必须重启 DSH 才生效。详见 AGENTS.md——记录了 DSH 正式插件三件套机制、网关 JSON-safe 返回值、主题 token 映射等完整踩坑。

发布

打 v 标签推到 GitHub:.github/workflows/release.yml 自动跑测试、构建 tgz、发布 GitHub Release,并通过 OIDC Trusted Publishing 发布到 npm(已存在的版本自动跳过,可安全重放)。

License

本项目遵循 MIT License。

本项目是基于 DeepSeek Harness 构建的社区插件,并非 DeepSeek 官方产品。
预览分享卡片长什么样 ↓MoonlitDropOfBlood/dsh-git-manager
分享 · DeepSeek Harness Hub
MoonlitDropOfBlood/dsh-git-manager

在对话界面内完成提交、分支与冲突处理

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部