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

提交前检查 feely0208/dsh-git-guard

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

在提交前拦截密钥、大文件与调试残留

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

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

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

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
dsh 原生插件 · security
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 9 天前
档位由哪些信号合成

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

可执行外部命令读写/删除本地文件
查看扫描证据(共 38 处,展示前 14 条)
  • 读取本地文件
    bin/cli.mjs:26
    const PKG = JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf-8'));
  • 执行外部命令固定命令
    bin/cli.mjs:65
    return execFileSync('git', ['-C', root, ...args], {
  • 读取本地文件
    bin/cli.mjs:105
    const st = statSync(file);
  • 读取本地文件
    bin/cli.mjs:107
    return decodeText(readFileSync(file));
  • 读取本地文件
    bin/cli.mjs:162
    try { ents = readdirSync(dir, { withFileTypes: true }); } catch { return; }
  • 读取本地文件
    bin/cli.mjs:185
    try { return statSync(join(root, rel)).size; } catch { return 0; }
  • 写入本地文件
    bin/cli.mjs:523
    mkdirSync(dirname(resolve(target)), { recursive: true });
  • 写入本地文件
    bin/cli.mjs:524
    writeFileSync(target, content, 'utf-8');
  • 读取本地文件
    bin/cli.mjs:536
    if (!existsSync(root)) throw usageError(`路径不存在:${root}`);
  • 写入本地文件
    bin/cli.mjs:635
    mkdirSync(hookDir, { recursive: true });
  • 写入本地文件
    bin/cli.mjs:642
    copyFileSync(hookPath, backup);
  • 写入本地文件
    bin/cli.mjs:654
    writeFileSync(hookPath, body, 'utf-8');
  • 写入本地文件
    bin/cli.mjs:655
    chmodSync(hookPath, 0o755);
  • 执行外部命令固定命令
    bin/cli.mjs:708
    execFileSync('git', ['-C', root, ...args], { stdio: 'ignore' });
扫描于 2026/11/1(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-skill
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

Git 提交前检查:密钥 / 大文件 / 冲突标记 / 调试残留 / commit 信息规范,可挂 pre-commit

README

由 DeepSeek 最新模型翻译生成
@deepwhale-cn/dsh-git-guard Listed on dsh-plugin.org Git 提交前检查:把「密钥进仓库」「5MB 大文件」「冲突标记」「调试残留」「被跟踪的 .env」「不规范的 commit message」拦在 commit 之前。 关键词:Git 提交前检查 · pre-commit hook · 密钥扫描 · 大文件 · 冲突标记 · 调试残留 · commit message 规范 · git hook · CI 卡口 Keywords: git pre-commit hook · secret scan · commitlint · large file · merge conflict marker · debugger residue 不装会怎样 密钥写进源码、.env 被 git add . 顺手带上、5MB 视频进了仓库、<<<<<<< HEAD 忘了删、console.log 和 debugger 留在生产代码里 —— 这些问题的共同点是:提交那一刻没人拦,事后清理成本极高(密钥要作废轮换、大文件要重写历史、冲突标记直接把线上搞崩)。这个插件就是提交前最后一道闸。
展开完整文档(README 剩余 1 节)
@deepwhale-cn/dsh-git-guard

Listed on dsh-plugin.org

Git 提交前检查:把「密钥进仓库」「5MB 大文件」「冲突标记」「调试残留」「被跟踪的 .env」「不规范的 commit message」拦在 commit 之前。

关键词:Git 提交前检查 · pre-commit hook · 密钥扫描 · 大文件 · 冲突标记 · 调试残留 · commit message 规范 · git hook · CI 卡口 Keywords: git pre-commit hook · secret scan · commitlint · large file · merge conflict marker · debugger residue

不装会怎样

密钥写进源码、.env 被 git add . 顺手带上、5MB 视频进了仓库、<<<<<<< HEAD 忘了删、console.log 和 debugger 留在生产代码里 —— 这些问题的共同点是:提交那一刻没人拦,事后清理成本极高(密钥要作废轮换、大文件要重写历史、冲突标记直接把线上搞崩)。这个插件就是提交前最后一道闸。

能做什么

- scan:扫工作区 / 暂存区,报告六类问题:
- 疑似密钥 token(AWS / GitHub / Slack / Stripe / Google / 通用 api_key=...)
- 私钥文件(-----BEGIN ... PRIVATE KEY-----)
- 超过 5MB 的大文件(默认阈值,可用 --max-size 调整)
- 残留合并冲突标记(<<<<<<< / ======= / >>>>>>>)
- 调试残留(debugger、console.log / console.debug,按警告处理)
- 被 Git 跟踪的 .env(.env.example / .env.sample 等不算)
- msg:校验 commit message 是否符合 type(scope): subject 约定(type 白名单、标题 ≤72 字、标题与正文之间空一行、subject 不以句号结尾等;Merge / Revert / fixup! 自动豁免)。
- precommit:组合 staged 扫描 + message 校验,有问题退出 1,可直接挂 git hook;precommit install 一键写入 .git/hooks/pre-commit(原 hook 自动备份为 .bak)。
- 两种输出:终端里给人看的分组报告;--json 给 CI;--out 额外写一份 Markdown 报告。
- --demo:自造一个临时 Git 仓库(密钥均为伪造值),把六类问题 + message 校验整套跑一遍,打印产物路径。

不能做什么

- ❌ 不扫历史提交:只检查当前工作区 / 暂存区,已经提交过的密钥请另行轮换并用 git filter-repo 等工具处理历史。
- ❌ 不是完整秘密扫描器:没做熵值检测、不覆盖所有厂商的 token 格式;正则命中是提示,需要人确认,不是「安全/不安全」判定。
- ❌ 不管理 hook:只写 .git/hooks/pre-commit(会备份原文件),不接管 husky / lefthook 等工具;团队流水线请按自己的编排接入。
- ❌ message 规则是常见子集:Conventional Commits 的常见 type 集合,团队自定义 type / 模板需自行扩展代码。
- ❌ console.log 只算警告:默认不拦截(--strict 可把警告也当错误);也不分辨日志是否在测试文件里。
- ❌ 不自动迁移大文件:只报出来,不会执行 Git LFS 或重写历史。
- ⚠️ 需要本机装 Git;纯 Node ESM,不联网、不装依赖。
- ⚠️ 挂 pre-commit 的前提:当前目录是已 git init 的仓库(hook 写入 .git/hooks/);在非 git 目录装插件不会自动生效,先 git init 或按 precommit install 提示操作。

安装

dsh plugin --profile web add @deepwhale-cn/dsh-git-guard
或纯 CLI
npx @deepwhale-cn/dsh-git-guard --help

用法

dsh-git-guard scan # 扫当前仓库(工作区 + 暂存区) dsh-git-guard scan staged --input <目录> # 只看暂存区 dsh-git-guard scan --json # 给 CI dsh-git-guard msg --message "feat(api): 支持批量导出" dsh-git-guard precommit --input <目录> # 退出码 1 = 拦下提交 dsh-git-guard precommit install --input <目录> dsh-git-guard --demo

挂进 git hook 后,每次 git commit 前自动跑 precommit;退出码 1 会阻止提交。
确实需要跳过时用 git commit --no-verify(不建议)。

License

MIT © 温州深鲸智能科技有限公司
预览分享卡片长什么样 ↓feely0208/dsh-git-guard
分享 · DeepSeek Harness Hub
feely0208/dsh-git-guard

在提交前拦截密钥、大文件与调试残留

回到顶部