文章摘要
作者拒绝接受由AI生成的合并请求,指出AI滥用可能对团队和项目造成损害,如代码删除、语言基础不扎实、文档垃圾、明显不一致、过度处理边缘案例或添加无意义的依赖等。尽管AI在编写代码方面有帮助,但滥用现象需要识别和规范。作者期待相关工具和指南的进一步发展。
文章总结
标题:为何我拒绝你的AI生成的合并请求(MR)
主要内容:
在软件开发中,合并请求(MR)是程序员提交项目变更建议的方式,而代码审查(CR)则是其他程序员对MR进行审核、提供反馈或改进建议的过程。然而,当AI被不当使用时,某些MR可能不值得进行代码审查,因为它们可能对团队或项目产生负面影响。以下是几种常见的不当使用AI的情况:
- 代码删除能显著改进MR:如果MR中的代码可以轻易删除,这表明作者未进行基本的清理工作,增加了审查者的负担。
- 不了解提交代码的基本语言:如果作者不理解自己提交的代码,审查反馈无法帮助其提升软件开发能力。
- 文档垃圾:例如,两份几乎相同的文档以不同格式提交,表明作者未对AI生成的文档进行整理或阅读,浪费了团队的时间。
- 明显不一致:例如,使用新的框架或风格进行日志记录和单元测试,增加了项目的复杂性和不一致性。
- 边缘案例过多:处理大量新的边缘案例可能意味着作者未测试所有代码,导致项目引入更多未测试的bug。
- 添加无意义或已弃用的依赖项:如果作者无法解释为何添加新的依赖项,可能导致团队使用错误的工具。
尽管AI在编写代码方面可能有所帮助,但滥用AI是一个新现象,需要制定指南来识别和应对。本文作者作为一位资深计算机科学家,认为在2025年,AI尚未达到可以在无人工审查的情况下投入生产的水平。
作者背景: - 资深计算机科学家,专注于AI和云计算,曾指导约20名学生和初级开发者。 - 拥有计算机科学和教育领域的学位及工作经验。 - 拥有百万安装量和月收入的AI项目。 - 热衷于探索和讨论AI新闻和突破。
代码审查的重要性: - 帮助作者和审查者学习和提升。 - 对重要变更进行合理性检查。 - 减少人类和AI的认知负担。 - 确保代码的一致性和简洁性。 - 每个MR都应使项目变得更好。 - 作者应对其代码负责并能够解释其合理性。
特殊情况下的MR接受: - 代码是临时的或一次性分析,无需长期维护。 - MR包含使用AI的原因、使用程度及作者采取的额外验证步骤。 - 该MR涉及边缘功能而非核心组件。
挑战: 作为团队领导者和教师,作者在如何面对初级开发者提交的AI生成代码时感到困惑。是否应严厉批评其懒惰,还是采取其他方式?AI滥用对技术债务和学习的影响尚不明确,软件开发的变化需要团队领导者随之调整或抵制。
总结: 本文旨在帮助识别和应对AI在代码生成中的不当使用,强调代码审查的重要性,并呼吁团队领导者在软件开发变化中保持警觉和适应性。
评论总结
评论主要围绕AI生成的合并请求(MR)在开源项目中的影响展开,观点多样且平衡。
支持对低质量AI生成MR进行限制的观点:
1. 低质量贡献浪费时间:评论1指出,不理解代码的AI生成贡献只是为了获得开源贡献徽章,对所有人都是浪费时间。
- "AI assistance is okay but writing slop with little to no effort to understand it simply to get a badge that you've contributed to OSS is a waste of time for everyone."
2. 低质量贡献影响项目维护:评论3提到,低质量贡献一直存在,但AI工具使其生成速度更快,这对维护者来说尤其令人沮丧。
- "Low effort contributions have always, and will ways be, unhelpful. We just now have a tool that generates them EVEN FASTER."
认为AI生成MR并非主要问题的观点:
1. 过度强调AI生成MR是姿态:评论2认为,过度强调AI生成的MR是一种姿态,实际上并非所有AI生成的MR都是坏的。
- "I feel like the overemphasis on AI generated ones is kind of posturing."
2. AI生成MR尚未成为现实问题:评论4指出,作者并未实际收到AI生成的MR,问题可能是假设性的。
- "As far as I can tell this is entirely hypothetical and he hasn't actually received an AI generated MRs."
对AI生成MR持中立或实用态度的观点:
1. AI工具可以用于好的方面:评论13建议使用AI工具来提供清晰的评审,指出MR的具体问题并提出改进建议。
- "the agent can point very clearly at the exact criteria and how the merge request meets them, and can even make improvement suggestions."
2. 拒绝MR应基于质量而非工具:评论14建议拒绝MR时应关注其质量,而非使用的工具,并强调信任的重要性。
- "You’re not rejecting because of the tools they used, you’re rejecting because it’s a poor request."
其他相关观点:
1. AI评审工具可能过于挑剔:评论9提到,CoPilot等AI工具在评审MR时可能过于挑剔且不准确,这让人感到被轻视。
- "CoPilot which does a lot of unnecessary nit-picking and can often be incorrect at it."
2. AI可能被反向利用:评论15提出,AI可能被用来过度批评PR,导致贡献者难以应对。
- "Say, a bot with a prmpt like 'criticise this PR into oblivion' let loose on AI-generated PRs."
总结:评论中对AI生成MR的态度多样,既有支持限制低质量贡献的声音,也有认为问题被夸大的观点,同时也有建议通过AI工具改进评审流程的实用主义立场。