AI乱删代码?一个命令给编码助手装上“安全刹车”
😱痛点:你的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—— 永久删除一个 stashgit stash clear—— 永久删除所有 stash
文件系统类:
rm -rf(在/tmp、/var/tmp、$TMPDIR之外)—— 危险递归删除
Windows 原生(PowerShell 安装时默认开启):
del /s、rd /s、Remove-Item -Recurse -Force、format、vssadmin delete shadows
✅ 它放行的安全命令(静默通过)
git status、git log、git diff、git add、git commit、git push、git pull、git fetchgit branch -d(带合并检查的安全删除)、git stash、git stash pop、git stash listgit checkout -b <branch>—— 创建新分支
🔍对比:dcg vs 传统方案
很多人会说:“AI 助手不是会问我确认吗?”——确实会问,但 “问一下”和“真的拦住”是两码事。来看这张表:
| 对比维度 | dcg 方案 | AI 自带确认弹窗 |
|---|---|---|
| 拦截时机 | ||
| 拦截方式 | 硬拦截 | 软提醒 |
| 白名单机制 | ||
| 代理识别 | ||
| 误报处理 | ||
| 性能开销 |
👍 优点(为什么值得装)
省心:装一次,所有 AI 编码助手自动受保护
省时间:不用每次都盯着 AI 敲了什么命令,不用手忙脚乱地 Ctrl+C
零打扰:安全命令静默放行,只有危险命令才拦截
完全免费:MIT 协议,随便用
👎 缺点(需要注意的地方)
Windows 需 WSL:原生 Windows 支持 PowerShell 安装,但部分功能依赖 WSL
早期项目:还在快速迭代中,个别边界情况可能漏拦或误拦
不是万能药:它拦截的是已知的危险模式,新型攻击手法可能绕过[reference:31]
🤖支持哪些 AI 编码助手?
dcg 支持的代理列表相当全面:
| 代理 | 支持方式 |
|---|---|
dcg install --agy | |
📦安装步骤:一行命令搞定
支持 Linux、macOS 和 Windows(通过 WSL)。
Linux / macOS / WSL
这个命令会:自动检测你的平台 → 下载对应二进制 → 配置所有检测到的 AI 代理钩子[reference:47]。
Windows(原生 PowerShell)
会安装原生 dcg.exe,验证 SHA256 校验和,添加到用户 PATH,运行自测,并配置检测到的代理钩子。
从源码编译(高级用户)
需要 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-execprovisioners)
这样,每次 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
夜雨聆风