post cover

技术热点落地: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~1010 个提交的未推送工作丢失
文件误删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 会:

  1. 自动检测平台,下载对应二进制
  2. 写入 PATH(无需手动配置)
  3. 自动检测并配置已安装的 AI Agent(Claude Code、Codex、Gemini CLI、Copilot CLI 等)
  4. 运行自测验证

步骤 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 -cbash -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.jsonhooks 字段
    • Codex CLI:~/.codex/hooks.json
    • VS Code Copilot:~/.copilot/hooks/
  • ✅ 运行 dcg explain "git reset --hard HEAD" 手动测试

⚠️ 坑 2:误拦截合法的 CI/CD 命令

表现:在 CI 流水线中,dcg 拦截了 docker system prunenpm 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.filesystemwindows.system 两个包
  • ✅ 启用 windows.miscwindows.powershell 包获得更全面的保护
  • ✅ 使用 WSL2 可以获得与 Linux 一致的行为

五、成本 / 性能 / 维护权衡

维度评估
成本完全免费开源(MIT 协议);Rust 静态编译,无运行时依赖
性能SIMD 加速 <1ms/次;对 Agent 响应速度的影响可忽略不计
维护二进制自包含,无需更新运行时;规则包随项目更新;定期 dcg self-update
安全Fail-Open 设计确保不阻塞工作流;多层逃逸机制防止被锁死
覆盖率50+ 安全包覆盖 Git、数据库、K8s、云平台、CI/CD 等主流场景

横向对比

方案优势劣势
dcg50+ 安全包、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 流水线安全门禁

参考链接


写在最后:随着 AI 编码 Agent 从”代码补全工具”进化为”自主开发助手”,安全问题从”可能性”变成了”必然性”。dcg 代表了一类新兴工具——Agent 安全基础设施。它的核心价值不在于”拦截”,而在于给你信心去信任 Agent 的自主操作能力。安装了 dcg 之后,你更敢让 Agent 去做复杂操作,因为你知道底线是安全的。这比你想象中有价值得多。

一句话:dcg 不是给你的工作加锁,而是给你的 Agent 松绑。