destructivecommandguard
针对AI编码agent的防护工具,在agent执行危险git/shell命令前拦截并阻断,支持Claude Code、Codex、Gemini CLI、Cursor等主流agent。亮点是零配置即可生效,内置50+安全规则包覆盖数据库、K8s、云服务等场景,支持heredoc/inline脚本扫描和CI集成,性能极佳(亚毫秒级)。今日新增1295星,热度极高,适合避免AI agent误操作导致的数据丢失。
README
dcg (Destructive Command Guard - 破坏性命令防护)
一个高性能的 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
────────────────────────────────────────────────────────────────
原因: git reset --hard 销毁未提交的更改
命令: git reset --hard HEAD~5
提示: 考虑先使用 'git stash' 保存你的更改。
════════════════════════════════════════════════════════════════
启用更多保护
# ~/.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——类别 ID(如"database")会扩展到所有database.*子包。使用dcg packs或docs/packs/README.md中列出的 ID;"paranoid"是一个毕业模式,而不是一个包,所以请启用真实的strict_git包来获得更严格的 git 规则。
有关支持的代理、信任级别和配置选项的完整文档,请参阅 docs/agents.md。
Codex 支持
dcg 现在将 Codex CLI 视为一流的钩子目标,而不仅仅是 Claude 形状的兼容路径。安装程序在检测到 PATH 上有 codex 或存在 ~/.codex/ 目录时,会自动为 Codex CLI 0.125.0+ 进行配置。
| Codex 行为 | dcg 处理 |
|---|---|
| 钩子配置 | 合并一个 PreToolUse Bash 钩子到 ~/.codex/hooks.json |
| 拒绝的命令 | 退出码 0,在 stdout 上输出最小的 hookSpecificOutput 拒绝信息;人类警告留在 stderr |
| 允许的命令 | 退出码 0,stdout 和 stderr 均为空 |
| 已有钩子 | 保留共存的钩子,确保 dcg 排在 Bash 的第一位,并拒绝覆盖格式错误的 JSON |
| 验证 | 通过子进程协议测试以及可选的真实 Codex E2E 测试套件覆盖 |
Codex 的钩子输入有意接近 Claude Code 的钩子输入,但 Codex 拒绝钩子输出中的未知字段。dcg 从非空的 turn_id 字段检测 Codex 负载,并仅输出 Codex 文档化的拒绝字段,这样被阻止的命令报告为被阻止而不是钩子失败。有关协议细节、手动探测和故障排除,请参阅 docs/codex-integration.md。
起源与作者
该项目最初是 Jeffrey Emanuel 的一个 Python 脚本,他意识到 AI 编程代理虽然非常有用,但偶尔会运行灾难性命令,销毁数小时未提交的工作。原始实现是一个简单但有效的钩子,在执行之前拦截危险的 git 和文件系统命令。
- Jeffrey Emanuel - 原始概念和 Python 实现 (source);之后极大地扩展了 Rust 版本,增加了模块化包系统(50+ 安全包)、heredoc/内联脚本扫描、三层架构、上下文分类、允许列表、扫描模式和双正则引擎
- Darin Gordon - 初始 Rust 移植,包含性能优化
Darin 的初始 Rust 移植保持了与原始 Python 实现的模式兼容性,同时通过 SIMD 加速过滤和惰性编译的正则模式实现了亚毫秒级执行。Jeffrey 随后极大地扩展了 Rust 代码库,增加了上述功能。
逃生口 / 绕过
如果 dcg 阻止了你真正需要运行的命令:
| 方法 | 范围 | 如何操作 |
|---|---|---|
| 环境变量绕过 | 单条命令 | DCG_BYPASS=1 <command> |
| 一次允许码 | 单条命令 | 从阻止消息中复制短码,运行 dcg allow-once <code> |
| 永久允许列表 | 规则或命令 | dcg allowlist add core.git:reset-hard -r "reason" |
| 移除钩子 | 所有命令 | 删除或注释掉 ~/.claude/settings.json(或对应代理的等效文件)中的 dcg 条目 |
DCG_BYPASS=1 在该次调用中禁用所有保护。请谨慎使用,对于反复出现的需求,优先使用允许列表。
模块化包系统
dcg 使用模块化“包”系统按类别组织破坏性命令模式。包可以在配置文件中启用或禁用。
类别 ID 会扩展到其子包。 在 enabled 中列出裸类别会打开该类别下的每个包:enabled = ["database"] 激活 database.postgresql、database.mysql 以及该类别下的其他包。你仍然可以通过 disabled = ["database.redis"] 关闭单个子包。相同的扩展适用于代理配置文件的 extra_packs / disabled_packs。请始终使用来自 dcg packs / docs/packs/README.md 的真实包或类别 ID——像 "paranoid" 这样的名称是一个毕业模式,而不是一个包。
- 完整包 ID 索引:
docs/packs/README.md - 规范描述 + 模式计数:
dcg packs --verbose
默认启用(无配置文件)
没有配置文件时,dcg 仅启用那些防止最具灾难性、不可恢复错误的包:
core.filesystem- 临时目录外的危险rm -rf(始终启用;不可禁用)core.git- 破坏性 git 命令,会丢失未提交的工作、重写历史或销毁 stash (始终启用;不可禁用)system.disk-mkfs、dd到设备、fdisk、parted、mdadm、lvm移除、wipefs(默认开启;可以通过disabled = ["system.disk"]关闭)
在 Windows 上,额外两个包默认开启,因此新安装无需配置即可阻止灾难性的原生 Windows 操作:
windows.filesystem- cmddel /s、rd /s、format <drive>:和 PowerShellRemove-Item -Recurse -Force(以及别名)、Clear-Content、Clear-RecycleBin*(仅在 Windows 上默认开启;可以通过disabled = ["windows.filesystem"]或["windows"]关闭)*windows.system-vssadmin delete shadows/wmic shadowcopy delete(卷影复制销毁)、diskpart、Format-Volume、Clear-Disk、Remove-Partition、cipher /w、bcdedit /delete*(仅在 Windows 上默认开启;可以通过disabled = ["windows.system"]或["windows"]关闭)*
更广泛的 windows.misc(reg delete、net user /delete、wsl --unregister、robocopy /MIR)和 windows.powershell(注册表/提供程序删除、Remove-LocalUser、Disable-ComputerRestore、Remove-VM)包在所有平台上都是可选的。在 Unix 上,windows.* 包已注册但默认关闭;可以通过 [packs] enabled = ["windows"] 启用它们(例如,在 CI 中扫描已提交的 .ps1 / .cmd 脚本)。
每个其他包——包括 database.postgresql 和 containers.docker——都是可选的,在配置文件启用之前不会激活。运行 dcg init 会写入一个起始的 ~/.config/dcg/config.toml,其 [packs] enabled 列表默认开启了 database.postgresql 和 containers.docker 作为常见示例,但那是生成的起始配置,不是无配置的默认值。通过将其添加到 [packs] enabled 来启用下方的任何包——请参见启用更多保护。
存储包
storage.s3- 保护免受破坏性 S3 操作,如桶删除、递归删除和 sync --delete。storage.gcs- 保护免受破坏性 GCS 操作,如桶删除、对象删除和递归删除。storage.minio- 保护免受破坏性 MinIO Client (mc) 操作,如桶删除、对象删除和管理操作。storage.azure_blob- 保护免受破坏性 Azure Blob Storage 操作,如容器删除、blob 删除和 azcopy remove。
远程包
remote.rsync- 保护免受破坏性 rsync 操作,如 --delete 及其变体。remote.scp- 保护免受破坏性 SCP 操作,如覆盖系统路径。remote.ssh- 保护免受破坏性 SSH 操作,如远程命令执行和密钥管理。
数据库包
database.postgresql- 保护免受破坏性 PostgreSQL 操作,如 DROP DATABASE、TRUNCATE 和 dropdb。database.mysql- MySQL/MariaDB 防护。database.mongodb- 保护免受破坏性 MongoDB 操作,如 dropDatabase、dropCollection 和无条件删除。database.redis- 保护免受破坏性 Redis 操作,如 FLUSHALL、FLUSHDB 和大规模键删除。database.sqlite- 保护免受破坏性 SQLite 操作,如 DROP TABLE、无 WHERE 的 DELETE 和意外数据丢失。database.supabase- 保护免受破坏性 Supabase CLI 操作,包括数据库重置、迁移回滚、函数/密钥/存储删除、项目移除以及基础设施变更。
容器包
containers.docker- 保护免受破坏性 Docker 操作,如 system prune、volume prune 和强制删除。containers.compose- 保护免受破坏性 Docker Compose 操作,如 down -v(会移除卷)。containers.podman- 保护免受破坏性 Podman 操作,如 system prune、volume prune 和强制删除。
Kubernetes 包
kubernetes.kubectl- 保护免受破坏性 kubectl 操作,如 delete namespace、drain 和大规模删除。kubernetes.helm- 保护免受破坏性 Helm 操作,如无 dry-run 的 uninstall 和 rollback。kubernetes.kustomize- 保护免受破坏性 Kustomize 操作,当与 kubectl delete 结合或未经审查地应用时。
云提供商包
cloud.aws- 保护免受破坏性 AWS CLI 操作,如 terminate-instances、delete-db-instance 和 s3 rm --recursive。cloud.azure- 保护免受破坏性 Azure CLI 操作,如 vm delete、storage account delete 和 resource group delete。cloud.gcp- 保护免受破坏性 gcloud 操作,如 instances delete、sql instances delete 和 gsutil rm -r。
CDN 包
cdn.cloudflare_workers- 保护免受破坏性 Cloudflare Workers、KV、R2 和 D1 操作(通过 Wrangler CLI)。cdn.cloudfront- 保护免受破坏性 AWS CloudFront 操作,如删除 distribution、cache policy 和 function。cdn.fastly- 保护免受破坏性 Fastly CLI 操作,如 service、domain、backend 和 VCL 删除。
API Gateway 包
apigateway.apigee- 保护免受破坏性 Google Apigee CLI 和 apigeecli 操作。apigateway.aws- 保护免受破坏性 AWS API Gateway CLI 操作(REST API 和 HTTP API)。apigateway.kong- 保护免受破坏性 Kong Gateway CLI、deck CLI 和 Admin API 操作。
基础设施包
infrastructure.ansible- 保护免受破坏性 Ansible 操作,如危险的 shell 命令和未经检查的 playbook 运行。infrastructure.atmos- 保护免受破坏性 Atmos 操作,如 terraform deploy(自动批准)、clean、destroy、state rm/taint 和 helmfile destroy。infrastructure.pulumi- 保护免受破坏性 Pulumi 操作,如 destroy 和带 -y(自动批准)的 up。infrastructure.terraform- 保护免受破坏性 Terraform 操作,如 destroy、taint 和带 -auto-approve 的 apply。
系统包
system.disk- 保护免受破坏性磁盘操作,包括 dd 到设备、mkfs、分区表修改(fdisk/parted)、RAID 管理(mdadm)、btrfs 文件系统操作、device-mapper(dmsetup)、网络块设备(nbd-client)以及 LVM 命令(pvremove、vgremove、lvremove、lvreduce、pvmove)。system.permissions- 保护免受危险的权限更改,如 chmod 777、对系统目录递归 chmod/chown。system.services- 保护免受危险的服务操作,如停止关键服务和修改 init 配置。
CI/CD 包
cicd.circleci- 保护免受破坏性 CircleCI 操作,如删除上下文、移除密钥、删除 orb/命名空间或移除流水线。cicd.github_actions- 保护免受破坏性 GitHub Actions 操作,如删除密钥/变量或使用 gh api DELETE 针对 /actions 端点。cicd.gitlab_ci- 保护免受破坏性 GitLab CI/CD 操作,如删除变量、移除制品和取消注册运行器。cicd.jenkins- 保护免受破坏性 Jenkins CLI/API 操作,如删除作业、节点、凭据或构建历史。
密钥管理包
secrets.aws_secrets- 保护免受破坏性 AWS Secrets Manager 和 SSM Parameter Store 操作,如 delete-secret 和 delete-parameter。secrets.doppler- 保护免受破坏性 Doppler CLI 操作,如删除密钥、配置、环境或项目。secrets.onepassword- 保护免受破坏性 1Password CLI 操作,如删除条目、文档、用户、组和保险库。secrets.vault- 保护免受破坏性 Vault CLI 操作,如删除密钥、禁用认证/密钥引擎、撤销租约/令牌和删除策略。
平台包
platform.github- 保护免受破坏性 GitHub CLI 操作,如删除仓库、Gist、发布或 SSH 密钥。platform.gitlab- 保护免受破坏性 GitLab 平台操作,如删除项目、发布、保护分支和 Webhook。platform.kamal- 保护免受破坏性 Kamal 2.x 操作,这些操作会拆除堆栈(kamal remove)、删除附件数据目录(kamal accessory remove)、丢弃代理路由、使应用离线,或清除kamal rollback所依赖的镜像。platform.modal- 保护免受破坏性 Modal 无服务器平台操作,如递归卷删除、带--force的应用停止和密钥删除。platform.railway- 保护免受破坏性 Railway CLI 和 Public API 操作,这些操作可能删除项目、环境、服务、函数、卷、变量或部署。
DNS 包
dns.cloudflare- 保护免受破坏性 Cloudflare DNS 操作,如记录删除、区域删除和定向 Terraform destroy。dns.generic- 保护免受破坏性或危险的 DNS 工具使用(nsupdate 删除、区域传输)。dns.route53- 保护免受破坏性 AWS Route53 DNS 操作,如托管区域删除和记录集 DELETE 更改。
电子邮件包
email.mailgun- 保护免受破坏性 Mailgun API 操作,如域删除、路由删除和邮件列表移除。email.postmark- 保护免受破坏性 Postmark API 操作,如服务器删除、模板删除和发件人签名移除。email.sendgrid- 保护免受破坏性 SendGrid API 操作,如模板删除、API 密钥删除和域身份验证移除。email.ses- 保护免受破坏性 AWS Simple Email Service 操作,如身份删除、模板删除和配置集移除。
功能标志包
featureflags.flipt- 保护免受破坏性 Flipt CLI 和 API 操作。featureflags.launchdarkly- 保护免受破坏性 LaunchDarkly CLI 和 API 操作。featureflags.split- 保护免受破坏性 Split.io CLI 和 API 操作。featureflags.unleash- 保护免受破坏性 Unleash CLI 和 API 操作。
负载均衡器包
loadbalancer.elb- 保护免受破坏性 AWS Elastic Load Balancing (ELB/ALB/NLB) 操作,如删除负载均衡器、目标组或从实时流量中注销目标。loadbalancer.haproxy- 保护免受破坏性 HAProxy 负载均衡器操作,如停止服务或通过运行时 API 禁用后端。loadbalancer.nginx- 保护免受破坏性 nginx 负载均衡器操作,如停止服务或删除配置文件。loadbalancer.traefik- 保护免受破坏性 Traefik 负载均衡器操作,如停止容器、删除配置或 API 删除。
消息包
messaging.kafka- 保护免受破坏性 Kafka CLI 操作,如删除主题、移除消费者组、重置偏移和删除记录。messaging.nats- 保护免受破坏性 NATS/JetStream 操作,如删除流、消费者、键值条目、对象和账户。messaging.rabbitmq- 保护免受破坏性 RabbitMQ 操作,如删除队列/交换机、清空队列、删除 vhost 和重置集群状态。messaging.sqs_sns- 保护免受破坏性 AWS SQS 和 SNS 操作,如删除队列、清空消息、删除主题和移除订阅。
监控包
monitoring.datadog- 保护免受破坏性 Datadog CLI/API 操作,如删除监控器和仪表盘。monitoring.newrelic- 保护免受破坏性 New Relic CLI/API 操作,如删除实体或告警资源。monitoring.pagerduty- 保护免受破坏性 PagerDuty CLI/API 操作,如删除服务和计划(可能破坏事件路由)。monitoring.prometheus- 保护免受破坏性 Prometheus/Grafana 操作,如删除时间序列数据或仪表盘/数据源。monitoring.splunk- 保护免受破坏性 Splunk CLI/API 操作,如索引移除和 REST API DELETE 调用。
支付包
payment.braintree- 保护免受破坏性 Braintree/PayPal 支付操作,如通过 API/SDK 调用删除客户或取消订阅。payment.square- 保护免受破坏性 Square CLI/API 操作,如删除目录对象或客户(可能破坏支付流程)。payment.stripe- 保护免受破坏性 Stripe CLI/API 操作,如删除 webhook 端点和客户,或在未协调的情况下轮换 API 密钥。
搜索引擎包
search.algolia- 保护免受破坏性 Algolia 操作,如删除索引、清除对象、移除规则/同义词和删除 API 密钥。search.elasticsearch- 保护免受破坏性 Elasticsearch REST API 操作,如索引删除、按查询删除、索引关闭和集群设置更改。search.meilisearch- 保护免受破坏性 Meilisearch REST API 操作,如索引删除、文档删除、delete-batch 和 API 密钥移除。search.opensearch- 保护免受破坏性 OpenSearch REST API 操作和 AWS CLI 域删除。
备份包
backup.borg- 保护免受破坏性 borg 操作,如 delete、prune、compact 和 recreate。backup.rclone- 保护免受破坏性 rclone 操作,如 sync、delete、purge、dedupe 和 move。backup.restic- 保护免受破坏性 restic 操作,如忘记快照、修剪数据、移除密钥和缓存清理。backup.velero- 保护免受破坏性 velero 操作,如删除备份、计划和位置。
Windows 包
原生 Windows(cmd.exe + PowerShell)破坏性命令保护。windows.filesystem 和 windows.system 在 Windows 上默认开启(Unix 上关闭/可选);windows.misc 和 windows.powershell 在所有平台上都是可选的。所有模式不区分大小写。
windows.filesystem- 递归/强制文件系统销毁:cmddel /s、rd /s/rmdir /s、format <drive>:;PowerShellRemove-Item -Recurse -Force(以及别名rm/del/rd/ri)、Clear-Content、Clear-RecycleBin。仅对尊重-WhatIf的 cmdlet/别名以及临时目录删除进行白名单。windows.system- 灾难性磁盘/系统操作:vssadmin delete shadows和wmic shadowcopy delete(卷影复制销毁——勒索软件标志性行为)、diskpart、Format-Volume、Clear-Disk、Remove-Partition、Initialize-Disk/Reset-PhysicalDisk、cipher /w、bcdedit /delete。windows.misc- 注册表/账户/服务/WSL/复制销毁:reg delete、net user|localgroup /delete、sc delete、schtasks /delete、wsl --unregister(销毁 WSL 发行版)、robocopy /MIR(镜像删除)。windows.powershell- 破坏性 PowerShell cmdlet:注册表/提供程序删除(Remove-Item HKLM:\、Remove-ItemProperty、Remove-PSDrive)、Remove-LocalUser/Remove-LocalGroup、Unregister-ScheduledTask、Disable-ComputerRestore、强制Stop-Computer/Restart-Computer、Remove-VM/Remove-AppxPackage。
其他包
package_managers- 保护免受危险的包管理器操作,如发布包和移除关键系统包。strict_git- 更严格的 git 保护:拦截所有强制推送、变基和历史重写操作。
在 ~/.config/dcg/config.toml 中启用包:
[packs]
enabled = [
# 数据库
"database.postgresql",
"database.redis",
"database.supabase",
# 容器和编排
"containers.docker",
"kubernetes", # 启用所有 kubernetes 子包
# 云提供商
"cloud.aws",
"cloud.gcp",
# 密钥管理
"secrets.aws_secrets",
"secrets.vault",
# CI/CD
"cicd.jenkins",
"cicd.gitlab_ci",
# 消息
"messaging.kafka",
"messaging.sqs_sns",
# 搜索引擎
"search.elasticsearch",
# 备份
"backup.restic",
# 平台
"platform.github",
"platform.railway",
# 监控
"monitoring.splunk",
]
自定义包
使用 YAML 文件创建你自己组织特定的安全包。自定义包允许你为内部工具、部署脚本和专有系统定义模式,而无需修改 dcg。
[packs]
custom_paths = [
"~/.config/dcg/packs/*.yaml", # 用户包
".dcg/packs/*.yaml", # 项目本地包
]
有关详细的包编写指南、模式参考和示例,请参阅 docs/custom-packs.md。
在部署之前验证你的包:
dcg pack validate mypack.yaml
Heredoc 扫描配置:
[heredoc]
# 启用 heredoc 和内联脚本扫描(python -c、bash -c 等)。
enabled = true
# 提取超时预算(毫秒)。
timeout_ms = 50
# 提取体的资源限制。
max_body_bytes = 1048576
max_body_lines = 10000
max_heredocs = 10
# 可选的语言过滤器(仅扫描这些语言)。省略表示“全部”。
# languages = ["python", "bash", "javascript", "typescript", "ruby", "perl", "go"]
# 优雅降级(钩子默认是故障开放)。
fallback_on_parse_error = true
fallback_on_timeout = true
针对 heredoc 扫描的 CLI 覆盖:
--heredoc-scan/--no-heredoc-scan--heredoc-timeout <ms>--heredoc-languages <lang1,lang2,...>
Heredoc 文档:
- `docs/adr
[原 README 过长已截断]