尧图精选

dcg快速拒绝过滤器:一次子串检查如何跳过99%的无关命令

🕒 发布时间:2026/9/2 13:17:29 📁 来源:尧图网络
dcg快速拒绝过滤器一次子串检查如何跳过99%的无关命令【免费下载链接】destructive_command_guardThe Destructive Command Guard (dcg) is for blocking dangerous git and shell commands from being executed by agents.项目地址: https://gitcode.com/GitHub_Trending/de/destructive_command_guarddcgDestructive Command Guard危险命令守护是一个专为 AI 编码代理设计的命令拦截器它会在 Agent 执行每一条 shell/git 命令之前进行安全检查把rm -rf、git reset --hard这类危险操作挡在门外。本文带你理解它最精巧的性能设计——快速拒绝过滤器Quick Reject仅靠一次子串检查就能让 99% 以上的无关命令直接放行跳过昂贵的正则匹配。dcg 的性能难题每条命令都要过安检 ️dcg 以Hook钩子的形式挂在 AI Agent如 Claude Code、Codex 等的命令执行链路上。这意味着一个残酷的事实你每敲一条ls -la、cat README.mddcg 都要先检查一遍它内置了50 个规则包Packs覆盖文件系统、Git、数据库、Kubernetes、云服务等场景如果每条命令都要跑完全部正则规则延迟会高到让人无法忍受。所以 dcg 设计了一个分层的安检通道不同风险的命令走不同长度的检查流程。核心思路只有一句话绝大多数命令是安全的就让它们花最少的钱。快速拒绝过滤器第一层免检通道 ⚡dcg 把所有命令路径划分为 7 个性能层级而快速拒绝就是第 0 层目标耗时不到1 微秒层级路径目标耗时典型命令0快速拒绝 1μsls -la、cargo build1快速放行 75μsgit status、docker ps2模式匹配 100μsgit reset --hard3~6多行脚本分析 5ms含 heredoc 的复杂命令这一整套预算定义在 src/perf.rs 中并由 CI 强制校验——性能一旦回退构建直接失败。第一关SIMD 加速的子串扫描核心实现在 src/packs/mod.rs 的pack_aware_quick_reject函数中逻辑非常简单收集所有已启用规则包声明的关键词比如git、rm、docker、psql用 SIMD 指令加速的子串搜索memchr 库扫描命令里有没有出现任何一个关键词一个都没出现 → 立即放行后面的正则匹配全部跳过。ls -la、npm install这类命令与所有关键词都不沾边1 微秒内直接放行——这就是99% 无关命令被跳过的来源。官方 README 也明确写道Quick rejection filter eliminates 99% of commands before regex见 README.md。第二关上下文感知的关键词验证只查子串太粗糙吗比如cat .gitignore里明明含 git却不该触发 Git 规则包。所以子串命中后还有第二关先对命令做语法分词与跨度分类区分可执行部分和纯数据关键词必须出现在可执行跨度里才算数出现在引号包裹的数据里则继续放行命令含反斜杠转义或引号可能的混淆手法如g\it时会先做归一化再重新检查宁可多查也不漏查。快速拒绝如何做到快而不漏 性能优化的大忌是图快而漏判dcg 在这里做了一系列保守设计空关键词列表不跳过若规则包没有声明关键词绝不做快速放行强制进入完整评估管道负载不放水echo rm -rf / | sh这类数据即代码的写法不会被当作纯数据处理掉复合命令逐段检查docker ps; docker system prune中后段的破坏性命令不会因前段安全而被掩盖多词关键词容忍空格gcloud storage rm的多余空白不会骗过过滤器。这些边界场景几乎都有对应的回归测试可参考 src/packs/mod.rs 中的测试模块与 tests/fast_path_verification.rs。用 explain 模式亲眼看到分层计时 安装后git clone https://gitcode.com/GitHub_Trending/de/destructive_command_guard后按 install.sh 安装你可以用 explain 命令查看每条命令的分层耗时Evaluation Trace: [ 0.8μs] Quick reject: passed (contains git) [ 2.1μs] Normalize: no changes [ 5.3μs] Safe patterns: no match (checked 34 patterns) [ 12.7μs] Destructive patterns: MATCH at pattern reset-hard [ 12.9μs] Total time: 12.9μs第一行就是快速拒绝过滤器在工作命中关键词git放行到下一层而ls -la这类命令会在这一步就直接结束连 1 微秒都用不满。更多输出格式说明见 docs/configuration.md 与 README.md。性能成果从 175ms 到 3.1ms 快速拒绝过滤器是整个性能体系的守门员。结合延迟规则包注册与懒加载正则编译后典型命令的延迟实现了数量级下降数据来自 perf/baselines/README.md场景优化前优化后提升快速拒绝ls -la~175ms3.1ms56 倍安全命令git status~175ms16ms11 倍破坏性命令~175ms16.7ms10 倍即使最坏情况下 Hook 评估也有一条 1000ms 的硬预算线超时返回不确定而非静默放行——安全永远优先于速度。小结dcg 的快速拒绝过滤器用最朴素也最有力的思路解决了安全工具的永恒难题99% 的命令不值得花 1% 的时间去认真检查。SIMD 子串扫描 上下文感知验证既保证了微秒级的放行速度又通过一系列保守规则兜住了混淆与复合命令的旁路攻击。对于想要让 AI Agent 干活又快又安全的开发者来说这就是一个把工程权衡做到极致的范例。更多设计细节可查阅 docs/patterns.md 和 docs/security-model.md。【免费下载链接】destructive_command_guardThe Destructive Command Guard (dcg) is for blocking dangerous git and shell commands from being executed by agents.项目地址: https://gitcode.com/GitHub_Trending/de/destructive_command_guard创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联 返回资讯列表 →