用好传统的SAST,防止Token消耗失控
在AI辅助代码审查中,确定性的静态分析可以显著降低token消耗。通过在调用LLM之前先用确定性检查过滤已知问题,团队能减少不必要的推理开销,将模型能力集中在真正需要判断的模糊问题上。
在AI辅助开发工作流中,代码审查正成为新的成本瓶颈。随着AI编程代理快速生成代码变更,审查环节的负担急剧增加。传统上,人类评审者需要面对越来越大的差异(diff),而AI代理的循环机制会导致token消耗呈指数级增长——每次调用都会累积之前的工具输出和对话历史,使成本远超预期。
确定性的静态分析提供了一种高效的解决方案。秘密扫描器和SAST规则不需要推断意图,它们直接检测已知模式,返回结构化的结果。这意味着模型无需在每次检查时都加载完整的规则集。更关键的是,确定性分析的结果是可预测的,适合作为CI/CD中的硬性门控,而不仅仅是一个建议。
LLM的真正价值在于处理需要综合判断的任务,比如将代码变更与需求票据进行对比,或者解释多个发现之间的关联。如果让LLM反复确认一个已知的漏洞模式,那就是在浪费其核心能力。正确的做法是让确定性检查作为第一道过滤器,只将真正模糊的问题留给模型处理。
在设计确定性优先的审查管道时,本地IDE和CLI的检查应最先触发,在开发者输入时就发现格式、秘密和基本SAST问题。这些检查在代码到达PR之前就已解决,从而减少了后续步骤的负载。当代理被调用时,它应接收一份确定性发现的摘要,而不是被要求重新发现所有已知问题。
在Git和PR阶段,确定性发现应与AI生成的摘要结合,使审查更加高效。CI/CD阶段则负责证明检查确实执行过,并留存结果以供审计。整个流程的关键反馈循环是:每当一个不良模式被反复拒绝,就应该将其转化为永久规则,而不是在每次提示中重新讨论。
对于工程领导者而言,最重要的指标是token消耗是否与真正的模糊性相关,而非用于重新发现本应由规则捕获的问题。跟踪每次PR的token消耗与代码量的比例,可以揭示确定性预检查是否真正发挥了作用。同时,审查周期时间的下降,如果伴随质量稳定或提升,则表明自动化移除了正确的工作。
总之,确定性静态分析与AI推理的结合,不是要取代LLM,而是要优化其使用场景。通过先用规则清理低价值问题,模型可以更专注于高价值的决策,从而在降低成本的同时提升审查质量。此外,团队应建立反馈机制,将重复出现的拒绝模式转化为永久规则,避免每次审查都消耗token重新讨论。这种优化不仅适用于大型团队,对初创公司同样关键,因为每一分预算都需用在刀刃上。