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

工作区自动建仓 zhitiaojun/dsh-auto-git

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

为新注册的工作区自动初始化 Git 仓库并补空提交

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

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add zhitiaojun/dsh-auto-git
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么
dsh 原生插件 · dev
装得上吗
实装验证未通过(unknown),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 46 天前
档位由哪些信号合成

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

验证判据与等级说明 →
⚠︎ 实装验证未通过(unknown · 2026/10/5) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

读写/删除本地文件
查看扫描证据(共 1 处,展示前 1 条)
  • 读取本地文件
    lib/index.js:79
    info = await stat(path)
扫描于 2026/11/1(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 自动初始化Git仓库
  • 补一次空提交

dsh 配置档包:给每个新注册的 DSH 工作区执行 git init,带一次空提交,让能识别 git 的插件有仓库可挂。

README

由 DeepSeek 最新模型翻译生成
dsh-auto-git 为每个新注册的 DSH 工作区自动 git init,让 git 相关插件(如 @linxin666/dsh-client-ui-git-graph 的分支胶囊 / Git 图谱)在每个工作区都能出现。 为什么需要它 git-graph 插件的 host 侧 /git/* 路由有两道门(见其 src/index.ts 的 createWorkspaceGate 与 src/host/git-service.ts): 1. 请求路径的 realpath 必须恰好等于某个已注册工作区路径(workspace.path === canonical,不接受子目录、不接受任意目录); 2. 该路径必须是 git 仓库(git rev-parse --show-toplevel 成功),否则 status 返回 null。 前端 BranchChip 在 repo === null 时直接 return null —— 于是「非 git 工作区」里这个插件完全没有 UI。所以想让 git 功能「每个工作区都有」,唯一办法是让工作区目录本身是仓库。
展开完整文档(README 剩余 1 节)
dsh-auto-git

为每个新注册的 DSH 工作区自动 git init,让 git 相关插件(如 @linxin666/dsh-client-ui-git-graph 的分支胶囊 / Git 图谱)在每个工作区都能出现。

为什么需要它

git-graph 插件的 host 侧 /git/* 路由有两道门(见其 src/index.ts 的 createWorkspaceGate 与 src/host/git-service.ts):

1. 请求路径的 realpath 必须恰好等于某个已注册工作区路径(workspace.path === canonical,不接受子目录、不接受任意目录);
2. 该路径必须是 git 仓库(git rev-parse --show-toplevel 成功),否则 status 返回 null。

前端 BranchChip 在 repo === null 时直接 return null —— 于是「非 git 工作区」里这个插件完全没有 UI。所以想让 git 功能「每个工作区都有」,唯一办法是让工作区目录本身是仓库。

它做什么

- 注册时:监听 domain/changed(domain === 'workspace' && table === 'workspaces' && operation === 'put'),对新工作区根目录执行 git init -b main。
- 启动时:对启动前已注册的工作区做一次同样的扫描(可用 sweepExisting: false 关掉)。
- 默认补一个空提交(git commit --allow-empty):仓库在「未出生 HEAD」状态下 git rev-parse --abbrev-ref HEAD 会失败,分支胶囊会退化成显示 detached;有首个提交才有正常分支名。不会把任何现有文件纳入提交,不会写 .gitignore,不碰远程。
- 不会嵌套仓库:先探测 git rev-parse --is-inside-work-tree,已在某个工作树内(父目录已是仓库、或本身就是 git worktree 检出)就跳过。
- 幂等:同一路径在一个 host 进程内只处理一次;已存在的仓库一律跳过。

配置

安装后由 profile 的 bundle patch(cordis.patch.yml)提供行配置,改完重启 dsh web 生效:

| 字段 | 默认 | 含义 |
| enabled | true | 总开关,false 时插件什么都不装 |
| branch | main | 初始分支名(git init -b <branch>,老版本 git 回退到 git symbolic-ref) |
| initialCommit | true | 是否补一个空提交(关闭则新仓库分支名可能显示为 detached) |
| sweepExisting | true | 是否也处理已注册的工作区;false 则只处理以后新注册的 |
| timeoutMs | 30000 | 每条 git 命令的超时 |

安装

从 GitHub 安装(推荐):

dsh plugin --profile web add github:zhitiaojun/dsh-auto-git

或在 DSH 插件市场 / 目录站 里搜 dsh-auto-git 点安装。

本仓库的包没有 prepare/构建脚本,github: 安装不需要往 profile 的 pnpm-workspace.yaml 的 allowBuilds 里加任何 key。

本地开发用 link: 指向 checkout:

dsh plugin --profile web add link:D:/Project/1/dsh-auto-git

link: 指向本地目录(用正斜杠),改代码后重启即生效,无需重装。两种方式都必须重启 dsh web 才会装进 host 进程。

验证

1. 不进 DSH 也能验证核心行为:

node D:\Project\1\dsh-auto-git\test\smoke.mjs

它会用真实 git 在临时目录里跑:新建仓库、二次调用幂等、跳过已在工作树内的目录、自定义分支名、不建提交的模式、以及 apply() 的 boot 扫描 / domain/changed 钩子 / enabled:false / sweepExisting:false。

2. 安装后:~/.dsh/profiles/web/.dsh-market/log.ndjson 应有该包的 install 与随后的 restart 记录。

3. 运行时:host 日志里出现 auto-git: initialized: <path>;或选一个新目录加入工作区,随后

git -C <新目录> log --oneline # 应看到 chore: initial commit

4. 端到端(可选):在空白会话里看分支胶囊是否出现(host 侧 SSE 每 30s 推送一次工作区状态,或切走窗口再切回来触发 focus 刷新)。

卸载

dsh plugin --profile web remove dsh-auto-git

卸载只移除插件,不会回滚已经建好的仓库。

安装前须知

sweepExisting 默认 true:装上并重启后,当前所有还不是仓库的已注册工作区都会被 git init(本机当时为 D:\Project\1、D:\Project、D:\Project\控制、D:\Project\我就要洗衣、D:\Project\race、D:\Project\race\before、D:\Project\race\nerv)。如果只想影响以后新建的工作区,把 cordis.patch.yml 里的 sweepExisting 改成 false。

实现要点

- 纯 host 侧插件,无 dsh.client 声明 → 不向浏览器贡献任何代码。
- 零运行时依赖:只用 node:child_process / node:fs/promises。
- 包根声明 dsh.bundle.patch,profile 组合时把 auto-git-init 这一行插进插件树(与 git-graph 等社区 bundle 同机制)。
- 用 ctx.inject(['workspaceRegistry'], scope => …) 拿服务、scope.effect(...) 管生命周期、scope.on('domain/changed', ...) 挂在工作区表的写入事件上。
预览分享卡片长什么样 ↓zhitiaojun/dsh-auto-git
分享 · DeepSeek Harness Hub
zhitiaojun/dsh-auto-git

为新注册的工作区自动初始化 Git 仓库并补空提交

回到顶部