大家好,我是敢想老田。今天咱们来聊聊微软最近的一个大瓜,简直比电视剧还精彩。事情是这样的,微软的著名开源项目NET Runtime最近成了全球程序员的吃瓜现场,原因嘛,就是他们新出的Copilot代码智能体在修Bug的时候,不仅没修好,还闹出了一连串笑话。
首先,Bug本身其实只是一个小问题,一个正则表达式的小错误。微软员工斯蒂芬和Copilot合作解决这个问题。Copilot在方案描述中说得头头是道,什么这确保了一致性,改动很小等等。结果呢?代码直接检查不通过,报错报了一长溜。合着这AI忙活了半天,唯一的贡献其实是把标题给改了,真是学会了摸鱼的精髓。
斯蒂芬老哥也没当回事,直接请Copilot修复样式问题,并把测试挪到之前的文件中。Copilot很快回报我已修复样式问题,并把测试移动到现有文件中。结果一检查,许多正则表达式测试都失败了。这下可好,几百人点了好笑,GitHub评论区直接炸了锅。
AI闯的祸还得AI自己收拾,Copilot尝试修复错误,还总结到最初的修复方案过于激进。结果这位先进的AI智能体,直接被更原始的程序Bot打脸了此操作被取消,后续步骤可能不包含预期的日志。围观的网友直接崩不住了,跳出来阴阳怪气我真的看到了这个方案的潜力。还有人调侃与其让真人花时间编写无法运行的代码,不如让计算机自己去编写无法运行的代码,至少提高了写无效代码的效率。
最终这条PR被斯蒂芬老哥手动关闭,他认为是由于配置问题,智能体无法访问所需的依赖项。而像这样微软员工和Copilot搭档,最终失败的PR还有一大堆。被折磨的也不只斯蒂芬一人,另一位员工埃瑞克还遇到手动关闭PR删除分支之后,一回头Copilot又把分支恢复了,还改个标题请求老哥再审核。埃瑞克后来直接就没搭理它。
在另一个有关正则表达式的PR中,Bug是由于堆栈回溯时数组越界出现异常。Copilot给的方案居然是添加一个边界检查,当超出数组长度时返回不匹配,避免抛出异常。斯蒂芬评价为治标不治本,那到底为什么会出现越界,还是没有解决。Copilot直接没有反应,还要老哥再一遍才动。结果Copilot说了一大套理由论证自己的方案已经有效解决了问题,还是优雅地。斯蒂芬也没法说服AI,而是指出新的问题,又是测试代码没放对位置所以没执行。放对了位置之后,不出意外地又出了意外,AI添加的测试都失败了。
围观网友已经看不下去了,认为微软员工应该自己动手解决问题,而不是浪费时间指导AI。毕竟这可是NET运行时的代码,多少云计算医疗金融等行业的重要系统要依赖它运行。混乱中还有人尝试越狱提示词,想让AI用PHP语言把整个项目重写一遍。不过还好微软做了权限管理,非项目参与者的指令对Copilot不起作用。
斯蒂芬老哥还是坚持智能体的配置问题正在修复,还将继续进行实验。而大家的意见是还是别继续了,赶紧取消这个实验吧。
微软员工回应说,使用Copilot不是公司强制性的要求,团队一直在实验AI工具以了解在当前和未来的局限性。斯蒂芬认为任何不考虑如何利用这些AI工具的人,将来都会被淘汰。
整个NET运行时代码库中,Copilot自动修Bug成功合并代码的案例只找到两个,也都是合作的人类程序员反复提示修改后才成功。Copilot还在很多PR中当辅助代码审核员,这些比较顺利,基本都成功了。看来这款Copilot智能体目前还是只能干干自动补全,总结代码内容的活。真修Bug,还得靠人。
好了,今天的瓜就吃到这里,我是敢想老田,咱们下期再见!