技术热点落地:dcg——给 AI Agent 套上命令安全护盾(2026-07-13)
技术热点落地:dcg——给 AI Agent 套上命令安全护盾
热点来源:2026年7月13日,
destructive_command_guard(dcg)以 3,576+ 星 登顶 GitHub Trending。它是一款用 Rust 编写的高性能 Hook,在 AI 编码 Agent 执行危险命令之前将其拦截——适用于 Claude Code、Codex CLI、Gemini CLI、Copilot CLI、Cursor、Hermes Agent、Grok 等主流工具。
一、适用场景与目标
这个工具解决了什么问题?
AI 编码 Agent 正在变得非常强大——它们能跑终端命令、改文件、操作数据库,甚至可以部署基础设施。但代价是:Agent 偶尔会执行毁灭性命令,几秒钟就能毁掉数小时未提交的工作。
真实场景举例:
| 场景 | Agent 执行的命令 | 后果 |
|---|---|---|
| Git 误操作 | git reset --hard HEAD~10 | 10 个提交的未推送工作丢失 |
| 文件误删 | rm -rf ./src | 整个源码目录被清空 |
| 数据库误操作 | DROP TABLE users | 生产数据丢失 |
| Docker 误清理 | docker system prune -a --volumes | 所有未使用镜像/卷被删除 |
| 云资源误删 | aws ec2 terminate-instances --instance-ids i-* | 生产实例被关停 |
dcg 就是为此而生——在 Agent 执行这些命令 之前 拦截并阻止,同时给出清晰的解释和安全替代方案。
适用人群
| 角色 | 价值点 |
|---|---|
| 深度使用 AI 编码 Agent 的开发者 | 防止 Agent 误操作破坏工作区 |
| DevOps / SRE | 保护生产环境的 kubectl/terraform 操作 |
| 平台工程团队 | 作为团队安全基线配置的一部分 |
| 任何使用 Claude Code/Codex/Cursor 的人 | 零配置即可获得开箱即用的保护 |
二、最小可行方案(MVP)步骤
前提条件
- macOS / Linux / Windows(WSL 或原生 Windows)
- 已安装任意 AI 编码 Agent(Claude Code、Codex CLI、Cursor、Copilot CLI 等)
步骤 1:一键安装
# macOS / Linux(推荐)
curl -fsSL "https://raw.githubusercontent.com/Dicklesworthstone/destructive_command_guard/main/install.sh?$(date +%s)" | bash -s -- --easy-mode
# Windows 原生(PowerShell)
& ([scriptblock]::Create((irm "https://raw.githubusercontent.com/Dicklesworthstone/destructive_command_guard/main/install.ps1"))) -EasyMode -Verify
--easy-mode 会:
- 自动检测平台,下载对应二进制
- 写入 PATH(无需手动配置)
- 自动检测并配置已安装的 AI Agent(Claude Code、Codex、Gemini CLI、Copilot CLI 等)
- 运行自测验证
步骤 2:验证安装
# 检查 dcg 是否可用
dcg --version
# 测试拦截效果——Agent 执行一个危险命令试试
dcg explain "git reset --hard HEAD~5"
# 应该输出:BLOCKED + 原因说明
# 查看当前启用的安全包
dcg packs --verbose
步骤 3:初始化配置文件(可选但推荐)
dcg init
# 生成 ~/.config/dcg/config.toml 供你编辑
步骤 4:测试 Agent 拦截
启动你的 AI Agent 并尝试让它运行一个危险命令:
“帮我执行
git reset --hard HEAD~5”
正常情况下,dcg 会拦截并输出:
════════════════════════════════════════════════════════════════
BLOCKED dcg
────────────────────────────────────────────────────────────────
Reason: git reset --hard destroys uncommitted changes
Command: git reset --hard HEAD~5
Tip: Consider using 'git stash' first to save your changes.
════════════════════════════════════════════════════════════════
步骤 5:启用更多安全包
# ~/.config/dcg/config.toml
[packs]
enabled = [
# 数据库保护
"database.postgresql", # 拦截 DROP TABLE, TRUNCATE
"database.mysql",
"database.redis", # 拦截 FLUSHALL, FLUSHDB
"database.mongodb",
# 容器与编排
"containers.docker", # 拦截 docker system prune -a
"kubernetes.kubectl", # 拦截 kubectl delete namespace
# 云服务
"cloud.aws", # 拦截 aws ec2 terminate-instances
"cloud.gcp", # 拦截 gcloud instances delete
"cloud.azure",
# 基础设施
"infrastructure.terraform", # 拦截 terraform destroy -auto-approve
"infrastructure.pulumi",
# 密码管理
"secrets.vault",
"secrets.aws_secrets",
# CI/CD
"cicd.github_actions",
"cicd.gitlab_ci",
# 消息队列
"messaging.kafka",
"messaging.rabbitmq",
# 搜索
"search.elasticsearch",
]
三、关键实现细节
架构原理
dcg 的核心架构是三层:
AI Agent (Claude Code / Codex / ...)
│
│ Hook 调用(PreToolUse / PostToolUse)
▼
┌─────────────────────────────────────┐
│ 第一层:Bypass 检查 │
│ DCG_BYPASS=1 / allow-once code │
└──────────┬──────────────────────────┘
▼ (通过则放行)
┌─────────────────────────────────────┐
│ 第二层:SIMD 加速的命令匹配 │
│ - 50+ 安全包,数千条规则 │
│ - 延迟 < 1ms │
│ - 正则预编译 + SIMD 字符串比较 │
└──────────┬──────────────────────────┘
▼ (匹配到规则则进入第三层)
┌─────────────────────────────────────┐
│ 第三层:上下文分类 + 白名单检查 │
│ - 区分"数据中的危险命令"和"执行中" │
│ - 检查命令路径/目录是否在白名单 │
│ - 输出格式化的拒绝信息 (stdout+stderr)│
└─────────────────────────────────────┘
关键特性深度解析
1. Heredoc/内联脚本扫描
这是 dcg 区别于简单命令拦截的核心特性。很多 Agent 会通过 python -c、bash -c、heredoc 等方式嵌入危险操作:
# Agent 试图在 Python 代码中执行删除
python -c "import shutil; shutil.rmtree('/data')"
# dcg 会解析字符串内容,检测到 rmtree 并拦截
dcg 的扫描器会递归分析脚本内容,即使危险操作嵌在引号字符串内部也能发现。
2. Agent 感知配置
dcg 能自动识别调用它的 AI Agent,并为不同 Agent 设置不同的信任级别:
# Claude Code — 信任度较高,放宽白名单
[agents.claude-code]
trust_level = "high"
additional_allowlist = ["npm run build", "cargo test"]
disabled_packs = ["kubernetes"]
# 未识别的 Agent — 严格模式
[agents.unknown]
trust_level = "low"
extra_packs = ["paranoid"]
disabled_allowlist = true
3. Fail-Open 设计
dcg 遵循 永远不因自身故障阻塞工作流 的原则。如果解析出错、超时、或者配置损坏,dcg 会放行命令而不是拦截,确保你不会因为安全工具本身而卡住工作。
4. 逃逸通道
有时你真的需要执行一个被拦截的命令——dcg 提供了多层逃逸机制:
| 方法 | 范围 | 用法 |
|---|---|---|
| 环境变量 | 单次命令 | DCG_BYPASS=1 <command> |
| Allow-once 码 | 单次命令 | 从拦截信息中复制代码,运行 dcg allow-once <code> |
| 永久白名单 | 特定规则/命令 | dcg allowlist add core.git:reset-hard -r "有备份的情况下" |
| 移除 Hook | 全局 | 删除 Agent 配置中的 dcg 入口 |
四、常见坑与规避清单
⚠️ 坑 1:安装后 Agent 不生效
表现:dcg 安装成功,但 Agent 仍然能执行危险命令。
原因:dcg 通过 Agent 的 Hook 机制工作——不同的 Agent 配置位置不同。
规避:
- ✅ 安装后重启 AI Agent(完全退出再启动)
- ✅ 运行
dcg --version确认二进制存在 - ✅ 检查 Agent 配置中是否有了 dcg 的 Hook 条目
- Claude Code:
~/.claude/settings.json的hooks字段 - Codex CLI:
~/.codex/hooks.json - VS Code Copilot:
~/.copilot/hooks/
- Claude Code:
- ✅ 运行
dcg explain "git reset --hard HEAD"手动测试
⚠️ 坑 2:误拦截合法的 CI/CD 命令
表现:在 CI 流水线中,dcg 拦截了 docker system prune 或 npm run build -- --production 等合法操作。
规避:
- ✅ 在 CI 环境中设置
DCG_BYPASS=1环境变量(适用于专用的 CI 运行器) - ✅ 使用
dcg allowlist add添加特定命令到白名单 - ✅ 创建项目级别的
.dcg/配置,包含 CI 需要的白名单
⚠️ 坑 3:性能担忧——Hook 延迟
表现:担心 dcg 的 SIMD 匹配会减慢 Agent 的反应速度。
结果:实际上 dcg 的延迟 <1ms,远低于网络延迟(API 调用通常 500ms-5s)。
规避:
- ✅ 安装后通过
time dcg explain "pwd"自行测试 - ✅ 如果仍有顾虑,只启用你真正需要的安全包
⚠️ 坑 4:自定义工具/脚本无法触发 dcg
表现:你用自己写的 Python 脚本调用系统命令,dcg 没有拦截。
原因:dcg 通过 Agent 的 Hook 接口工作——只有 Agent 发起的命令会被检测。手动终端操作不经过 Hook。
规避:
- ✅ 这是设计使然——dcg 只保护 Agent 操作,不影响你的正常工作流
- ✅ 如果想在 CI 中扫描代码中的危险命令,使用
dcg scan模式
⚠️ 坑 5:Windows 路径和 PowerShell 兼容
表现:Windows 上某些命令没有被拦截,或者路径格式导致误判。
规避:
- ✅ 安装时使用 PowerShell 安装脚本(
install.ps1),获得原生 dcg.exe - ✅ Windows 默认启用
windows.filesystem和windows.system两个包 - ✅ 启用
windows.misc和windows.powershell包获得更全面的保护 - ✅ 使用 WSL2 可以获得与 Linux 一致的行为
五、成本 / 性能 / 维护权衡
| 维度 | 评估 |
|---|---|
| 成本 | 完全免费开源(MIT 协议);Rust 静态编译,无运行时依赖 |
| 性能 | SIMD 加速 <1ms/次;对 Agent 响应速度的影响可忽略不计 |
| 维护 | 二进制自包含,无需更新运行时;规则包随项目更新;定期 dcg self-update |
| 安全 | Fail-Open 设计确保不阻塞工作流;多层逃逸机制防止被锁死 |
| 覆盖率 | 50+ 安全包覆盖 Git、数据库、K8s、云平台、CI/CD 等主流场景 |
横向对比
| 方案 | 优势 | 劣势 |
|---|---|---|
| dcg | 50+ 安全包、SIMD 加速、Agent 感知、多平台 | 仅保护 Agent 操作(这也是设计目标) |
| 自定义 Shell Aliases | 简单直接 | 只在交互式 shell 生效,Agent 绕过 |
| Git Hooks(pre-commit) | Git 操作覆盖好 | 只保护 git,不保护 rm/docker/kubectl |
| 容器沙箱 | 完全隔离 | 配置复杂,影响正常开发体验 |
| 什么都不做 | 零开销 | 一次 Agent 误操作损失难以估量 |
六、一周内可执行行动清单
| 天次 | 任务 | 预期产出 |
|---|---|---|
| Day 1 | 一键安装 dcg:curl ... | bash -s -- --easy-mode | 安装成功,dcg 可运行 |
| Day 1 | 自测验证:让 Agent 执行 git reset --hard HEAD | 看到拦截面板输出 |
| Day 2 | 运行 dcg init 生成配置文件,了解默认启用的 3 个核心包 | ~/.config/dcg/config.toml |
| Day 2 | 启用 5 个常用包:PostgreSQL、Docker、AWS、kubectl、Terraform | 配置写入 config.toml |
| Day 3 | 按 Agent 设置信任级别:Claude Code 放松、未知 Agent 收紧 | agents 配置完成 |
| Day 4 | 正常使用 AI Agent 开发一周,观察拦截记录 | 积累实际拦截数据 |
| Day 5 | 审查 dcg 日志(~/.config/dcg/logs/),调整白名单 | 定制化安全配置 |
| Day 6 | 创建团队共享的安全包配置模板,纳入项目仓库 | .dcg/config.toml 放入 VCS |
| Day 7 | 在 CI 中集成 dcg scan 扫描模式,检测代码中的危险命令 | CI 流水线安全门禁 |
参考链接
- GitHub 仓库 - destructive_command_guard
- GitHub Trending(2026-07-13)
- Claude Code Hooks 文档
- Codex CLI Hooks 文档
- VS Code Agent 自定义 Hook
- dcg Agent 集成文档
写在最后:随着 AI 编码 Agent 从”代码补全工具”进化为”自主开发助手”,安全问题从”可能性”变成了”必然性”。dcg 代表了一类新兴工具——Agent 安全基础设施。它的核心价值不在于”拦截”,而在于给你信心去信任 Agent 的自主操作能力。安装了 dcg 之后,你更敢让 Agent 去做复杂操作,因为你知道底线是安全的。这比你想象中有价值得多。
一句话:dcg 不是给你的工作加锁,而是给你的 Agent 松绑。