Critic是一款新工具,它允许开发者通过与生成代码的AI代理直接对话来进行代码评审,从而帮助开发者更深入地理解代码变更并及早发现bug。
AI编写的代码,能否直接询问“编写AI”进行评审?“Critic”登场
想象一下。您负责的项目需要添加一个新功能,这次由一个专业的编码AI代理(Agent,自主执行任务的AI)来代替您完成了。代码看起来很完美,但您想知道这段代码为何这样编写,是否存在隐藏的意图。就像老师审查学生写的文章一样,您想理解代码的每一行,但却难以准确把握AI的思考过程。传统方式只能基于“结果”进行判断。
但现在,一个可以缓解这些担忧的新工具出现了。那就是“Critic”。Critic是一个创新的工具,它允许在评审AI生成的代码时,直接向编写该代码的AI代理提问并听取解释。就像与共同编写代码的同事交流一样,您可以与AI对话,审查代码的变更之处 [Source 8]。
这为何重要?
随着AI技术的飞速发展,编码代理正成为我们开发过程中不可或缺的一部分。然而,AI生成代码时会产生一个重大问题:‘透明度’和‘理解’的缺失。AI生成的代码可能以复杂或不可预测的方式运行,难以理解其意图 [Source 16, Source 19]。
这种理解的不足可能导致严重问题。例如,根据CodeRabbit的研究,AI生成的代码在逻辑和准确性问题、安全漏洞、可读性问题等方面,比现有代码多出1.5到2倍以上 [Source 17, Source 19]。简单来说,AI编写的代码往往是“表面上看没问题,实则难以捉摸”的。如果开发者在未完全理解AI代码的情况下将其合并,就可能将意外的bug或安全漏洞部署到实际服务中,风险大大增加 [Source 16]。
Critic旨在解决这些问题,它帮助开发者通过与AI代理直接沟通,理解代码变更的‘为什么(Why)’ [Source 8]。就像看着建筑蓝图与建筑师直接对话一样,您可以向AI询问代码的每个部分为何如此编写,并听取其解释。这有助于开发者提高对AI代码的信任度,并在生成PR(Pull Request,代码合并请求)之前及早发现并修复潜在问题 [Source 1]。
易于理解:AI大厨的解释
Critic的核心理念很简单:让AI在编写代码的过程中,像人一样添加“注释(Annotation,代码中的解释)”和“证据(Evidence)”来展示其过程。
打个比方,Critic就像一个在您旁边解释烹饪过程的“AI大厨”。普通的菜谱只提供最终的食谱,但这位AI大厨会说:“我先放这些食材是为了味道的平衡,这里增加炸衣的厚度是为了让口感更酥脆。作为证据,我给您看我做实验时的照片。”
使用Critic的AI代理可以在其编写的代码的关键块中直接添加注释,例如:“此函数使用此逻辑进行用户认证”,“此变量使用HashMap(一种用于快速查找数据的结构)而非数组来处理数据,以提高效率”等 [Source 8]。
更进一步,AI还可以提供“证据”来支持其决定。例如,可以附上代码编写前进行的模拟结果截图,或者包含该代码的本地执行指南 [Source 8]。这就像一个学生解完数学题后,不仅给出答案,还展示解题过程、使用的公式以及练习痕迹。这样,代码审查就不再仅仅是确认,而是扩展为一个更深入、更具生产力的沟通平台 [Source 3]。
当前状况
目前,Critic支持开发者在浏览器环境中通过行内注释(直接添加到代码中的解释)和行级差异(line-level diffs,对修改后的代码进行详细比较)来审查AI代理生成的代码 [Source 4, Source 18]。开发者可以针对特定代码行提问或留下反馈,然后AI代理会根据该反馈修改代码并做出响应,形成对话 [Source 3, Source 18]。就像聊天一样,您可以与AI代理实时互动,逐步改进代码。
与早期AI代理的提问系统采用“尽力队列(best-effort queue,努力处理请求但不保证响应)”不同,这种对话系统是一个巨大的进步 [Source 2]。过去,开发者提问时AI常常不响应或响应延迟,而Critic改进了这种连接问题,帮助开发者更直接、更灵活地与AI互动 [Source 2]。
此外,Critic还能实现考虑整个代码库上下文的审查 [Source 1]。这有助于AI代理在提出代码变更建议之前,更早地发现潜在问题 [Source 1]。许多开发者已经在使用Critic的帮助,在将AI代理生成的结果上传到GitHub之前,有效地审查其工作 [Source 3]。
未来展望?
Critic等工具的出现,有潜力深刻改变AI驱动的软件开发的未来。未来,AI代理将不仅仅是代码的生成者,还将具备解释、辩护自己代码的能力,并理解和采纳开发者的反馈。这将把开发者与AI的“协作”水平提升到一个新的高度。
随着AI不再被视为一个黑箱,其内部工作原理和意图变得透明可见,开发者将能更信任、更高效地利用AI生成的代码。这不仅有助于提高代码质量,还将促进整体开发速度的提升。
最终,Critic将成为一个重要的基石,使我们能够理解并接触到AI代理编写的每一行代码背后的“原因”,从而最大化AI驱动开发的信任度和效率。未来,所有AI生成的代码旁边自然地附带“此代码由该代理出于此原因编写”的说明的日子将会到来。
AI的视角
MindTickleBytes AI记者视角:Critic的出现明确表明AI正从简单的工具演变为“协作者”。AI能够解释和论证自身工作的能力,将缩小与人类开发者之间的信任差距,并最终在更复杂、更重要的项目中扩展AI的作用。
参考资料
- AI代理的代码审查 - 多代理审查系统
- Show HN: Critic – 与编写代码的AI代理一起审查代码
- Show HN: Crit – 用于代理计划和代码的本地审查工具…
- Show HN: Crit – 像审查PR一样审查AI代理的工作
- ShowHN:Critic–与编写代码的AI代理一起审查代码
-
[Agentic Code Review AddyOsmani.com](https://addyosmani.com/blog/agentic-code-review/) - Crit - 指向行。告诉代理。
- Agentic Code Review
- AI代理编写代码的速度太慢
- 开发者难以充分理解AI生成的代码变更
- 开发者进行代码审查过于频繁
- AI代理提出太多问题
- 直接通过语音解释
- 在代码块中添加注释,并附带截图等证据
- 自动生成文档文件
- 请求其他AI代理进行解释
- 缩短代码编写时间
- 开发者能更深入地理解AI代理的意图并提供反馈
- 增加代码的复杂性
- 提高AI代理的学习能力