乐于分享
好东西不私藏

AI乱删代码?一个命令给编码助手装上“安全刹车”

AI乱删代码?一个命令给编码助手装上“安全刹车”

AI乱删代码?一个命令给编码助手装上“安全刹车”

▸ Destructive Command Guard 深度评测:让 Claude Code / Cursor 告别“手滑”

😱痛点:你的AI编码助手,可能正在“拆家”

用 Claude Code、Cursor 这些 AI 编码助手写代码,最怕什么?不是它写不出代码,是它“太勤快”了

你让它“清理一下构建产物”,它可能直接给你来个 rm -rf ./src(手滑打错路径);你让它“回滚到上次提交”,它可能直接 git reset --hard(未提交的改动全部蒸发);你让它“处理一下未跟踪的文件”,它可能 git clean -fd(永久删除未跟踪文件)。

AI 编码助手很强大,但也很“莽”——它们不区分“我想删什么”和“我该删什么”。等你反应过来,几个小时的工作已经没了。你问我备份?——真到了那一步,备份也救不了你被覆盖的提交历史


🎯工具定位:Destructive Command Guard 是什么?

Destructive Command Guard(简称 dcg)是一个高性能的“安全钩子”,专门拦截 AI 编码助手执行的破坏性命令[reference:1]。

一句话概括:它不是一个“命令黑名单”,而是一个白名单优先的智能防护层——安全命令静默放行,危险命令直接拦截并给出明确解释。就像给你的 AI 编码助手装了一个“刹车”,在它踩油门冲下悬崖之前一把拉住。

项目采用 MIT 协议,完全开源免费。今天(7月16日)仍在 GitHub Trending 热榜上,属于持续升温的 AI 安全工具。[reference:4]


⚙️核心功能:它到底拦什么?

dcg 的核心逻辑很简单:安全命令直接过,危险命令直接拦。它用 Rust 编写,配合 SIMD 加速过滤,延迟控制在 亚毫秒级[reference:5]。

🚫 它拦截的破坏性命令

Git 类(销毁未提交的改动):

  • git reset --hard —— 销毁所有未提交的改动

  • git reset --merge —— 销毁未提交的改动

  • git checkout -- <file> —— 丢弃文件修改

  • git restore <file>(不带 --staged)—— 丢弃未提交的改动

  • git clean -f —— 永久删除未跟踪文件

Git 类(销毁远程历史):

  • git push --force / -f —— 覆盖远程提交

  • git branch -D —— 强制删除分支(不检查合并状态)

Git 类(销毁 stash):

  • git stash drop —— 永久删除一个 stash

  • git stash clear —— 永久删除所有 stash

文件系统类:

  • rm -rf(在 /tmp/var/tmp$TMPDIR 之外)—— 危险递归删除

Windows 原生(PowerShell 安装时默认开启):

  • del /srd /sRemove-Item -Recurse -Forceformatvssadmin delete shadows

✅ 它放行的安全命令(静默通过)

  • git statusgit loggit diffgit addgit commitgit pushgit pullgit fetch

  • git branch -d(带合并检查的安全删除)、git stashgit stash popgit stash list

  • git checkout -b <branch> —— 创建新分支


🔍对比:dcg vs 传统方案

很多人会说:“AI 助手不是会问我确认吗?”——确实会问,但 “问一下”和“真的拦住”是两码事。来看这张表:

对比维度dcg 方案AI 自带确认弹窗
拦截时机
命令执行之前,PreToolUse 阶段[reference:21]
执行之后才问,有时已经晚了
拦截方式硬拦截
——危险命令根本跑不起来
软提醒
——用户可能点错“确认”
白名单机制
安全命令静默放行,零打扰
每次都弹窗,烦不烦?
代理识别
可识别不同代理,差异化信任级别
一视同仁,无法精细化配置
误报处理
可配置 allowlist,灵活调整
要么全放行,要么全拦截
性能开销
Rust + SIMD,亚毫秒级[reference:26]
无额外开销(但也无保护)

👍 优点(为什么值得装)

  • 省心:装一次,所有 AI 编码助手自动受保护

  • 省时间:不用每次都盯着 AI 敲了什么命令,不用手忙脚乱地 Ctrl+C

  • 零打扰:安全命令静默放行,只有危险命令才拦截

  • 完全免费:MIT 协议,随便用

👎 缺点(需要注意的地方)

  • Windows 需 WSL:原生 Windows 支持 PowerShell 安装,但部分功能依赖 WSL

  • 早期项目:还在快速迭代中,个别边界情况可能漏拦或误拦

  • 不是万能药:它拦截的是已知的危险模式,新型攻击手法可能绕过[reference:31]


🤖支持哪些 AI 编码助手?

dcg 支持的代理列表相当全面:

代理支持方式
Claude Code
原生支持(PreToolUse hook)
Codex CLI
原生支持
Gemini CLI
原生支持
GitHub Copilot CLI
原生支持
Cursor IDE
原生支持
Hermes Agent
原生支持
Grok (xAI)
原生支持
Antigravity CLI (agy)
dcg install --agy
OpenCode
社区插件
Pi
扩展方式
Aider
有限支持(仅 git hooks)
Continue
仅检测

📦安装步骤:一行命令搞定

支持 Linux、macOS 和 Windows(通过 WSL)。

Linux / macOS / WSL

curl -fsSL "https://raw.githubusercontent.com/Dicklesworthstone/destructive_command_guard/main/install.sh?$(date +%s)" | bash -s -- --easy-mode

这个命令会:自动检测你的平台 → 下载对应二进制 → 配置所有检测到的 AI 代理钩子[reference:47]。

Windows(原生 PowerShell)

& ([scriptblock]::Create((irm "https://raw.githubusercontent.com/Dicklesworthstone/destructive_command_guard/main/install.ps1"))) -EasyMode -Verify

会安装原生 dcg.exe,验证 SHA256 校验和,添加到用户 PATH,运行自测,并配置检测到的代理钩子。

从源码编译(高级用户)

cargo +nightly install --git https://github.com/Dicklesworthstone/destructive_command_guard

需要 Rust nightly 工具链[reference:50]。


🧪实操演示:装之前 vs 装之后

装之前:AI 说删就删

你用 Claude Code 说“清理一下构建产物”,它理解成 rm -rf ./src(别笑,真发生过)。等你反应过来,src 目录已经没了

或者你说“回滚到上次提交”,它直接 git reset --hard,你写了一半的代码直接蒸发。

装之后:危险命令被拦截

AI 尝试执行 rm -rf ./src 时,dcg 会:

  • 拦截命令——根本不让它执行

  • 给出明确解释——“rm -rf 在 /tmp 之外是危险操作”

  • 给你机会——先 stash 你的改动,再手动执行

关键差异:装之前,AI 是“先斩后奏”;装之后,AI 是“先问再干”——而且这个“问”不是弹窗让你点确认,而是硬拦截,危险命令根本跑不起来。


🚀进阶功能:不止是“拦截”

1. 代理级信任配置

dcg 可以识别是哪个 AI 代理在调用它,并对不同代理应用不同的信任级别和配置覆盖。比如:

  • 对你信任的代理(如 Claude Code),可以放宽一些规则

  • 对不熟悉的代理,启用更严格的检查

2. 自定义规则包(Custom Packs)

你可以创建外部 YAML 包来定义组织特定的安全策略,而无需修改 dcg 二进制文件[reference:57]。

3. Pre-commit 扫描(dcg scan)

除了实时拦截,dcg 还提供了 dcg scan 命令,可以在 commit 之前扫描文件中的危险命令。支持扫描:

  • GitHub Actions 工作流(.github/workflows/*.yml

  • Dockerfile(RUN 命令)

  • Shell 脚本(*.sh*.bash

  • Makefile

  • GitLab CI(.gitlab-ci.yml

  • Terraform(local-exec provisioners)

# 进入你的 git 仓库cd /path/to/your/repo# 安装 pre-commit hookdcg scan install-pre-commit

这样,每次 commit 之前都会自动扫描,把危险命令挡在仓库门外


⚠️避坑指南

1. 先测试再上生产建议先在测试项目里跑一跑,确认不会误拦你的正常构建命令。

2. 善用 allowlist如果某个命令被误拦了,可以用 dcg explain "<command>" 查看为什么被拦,然后添加到 allowlist。

3. Windows 用户注意原生 Windows 支持 PowerShell 安装,但部分功能依赖 WSL。建议在 WSL 环境下使用以获得最佳体验。

4. 它不是万能的dcg 拦截的是已知的危险模式。新型攻击手法或高度混淆的命令可能绕过检测[reference:68]。保持警惕,不要完全依赖自动化工具。

5. 分阶段 rollout官方建议先在“观察模式”下运行 1-2 周,收集误报反馈,再逐步扩大扫描范围。


总结

谁适合用 dcg?

  • 任何在用 AI 编码助手的人——Claude Code、Cursor、Codex、Copilot……只要你让 AI 替你跑命令,你就需要它

  • 团队协作场景——防止 AI 误操作影响共享仓库

  • 对代码安全有要求的人——不想因为 AI 的一个“手滑”丢掉几小时的工作

核心价值:一行命令安装,亚毫秒级拦截,安全命令零打扰——给你的 AI 编码助手装上“安全刹车”,让它放心跑,你安心写

🔗 项目地址:github.com/Dicklesworthstone/destructive_command_guard