“AI 会写代码,那我们是不是都要失业了?”这句玩笑话,现在已经越来越不像玩笑了。GitHub Copilot、CodeX 等工具已经能帮我们写代码,而这次 Google 推出的 Jules,似乎又更上一层楼。
Jules 搭载了 Google 最新的 AI 模型 Gemini 2.0,而它的核心亮点在于“自主性”!
或许有一天,它真的会替我们把所有工作都完成吧?我们满怀期待!下面就来实际测试一下它能做些什么。
Jules 能做什么
Jules 是一款能够自主完成编码任务的 AI 智能体。它不仅限于生成代码,还能实现以下高级自动化功能。
- 复杂任务的拆解与规划:将给定任务拆分为多个小步骤,并制定实施计划。
- 代码生成与修改:可跨越多个源文件生成代码,或修改已有代码。
- Bug 修复与调试:定位代码中的 Bug 并进行修复。
- 测试的编写与执行:运行现有测试或编写新测试,验证修改是否正常工作。
- 获取仓库与克隆:从 GitHub 等仓库获取代码,并克隆到虚拟机中开展工作。
- 创建拉取请求:代码修改完成后,以拉取请求(Pull Request)的形式提交。
- 异步工作:用户在处理其他工作时,可在后台推进编码任务。
- 语音摘要(CodeCast):可生成语音内容,对近期的代码活动进行总结。
ChatGPT 的新功能“Codex”有何不同?
什么是 Codex
Codex 搭载了 OpenAI 开发的专用大型语言模型“codex-1”。该模型以最新模型“o3”为基础,针对软件开发进行了优化,是一款融入了资深工程师编码风格与经验知识的智能模型。
主要功能
- 代码补全、建议与生成(实时)
- 根据注释生成代码
- 现有代码中的函数和方法建议
- 擅长对现有代码库进行修改和扩展
Codex/Copilot主要作为“输入辅助”工具,在编写或修改现有代码时实时提供帮助,定位类似于AI结对编程助手(编码辅助工具)。
另一方面,Jules作为“代理开发者”,最大的不同之处在于能够从项目启动到结束,自主执行范围更广的任务。因此,Jules甚至可能胜任从零开始搭建新项目的初始阶段工作,可以说它更专注于“开发任务的自动化”。
- 也可以创建新项目:Jules会根据用户下达的任务(例如:“创建一个基础的Web应用”),从零开始创建所需的文件和目录结构,并生成代码。
- 与GitHub仓库深度集成:Jules会将用户指定的GitHub仓库克隆到虚拟环境中并在其中工作。因此,它不局限于修改单个文件,还能对整个仓库进行结构性修改、添加新文件、删除现有文件等,全面操作整个项目。
- 自主工作:从项目的初始设置,到文件创建、代码生成、测试执行、创建拉取请求,Jules会自主推进整个流程。
Jules的自主性更高,可以把整个开发任务交给它,定位就像一位“代理程序员”!
实际使用体验!
Jules 的使用方法
Jules 主要通过聊天式 UI发出指令。
1.访问 Jules:可通过 jules.google.com 访问。
2.连接 GitHub 仓库:选择要处理的 GitHub 仓库和分支。本次试用我们准备了“jules-test”仓库。
3.通过提示词下达指令:使用日语也没问题!这次我们尝试用 JS 实现一个时钟。
4.批准实现计划:Jules 会先提出实现计划。用户审阅并批准该计划。它会先制定工作流程,非常清晰易懂!
5.执行编码并确认进度:计划获批后,Jules 会自动开始编码,并汇报工作进度。
虽然需要一点时间,但已生成 index.html、script.js 和 style.css 文件!
6.审阅并批准更改:更改完成后,Jules 会连同变更差异(diff)一并创建拉取请求(Pull Request)。用户审阅并批准后,更改即会合并到仓库中。
提交信息有时真让人犯难吧?它会为你自动总结生成!
拉取分支后……编辑器中已生成文件!
浏览器预览效果如下!
以往的AI功能在输入“用JavaScript实现一个时钟”这样的提示词时,通常只会告诉你实现步骤或代码内容,而这次它甚至可以从创建文件到与git联动,一条龙完成整个工作!
不过,像这次这样简单的实现,全权交给它应该没问题,但对于更大规模的实现,到底能放心交给它到什么程度,实际上怎么样呢……大概就是这种感觉。
接下来我再额外请求它“把装饰做得更华丽一些”。
它提出了几个方案,我这里就交给它来决定了。
它已将背景改为渐变色!
只需创建一个代码仓库,它就能从零生成文件、编写代码,并推送到git,简直太厉害了!堪称代理程序员。
不过目前它仍以测试版形式提供,并设有使用限制(例如每天5个任务)。
此外,创建文件和实现程序需要一些时间,而且输入框也出现过故障,导致内容没有被正确反映。
另外,据说Jules遇到错误时,当时的工作内容不会被提交,因此即使想要保留做到一半的工作差异,也可能无法被应用。
我们请它把这次的JavaScript时钟实现改写为Next.js,它也成功完成了转换,并搭建好了环境。不过在中途遇到了错误,导致Next.js的文件始终没能拉取到本地……。虽然非常方便,但我认为它也存在不少缺点。
总结
如果Jules今后越来越聪明,那么繁琐的重复性工作就可以交给Jules处理,我们或许就能把时间充分用于学习新技术、享受兴趣爱好等事情上!
Jules或许真的能作为工程师的得力伙伴,彻底改变开发的常规方式呢!
主要从事标记(Markup)工作,并使用 JavaScript、React 和 Next.js 进行前端开发。看到自己参与的网站顺利上线,我会非常开心!爱好是弹吉他。喜欢猫和烤红薯🐱🍠
Hirappi
前端工程师 / 2022年入职