以下是您要求的英文文章的中文翻译,已按照要求保留原文结构、技术术语和代码块,并输出为 Markdown 格式。
Dicklesworthstone destructive_command_guard
dcg (Destructive Command Guard) 一个高性能的钩子(hook),用于 AI 编码代理,在执行前拦截破坏性命令,保护您的工作免遭意外删除。支持 Claude Code、Codex CLI、Gemini CLI、Copilot CLI、VS Code Copilot Chat、Cursor、Hermes Agent、Grok (xAI) 及相关工具。 已支持:Claude Code、Codex CLI 0.125.0+、Gemini CLI、GitHub Copilot CLI、VS Code Copilot Chat、Cursor IDE、Hermes Agent、Grok (xAI)(原生 ~/.grok/hooks/ 及 Claude 兼容层)、Antigravity CLI (agy)(通过 dcg install --agy 使用原生 ~/.gemini/config/hooks.json)、OpenCode(通过社区插件)、Pi(通过扩展配方)、Aider(有限支持——仅 git 钩子)、Continue(仅检测)
快速安装
curl -fsSL "https://raw.githubusercontent.com/Dicklesworthstone/destructive_command_guard/main/install.sh?$(date +%s)" | bash -s -- --easy-mode
适用于 Linux、macOS 以及通过 WSL 运行的 Windows。自动检测您的平台,下载正确的二进制文件,并配置支持的代理钩子,包括 Claude Code、Codex CLI、Gemini CLI、GitHub Copilot CLI、VS Code Copilot Chat(通过 VS Code 的 Claude 钩子兼容性)、Cursor IDE、Hermes Agent 和 Grok (xAI)(通过 dcg install --grok 使用原生 ~/.grok/hooks/dcg.json,或通过 Grok 自动识别的 Claude 兼容层)。对于原生 Windows,请使用下面的 PowerShell 安装程序。
Windows(原生,PowerShell)
& ([scriptblock]::Create((irm "https://raw.githubusercontent.com/Dicklesworthstone/destructive_command_guard/main/install.ps1"))) -EasyMode -Verify
安装原生 dcg.exe,验证 SHA256 校验和(以及当 cosign 存在时的 Sigstore/cosign 签名),将其添加到您的用户 PATH(-EasyMode),运行自检(-Verify),并为检测到的代理钩子配置 Claude Code、Codex CLI、Gemini CLI、GitHub Copilot CLI、Cursor IDE 和 Hermes Agent。Copilot 在用户级别配置于 %COPILOT_HOME%\hooks(或 %USERPROFILE%\.copilot\hooks)下,因此每个工作区都受到保护。在 Windows 上,windows.filesystem 和 windows.system 包默认启用,因此 del /s、rd /s、Remove-Item -Recurse -Force、format 和 vssadmin delete shadows 开箱即被阻止。使用 -Version vX.Y.Z 固定版本。
TL;DR
问题:AI 编码代理(Claude、Codex、Gemini、Copilot 等)偶尔会运行灾难性命令,如 git reset --hard、rm -rf ./src 或 DROP TABLE users——在几秒钟内销毁数小时未提交的工作。 解决方案:dcg 是一个高性能钩子,在执行前拦截破坏性命令,并提供清晰的解释和更安全的替代方案。
为什么使用 dcg?
| 特性 | 功能 | |------|------| | 零配置保护 | 开箱即阻止危险的 git/文件系统命令 | | 50+ 安全包 | 数据库、Kubernetes、Docker、AWS/GCP/Azure、Terraform 等 | | 亚毫秒级延迟 | SIMD 加速过滤——您几乎感觉不到它的存在 | | Heredoc/内联脚本扫描 | 捕获 python -c "os.remove(...)" 和嵌入式 shell 脚本 | | 智能上下文检测 | 不会阻止 grep "rm -rf"(数据),但会阻止 rm -rf /(执行) | | 丰富的终端输出 | 在 stderr 上输出人类可读的拒绝面板、规则上下文和建议 | | 代理安全流 | 机器可读的钩子输出保留在 stdout,而丰富的 UI 保留在 stderr | | 原生 Codex 支持 | Codex CLI 0.125.0+ 接收最小的 stdout JSON 拒绝信息,当前客户端可靠地强制执行 | | 优雅降级 | 为 CI、管道、哑终端和无颜色环境提供纯文本输出 | | CI 扫描模式 | 预提交钩子和 CI 集成,用于在代码审查中捕获危险命令 | | 故障开放设计 | 绝不会因超时或解析错误而阻止您的工作流程 | | 解释模式 | dcg explain "command" 准确显示某条命令为何被阻止 |
快速示例
# AI 代理尝试运行:
$ 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.
════════════════════════════════════════════════════════════════
启用更多保护
# ~/.config/dcg/config.toml
[ packs ]
enabled = [
" database.postgresql ", # 阻止 DROP TABLE, TRUNCATE
" kubernetes.kubectl ", # 阻止 kubectl delete namespace
" cloud.aws ", # 阻止 aws ec2 terminate-instances
" containers.docker ", # 阻止 docker system prune
]
代理特定配置文件
dcg 会自动检测调用它的 AI 编码代理,并可以应用代理特定的配置。trust_level 字段是一个建议性标签,记录在 JSON 输出和日志中——它不会直接改变规则评估。行为差异来自其他配置文件字段:
| 选项 | 效果 | |------|------| | disabled_packs | 从评估中移除规则包 | | extra_packs | 向评估中添加规则包 | | additional_allowlist | 添加绕过拒绝规则的命令模式 | | disabled_allowlist | 当为 true 时,忽略所有允许列表条目 |
# 更信任 Claude Code —— 更宽的允许列表,更少的包
[ agents . claude-code ]
trust_level = " high "
additional_allowlist = [ " npm run build " , " cargo test " ]
disabled_packs = [ " kubernetes " ]
# 限制未知代理 —— 额外规则,不允许列表绕过
[ agents . unknown ]
trust_level = " low "
extra_packs = [ " strict_git " , " database " ] # 真实的包/类别 ID(参见 `dcg packs`)
disabled_allowlist = true
extra_packs / disabled_packs 使用与 [packs] enabled / disabled 相同的包和类别 ID——像 "database" 这样的类别 ID 会扩展为每个 database.* 子包。使用 dcg packs 或 docs/packs/README.md 中列出的 ID;"paranoid" 是一种毕业模式,而不是一个包,因此请启用真实的 strict_git 包以获得更严格的 git 规则。有关支持的代理、信任级别和配置选项的完整文档,请参阅 docs/agents.md。
Codex 支持
dcg 现在将 Codex CLI 视为一等钩子目标,而不仅仅是 Claude 形状的兼容路径。安装程序会检测 Codex CLI 并配置其原生钩子目录(~/.codex/hooks/),确保 Codex 用户获得与 Claude 用户相同的保护级别,而无需任何额外步骤。
如果您需要针对特定段落或术语的进一步调整,请随时告知。