今年AI编程领域非常热闹,明星产品频出,从Copilot到Cursor到Windsurf,还有很多细分领域的产品都让人眼前一亮。比如有人很简单的认为AI能提效50%甚至更多,也有人觉得AI提效不多,只是替代了搜索引擎。下面是KK的《让AI提效50%》一系列文章,总体写的还是很不错的。
看了一下iOS上付费版第一的App是一个不懂代码的产品经理写的,因为这个事在Twitter上也讨论不休止。
有人觉得是营销,有人觉得真实提效。到底AI能否提效,以及AI编码情况具体如何,这里我们梳理一篇文章,把2024年AI编程相关进展和大家分享一下。
一、前言
- AI编程的发展背景与现状
AI编程工具的出现和快速发展是技术进步的必然产物。这种必然性首先源于开源社区和代码托管平台提供的海量代码样本,为AI模型提供了充足的学习素材。其次,编程语言本身具有严格的语法规则和结构化特征,这种高度规范化的特性使得AI能够准确理解和生成代码。同时,深度学习技术的突破,特别是大语言模型在代码理解和生成方面的重大进展,为AI编程提供了强大的技术支撑。此外,随着软件开发需求的持续增长,传统开发方式已难以满足效率要求,开发者们迫切需要更智能的辅助工具来提升生产力,这些因素共同推动了AI编程工具的蓬勃发展。
AI编程工具的发展呈现多元化趋势,可分为以下几大类:
- 智能编辑器类
- Cursor:基于AI的代码编辑器,提供实时代码补全、重构建议和错误检测
- GitHub Copilot:集成于VS Code等主流IDE,提供智能代码建议和自动补全
- WindSurf:专注于代码重构和优化的智能编辑器,提供代码质量分析和优化建议
- 代码生成与转换类
- CopyCode AI:专注于代码复制和转换,支持跨语言代码转换和优化
- bolt.new
- V0.dev:专注于前端开发的AI工具,可直接将设计转换为React代码
- 开发辅助插件类
- Continue.dev:跨平台AI编程助手,支持多种编程语言和开发环境
- Tabnine:基于深度学习的代码补全工具,能够适应开发者的编码风格
- Amazon CodeWhisperer:专为AWS云服务开发的智能编程助手
- 一站式AI开发平台
- Devin:被誉为首个完全自主的AI软件工程师,能理解、规划和执行完整的编程任务
- Replit Ghost:集成代码生成、调试和部署功能的完整开发环境
这些工具的出现标志着AI编程正在从简单的代码补全和建议,逐步发展为能够理解开发上下文、参与软件工程全流程的智能助手。它们不仅提高了开发效率,也正在改变传统的软件开发模式。
除了国际主流AI编程工具外,国内也涌现出一批优秀的AI编程助手和平台:
- 豆包 MarsCode(对标Cursor)
- 专注于企业级开发场景的AI编程助手,尤其是Web IDE领域,一枝独秀
- 提供代码生成、重构和测试等全方位功能
- 针对中文开发环境和国内开发习惯进行特别优化
- 对刷题场景也有较好优化
- WeaveFox(对标V0.dev)
- 是Image to Code领域代表产品,比传统的d2c有本质区别
- 生成代码和人写的代码几乎无差别
- 和开发生态集成,可二次定制代码,是面向前端开发的智能助手
- 商汤小浣熊Raccoon(对标Continue.dev)
- 基于商汤大语言模型开发的智能软件研发助手
- 提供全面的软件开发支持,包括需求分析、架构设计、代码编写和软件测试。支持超过100种主流编程语言(如Python、Java、JavaScript、C++、Go、SQL等),并可集成至VS Code、IntelliJ IDEA等主流开发环境。
- 实际应用数据显示,代码小浣熊能提升开发者的编程效率50%以上。
- ClackyAI(对标Devin)
- 一站式开发,流程和devin类似
- 自主实现IDE,具备更多深层次优化
- 支持自动修复PR等
这些国内AI编程工具的出现,不仅为中国开发者提供了更适合本地化需求的解决方案,也在推动着整个行业的技术创新和发展。它们在理解中文编程需求、适应本土开发环境等方面具有独特优势。
整体来看,AI编程无论在国内还是国外都受到高度关注和期待。各大公司和开发团队都在积极探索如何通过AI技术来降低开发成本、提升编程效率。从目前的发展趋势来看,AI编程正在逐步实现从"专家式编程"向"人人可编程"的转变。这种转变不仅能够降低编程门槛,让更多人能够参与到软件开发中来,还能够大幅提升专业开发者的工作效率。
随着AI技术的不断进步,特别是大语言模型在代码理解和生成方面的持续突破(含多模态),我们有理由相信,未来AI编程工具将在以下4个方面取得重要突破:
-
代码质量的持续提升:AI将更准确地理解开发意图,生成更高质量、更可维护的代码。这一点是可以预见的,很多人开玩笑说未来取决于模型能力升级,这和当年优化Node.js性能,依赖Node.js版本升级类似。
-
开发流程的进一步智能化:从需求分析到代码部署的全流程AI辅助将更加成熟。类似Claude Artifacts,类似于Cursor composer,甚至devin、clacky之类的,都在从单文件生成到多文件,甚至项目级的生成,所以智能化也是必然的。
-
更强大的协作能力:AI将更好地支持团队协作,提供更智能的代码审查和优化建议。对于现在的交互形式,我不认为是AI编码终态,比如CR现在的流程就非常不合理,不熟悉的人是review不出问题的,以至于很多流于形式的CR,我认为未来应该出现一种新的研发形态,在协作方面更强大。
-
AI时代应该有AI时代的语言和框架,这些会搭配编码方式,进一步做到效能最大化。比如moonbit就打的是AI时代的新语言,能否成功不好说,但至少是一个很棒的尝试。至于标榜AI时代的框架就更多了。我个人以为语言和框架和编码方式是三者相互影响的,所以现在下结论,讨论好坏还为时过早。
这种发展趋势不仅会改变软件开发的方式,也会为整个行业带来新的机遇和可能性。
二、客观聊聊 豆包 MarsCode
豆包 MarsCode 本质上就是一个侧重于辅助编程方向的 AI Agent 应用,主要提供代码补全、问答等能力,虽然能力上与 Cursor 比较相似,但它更侧重于中文环境环境下的应用,对于国内用户而言使用成本更低,不需要翻墙,不需要做复杂的配置,几乎一键安装启动。其次, 豆包 MarsCode WebIDE 版本还内置了许多项目模板,开发者无需任何配置即可快速启动 Node、Web、Python 等类型的项目,堪称新手福音,非常适合学习用。
它有如下特性是我用过很好的。
1、 **Generate(生成):**只需以文字方式提交需求,豆包 豆包 MarsCode 即可生成对应代码,这一功能对编程新手尤其重要,可帮助新手快速理解和掌握编程的基本原理和技巧。另外,通过直接观察生成的代码,新手也可以更好地理解代码的结构、逻辑和语法,从而提高自己的编程能力,进而提升学习效率;
2、**Explain(解释):**能详细解释给定代码的作用,对于新手可通过这样的方式,更加深入地理解代码的功能和逻辑,从而更好地掌握编程技能,最终也还是能够提升理解与学习效率;
3、**Test(单测):**为特定代码生成单测,以提升代码稳定性;事实上,许多程序员擅长编写业务代码但并不擅长为这些代码编写对应的单元测试代码,因为这需要对代码的功能、逻辑、边界情况等有深入的理解,并运用合适的测试框架和工具来实现,而 豆包 豆包 MarsCode 非常擅长分析并生成模块对应的测试代码,这能够非常有效地提升开发效率;
4、问答:可以直接在 IDE 中咨询各类问题,过往需要在 IDE 与搜索引擎间来回切换,花许多时间阅读冗长的解说文档,而现在只需提出正确的问题,多数时候即可获得正确答案,效率要高出许多许多。
而 豆包 MarsCode 背后主要使用字节的豆包模型实现内容生成,豆包模型的成长速度非常快,虽然相比于 GPT-4o 等还有不小差距,但在国内已经成功打进第一梯队,准确率、稳定性都还不错,也就保证了 豆包 MarsCode 的代码生成质量还是非常不错的,我第一次用的时候甚至觉得有点惊艳。
另外,由于 豆包 模型长期深耕于中文环境,相比与 Claude、GPT 等,天然地有更出色的中文理解能力,因而更适合中文开发者。
不过,客观地说,体感上 豆包 MarsCode 与 Cursor 差距还是比较大的,我个人认为 Cursor 已经算得上生产力工具,而 豆包 MarsCode 目前更像是一个充满想象力的"玩具",前期惊艳但在专业项目中,很快就会发现 豆包 MarsCode 经常返回一些并不准确 ------ 甚至可以说是谬误的结果。这也就导致虽然 豆包 MarsCode 在国内声浪很高,但实用性并不高。不过反过来说,毕竟 Cursor 这类应用有先发优势,早在两年前就开始研发, 豆包 MarsCode 短短几个月确实很难追赶上,相信假以时日,未来还是值得期待的。
作为一个普通开发者,我认为完全可以将 豆包 MarsCode 看做增强版的 VS Code ------ VS Code 能做到的事情它同样都能做到,只是在此基础叠加了许多浑然天成的 LLM 交互能力,即使不做任何配置,也能通过 Auto Completion 等能力获得极大增强的编程体验与效率提升 ------ 并且它目前还是免费的,非常推荐使用。
三、AI编程当前的局限(以 豆包 MarsCode及其它工具暴露的问题为例)
在当前AI编程领域,产品形态和技术路线都处于探索阶段,尚未形成统一的最佳实践方案。 豆包 MarsCode作为这个领域的重要玩家,也面临着需要在不同方向上进行取舍和平衡的挑战。以下是我总结的一些主要的局限性:
- 1、产品定位的取舍
- 在追求通用性和专业性之间需要权衡,目前更倾向于企业级开发场景。大厂的很多技术是优先满足内部,然后再对外售卖。理论上,内部够用,外部80%以上都是够用的。
- 为了保证代码质量,出码准确性和安全性,可能会牺牲了一定的灵活性和创新空间,但大公司产品,通常会这方面有非常严苛的要求。
- 应用场景偏部署还是刷题?部署的话,需要被国内的各种实名增加很多步骤和成本,只做海外,ROI似乎又不足。如果做刷题,用户粘性不高,上限略低。
我理解 豆包 MarsCode投入极大,团队规模和产品功能设计都是想着打造下一代AI编程工具,所以它大概率会走一个大而全的方式,就是你需要的我做的都很好。按照字节的产品做法,会小步快跑,快速试错,所以大家看的部分会变化非常快。
- 2、技术路线的探索
在完全自动化和辅助开发之间尚未找到最佳平衡点。现在的做法是每个地方都做了增强,每个地方又不确定能否组合一下更好,还是个未知数。从技术演进上也大致可知,先单个文件(早期cursor,现在的continue.dev等),然后跨文件(cursor composer),最后是项目级(devin)。这些对 豆包 MarsCode开发来说都不是事儿。我理解他们的路线应该是这样的。
- 模型升级第一,在模型没有升级的前提下,优先做体验
模型能力和开发体验二手抓,但模型能力是个不确定性的事儿,可能需要有人探索出来,完全自研路就非常长。而体验是当下最容易实现的,比如性能,之前 豆包 MarsCode打开文件过多就会慢,他们快速搞定,性能可以说行业里top3了。
做完开发体验之后,他们大概率会去做多模态,在文本之外,可能会对图生代码,视频生代码等方向。我们能看到的是v0.dev和bolt.new之类的已经可以用,好不好用另说。基于各种Vision language的的技术,虽然还有很多幻觉,但已经可以解决很多问题了。再有sora之中3d生成也有模有样,这个方向也是非常有想象空间的。
其实还有一个不确定的点,就是快速行驶中,换轮胎。前面我有讲过,语言、框架、编码方式做有机组合,可以玩出更多高效的可能性。其实按照现在 豆包 MarsCode的折腾劲,很有可能在过程中,找到一种更好的交互方式,这才是我最期待的的。
- 3、技术局限性
以下我对AI的一点实践得出的浅显理解
1、Transformer 架构是有局限性,对于中文的理解,其实还只是一部分,远没有英文那种智能程度。中文转英文,很多就缺失了。这是整个中文世界都需要攻克的难题。
2、在复杂逻辑和大规模项目上的局限性。目前新增项目上,AI编码跑的都还不错,存量项目和复杂项目已经不是很乐观。举个例子,处理Node.js包依赖问题,让AI推理实验,目前还是做不到的。比如esm和cjs互转等细节,AI未必能够排查出来。
3、应对创新型、行业特定问题的能力不足。像低码,由很多部分组成,比如设计器,函数,存储,逻辑,第三方集成能,如何能够更好的结合AI,集合编码,多项智能,组合智能,其实也是非常有想象力的。这方面,我还没想明白应该如何做,估计 豆包 MarsCode产研同学还没来得及想。
这些局限性并非单纯的技术问题,而是整个AI编程领域在发展初期必然面临的探索性挑战。随着技术的进步和实践经验的积累,这些问题将逐步得到解决和优化。
另外2点,也是我非常关注的,分别是自动化和多轮问询出码解决前端问题。
在一站式开发自动化方面, 豆包 MarsCode目前的集成程度与Devin这样的完全自动化助手相比还存在一定差距。主要体现在自动化程度的局限性上,如尚未实现完全自主的项目规划和任务分解能力,在复杂项目的环境配置和依赖管理上自动化程度不足,同时缺乏自动化的错误处理和异常恢复机制。
在集成度方面,与各类开发工具的深度集成仍需加强,在持续集成/持续部署(CI/CD)流程中的自动化程度有限,跨平台协作能力也需要进一步提升。此外,在处理复杂业务逻辑、遗留系统和特定领域知识时仍存在瓶颈,安全性和代码质量的自动化保障机制也尚需完善。
要实现类似Devin的完全自动化开发能力, 豆包 MarsCode需要在AI模型训练、工具链集成、自动化流程等多个方面进行突破,这不仅需要技术上的创新,还需要考虑实际开发环境中的各种复杂场景和边界情况。
对于类似V0.dev这样的多轮问询式代码生成方案, 豆包 MarsCode目前仍有提升空间。虽然当前版本已经支持基础的交互式代码生成,但在前端开发领域,特别是涉及到UI/UX设计转换为代码的场景中,多轮对话式的精确控制和迭代优化显得尤为重要。
开发者往往需要通过多次调整和反馈来实现理想的界面效果,这就要求AI工具能够准确理解每轮修改意图,并在保持代码一致性的同时实现增量更新。
未来, 豆包 MarsCode可以考虑加强这方面的能力,引入更智能的对话管理机制,支持更细粒度的代码生成控制,并提供更直观的预览功能,从而更好地服务于现代前端开发需求。
五、未来AI编程的发展方向设想
基于目前AI编程工具的发展趋势,未来的发展方向主要取决于两个核心要素:一是底层模型能力的持续升级,这将直接决定AI理解和生成代码的质量;二是开发流程和工具的模块化与原子化,这将为AI提供更灵活的组装和调用能力。
具体来说,未来的发展方向可能包括以下3方面:
- 更细粒度的开发流程拆解,将复杂任务分解为可被AI理解和执行的原子操作
- 标准化的工具链接口,使AI能够无缝调用和组合各类开发工具
- 智能化的工作流编排,让AI能够根据具体需求自动组装最优的开发流程
这种发展路径不仅依赖于AI模型本身的进步,更需要整个开发生态系统的协同演进。只有做好这些基础准备,才能在未来模型能力突破时快速释放AI编程的潜力。
我最希望的时候,脑机接口和AI编码的集成,动动意念就能够完成某些功能的开发,让人人都是开发者,变成可能。
计算机编程从专家模式到人人可开发,想想还是很让人激动的。很多人问我,以后还能不能选计算机相关专业,我的回答是可以选,即使AI时代,也是在互联网时代基础上构建的,计算机编程相关知识,不会没用,只是可能变得像英语一样,成为每个人都必须要掌握的专项技能。
六、总结与展望
回到AI编程领域,我们看一下 豆包 MarsCode带来的变化。
- 豆包 MarsCode的主要成就:
- 优秀的中文语境理解和代码生成能力
- 完善的企业级安全保障机制
- 高效的分布式架构设计
- 深度集成主流开发环境的能力
- 当前存在的主要问题:
- 在完全自动化开发方面与最新工具相比仍有差距
- 多轮交互式代码生成的精确控制需要提升
- 处理复杂业务逻辑和特定领域知识时存在瓶颈
- 自动化的错误处理和异常恢复机制有待完善
未来,AI编程的发展前景令人振奋。在2024 IDEA大会上,来自各个行业的领袖分享了他们对AI未来的洞见。从低空作业到市场营销,再到制造业,AI展现出了巨大的发展潜力。工业界和学术界普遍对AI持积极乐观态度,认为它将重塑多个领域的未来发展。
然而,也有持谨慎态度的声音。比如Linux创始人就预测在未来5年内,AI的实际落地应用可能仅占10%。这种保守估计和乐观预期形成鲜明对比,反映了当前对AI发展的不同观点。
事实上,无论是保守还是激进的预测都有其合理性。重要的是,我们已经确实进入了AI时代,它正在以前所未有的速度改变着我们的生活和工作方式。在这个充满机遇与挑战的时代,保持开放和务实的态度至关重要。
我对未来AI编程的发展有以下期待:
- 更智能的编程辅助能力
- 【不断进化中】AI将更深入理解业务逻辑和架构设计,不仅能生成代码,还能提供系统性的技术方案。
- 【这个还不行,基本为0】自适应学习能力将显著提升,能更好地理解和适应不同团队的编码风格与最佳实践
- 【现在是出码,还不到重构级别】代码质量预测和优化建议将更加准确,帮助开发者编写更高质量的代码
- 更深度的工具链联动
- 【不断进化中】与开发工具链的无缝集成,实现从需求分析到部署运维的全流程智能化
- 【当前就没有统一框架,这个路还很远】跨平台和多语言开发场景的智能协同,提供统一的开发体验
- 【降本增笑,目前路子可以玩,但上限不高】自动化测试和调试能力的显著增强,降低开发成本
- 垂直领域的深度突破
- 在金融、医疗、教育等特定领域出现更专业的AI编程解决方案
- 针对不同规模企业的定制化AI编程工具将更加普及
- 新兴技术领域(如区块链、IoT)的专属AI编程助手将不断涌现
- 空间计算和3D建模领域,我个人尤为期待
总体看,AI编程工具正在朝着更智能、更专业、更实用的方向发展。随着底层技术的不断突破和应用场景的持续拓展,AI编程必将在软件开发领域发挥越来越重要的作用,为开发者带来更高效、更优质的开发体验。我们有理由对AI编程的未来充满期待和信心。