人类少年们在奋战高考,AI 王国的小朋友们也迎来了自己的高考
AI 编程产品越来越多(以至于文章标题都快写不下了),自媒体笔下的程序员已经失业不止三千遍。
然而各大评分 Benchmark 不断被刷,大家已经麻木了。真正展示效果的是应用案例。然而大多数测评案例要么是单文件的算法题,要么是无具体业务逻辑的前端页面,要么是被做过无数遍的小项目(贪吃蛇或者俄罗斯方块),这些都与真实场景下的工程化开发有一定距离。
最近脑洞想写一个 MCP Server。这是一个真实的需求,难度适中,逻辑不复杂,但也有一些小坑。加上对模块化、测试、工程化的要求,正好拿来给 AI 们练练手。
完整的开发需求 Prompt 见 https://github.com/lmy375/ai-code-survey/blob/main/prompt.txt。
简单概括:
echo $(($OPND1 + $OPND2))
变成一个有 2 个输入参数的加法工具。这个配置本身可通过命令行参数临时启动,也可通过配置文件批量配置并启动。这个需求在 Prompt 中描述得十分清楚,甚至将数据结构、样例都直接给出。只要能理解需求描述的意思,完成编码实现就行。&&, ||, ; , ../../
等。主要的坑:
本次参赛考生有:
测试只考查 Agent 模式,即完全的 Vibe Coding,不做技术性决策与干预。模型大部分都采用默认配置,没有 Pro 没有 Max,没有上最强模型 GPT-4o、Opus 4 等,基本是 GPT-4.1、Sonnet-4 的级别。因为太贵了。Cline 上试用了 Opus 4,因为他应该是上面里实现最简陋的,给点模型能力加持。少数民族加分
以下是主观体验评测部分
远程 Agent 都与 GitHub 深度绑定,在远程创建独立的执行环境拉取分支编写代码,并最终提交 PR。展示效果很酷,但实际工业界使用肯定不如本地 Agent 方便,毕竟大部分公司不一定把项目放到 GitHub 上。对于要调试的场景体验也很灾难,需要反复 Pull 并在 Web 端和 IDE 间切换。
Remote Agent 除了本身开发编码能力的问题,还需要处理环境初始化、依赖安装等等问题,表现普遍比本地要差一些。不过人类干预的需求最小,而且有独立容器处理 Task,可以一次开三五个赛马,结果选优。
Codex 基本不会出现失败的情况,且基本只需要一次交互,就能生成最终代码。OpenAI 的产品能力确实很强,整体使用是最舒服的一个。不过最终质量比较偷懒,生成文档、代码量最少,甚至许多需求也会跳过。
Google Jules 我本来寄予厚望,但似乎没用新模型,实际效果最差。经常因为莫名问题卡住,最终生成结果也惨不忍睹,甚至会出现循环目录嵌套的情况(典型的 AI Coder Bug)。似乎 Jules 每次都会生成一段特别长的 Shell 脚本用来开发代码(用来写代码的代码,元编程?),而这个代码本身又会出错。
Augment Code 经常会可怜兮兮地说自己遇到这个问题很久了解决不了,希望人类大爷给予指导。这在实际使用中是能改善体验的,避免 AI 越改越错死循环。但这是考试,作为监考老师,我只能当一个无情的"继续"回复机器。好在重试几次最终也能提交出可用的结果。另外 Augment Code 还支持直接 SSH 进容器内操作,可以在 Agent 不知所措时进行直接强力干预,而不用像 Codex、Jules 这种在 Prompt 地狱中反复折腾。
本地赛道又分职业 Coding Agent(Codex CLI、Claude Code)和各种 IDE/ 插件的 Agent 模式。整体表现都还可以。使用流程中需要人类确认的次数相比远程会多很多,主要在于本地命令执行的安全风险平衡。
Copilot 是个人感觉 UI 最舒服的,有很多小细节处理得不错:
Claude Code、Codex CLI 使用上比较类似。命令行界面,会感觉比较极客。
Cursor、Augment、Cline 体验都比较接近,会展示完整推理过程。冗长的回答更适合 Ask 模式,方便用户了解细节进行决策。但在 Agent 模式下还是精简为好,过长的内容会分散用户的注意力,用户实际只关注最终的修改。
以下是客观结果,考核维度:
echo $hello
,同时测试配置文件功能。符号说明:
结果见下表:
发现有两个大坑许多 Agent 都中招了:
&&
、||
、$
等,而 Prompt 中的示例对于参数定义恰好也使用了 $
,于是导致有些 Agent 实现的代码自己把自己防得死死的,正常功能也跑不起来了。Cursor 干脆不处理 $
,Augment Code 和 Cline 会用正则匹配完整的 $()
,从而保证原本功能可以正常执行。这两个坑并不是有意为之,但很符合实际。日常开发中总会遇到的各种奇葩问题。
其他:
$var
来表示变量,没有用 {{var}}
、<var>
等方式来替换,从而和安全方案需求相冲突。也许是 Prompt 写得太细了反而限制了 AI 自由发挥的空间?做完了别提前交卷,你再检查检查啊。
这一批测试用掉了整个周末的时间,最后检查 AI 写的代码到头大。不过受时间和金钱的限制,考卷只是单个示例,各个 Agent 也没有进行多次测试取平均值,结果仅供参考,不代表产品最终品质。尤其是没有用最好的一批模型,并不能发挥同学们的全部实力。
但纵然如此,整体结果其实是低于我的预期的。我在 Prompt 中除了描述产品需求,其实连核心数据结构、逻辑都写了(大多数 PRD 肯定不会做到这个地步)。我预想的结果会需要比较哪家实现得更完美,然后吹毛求疵一下找 Bug。甚至为了挖掘潜力写了 Level 3 方便诸神混战。然而实际上能跑起来完成基本需求就已经很困难了,不说菜鸡互啄也可说得上是卧龙凤雏。
当然这与实际在工作中用 AI 写从 0 到 1 的代码的体验是类似的:
2 天的需求 1 小时开发完了,嘻嘻
花 3 天理解并重构 AI 屎山代码,调试并修复隐藏的 Bug,不嘻嘻。
实际开发过程中会遇到的奇葩问题是多种多样的,人会踩的坑,AI 也会踩。解决问题的能力,权衡与决策的能力仍然是刚需。不知道看到这么多 AI 犯傻的情况,你的 AI 焦虑缓解一些没有?
最后所有测试结果放在 https://github.com/lmy375/ai-code-survey ,欢迎大家 Star、Watch、Fork 一键三连,你的关注是 AI 前进的动力,狗头。
【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。