DC娱乐网

Amp,Claude Code和Gemini大比拼,测试最强AI编程代理

AI编程代理的兴起,让程序员解放出来,把一些编程任务交给AI来做了,那么当前AI编程代理究竟能做的怎么样呢?是不是真有所

AI编程代理的兴起,让程序员解放出来,把一些编程任务交给AI来做了,那么当前AI编程代理究竟能做的怎么样呢?是不是真有所谓宣传中的可以做到“让一个刚入门的程序员就能完成资深程序员一周的工作,生成一个品牌官网只需五分钟”?虽然我坚信AI模型确实可以将一些编程任务提高2倍,10倍甚至数十倍的效率。但是其他的还要看实际的活儿,“是骡子是马,拉出来溜溜”才知道。今天我们就来看看一个老哥测试的目前最强的三个AI编程代理挑战。

设置场景

基本任务场景很简单。设置让每个代理都从以一个空目录为起点,挑战的任务内容用一个md文件task.md来说明,设置为一次性意任务挑战,除了一些小的修复之外,不允许重复迭代来比较结果。task.md为所有代理共用同样的范本:

任务内容主要要描述了一个Web应用程序的开发任务,该应用程序的主要功能是监控GitHub仓库的文件变更,并通过Slack消息进行通知。

前言

提醒严格按照说明执行,避免过度设计(如在本地开发时运行docker-compose up)。

技术栈

后端

编程语言:Go

Web框架:flamego

配置管理:go-ini

数据库

数据库系统:PostgreSQL

ORM组件:gorm

数据库迁移工具:goose

前端

前端框架:React + React Router

本地开发服务器:Vite

CSS 框架:Tailwind CSS v4 + Shadcn UI

包管理工具:pnpm

数据交互

API 风格:RESTful API

数据格式:JSON

系统需求

该Web应用程序需要实现功能包括:

仓库监控:监控GitHub仓库的文件变更,并通过Slack消息通知用户。

Web UI功能:

添加仓库:允许用户输入GitHub仓库的URL,以添加更多需要监控的仓库。

添加监控规则:规则语法应与GitHub的CODEOWNERS文件相同。

规则更新检查:每当规则更新时,检查是否有实际匹配的文件。

定期检查:定期重新检查规则,以应对文件移动或重命名的情况,并通知用户。

规则预览:允许用户在添加或更新规则时预览匹配结果。

多仓库支持:支持同时监控多个GitHub仓库。

安全要求:不将敏感信息存储在数据库中,而是存储在配置文件中。

技术细节

代码结构和前端设置:参考pgrok的代码结构和前端设置(如ESLint、Vite等),包括如何通过Go服务器将Vite请求代理到Vite。

任务管理:使用Taskfile.yml设置常用命令,其中必须包含一个名为task build的命令,用于构建后端服务器。

进程管理:使用Procfile和overmind进行进程管理,运行overmind s时应启动所有进程。

错误检查:完成开发工作后,检查并修复所有构建错误。

总结

该任务要求基于Golang语言的生态系统开发一个功能丰富的Web应用程序,涉及前后端开发、数据库管理、API 交互等多个方面。AI需要按照指定的技术栈和参考项目进行开发,并遵循相关的技术细节和安全要求。

注意到,技术栈和实现方案的选择非常不典型,而且“奇怪地”要求它遵循“模板存储库”。这都是故意的,可以让这些智能体在那些可能没有经过广泛训练,而是以上下文/提示形式提供的东西上能走多远。

然后,一次性提示也完全一样:

通过task.md完成任务。

Amp的表现

测试的的第一个代理是Sourcegraph的Amp。

优势

所有任务过程细节均可以公开查看:

项目结果做的最符合要求的;

完成任务后,及时提供后续步骤的说明,包括设置数据库,怎么启动应用服务器等。

问题

从config.ini从仍读自 PORT参数,没有找到就断了,不得不手动修复。可能是因为PORT env变量也用于控制Vite服务器,因此发生了冲突。

没有编写任何实际的 CSS,也没有使用任何带有 Tailwind CSS 的样式。

唯一一个在第一次尝试时就把路由语法搞错的。请求后就修复了。

挂在正在运行的HTTP服务器上(go run main.go)。按两次Ctrl+C退出僵尸进程。

唯一一个没有自主检查构建错误的。

要求通过Go后端代理Vite请求,但最初并没有这样做(“模板存储库”有一个示例),在被要求这样做之后有点工作,但在catch-all路由语法上存在错误。

创建了迁移脚本,但未使用goos按照要求,决定使用GORM的自动迁移功能。

最终,生成的Web应用程序无法运行运行,Web UI在索引页上的样子如下:

没关系,它没有CSS,但甚至没有指向它所编写的页面的超链接?

其他问题:

在 ODO中间随机停止,不得不要求它完成。

使用NodeJS环境变量来确定开发模式,而后端在Go中。

Claude Code

然后,测试Anthropic的Claude Code 。

优势

其命令和网站白名单是项目级别的,这点非常好。并非所有命令都一样。

唯一获得 overmind start第一次尝试就成功,没有构建错误或任何问题。

唯一能一个提供了实际可用Web UI的AI代理:

可以在页面之间跳转,值可以正确地存储在数据库中,等等。

问题

尽管提供了实际可用的应用,仍然不够完美,还是存在一些问题。

没有编写任何实际的CSS,也没有使用任何带有Tailwind CSS的样式。

完全没有遵循需求中要求的代码结构。所有Go文件都放在根目录中。

要求通过Go后端代理Vite请求,但最初并没有这样做(“模板存储库”有一个示例),在被要求这样做之后有点工作,但在catch-all路由语法上存在错误。

创建了迁移脚本,但未使用goose按照要求,决定使用GORM的自动迁移功能。

其他问题

使用NodeJS环境变量来确定开发模式,而后端在Go中。

Gemini

最后,是谷歌的,号称是世界最强的Gemini。

优势

提示选择想要的编辑模式(自动、审阅),甚至支持“使用外部编辑器修改”。

唯一一个尝试使用Shadcn UI的人,但是...弄的乱七八糟的,接着看问题部分:

问题

为了使用Shadcn UI,下载了一大堆的依赖项,并制作了一个button.tsx,但该按钮看起来与原始HTML提供的按钮完全相同。

总是弄乱正确的加载路径 config.ini,必须进行手动修复。

唯一一个不提供依赖的config.example.ini配置文件,数据库用户设置为空。

总结很差,没有明确的下一步来测试应用程序。

对一些小问题进行了多次手动修复,监听地址的字符串连接也是错误的。

完成的Web应用程序充满错误,缺少很多依赖项,实际上无法加载。为了想看看究竟开发的东西是什么样子的,经过多次手动编辑后才能短暂运行但是也无法得到甚至截图。

初始版本中数据库层没有错误处理。后来为了修复Web应用错误,添加了错误处理功能。这又很奇怪,因为这些错误是JavaScript的错误。

要求通过Go后端代理Vite请求,但最初并没有这样做(“模板存储库”有一个示例),在被要求这样做之后有点工作,但在catch-all路由语法上存在错误。

创建了迁移脚本,但未使用goose按照要求,决定使用GORM的自动迁移功能。

最终,Web应用程序无法运行。无法提供屏幕截图。

其他问题

它不会像Web内容那样抓取,而是尝试将模板库克隆到本地。这并非完全无稽之谈,放在这里是为了保持一致的分组。

使用NodeJS环境变量来确定开发模式,而后端在Go中(和Clude Code一样问题)。

总结

根据对任务执行结果,三个世界最强的AI编码代理(智能体),显然确实能做一些实际的编程任务,但是还不够完美。以是否有可用的Web UI来判断,Claude Code 显然胜出。但考虑到各种问题,它真是最完美的么?由于挑战只是进行的一锤子任务。但实际上,一般来说实际开发不是这么简单的,往往需要后续迭代的才能实际达到能用的水平(当然有可能越改越差)。Claude Code虽然做出了能实际运行的应用,但是其项目结构完全是混乱的,后续修改非常麻烦,迭代也费劲的很。

当然一些问题可能是由于任务提醒(task.md)没有撰写好,尤其没有解锁和发挥出各个代理个性的优势功能,提供注入AGENT.md 或 CLAUDE.md的任务书,由于时间限制,只运行了三个代理。为了公平起见,使用了CLI版本。Amp和Claude Code有VSCode扩展,如果能查看更多诊断信息,效果可能会更好。

当然后续可以考虑加入阿里号称世界最牛的Qwen 3-Coder可以对比测试一下。