AI编程的机会和未来:从Copilot到CodeAgent

大模型的快速发展带来了AI应用的井喷。统计GPT使用情况,编程远超其他成为落地最快、使用率最高的场景。如今,大量程序员已经习惯了在AI辅助下进行编程。数据显示,GitHubCopilot将程序员工作效率提升了55%,一些实验中AI甚至展示出超越普通程序员的能力。目前AI在编程领域所扮演的角色,更多的还是一个「效率工具」——以Copilot的形式帮助提高编程效率。

那么AI编程的下一步是什么?我们认为,是理解并生成复杂代码集、从而实现真正的软件自动化开发。如果AI能够像人类程序员一样,在大型复杂软件项目的代码集上工作,并且能有效地与人类工程师分工协作,生成几十万上百万行代码,这意味着对软件行业的根本性颠覆。

如纳德拉在GithubUniverse2023上所说,"当你向一个组织引进GithubCopilot,工作流程将发生改变。当销售人员开始写代码,这个组织就变了,它会以代码的速度前进。现在有了Copilot和代码的速度,从根本上改变了数字经济。包括汽车、金融、制药...每家公司都是家数字公司,也是家软件公司。"

最受开发者欢迎的AI编程工具

目前主要使用场景

据不完全统计,过去一年,市场中涌现的AI编程工具多达几十种。在此我们先对市场上的主流产品做个简要总结,方便读者对发展现状有个直观的了解。

创业公司的产品分为两类,一类是通用AI编程,跟巨头的产品重合度高;另一类聚焦垂类,在某个领域/功能做得深入。

通用AI编程

聚焦垂类的AI编程

除了如上的通用AI编程项目外,还有一些聚焦垂直行业或聚焦编程中某个具体环节的初创公司。包括

产品切入点

通过概览AI编程领域的主要项目,可以看到目前主流的产品趋势还是做CodeCopilot——即作为工具,辅助人类提升编程效率,而其中最具主导地位的是GithubCopilot,同时其他巨头也纷纷入局。在这样一个巨头林立的领域,初创公司目前主打的切入点主要有如下几种:

面向未来,有两个关键问题:AI编程会朝什么方向发展AI会不会取代人类码农的工作,实现完全的」软件开发自动化"

我们目前正处于第一个阶段:在这个阶段,AI大幅加速人类程序员工作效率,就好像一个人长了多只手,能够以更少的人力完成更多的工作。展望未来,AI编程的下个10x阶段,是他称之为「AIProductEngineer"的阶段,AI可以完成大部分工作,人类只需要在几个关键环节参与协作及决策。而在更远的未来,AI编程的终极图景,便是「AIEngineerAgent」,届时,软件工程领域已经是AI主导的天下,AIAgent可以互相协同完全自主地完成一个复杂项目。

现代软件工程经历了从早期瀑布流到最近25年中的敏捷开发模式,其成功的原因之一是代码和功能的不断积累。正是这种不断地快速迭代和积累,让软件工程成为人类社会中发展最快、复杂度最高的产业之一。未来如果AI编程自动开发成为主体,这种通过迭代和积累实现增量开发的模式会有什么改变呢?

大型软件项目的代码集规模远远超出AI目前context长度,未来也很难期待AI能够把代码集完整地装入内存。即便context长度可以无限扩展,它的编程能力仍受限于模型的推理能力。基于目前Transformer架构,仍然很难想象AI可以一次性地重新生成上百万行的复杂代码集。即便推理能力支持,其性价比是否真的支撑落地应用,也是一个巨大的问题。

一次性生成大型代码集的方法不仅非常脆弱,而且很不经济,其背后深刻的悖谬之处在于:一旦有人创造出能以增量式开发的AI自动软件开发系统,它在可靠性和经济性上一定会显著优于一次性生成整个代码集的系统。从系统演化的角度,不断优化积累的系统是唯一最终能够存活下来的系统,就像自然界最终选择的基因演化机制一样。

基于这个假设,我们认为,AI要想在编程领域真正替代人,最需要解决的是如何能像人类一样在软件这个不断积累的」增量「系统中工作。这需要AI对现有大型复杂代码集的理解,并在此基础上进行修改、扩充、测试等工作。

上文提到,AI要想在编程领域替代人类,必须要能在复杂代码集上做增量工作。而如何能够实现AI对复杂代码集的理解、并在此之上让AI接手呢?我们从软件开发的基本结构出发,分析实现这一功能所面临的主要挑战与突破点。

软件开发的三个阶段

对于一个独立的开发任务,无论新功能开发、现有功能改进、代码部分或全局重构、bugfix等等,几乎所有开发任务都包含三个阶段:

1)定义任务:Spec

这个阶段的交付是需求文档(Spec)。Spec具体描述任务的结果,即从软件的用户或维护者的视角看来,任务完成后软件系统有什么具体的改变,包括交互界面、系统行为和性能等。Spec的核心是把Why转化成What。

2)设计实现方案:DesignDoc

这个阶段的交付是开发设计文档(Designdoc)。DesignDoc描述需要对功能的哪些节点进行何种修改,并把一个任务分解为多个不同的步骤。DesignDoc把PM看到的产品的What转变成架构的What,同时讲清楚架构要如何实现(How)。DesignDoc最后一般会包含开发计划(Devplan)。

3)实现:代码及测试

这个阶段的交付是代码集的最终完成和测试。根据开发设计文档的规划,逐步完成代码,去跟外部API和底层操作系统对接,从而驱动软硬件完成任务。

AI在各阶段的作用

每个阶段的特点不同,AI起的作用相应的不一样。

1)Spec。Spec是把用户的需求转化成软件任务的过程。这个环节涉及到大量与人的交互,包括市场调研、反复沟通理解确认用户需求,目前这个环节靠人来做效率是最高的。

用一个简单的例子类比,让AI在现有的系统上增加个新功能,就好比要给一个城市增加地铁系统。其中涉及大量对现有城市交通状态的理解与规划,需要考虑全局的交通效率、做路线规划和资源分配,每个节点的变化都牵扯到其他一些节点的,不是单独增加一个地铁站就可以的。对应到代码集,系统级代码非常复杂,有很多相互关联的复杂函数调用、全局变量等约束及边界条件。

AI要解决这个问题,需要的是一个「全局地图」——一个能够让AI可以快速定位每个变动对于全局影响的「地图」。一旦有了这个全局地图,AI就能快速地理解代码、确定变化范围开始工作了。

3)Coding。实现阶段是对各模块的代码和测试。AI核心需要解决两个问题:

其一是对于开发环境的理解。任何代码最终都要落在具体的平台上,在哪个操作系统上、用什么编程语言、如何编译、代码管理、部署等等……这些都要求AI要对平台有深入的了解,就像人类工程师一样。人类工程师所掌握的,远远不止对编程语言的理解,而是对这一整套适配环境的理解。

其二是自动测试和Debug的能力。代码生成后,需要测试它是否正确地工作,有问题要能够找到问题所在。这是一个完整的CodeAgent必需的能力之一。

对于AI来说,构建理解复杂代码集所需的「全局地图」,关键是把针对代码集的RAG(retrieval-augmentedgeneration)做好。目前Transformer架构的大模型,没有RAG很难做好增量开发场景下的代码生成。RAG主要解决以下几个问题:

定位受影响代码,并做修改。

当大模型生成了新的代码后,因为它推理能力不足,生成的代码可能没有考虑到对整个代码集的影响,这样生成的代码一般是不完全或错误的。这个时候需要RAG去找到整个代码集中所有被当前修改影响的区域,然后再对那些代码区域进行修改。

代码的可维护性是AI编程的一个有趣的问题。

考虑自动软件开发系统的工作方式,AI是否会像人类个体一样参与大型软件项目?是否需要和人类协作共同开发一个代码集?AI写的代码未来由谁来维护?从机器人和自动驾驶的发展历史来看,开发人机协作的系统远比开发一个全自动的系统困难很多。如果AI生成的代码需要由人类工程师来维护,这个模式对自动软件开发系统提出了更严峻的挑战。

AI编程可能存在一种比较极端的新的可能性:如果代码都是AI生成的,而AI修改自己生成的代码或者重新生成代码都比人类要高效得多,那么是否可以放松复用的要求,同时也降低测试的复杂度?只要不需要人类维护AI生成的代码,也许更低的复用性未必会降低代码集的可维护性,甚至可能产生bug更少的代码。

AI编程整个赛道还在非常早期。虽然巨头已经纷纷杀入,但这个领域很难完全垄断。

举两个例子:上文所说的增量开发场景下理解整个代码集的问题,在目前就没有被很好地解决(SWE-Bench的研究也一部分验证了这个现实)。另一个例子是针对Legacy系统的维护,许多企业内部存在着大量legacycode,这些code不开源,经过常年积累,已经沉淀了许多商业机密,推倒重来需要耗费极其昂贵的成本,日常维护又消耗很多人力,是AI非常适合发挥作用的场景。

我们认为,AI编程的未来是CodeAgent,让AI越来越多地介入软件工程的各个环节,自动开发。跟所有AIAgent一样,做好CodeAgent的关键,在于构建世界模型以及Agent的经验积累和学习能力。

构建世界模型

多模态的发展让人与Agent沟通的方式更加丰富。GPT-5对多模态的支持,可以用架构图和设计图帮助AI建立对复杂系统的理解,应该比文本和代码的沟通带宽高很多。在许多场景中,综合运用多模态的方式相比单纯的文本会大大提升沟通效率。未来Agent对于多模态的应用能力,是竞争中很关键的一环。能够根据不同场景灵活运用多模态的Agent将更具竞争力。

CodeAgent的经验积累和学习能力

一旦被提供了复杂系统的信息,AI需要记住它。如何让AI记住世界是什么样子的,需要为AI建立好一套记忆体系——做好大模型记忆的存储、管理、调用等。

THE END
1.关于表彰菏泽市第二十九次社会科学优秀成果奖获奖成果的决定20、训练学视角下蹦床比赛制胜规律的哲学思考与层次解析 作者:朱礼金(菏泽学院) 《中国体育科技》 21、李芳清戏曲面塑《白蛇传》分析 作者:刘 进(菏泽学院) 《装饰》 22、教师的五种研究者角色评析 作者:张祖民、段作章(菏泽学院、江苏师范大学) 《教育理论与实践》 ...http://bz.heze.cn/html/2014-10/10/content_5_7.htm
2.腾讯AI绘画产品深度解析:功能风格市场前景与应用案例全面分析...腾讯绘画产品深度解析:功能、风格、市场前景与应用案例全面分析报告 一、引言 随着人工智能技术的飞速发展,绘画领域逐渐崭露头角,成为艺术与科技融合的新宠。腾讯绘画作为国内领先的人工智能绘画产品,以其独到的功能、多样的风格和广泛的应用前景备受关注。本文将深入解析腾讯绘画产品的功能、风格、市场前景及典型应用案例,...http://www.slrbs.com/jrzg/aitong/164250.html
3.实用干货!3种市场细分的分析模型与方法实用干货!3种市场细分的分析模型与方法 01.什么是市场细分? 市场细分的概念是由美国市场学家温德尔·史密斯于1956年提出来的。 营销者通过市场调研,根据消费者的购买心理、购买习惯、购买行为等方面的差异,把某一产品的市场整体划分为若干不同类型的消费者,这一过程就叫做市场细分。https://www.niaogebiji.com/article-519970-1.html
4.趋势投资——金融市场技术分析指南.pdf丁圣元2020年版金融市场异常复杂,入场投资前,我们需要先看清楚市场大势,理解中期和短期趋势的变化逻辑,才能做到顺势而为、趋利避害、稳健获利。《趋势投资:金融市场技术分析指南》从《易经》中的辩证思维模型出发,综合考虑金融市场长期与中短期趋势推动因素,构建了一整套趋势投资分析方法。作者将这一方法与蜡烛图分析工具相融合,化繁...https://m.book118.com/html/2021/0507/8104075061003100.shtm
1.什么是微观市场分析?这种分析方法有哪些应用?基金频道在金融领域,微观市场分析是一项至关重要的研究方法,它专注于市场的微观层面,深入剖析个体经济主体和局部市场的行为与特征。微观市场分析能够为投资者、企业和决策者提供有价值的信息,帮助他们做出更明智的决策。 微观市场分析主要关注的对象包括单个企业、特定产品市场、消费者个体行为等。通过对这些微观元素的细致研究,可...https://funds.hexun.com/2024-11-19/215635603.html
2.产品学习(五)竞品分析(上)思维指导执行!竞品分析的一个目的就是如何利益最大化 方法:明确目的——行业分析——确定竞品——确定维度——收集数据——对比分析——输出结论 目录 一、明确目的 二、行业分析 1.行业背景 1.PEST 2.竞争态势——波特五力模型 2.市场(市场规模 用户画像) ...https://blog.csdn.net/weixin_56259167/article/details/143866065
3.投资数据模型投资分析师通常使用多种数据模型来支持他们的投资决策和市场预测。以下是一些常用的数据模型,涵盖了宏观经济分析、企业财务分析和金融资产评估等方面: 1.DCF模型(折现现金流模型) 原理:基于未来现金流的贴现值评估公司的内在价值。 应用:用于公司估值,尤其适用于具有较稳定现金流的公司。 https://www.jianshu.com/p/d6fd17d903b4
4.市场分析模型有哪些?10大经典模型整理!对盈利池的研究通常需要以下步骤:首先,分析产业链上的每个环节,理解其盈利机制;然后,量化每个环节的收入和成本,计算其利润;最后,比较各环节的利润情况,找出最有盈利潜力的环节。立即前往免费体验吧! 市场分析模型提供了一个有效的工具和方法,帮助我们更好地理解市场,发现机会和应对挑战。然而,随着市场环境的变化和技术...https://boardmix.cn/article/10-market-analysis-models/
5.可能性探讨范文12篇(全文)但是我们对比新颁布的《企业会计准则》来看, 其中对于资产减值的处理, 需要估计资产的可收回金额;在非货币性资产交换准则中, 当换入换出资产不存在同类或类似资产的可比市场时, 应采用估值技术, 这些估值的存在使得资本资产定价模型也是可行的。 3. 基于会计账务处理程序分析。https://www.99xueshu.com/w/ikey80kaw1pa.html
6.步骤解析:如何做好竞品分析?知识库步骤解析:如何做好竞品分析? 完善的市场部通常有专门的产品负责人,但是对于大部分企业来说,市场部门的岗位设置并非那么完善,竞品分析的职责却仍要去完成。所以,对于非专业产品人的市场人来说,竞品分析绝对是一项挑战。这不,小助就收到了坛友“xiaoxianzq”的SOS信号:近来公司要求市场部做新产品竞争分析,求教市场...https://www.shichangbu.com/article-21803-1.html
7.转发:最高年薪150万!还有大学生专场,速看→3. 良好的沟通能力和问题分析能力,有极强的责任心、协调能力以及团队合作意识。 三、大客户销售 薪资范围:20-28千 岗位职责 1. 负责公司自主研发产品销售,进行市场开拓及客户维护工作; 2. 根据团队销售计划,主动拓展维护指定区域客户、开拓合作伙伴,完成计划任务; ...http://www.sygxq.gov.cn/ztzl/xwgz/202303/t20230328_4210051.shtml
8.市场人常用16个数据分析模型CDO研习社通常,上述两个条件最终导致这样的市场份额序列:每个竞争者的市场份额都是紧随其后的竞争者的1.5倍,而最小的竞争者的市场份额不会小于最大者的1/4。 模型十三 RFM模型 RFM分析是客户关系分析中一种简单实用客户分析方法,他将最近一次消费、消费频率、消费金额这三个要素构成了数据分析最好的指标,衡量客户价值和客户...https://www.shangyexinzhi.com/article/4650657.html
9.历年科技成果汇编在全面系统的研究了炼焦煤性质和配伍性、配煤炼焦过程机理及其与焦炭热性质关系的基础上,提出了“碳合金”配煤新概念和初步实现焦炭微晶结构定向控制,建立了基于碳合金配煤理论的焦炭冷热强度预测模型,扩大了炼焦煤源,使大型高炉用焦炭配煤中不粘煤配比最高可达到20%,可产生巨大的经济和社会效益。 http://jszy.usst.edu.cn/_t1949/2014/0114/c4269a75054/page.htm
10.关于波特原理的五力模型实用案例一、分析框架及市场基本状况 迈克尔?波特在其经典著作《竞争战略》中,提出了行业结构分析模型,即所谓的“5力模型”,他认为:行业现有的竞争状况、供应商的议价能力、客户的议价能力、替代产品或服务的威胁、新进入者的威胁这5大竞争驱动力,决定了企业的盈利能力。对比这5种力量的作用,来分析一下美国运动鞋企业的竞争...https://www.douban.com/note/151452924
11.神策学堂专业实用的数据分析知识交流社区神策学堂是神策数据旗下专业数据分析知识交流平台,为产品经理、运营、市场、技术等多角色从业者提供精华内容、行业实践、互动社区服务https://school.sensorsdata.cn/
12.一文了解全球800家农业大数据公司(国内篇)36氪未来智库根据技术应用方向及特点分类,本文共分为物联网现场监控平台、气候天气、数据分析平台、农业大数据企业、无人机平台-系统、ERP - 农场、农作物管理软件、现场监测传感器方案、混合应用、精准指导、自动化、交易市场、影像服务提供商、可追溯性安全、大数据提供商、市场信息等15个子部分。 https://www.36kr.com/p/5213113.html
13.常用数据分析模型及波特五力模型腾讯云开发者社区导读:数据分析是指用适当的统计分析方法对收集来的大量数据进行分析,将它们加以汇总和理解并消化,以求最大化地开发数据的功能,发挥数据的作用。数据分析是为了提取有用信息和形成结论而对数据加以详细研究和概括总结的过程。 ▌常用的数据分析模型 数据分析师需要借助成熟的数据分析模型来完成相应的工作。 https://cloud.tencent.com/developer/news/744703