Qodo博客作者Ravid Cohen:Agent输出不稳定时,先跑两遍再优化提示词
Qodo博客作者Ravid Cohen介绍了他们改造GEPA算法以优化代码审查推荐Agent提示词的方法。核心思路是:对每个训练样本运行Agent两次并对比完整轨迹,定位证据收集和决策的不稳定环节;再把全部结构化分析汇总到一次LLM调用中跨样本寻找模式。他们从仅43词的最简提示词出发做单次宽步优化,效果优于对已有人工优化的生产提示词进行多轮小修。Qodo报告在生产A/B测试中漏标率从7.83%降至4.46%,单次成本减半,延迟降低25%。
AI代码审查中的噪声问题通常被归结为误报——模型报出了不该报的问题。但Qodo博客作者Ravid Cohen指出另一类噪声:同一个Agent对同一个PR跑两遍,给出的判断标签可能不同。他们的推荐Agent负责预测团队是否会采纳某条审查发现,但在200个PR的评估集上,20.7%的标签在是和也许或也许和否之间软翻转,4.3%直接在是和否之间硬翻转。这种不一致意味着Agent的证据收集或决策逻辑存在不稳定,而不仅仅是判断标准需要收紧。
标准GEPA(一种通过分析Agent输出和评估反馈来迭代改进提示词的算法)在处理这类噪声Agent时遇到一个结构性困难:Agent的完整执行轨迹很长,反思器一次能检视的样本数量有限。如果只用小批量来提取教训,一次偶然的不稳定输出就可能被误读为普遍规律。Cohen团队因此改造了GEPA,加入两个步骤:第一,对每个训练样本运行Agent两次,让一个LLM对比两次完整轨迹,输出结构化的分析——哪里收集了不同证据、哪里做出了不同决策、什么可能解释这种差异;第二,把整个训练集上所有结构化分析汇总到一次高推理开销的LLM调用中,让它跨样本寻找模式,而不必逐条处理完整轨迹。
Cohen团队认为双次对比有效的核心推理是:单次运行可能用一个看似合理的答案掩盖不稳定行为,而两次运行的对比暴露了Agent在哪些环节收集了不同证据或得出了不同结论。他们从一段仅43词、只描述Agent目标的最简提示词出发,用整个训练集约120个PR做了一次宽步优化。Cohen给出的解释是,已经过人工优化的生产提示词留给自动优化器的改进空间更小,而最简提示词让优化器能自由重组指令结构。离线验证中,硬翻转率从8.2%降至2.2%,总翻转率从约27%降至20%。
Qodo报告了这项改造在生产环境中的效果。他们在所有客户中进行了按PR分配的50/50 A/B测试,覆盖27,582次审查运行、约21,000个PR。在开发者实际采纳的审查发现中,被推荐Agent标记为否的比例(即漏标率)从7.83%降至4.46%。推荐Agent的平均单次成本从0.24美元降至0.12美元,平均延迟从40秒降至30秒。精确率无统计显著差异。Cohen强调这些数字仅适用于推荐Agent组件,不涵盖整个代码审查流程;质量分析覆盖的是有可用归因标签且至少包含一条被采纳发现的PR子集。
需要注意的是,以上全部数据来自Qodo自身的生产A/B测试,属于厂商自报结果,尚无独立复现。方法本身的逻辑——双次对比定位不稳定环节、批量聚合跨样本找模式、从最简提示词做单次宽步优化——对任何输出不稳定的Agent提示词优化有参考价值,但双次运行意味着优化阶段成本翻倍,对延迟敏感或预算极紧的部署可能不可行。Cohen在文末列出的四条经验中,有一条直接与此相关:在放大实验之前先测量噪声,用验证集多次运行了解方差,再决定是否依赖验证分数做判断。