写点什么

Copilot 慢慢逼疯微软程序员:AI 写代码,人类收烂摊子,修 Bug 也全靠改 PR 标题?

  • 2025-05-28
    北京
  • 本文字数:3696 字

    阅读完需:约 12 分钟

大小:1.69M时长:09:49
Copilot慢慢逼疯微软程序员:AI写代码,人类收烂摊子,修Bug也全靠改PR标题?

近日,一场关于 GitHub Copilot 的风波在 Reddit 上引发开发者群体的广泛关注。一位用户以《我的新爱好:眼睁睁看着 AI 如何慢慢逼疯微软员工》为题发帖,调侃微软的 Agent 在 .NET 仓库中提交的一系列“令人头皮发麻”的 PR(Pull Requests),指出 Copilot 在这些 PR 中的表现都不尽如人意,因此他“忍不住从中找到了幸灾乐祸的快感”。

 


他还提到,自己也替那些被要求审查这些 PR 的微软员工感到心疼。他猜微软高层可能是强制性地要求大家用 Copilot,而程序员们也只能硬着头皮去应付。所以他说,他的“幸灾乐祸”更多是针对那些只知道吹捧 AI、盲目推自动化的微软领导。

 

这个帖子引发了大量围观与讨论,也意外地成为了探讨 AI 编程现实与预期之间落差的切入口。

 

Copilot Agent 公开测试引发争议

 

本周,微软正式发布了 GitHub Copilot Agent。据官方介绍,这一代理基于先进的大模型,擅长在经过充分测试的代码库中执行低至中等复杂度的开发任务,涵盖添加功能、修复 Bug、扩展测试、重构代码和完善文档等场景。

 

从网友观察到的一些 PR 来看,微软工程团队正探索在 .NET 仓库中引入 Copilot Agent,尝试让 AI 自动发起代码修改的拉取请求(PR),这些应用场景包括底层系统修复、跨平台兼容性适配、正则逻辑修正、项目文档补全等。

 

微软选择将 Copilot Agent“放到一线”承担底层系统修复任务,或许是想展示 AI 编程的应用边界,但结果却适得其反。

 

巧合的是,就在两天前的一次开发者大会上,一位微软 .NET 员工展示了 GitHub Copilot 如何融入他们的日常编码工作流。

 

00:00 / 00:00
    1.0x
    • 3.0x
    • 2.5x
    • 2.0x
    • 1.5x
    • 1.25x
    • 1.0x
    • 0.75x
    • 0.5x
    网页全屏
    全屏
    00:00


    在演讲中,这位员工表示,AI 在代码开发层面表现出色,例如被用于更新正则表达式引擎、协助编写代码和修复现有错误,并提升内存扩展模块的能力。在整个软件开发流程中,AI 也被用于合并代码、创建和处理测试用例。该员工更是断言,AI 在日常工作中显著提高了他们的工作效率,已经完全脱离了“炒作”阶段。

     

    微软还在演讲中明确指出,“正则表达式引擎”是 AI 最适合“练手”的领域之一。

     

    他们强调,诞生于 2003 年的 .NET 正则表达式引擎,在沉寂多年后,正是通过 AI 才焕发新生:“有了 AI,重构这个引擎的整个过程发生了变化”。AI 让他们大幅提高了效率,比如在 literal optimization(字面量优化)方面,AI 甚至能够迅速列出几十种潜在的优化路径,其中不乏人类此前未曾尝试的思路,例如针对 Lookahead Anchor 的优化等。微软员工透露,基于 AI 的思路他们提交了一个 PR,这项优化将在 .NET 10 中生效,并能带来约 10 倍的性能提升,因为“做的事情大大减少了”。

     

    GitHub 实践中的“残酷现实”

     

    然而,也正是因为在这个 AI 最擅长的领域,Copilot 在 GitHub 上的实际公开的表现反而让人们更直观地看到了“AI 在预期和现实之间的差距”。

     

    例如,在 PR 115733 这个正则表达式相关的 PR 中,Copilot 试图处理复杂嵌套量词触发的 IndexOutOfRangeException,确保正则表达式引擎的行为与用户期望一致(匹配或不匹配),而不会因意外异常而中断应用程序。值得注意的是,这并非唯一 Copilot 在 GitHub 上尝试修复正则表达式相关问题,类似的 PR 还有别的,但尝试的效果都不尽如人意。

     

    在 PR 115733 中,Copilot 与人类协作者之间的完整互动过程大致持续了 3 天左右。

     

    三天前,Copilot 向 .NET Runtime 仓库提交了这个 PR,并请求代码审查。同时添加了新的测试文件,但未将测试文件加入项目,导致测试未运行。

     


    Copilot 给出的方法,描述得头头是道,但结果不太顺利。

     

    随后一天,资深微软工程师 @stephentoub 评论指出:AI 的修复“仅止于表面”,并未解决导致栈回溯失效的根因。同时提醒测试文件未生效。



    Copilot 随即修复构建问题并提交新版本测试。但这个测试加入项目后仍然还是直接失败。





    所以 Copilot 忙活半天,可能也就是把标题给改了。

     


    最后,看不下去的社区开发者纷纷加入讨论,多位开发者表示“Copilot 是不是在浪费我们时间”,并建议它删掉测试重写、或者干脆关闭 PR。

     

    目前相关 PR 仍未能交付有效修复方案,也未获得审查者认可,算是一次阶段性失败。不少开发者在评论区直接表达了强烈的不满。一些人批评微软“花大量资源喂养一个只会写坏代码的 AI”,认为这是在浪费计算资源、污染代码库,背离了 .NET 基金会应当交付高质量代码的初衷。

     

    也有用户担忧,这些需要人类“看护”的 AI 将压垮人类维护者,并且最终会导致不合格的代码进入生产环境,损害整个项目的可持续性与可信度。

     

    他们质疑微软是否将 Copilot 视为取代开发者的“编程乌托邦”,尤其在近期裁员背景下,这一做法显得尤为讽刺。

     



    这也是微软内部战略的经验教训?

     

    这几天,随着 PR 的异常行为在 Hacker News 和 Reddit 上迅速传播,开发者社群的质疑声浪也水涨船高。许多技术人坦言:“距离真正靠谱的自动化开发,还有不小的距离。”网友指出,最令人沮丧的不是 AI 提交了无效代码,而是:每条评论下方都挂着一行“请通过反馈帮助改进 Copilot”,但从头到尾,没有一条反馈得到响应。并且更有趣的“PR 是通过删除/注释掉测试用例或更改断言来“解决”测试失败的 PR”。

     

    另外,即使人类在评论中明确指出“测试没有被添加到项目文件中”或“新增测试失败”,AI 依然重复犯错,让人感到像在与一个“既不看评论、也无法理解自己在做什么的初级开发人员”协作。

     

    “我无法想象那些不得不处理这种情况的人会是什么感受......如果我不为这边的人感到难过的话,这整件事就太搞笑了。”有开发者如此说道。

     


    不过将大模型类比初级开发人员的说法也引起了一些反驳。一位开发者指出,这是对初级开发人员不公正的侮辱。因为真实的初级开发者通常能快速学习,不会反复犯低级错误。他认为 LLM 可以作为“高效的思路发散和重复劳动加速器”,但还未达到替代实习生的水平,更遑论正式开发者的水平。

     


    有不少网友猜测这可能并不是单一团队的技术失败,而是微软高层“全线推进 Copilot”战略的一环。其他网友也从代码仓库中翻出了更多这种 PR,多个仓库同时上线 AI 代理,节奏一致,背后很可能是统一部署的行动,而一线开发者则似乎正努力配合这项还不够成熟的任务推进。

     

    在那条爆火的 Reddit 贴文中,发帖人也特别强调了自己“幸灾乐祸”的真实指向:“我的批评其实是冲着那些大肆宣传 AI 的微软高管去的。”对于微软的程序员,他抱有很强的同情态度,并为这些开发人员表示“感到难过”。

     

    微软高层的推动意图,其实早已有迹可循。就在几天前,微软 CTO Kevin Scott 在播客采访中直言:

     

    “我觉得,那些还在坚持认为‘技术还没准备好’的人——比如他们尝试做点什么时觉得‘成本有点高’或者‘功能还差一点火候’——如果因此选择继续观望,恐怕很快就会被远远甩在后面。为未来一年,一切都会变得更便宜、更强大,这是我非常确定的事情。放在 2025 年来看,这已经不是一个难以接受的判断了。”

     

    从上而下推动 AI 工具的普及,并非微软一家的策略。在许多科技公司,类似的趋势正在显现:AI 正逐步以“自上而下”的方式进入开发工作流,而不再完全依赖开发者自发采用。

     

    微软高级应用科学家 Brian Houck(研究开发人员生产力) 也在一次播客中分享了他们推动 AI 在开发团队中落地的经验。他提到微软内部一直在研究如何提高他们工程师的采用率,并强调:

     

    “只要领导层大力倡导使用人工智能工具,就能让开发者成为日常用户的可能性提高七倍。”

     

    而且,他认为这种倡导来自高层不仅仅是为了鼓励使用,更是为了告诉大家,这(东西)没问题。

     

    另外,除了高层推动,Brian 还特别提到“本地领军人物”的作用。他们通常是那些更资深、具备团队影响力的开发者。通过他们的示范,AI 工具更容易在团队中产生实际影响。微软的观察显示,拥有这类倡导者的团队,AI 采用率会高出约 22%,从而更容易将 AI 工具系统化、流程化地融入日常开发工作。这或许也解释了为什么微软选择在 .NET 仓库中进行 AI 编程的试验:它可能被视为一个理想的“试验田”,并以此推动其在更广泛的开发者群体中的普及。

     

    争议背后的思考

    话说回来,这场围绕 Copilot 的争议,不只是对某几条“奇怪 PR”的吐槽,更像是一面镜子,映射出技术理想与现实落地之间的鸿沟。

     

    一边是公司高层,对 AI 的未来充满信心,恨不得立马就全面铺开;另一边呢,是还没完全准备好的工具、忙得焦头烂额的一线开发团队,还有开发者社区,他们对这种“说得天花乱坠”的 AI 故事,已经越来越警惕了。

     

    也许,真正值得我们去琢磨的,不是 AI 到底能不能写出正确的代码。而是当这场技术变革以“命令”的方式推下来的时候,开发者们到底有没有足够的空间去质疑、去尝试、去改进,最终形成一套真正适合自己工作的开发模式。

     

    所以,AI 编程工具能不能真正“跑起来”,关键就在于我们能不能在自动化和现实之间找到那个平衡点。

     

    参考链接:

    https://old.reddit.com/r/ExperiencedDevs/comments/1krttqo/my_new_hobby_watching_ai_slowly_drive_microsoft/?limit=500

    https://news.ycombinator.com/item?id=44050152

    https://www.youtube.com/watch?v=gieL0bxyTUU

    https://www.youtube.com/watch?v=jYHLKtWM164

    https://getdx.com/podcast/brian-houck-ai-adoption-playbook/

     

    2025-05-28 11:133725

    评论

    发布
    暂无评论

    【内网渗透】一次简单内网靶场渗透

    网络安全学海

    黑客 网络安全 安全 信息安全 渗透测试

    Centos7 搭建单机Spark分布式集群

    Yeats_Liao

    后端 虚拟机 10月月更

    Flash软件应用项目(三)

    张立梵

    设计师 Flash 10月月更

    区块链架构的层级:第 0、1、2、3 层介绍

    devpoint

    区块链 10月月更

    2022年8月银行APP月活跃人数盘点

    易观分析

    手机银行 8月

    Windows Update MiniTool 20.12.2016 控制Window更新下载及使用教程

    Yeats_Liao

    工具 windows 10月月更

    什么是IP路由?思科与华为在IP路由配置上有啥区别?

    wljslmz

    路由器 动态路由 静态路由 10月月更 IP 路由

    【愚公系列】2022年10月 Go教学课程 033-结构体方法重写、方法值、方法表达式

    愚公搬代码

    10月月更

    Feign的整体流程

    急需上岸的小谢

    10月月更

    【一Go到底】第二十天---闭包

    指剑

    Go golang 10月月更

    基础结构:链表 回文链表

    芯动大师

    Python 10月月更 回文数

    如何监测MySQL是否命中索引?

    乌龟哥哥

    10月月更

    利用Babel自动生成“Attribute”文档

    小鑫同学

    前端 markdown 插件开发 babel 10月月更

    数据湖(五):Hudi与Hive集成

    Lansonli

    10月月更 Hudi与Hive集成

    创建容器镜像:如何编写正确、高效的Dockerfile

    okokabcd

    Docker

    命名规范与原则

    Appleex

    代码人生 命名规范

    树莓派4B安装docker-compose(64位Linux)

    程序员欣宸

    Docker 10月月更 树莓派4

    如何进行项目管理?

    老张

    项目管理

    深入理解java中的自动装箱与拆箱

    乌龟哥哥

    10月月更

    一文搞懂CAN和CAN FD总线协议

    不脱发的程序猿

    汽车电子 通信协议 CAN总线 CAN和CAN FD总线协议 CAN FD总线

    CAN与CAN FD通信之间存在的问题

    不脱发的程序猿

    汽车电子 CAN总线 CAN FD总线 CAN与CAN FD通信问题 CAN与CAN FD通信

    Centos7 搭建Jupyter NoteBook教程

    Yeats_Liao

    后端 虚拟机 10月月更

    feign的动态代理

    急需上岸的小谢

    10月月更

    RefectiveFeign

    急需上岸的小谢

    10月月更

    Photoshop软件应用项目(三)

    张立梵

    设计师 ps 10月月更

    聊聊 K8S:K8S集群搭建实战

    老周聊架构

    k8s 10月月更

    一份经过时间检验的 Laravel PHPUnit 测试经验分享

    乌龟哥哥

    10月月更

    cstdio的源码学习分析11-格式化输入输出函数fprintf---format解析跳转表逻辑分析

    桑榆

    c++ 源码刨析 10月月更

    公司没钱了,工资发不出来,作为员工怎么办?

    石云升

    离职 职场经验

    数据中台坠落神坛,数据服务平台闪亮登场,阿里、快手又整烂活?

    雨果

    数据中台

    Copilot慢慢逼疯微软程序员:AI写代码,人类收烂摊子,修Bug也全靠改PR标题?_生成式 AI_Tina_InfoQ精选文章