AI News HubLIVE
站内改写1 分钟阅读

更好的工具反而让Copilot代码审查变得更糟,我们是这样改进的

将Copilot代码审查迁移到共享的Unix风格代码探索工具后,审查成本上升且发现的问题减少。问题不在工具,而在指令。通过重写指令以适配审查者工作流,平均审查成本降低了约20%,同时保持了审查质量。

来源GitHub AI & ML作者: Napalys Klicius

给代理更好的工具,它应该做得更好——这是直觉。然而,当GitHub团队将Copilot代码审查的底层代码探索工具替换为共享的Unix风格工具(grep、glob和view)时,他们发现审查成本上升了,发现的问题却减少了。问题并不在于新工具本身,而在于代理使用这些工具的指令。原始指令是为通用编码助手设计的,导致代理像浏览整个仓库一样去探索代码,而不是从拉取请求(PR)的差异出发进行有针对性的审查。这种“浏览模式”使代理积累了过多无关上下文,增加了成本并稀释了注意力。

团队通过重写工具指令来纠正这一行为。新的指令模拟了人类审查者的工作流程:从PR差异开始,形成具体的审查问题;使用grep和glob快速发现候选文件和符号,但推迟读取;仅在确定位置后才使用view读取精确的代码范围。这种“先缩小范围,再精确读取”的模式显著提高了效率。例如,当审查一个授权辅助函数的变更时,代理不再搜索所有调用该函数的文件,而是通过grep查找调用者,再用glob定位相关路由文件,最后用view读取关键调用点。

此外,指令还改进了错误恢复策略。如果grep失败,代理会尝试更简单的转义搜索;如果路径错误,则转向glob而不是猜测相邻路径。这些调整避免了小错误引发更大的探索循环。内部基准测试在此过程中发挥了关键作用,它们不仅显示最终评分,还展示了代理的完整工具调用轨迹,使团队能够可视化代理行为并迭代指令。

优化后的结果令人满意:生产环境中平均审查成本降低了约20%,且审查质量保持不变。这一改进的启示在于,工具本身是通用的,但指令必须针对特定任务进行优化。同样的工具在不同产品中需要不同的指令——Copilot CLI处理的是交互式编码任务,而Copilot代码审查专注于从差异出发的评估。团队的经验表明,共享工具与定制化指令、严格基准测试相结合,才能实现真正的效率提升。