AI编程双城记下:深入分析下一个技术革命的机遇与实际应用挑战
本文内容适合关注 AI 前沿的读者。回顾2024年 AI 编程领域技术和产品创新,同时总结企业编程提效在落地的真实效果和挑战,从落地实践和思考,观察行业趋势和分析解决方案。最后,展望2025年AI 编程下一代技术给大家的期待。文章信息量较大,建议阅读时长20-30分钟适宜。本文涉及关键字:Github Copilot、Cursor、v0、reweb.so、AI Agent、Coding Agent、RAG、微调、Blot.new 、Devin.ai 、Cursor Composer 、AIOps、Function Call
荣耀时刻
To C
从ChatGPT ,到 AI 编程工具 Github Copilot 的横空出世。到如今火爆全球的 Cursor、Devin ,编程领域不可否认迎来了自己的“工业革命”。我觉得所有的工程师真的都会觉得:AI 在日常的编程当中,真真切切地给大家带来了巨大的效率提升,极大的降低编程的门槛
https://survey.stackoverflow.co/2024/ai
• Stackoverflow 2024年对AI 编程领域做的调研,在受访全球2万名工程师里,81%人认同AI 工具提高了开发效率。 To C来说,AI 编程已经不是怀疑它的价值,而是想象空间能到哪的范畴了
• 相对于过去,机器学习和大模型技术推动了编程领域巨大的革命。OpenAI 在2024.12底发布了 ChatGPT o3 ,在权威的顶尖程序员竞赛CodeForces中,o3的得分达到了2727分,远超 o1 的1891分。在168076名程序员中,o3的排名为175名,o3的编程能力已经达到了一个相当高的水平,能够与顶尖程序员相媲美。
https://openai.com/
下一代编程技术 Cursor
回顾整个2024年,Cursor 可能是最受大家关注和欢迎的 AI 工具。作为定义下一代编程IDE的 Cursor, 凭借独有产品创新火爆全球。越来越多的工程师已经用 Cursor 进行 Copilot 极限编程,我自己70%-80%日常编程交给 Cursor 完成。哪怕它是付费的,也物有所值
Cursor 一整年惊人的增长
2024年8月 Cursor的开发商Anysphere宣布完成6000万美元的A轮融资,此轮融资由Andreessen Horowitz(a16z)领投,谷歌首席科学家Jeff Dean等,公司估值到4亿美元
2024年底 Anysphere完成1亿美元的B轮融资,投后估值高达26亿美元
业绩增长 Anysphere 2024年4月的 400万美元到10月的 4800万美元
付费收入短短半年增长超过1000% !
Cursor 为何如此受到全世界工程师的欢迎。Cursor 团队来自MIT,团队在2022年组建,和其他 Code Copilot 不同,Cursor 定位为The AI-first Code Editor,旨在构建新型的代码编辑器,而不是编程 AI 插件。在三年的试错后,直到ChatGPT 横空出世,团队意识到 AI 可以更好在编程世界中进行人机交互。Cursor 有一个叫 Composer 功能,颇为惊艳:
- 在 IDE 中和 AI 交互聊天,简单描述你的编程需求,然后它根据你的意图同时去自动修改和编辑多个文件,中间过程不用参与。
- 工程师不用关心文件的位置和如何配置存放,他一一批量自动化完成。而你只需要查看它提供的代码Diff 对照,最后用它提供的 Accept 按钮一键确认完成即可。
- 对比过去编程,往往几十分钟,甚至数小时工作量,短短几分钟可以轻松完成
Cursor Composer 功能
下面是我课程项目的案例,完成一个小功能:把添加类目功能用友好的弹出层实现。只需在Cursor 输入提示词“新增类目改成弹出层”,在不写代码情况下,完成功能
倒逼 AI 编程工具大佬 Github Copilot 由付费改免费
在对话模式中自动并发创建和修改多个文件,这种全方位的编辑能力在编程体验和效率上远超传统 AI 工具,比如 Github Copilot 提供的上下文引用。因为 Cursor 产品上革新换代,甚至让 Github Copilot 感受极大压力,提供免费额度,产品迭代全面学习 Cursor
Cursor 其它重要亮点
- 更直观上下文引用能力 :支持选择文件模版,目录上下文等高级 Prompt 设计
- Inline Chat 功能:允许开发者在编辑器内部直接进行代码优化、提问等操作,而无需切换到聊天面板。这种设计极大地提高了开发效率,让开发者能够更专注于编辑器本身
- 代码自动补全多行编辑:Cursor 能够根据当前的代码上下文同时建议多行代码的修改,你要做的就是按下Tab键,让 Cursor帮你修改
Cursor 编程交互远超其它对手,而且给我们一个很大震撼:Cursor 如此出色却并没有自己的底层大模型,它采用是深度集成通用大模型模式工作,任何大模型都可以作为底座
Cursor的编程质量如何呢?
通过系统系统和真实项目考验,Cursor 比其它AI 编程工具,代码质量更高,而且完成开发能力更强。是否让你意外?特别让我印象深刻是它缺陷查找,长Token的处理能力。
下面我用两个真实项目案例,大家直观感受下:
- 高频缺陷查找的案例
- 长Token文本 处理能力:下面一段完成数据清洗的案例,把酒店中重复的房型数据去除掉,对应的提示词
帮我把sql 重复插入数据去掉,生成新的 insert sql:
1、重复规则 hotel_id+room_id+check_in
Cursor 出色完成任务,其它 AI 编程工具也没有完成,包括 Github Copilot
更多案例详细介绍和演示,看我开源项目
https://github.com/laziobird/CodeLLMEval/blob/main/common-scenarios/longContext-chinese.md
- Cursor 给业界启发:AI 编程的能力是专门的垂直大模型做的更好,我们需不需要专门的垂直代码大模型?Cursor 集成通用大模型,利用大模型的推理逻辑,自身优化提示词和思维链COT,让生成的代码质量更好。这是一个非常有趣值得探讨的点
- 甚至 Cursor 极大拉低编程的门槛。一些不懂编程的人,按照他们设想,用Cursor 做一些简单的程序应用。最近有一款 IOS 应用,叫”小猫补光灯“,上了AppStore热门排行榜。作者是一个产品经理。他声称自己完全没有编程经验,用 Cursor一个多小时开发了这款APP。
我下载试了下,是一个实用的小应用。事实证明,就算没有做过编程的人,真可以通过Cursor ,用纯产品语言的对话,就可以开发一些小功能、简单的应用。当然,作者也承认在不断学习一些编程知识,因为后续版本完善和缺陷修复需要懂编程知识
- 不考虑那些高并发、高性能、复杂系统必要扩展等因素,作为一个简单的基础应用来说,对于不懂编程人,Cursor 在零代码开发上足够惊艳,极大降低了软件门槛,值得肯定。
To B
工程师使用AI工具编程76%, AI编程工具在企业渗透率超过90%
https://survey.stackoverflow.co/2024/ai#sentiment-and-usage
很多企业公开宣称代码采纳率达到了30-40%,下面国内编程平台官方给出的案例
https://comate.baidu.com/zh/scenarios
https://lingma.aliyun.com/lingma/community/use-cases
问题和挑战
AI生成的代码质量堪忧
虽然AI编程越来越被企业认可接受,随着落地实践深入。我们发现AI生成代码质量很多情况是达不到生产的标准。甚至是我们主观认为简单的单元测试,API 文档,目前也存在大量的幻觉,比如下面的真实案例:
单元测试用例问题
所有编程工具都有一键生成能力。最简单的单测生成都有问题,甚至编译不通过。主要体现问题:1、没有单测真实项目的数据 2、没有测试边界 3、编译甚至不过
直接生成的单测就像下面一样,处处编译不过
主观大家认为单元测试是最容易靠AI自动化生成,其实从大模型底层原理,它是非常难的技术,要分别考虑上下文精准和长文本输入处理能力。有些团队还单独研发AI的单测产品,里面有十几种单测指标。而且工程师应该很理解,单测在我们真实编程所占的工作量才10-20%
单测改进方案
在真实项目中,我们靠改进产品,用大模型做定制化仿写,拿到下面想要单测结果
API 文档问题
简单的 API 几乎所有 AI 编程工具都可以正确完成,但是上下文稍微一复杂,例如函数入参有嵌套,甚至一些编程工具输出完全错误。下面是我开源一个测评案例,有关于医疗口腔服务的 API文档生成
https://github.com/laziobird/CodeLLMEval/blob/main/common-scenarios/api-chinese.md
通过代码Token,观察生成的API文档,是否符合需求,是否理解准确,主要考察:
- 是否理解需求业务
- 是否入参、出参理解准确
重点考察大模型在以下方面的能力:
- 理解函数的嵌套入参和出参结构
- 精准理解和分析代码的上下文结构,检索信息
- 进行逻辑推理能力
具体函数方法
@Slf4j
@RestController
@RequestMapping("/api/v1/advice")
public class AdviseController {
@Autowired
AdviseService adviseService;
@PostMapping("/submitExpertAdvise")
public Result<Integer> submitExpertAdvise(@RequestBody ExpertAdviseDto expertAdviseDto){
Integer expertAdviseId = adviseService.addOrUpdateExpertAdvise(expertAdviseDto);
return Result.succ(expertAdviseId);}}
具体的入参
public class ExpertAdviseDto {
private Integer id;
private Integer presOrderId;
private String advise;
private DoctorDto doctorDto;
private Date createdAt;
private Date updatedAt; }
入参有子参数 DoctorDto、DoctorDto 有嵌套的二级子参数 CertInfoDto,完整入参结构
我们看看AI编程工具生成API文档结果,提示词这样构造的
生成submitExpertAdvise 方法的完整 API 文档:带上入参、出参所有参数 的详细中文介绍, 给出完整示例, 格式markdown,给前端调用
参数完全错误,输出结果是0分,比如下面编程工具生成的文档
这个案例几乎所有的AI 编程工具都是错的,只有 Github Copilot 正确完成
API 文档生成改进方案
在理解大模型的底层原理下,用"万能公式",手动补充上下文,这些编程工具才能勉强生成正确的API文档
总结:一年中给很大企业落地实践中,我深有体会,基础的功能没做好,就算生成再多代码,也是滥竽充数。反差如此之大的根本原因在哪呢,有这么几点:
- AI 编程发展是大模型技术变革带来了整体爆发,AI 编程工具过去国内完全零起步,产品思维匮乏,很多都是小白鼠实验
- 国外有 Cursor、Codeium、Magic等 专注编程 IDE的团队,大部分融到 B、C轮,产品理念和技术生态成熟,很了解编程需求。相反国内开发团队,对产品的理解,还是过往的经历沉淀,都没有特别精通编程的产品和技术专家。
- 国内工具整体功能会滞后国外一段时间。国外技术革新太快,国内摸着石头过河,版本迭代就非常快,甚至有几天一个升级版本。这对于企业来说就变得非常不确定性。
- 版本迭代过快,产生新的幻觉和使用习惯的改变,特别是大的产品更新,导致很多企业投入大量的重复时间和精力。试错的代价非常大。对于一个工程师可能乐于接受新鲜的变化,对于企业,这种剧烈的不成熟期落地非常不现实和风险很大
前段时间公开一家国内大型科技公司落地智能编程实践效果,大家可以来感受下
表现结果:代码质量堪忧,企业提效不明显
反人性的代码采纳率
在落地AI 编程提效中,很多企业会提到代码采纳率这个指标。企业想以代码采纳率去衡量AI 编程的一个产出。我觉得它本身是一个反人性的东西,很像过去“追逐代码测试覆盖率”的案例,本质上反映是企业落后管理上一种 KPI 形式:
- 大家可以想一想,如果代码采纳 AI 的代码越多,是说明工程师越没用嘛?同时,AI工具要靠工程师去使用,工程师的动力又在哪呢?
- 假如AI 这种Copilot工具用的好,让AI 贡献更多的代码,更多的参与编程,把代码采纳率提上去了。那站在企业的角度,会不会认为机器生产更多代码,工程师工作量不饱和了呢?这会给工程师、企业带来巨大的困扰。工程师完全没有使用AI编程工具动力和动机。另一个角度看,代码采纳率越低,手写的代码更多,更能突显工程师的价值?会不会产生这样的误解?如果企业以代码采纳率作为一个核心的企业研发提效的指标,从逻辑看是一个比较无解的结果。就像上面的企业案例,折腾大半年几乎看不到提效,这可能是深层次的原因
未来企业量化AI编程的解决方案 Solution
我认为要具备以下核心的几点理论:
1、有效度量指标,指标要清晰,边界可分
2、通俗易懂,非技术人员能理解,决策层能量化成本
3、落地实践要人性化、工程要系统化
我总结一个AI参与人类编程的理想状态
第一,任务AI独立完成,或者人类少量微操,绝大部分 AI 完成,这样才能量化 AI 对这个任务的贡献
第二,把复杂的工程拆分成一个个独立的功能模块,提高 AI自动化的可能。其实和过去我们做一些辅助工具,解决重复低效和流水线的工作道理类似。这是机器学习擅长的工作,拆分出来这些基本任务交给 AI 自动化完成,已经被证明是屡试不爽的思路。
编程艺术
做复杂的软件编程,本质说是一种用机器语言在做艺术创作。不知大家是否这样认为?
我们奢望大模型一句提示词让 AI 写一套 ERP、写一个 Facebook 有点理想化。
人类更应该做艺术创作,工程师的价值才能得到体现。
编程有哪些艺术?有了 AI 能力,工程师专注做架构的设计和核心算法,做复杂的艺术编程。从长远来说,也是对工程师有更高的要求,迫使工程师学习进步,做更高级的编程。
另外一方面,工程师有了一个新的目标:如何把更多的任务赋能让 AI 来自动化完成。同时,软件工程理论化知识比过去重要。拆解项目,分工任务,产研协同有了全新的要求。
这也是体现工程师的一个价值,因为它给企业带来了巨大的绩效和节约成本。而且这就是架构师过去到现在一直在做的事。
我接触到很多技术前沿企业,都从技术团队骨干开始培养一些 AI编程落地的推动人。特别是一些业务稳定企业,内部技术团队反而有了动力,价值被重视。
企业现阶段落地的场景
正如上面提到企业量化AI编程的解决方案,确实最近一年多接触到这方面尝试落地的企业,有比较好的结果反馈,都是往这个趋势去走。包括国内外创新科技公司,做的AI辅助编程的分享,都体现了这样的思想:他们落地的场景大部分聚焦在一个个比较垂直化的编程场景。比如像编程中一些日常的基础功能,也有针对自己特定业务的一些工作场景,把它单独抽离出来,下面总结目前大家取得一些阶段性效果的典型场景
代码 Review 和版本管理
一些AI 编程工具,GitHub Copilot、CodeRabbit、国内百度Comate、通义零码自带能力:
代码质量检测:通过机器学习算法自动识别代码中的错误、漏洞和潜在风险,提供优化建议,甚至提供 Diff格式的代码建议,直接对比应用
提升审查效率:AI Code Reviewer为Pull Request提供智能反馈和改进建议,支持文件过滤功能,避免不必要的审查,设置和集成过程简单
**代码提交版本信息管理:**代码 Commit Message 自动化一键生成,AI 能全面感知代码变动细节,比起工程师写提示词,效率高,排版更规范。尤其在每次 Commit 提交文件多,能极大帮助架构师加快梳理业务代码和分析代码质量的时间
AI Commit Message 自动生成效果
集成版本控制平台:很多技术团队通过调用大模型 API方式 与GitHub、GitLab等版本控制平台无缝集成,支持团队协作、代码共享以及版本管理
智能版本管理功能:比如 Cline 新增了智能版本管理与任务跟踪系统,通过快照、比对和恢复等功能,让开发过程更加灵活和便利
单元测试
单元测试是一个非常基础的单元,每一家企业在代码质量来说是一个必要的过程。
市面上有一些垂直类的 AI Agent 产品专注于生成单元测试。比如 Gru.ai
https://gru.ai/home/test-gru 写JavaScript、TypeScript 单元测试用例
文档编写
Readme-ai
https://github.com/eli64s/readme-ai
基于大型语言模型(LLM)的README文件生成器。它能够自动分析代码仓库,提取关键信息,并生成结构化、内容丰富的README文档
Mintlify
https://mintlify.com/
2024年9月6日 Mintlify 完成了 1850 万美元的 A 轮融资,贝恩资本和 Y Combinator 参投
用 AI 完成开发者文档,不限 ChangeLogs、API Reference、SDK Library 等
前端开发提效创新
v0 代表的创新型AI产品,主要功能是通过简单的文本提示来生成用户界面,从而简化UI的生成过程,提高设计和前端开发效率
https://v0.dev/
比如 v0 + reweb.so 工具结合,通过网站截图让它生成完整的前端代码。reweb.so 则可以直接把前端代码粘贴,自动生成控件控制台,不写代码情况下调整页面
截图后v0生成前端代码和预览效果
reweb 生成了编辑控件,不用写代码,直接操作控件调整页面
v0 + reweb 另外市场价值:对于不懂前端编程的技术,可快速入门前端开发,不需要设计,独立完成全栈开发,尤其对小团队有很大的帮助
作者简介
- 蒋志伟,next4.ai 创始人 (微信 nizhanali)
- 目前从事 AI 创业和技术顾问,关注 AI Agent、RAG、AI搜索、智能编程领域
- 曾就职 阿里、Qunar、美团,前 Pmcaff.com CTO,核心研发过上亿用户搜索推荐系统
- 我开源了一个用来测评 AI 编程质量的开源项目,也欢迎大家关注和交流
https://github.com/laziobird/CodeLLMEval
发表评论