AI编程:写代码这件事,门槛正在消失
AI编程:写代码这件事,门槛正在消失
*恭喜你,朋友,你迎来了这本手册里最长的一章。 可以毫不客气的说,这是BOSS关,对你来说是这样,对我也是。 还是直接开始正题吧。
如果你是一个程序员,回想一下你日常工作中最消耗时间和精力的那些时刻。
调试一个莫名其妙的bug,花了两小时发现只是少了一个分号或者拼错了一个变量名。阅读一份屎山代码,试图理解它到底在做什么。为了一个简单的功能去翻文档,只因为记不住某个API的确切用法。写一堆模板代码,并来回重复了无数次。这些场景对于任何一个写过代码的人来说都太熟悉了。它们是编程工作中最无聊、最重复、也最容易出错的部分,它们占据了我们大量的时间,让我们真正创造价值的时间反而被压缩了。
现在想象另一幅画面。
你坐在电脑前,对着编辑器说出或者打出你的需求:"帮我写一个Python函数,接收一个日期范围,从这个电商网站的API拉取订单数据,按商品类别汇总销售额,然后生成一个折线图。"几秒钟之后,完整的、可运行的代码出现在你的编辑器中。你快速扫了一遍,觉得逻辑没有问题,点击运行,结果完全符合预期。整个过程只花了不到五分钟,而同样的工作如果自己从头写,可能需要一两个小时。
这就是今天的AI编程工具已经能做到的事情。
从2021年GitHub Copilot首次亮相开始,AI辅助编程在短短几年间经历了一场革命性的爆发。
到今天,已经有超过一百万名开发者正在使用Copilot,而根据GitHub的统计,在启用了Copilot的项目中,有将近一半的代码是由AI生成的。与此同时,Cursor、Windsurf、Amazon Q Developer、通义灵码、CodeGeeX等工具如雨后春笋般涌现。
更令人震撼的是,像Devin、Cline、OpenHands这样的AI编程Agent已经能够自主地从零构建完整的软件项目。它们不只是生成代码片段,而是像人类开发者一样理解需求、规划架构、编写代码、运行测试、修复错误、最终交付可用的应用程序。
这一切意味着什么?
编程这个职业会发生什么变化?
程序员会被取代吗?
不会写代码的人是不是也能做出软件?
AI到底是怎么理解和生成代码的?
这些问题不仅是程序员关心的,也是任何一个对AI时代的技术变革感兴趣的人应该理解的。因为编程不仅仅是编程,它是我们这个时代构建数字世界的基本方式。当编程的方式本身被AI颠覆时,整个数字世界的建造方式都在被重塑。
这篇文章,就是要把"AI编程"这个主题从头到尾拆一遍。我们会从AI如何理解代码的原理说起,深入到AI辅助编程的多种形态和工具,再讨论AI编程Agent是如何自主完成复杂项目的,最后探讨这个趋势对程序员、对软件行业、对整个社会的深远影响。
这是长征。希望我们都能坚持写完/读完它。
要理解AI编程为什么能取得今天的成就,我们首先需要理解一个问题:
AI到底是怎么"理解"代码的。
在很长一段时间里,这个问题的答案并不令人满意。
最早的代码生成技术基于模板和规则。这种方法能处理的范围极其有限,遇到稍微复杂或者新颖的需求就直接失效。后来基于统计的N-gram模型被用于代码补全(就是根据前面几个词或字符预测下一个)。这类方法在简单的代码补全场景尚可一用,但对于稍微复杂一点的逻辑就力不从心了,因为它几乎没有真正的"理解",只是在机械地做模式匹配。
但大语言模型的出现改变了这一切(是的一切还是它),以及它们在代码上的应用。大语言模型的工作方式说起来很简单,但背后的流程却并不简单。
这些模型在海量的文本数据上进行了预训练,这些数据不仅包括自然语言的文章、书籍、网页,还包括来自GitHub等平台的海量代码。模型的训练目标是一个看似简单的任务:根据前面的内容,预测下一个词是什么。这个任务贯穿了整个训练过程,模型看的每一段文本、每一行代码,都是在不断地学习"在这个上下文中,下一个最合理的词或者代码单元是什么"。
你可能会觉得,这不就是更高级的N-gram预测吗?
区别在于规模和质量。
当模型的参数达到数百亿甚至数千亿,当训练数据涵盖人类知识的总和,当训练过程中反复强化了对语法、语义、逻辑和模式的理解,模型学到的不再是表面的"词频统计",而是深层的"语义结构"。模型开始"理解"代码的语法规则,这是通过在无数代码示例中自动习得的。它知道if后面应该跟一个条件表达式,知道函数定义的第一行应该以冒号结尾,知道括号必须成对出现。这种语法理解的准确性已经逐渐达到了一个较高的水平,以至于AI生成的代码几乎不会有语法错误,而这是绝大多数初级人类开发者做不到的。
进一步,模型开始理解代码的语义,也就是代码在逻辑上"做什么"。这不是显式编程的结果,而是从海量数据中涌现出来的能力。
当模型看过数以亿计的代码片段以及它们对应的注释、文档、讨论之后,它就学会了把自然语言描述与代码逻辑关联起来。你告诉它"对一个整数列表进行冒泡排序",它知道应该生成一个双层循环、比较相邻元素、交换位置的代码模式。这种能力本质上是一种高维的模式匹配,模型的内部表示中,"冒泡排序"这个概念的向量表示和冒泡排序的代码模式的向量表示在语义空间中被拉近了,所以模型能够在两者之间建立映射。
需要注意的是大语言模型理解和生成代码的方式与人类有本质的不同。
人类理解代码是"自上而下"的。我们先理解一段代码的目的是什么,然后理解它如何通过一步步的逻辑来实现这个目的。我们的理解是目的导向的。
而模型理解代码更像是"自下而上"的。它从最细微的语法单元开始,逐步组合成更大的结构,最终形成的"理解"是一种高维空间中的概率分布。
模型中没有一个"符号"来表示"这是一个排序函数",而是有一组复杂的数值参数,这些参数在统计意义上捕捉到了排序函数的特征模式。这意味着模型对代码的"理解"本质上是一种统计理解,而不是逻辑理解。
但在实践中,这种统计理解已经足够强大,能够在绝大多数常见场景下产生正确的结果。
不过,这种统计理解也解释了为什么AI编程在某些场景下会出一些"奇怪"的错误。当模型遇到一种在它的训练数据中很少出现的模式时,它的"理解"就变得不可靠了。比如一段高度优化的代码、一个使用了晦涩语言特性的表达式、一个涉及前沿算法的新颖实现,这些都会触发模型的"知识盲区"。
模型不会像人类一样说"这个我不懂",它会自信地用它的统计理解生成一个看起来合理但实际上错误的结果。这种"自信的错误"是AI编程中最需要警惕的问题。
现代代码AI模型还经历了一个关键的"对齐"阶段。在预训练之后,用专门的代码指令数据进行微调。这些数据包含了大量的"问题-代码"对:一个编程问题描述配上一段高质量的解决方案代码。通过在这个数据集上微调,模型学会了更好地理解编程问题、更好地组织代码结构、更准确地匹配需求。
这个阶段的训练实际上是在教模型"如何把自然语言的需求翻译成可执行的代码"——这是一种翻译任务,但它翻译的不是人类语言到人类语言,而是人类语言到机器指令。
在代码大语言模型的发展过程中,有几个至关重要的事件。
OpenAI的Codex模型在2021年发布,它是GitHub Copilot的底层引擎,也是第一个在广泛编程任务上展现出惊人能力的代码模型。
Google DeepMind的AlphaCode在2022年的编程竞赛中达到了人类参赛者的中位水平,它不只是生成代码,而是生成大量的候选代码,然后通过筛选和测试找到正确的那个。
StarCoder和StarCoder2是由Hugging Face主导的开源代码模型,它们的意义在于证明了高质量的代码模型不一定要闭源,开源社区也可以训练出强大的代码模型。
Code Llama是Meta推出的开源代码大语言模型,它有多个尺寸版本,支持多种编程语言,并且可以被私有化部署。
Salesforce的CodeGen和CodeGen2、百度文心大模型的代码能力、阿里的通义千问的代码能力.......这些都在推动着代码生成技术的边界不断扩展。
很多人对AI生成代码的一个误解是认为AI就是"记住了很多代码",然后在需要的时候"检索"出来。这不是事实。如果只是记忆和检索,AI在面对从未见过的组合和需求时会立刻失效。但实际体验告诉我们,AI编程工具在面对全新的、组合性的任务时往往也能给出合理的响应。这说明模型内部确实建立了一种对编程逻辑的抽象理解——它可以根据上下文"推断"出合适的代码结构,而不是简单地粘贴它见过的某个代码片段。当然,模型在训练数据中见过的类似模式越多,它在这个任务上的表现就越好——这和人一样,见多识广的开发者面对新问题时往往能更快地找到解决方案。
理解了这个原理,我们就能明白AI编程能力的边界在哪里。
模型擅长理解代码的局部结构和常见模式,但是对于需要全局理解的项目级架构、需要深厚领域知识的特定优化、需要创新性设计的算法突破,模型的能力还非常有限。它更接近于一个"见过无数代码的资深初级工程师"——他知道无数的标准写法,但缺乏对项目的深刻理解和创新突破的能力。因此我们应当准确理解AI编程的当前水平,既不盲目高估,也不轻易低估。
AI辅助编程的形态谱系:从自动补全到自主开发
当人们谈论"AI编程"时,他们可能指的是截然不同的东西。
同样是"用AI写代码",有的工具只是在你的光标位置预测下一个单词,而有的工具可以从零开始构建一个完整的Web应用。把这个谱系理清楚,对我们理解AI编程的现状和未来至关重要。
在谱系的最基础端,是代码自动补全。这是最古老也最普及的AI编程形态。
你可能在Visual Studio Code、IntelliJ IDEA或者任何现代IDE中使用过代码补全功能——当你输入几个字符时,编辑器弹出一个下拉列表,显示可能的补全项。
传统的代码补全基于类型系统和语法树,它知道当前作用域中有哪些变量、当前函数的返回类型是什么,然后推荐匹配的选项。这种补全是准确的,但范围非常有限。它只能推荐在项目中已经定义过的标识符,无法"创造"新的代码。
AI时代的代码自动补全不一样了。以GitHub Copilot为典型代表的现代AI补全工具,不是基于语法分析,而是基于模型预测。
当你写代码时,你身后的AI模型在持续地"阅读"你的上下文:你正在编辑的文件、你打开的其他文件、你最近的操作历史.......然后基于所有这些信息,预测你下一步最可能写的代码是什么。它可以补全整个函数、整个条件分支、甚至整个文件。最令人惊叹的是,它经常能"猜到"你接下来要做什么。比如你刚写了一个数据库连接,它就会自动生成查询语句;你刚定义了一个数据模型,它就会生成对应的CRUD操作。这种体验就像是有一个人在跟你四手联弹。
GitHub Copilot在发布时用的是OpenAI的Codex模型,到2024年时已经迭代到了基于GPT-4的更加先进的版本,它的能力相比于初代有了巨大的提升。
不仅仅是Copilot,Amazon Q Developer(前身为CodeWhisperer)同样提供了IDE内嵌的代码补全能力,并且在与AWS服务相关的场景中有特别的优势。它的训练数据中包含了大量的AWS SDK代码,因此在生成与S3、Lambda、DynamoDB等AWS服务交互的代码时表现尤为出色。Google的Project IDX也在探索将AI辅助编程融入云端开发环境。
在国内,通义灵码(也就是现在的Qoedr) 是阿里云推出的AI编程助手,它针对中文场景和国内技术生态做了深入优化。通义灵码对Spring Boot、Vue、React、MyBatis等国内流行的技术栈支持良好,对中文开发者的自然语言表达有更好的理解能力,最重要的是它目前对个人用户免费开放。
CodeGeeX是智谱AI和清华大学联合推出的开源AI编程助手,作为一个开源项目,它允许用户自行部署和调优,对注重数据隐私的团队有很大吸引力——很多银行、金融机构和政府部门正在探索私有化部署CodeGeeX来满足数据合规要求。华为的CodeArts Snap也在逐步开放,它在鲲鹏和昇腾生态的开发中有独特的优化。
这些AI补全工具正在改变数百万开发者的日常编码习惯。根据2024年的开发者调查数据,超过半数的受访开发者已经在日常工作中使用某种形式的AI编程工具。在这些用户中,平均的自我报告生产力提升在百分之三十到百分之五十之间。但这种提升并不是均匀分布的,经验丰富的开发者从AI工具中获得的效率提升往往比新手更大,因为他们更懂得如何有效地使用AI,也更有能力审查和修正AI生成的代码。
比"逐行补全"更进一步的,是"对话式代码生成"。在这种模式下,你不是在代码编辑器中通过接受或拒绝补全建议来与AI交互,而是通过一个对话界面向AI描述你的需求,然后AI直接生成一段完整的代码。这种交互方式更像是在和一个懂编程的同事聊天,你告诉它"帮我写一个函数,从CSV文件中读取数据,按日期分组,计算每天的平均值,返回一个字典"之类的。ChatGPT的代码生成能力、Claude的Artifacts功能、以及各种AI编程界面的背后都是这种模式。
对话式代码生成的优势明显:它让你可以更高层次地表达意图,而不是逐字逐句地写代码。
但它同样也有一些使用门槛:你需要学会如何"精准地"向AI描述你的需求。
一个模糊的问题会得到一个模糊的答案,一个遗漏了关键约束条件的问题会得到一个不完全满足需求的答案。学会写好的Prompt,也就是学会如何把需求表达得清晰、完整、无歧义,成了这个时代程序员的一项新的核心技能。
再往上一个层次,是"上下文感知的代码理解与重构"。这不仅仅是在写新代码时获得帮助,更是在阅读和理解已有代码时获得支持。
任何有经验的程序员都知道,软件开发中真正困难的部分往往不是写新代码,而是理解、维护和修改已经存在的旧代码。面对一份没有文档、没有注释、结构混乱的遗留代码,人类开发者可能需要花费数小时甚至数天才能理清楚它的逻辑。而AI——你可以把一段几百行的函数丢给AI,问它"这段代码在做什么?"它能给你一个清晰的解释;你可以选中的一段代码问它"这有可能哪里出错了?"它能指出潜在的边界条件和错误处理缺失;你甚至可以问它"这段代码的时间复杂度是多少?如何优化?"它能给出具体的优化方案。
这种代码理解能力在代码重构场景中尤为强大。
重构指的是在不改变外部行为的前提下改善代码的内部结构,这是是软件开发中重要但又风险极高的工作。手动重构一个复杂函数,很容易因为疏忽而引入新的bug。但AI辅助重构可以大大降低这种风险,而这些需要大量手动工作的任务,在AI的辅助下效率可以提升数倍甚至数十倍。
而在这个谱系的最顶端,是最令人瞩目也最富争议的形态:自主编程Agent。
在这一层,这些系统不再是"工具",而是"自主的开发者"。
你告诉它一个目标,自主编程Agent将会自己去规划架构、编写代码、运行测试、修复错误、部署上线。Cognition Labs推出的Devin就是这类系统的先驱(这玩意应该是目前全球最吸金的智能体,也被誉为全球首个AI软件工程师)。
但Devin500美元一月,所以普通开发者还是不要想了。还是看看其他正在快速发展的开源项目吧。
比如Cline。这是一个直接在VS Code中运行的AI编程Agent,它可以读取和理解整个项目,自主地修改代码、运行命令、创建文件。Cline与Devin最大的不同是它完全运行在你的本地环境中,它有你整个项目的完整访问权限,可以自由地创建和修改文件。这种"完全信任"的模式既令人兴奋又让人不安。
OpenHands(原OpenDevin项目,你可以理解为是Devin的开源平替)提供了一个更通用的自主开发Agent框架,允许用户通过自然语言指令让AI代理自主完成编程任务。SWE-Agent则专注于解决GitHub Issue,它可以自动分析issue描述、定位相关代码、生成修复方案并提交PR。
这些工具可以解决不同的问题,适应不同的场景。从自动补全中获得的效率提升是持续的、日常的、低门槛的;从自主Agent中获得的能力提升是突破性的、场景化的、高门槛的。在未来相当长的一段时间里,它们会共存并且相互补充。
提示工程:与AI协作编程的艺术
但无论使用哪一种AI编程工具,你都会面临同一个问题:如何向AI表达你的需求。
这个问题的重要性被很多人低估了。
很多人觉得AI编程就是"把需求告诉AI,AI就能直接给出完美的代码",但实际使用中你会发现,同样的需求用不同的方式表达,AI给出的结果质量可能天差地别。学会"正确地"与AI沟通正在成为编程工作中一项核心的新技能。
与AI协作编程的提示工程分为几个层次。最基础的是"清晰明确"。
模糊的指令会得到模糊的结果,这是AI编程中最常见也最容易避免的问题。"帮我写一个用户管理模块"这个需求太模糊了,AI不知道你是要前端界面还是后端API,不知道你用什么框架,不知道你需要哪些功能,不知道你的数据存储方式是什么。"帮我写一个基于Express框架的RESTful API,包含用户的注册、登录、信息查询和信息更新四个接口,数据存储使用MongoDB,密码使用bcrypt加密"——这个需求清晰多了,AI可以给出非常具体且直接可用的结果。
一个好的编程提示通常包含几个要素:任务的目标是什么、输入和输出的格式是怎样的、技术栈有哪些限定、关键的约束条件是什么、有哪些边界情况需要考虑。
第二个层次是"分步引导"。对于复杂的任务,不要期望AI一次就给出完美的结果。更有效的做法是把任务分解成多个步骤,每一步引导AI完成一个子任务。
比如你想让AI帮你搭建一个博客系统,你不需要一次告诉它"帮我搭建一个完整的博客系统",而是要去做分步引导:
- 先让AI设计数据库表结构,比如列出需要哪些表、每个表有哪些字段、字段的类型和约束条件;
- 审查并确认这个设计后再让它生成后端API,基于你确认的数据库设计生成对应的接口代码;
- 然后再到前端页面,基于后端接口生成对应的前端组件;
- 最后到部署配置,生成Dockerfile、nginx配置等。
每一步都在你的审查和调整之下进行,最终的结果质量要高得多。这个过程就像是在和一个初级开发者一起编程,你不会一次性把整个项目丢给他,而是一步一步地引导他完成。
第三个层次是"设定角色和规则"。"你是一个资深的全栈开发者,精通React和Node.js。在编写代码时,请确保代码遵循以下原则:使用TypeScript、添加完整的错误处理机制、包含JSDoc注释、遵循React的最佳实践模式。"通过在提示中设定这些规则,你实际上是在为AI的行为设置"边界条件",帮助它在生成代码时做出符合你偏好的选择。这种角色设定看似简单,但对最终结果的影响非常大。不同的角色设定会让AI产生截然不同的代码风格,设定"资深工程师"角色会得到更严谨、更完整的代码,而设定"快速原型开发者"角色会得到更简洁、更直接的代码。
第四个层次是"提供上下文和示例"。如果你希望AI按照某种特定的代码风格或模式来编写代码,最好的方法不是用语言描述这种风格,而是给它几个你期望的代码示例。AI在学习新任务时,从示例中学习的效果往往优于从描述中学习。
如果你说"用我们项目的风格写",AI不知道你说的风格是什么;但如果你贴出两段项目中的代码作为示例,说"按照这个风格来写",AI的表现会好得多。这种"少样本学习"的效果在编程任务中非常显著。更有效的是提供正反例,"这是好的代码风格的例子,这是不好的风格的例子",让AI从对比中学习你的偏好。
第五个层次是"迭代优化"。极少有AI生成的代码第一次就完美无缺。现在的AI编程使用方式是一个迭代过程:先生成初版代码,审查代码,找出问题,向AI反馈需要修改的地方,AI生成改进版本,再次审查。这个过程可能会循环多次。每一次循环中,你都在教AI更准确地理解你的需求。
除了这些正向的提示技巧,还有一个同样重要的反向能力:要知道什么时候不用AI。
有些需要极高性能的代码、涉及安全敏感的加密逻辑、需要精确控制内存管理的系统编程、涉及复杂的并发控制的代码的编程任务并不推荐AI,因为AI在这些场景下的表现可能并不理想。AI倾向于生成"平均水准"的代码,它在安全和性能优化方面的直觉远不如有经验的开发者。一个聪明的程序员知道他的AI工具的边界在哪里,在边界内充分利用,在边界外谨慎使用。
Vibe Coding:一种全新的编程文化正在形成
就在提示工程被广泛接受为编程的一项核心技能的同时,一种与它理念上截然相反的编程文化正在悄然兴起。
这种文化有一个非常特别的名字——Vibe Coding。这个词最初由AI领域的知名人物、前OpenAI和Tesla的科学家Andrej Karpathy在2025年初的一次公开分享中提出,随后迅速在开发者社区中传播开来,成为描述一种新的编程方式的标签。
Vibe Coding这个词本身就透露着一种与传统编程截然不同的气息。
Vibe这个词在当代英语的日常使用中指的是一种氛围、一种感觉、一种能量场,一种磁场,比如"这个人的vibe很好"、"这个地方的vibe不对"。
把Vibe和Coding放在一起,本身就暗示了一种与"严谨的逻辑编码"完全不同的态度:编程不再是一丝不苟的、逐字逐句的精确劳动,而是一种跟着感觉走、让AI主导、人类享受过程的创作体验。
正所谓,五彩斑斓的黑,这是一种感觉。
那么Vibe Coding到底是什么?
它的实践方式可以这样描述:你打开一个AI编程工具——可以是Cursor、可以是Claude的Artifacts、可以是任何支持对话式代码生成的界面,然后你开始用一种非常放松、非常随意的方式向AI描述你的想法。你没有告诉AI具体的实现细节,而是在分享你的创意和愿景。你说"我想要一个看起来像日落一样的渐变背景的登录页面",或者说"帮我做个待办事项的小工具,可以拖拽排序的那种",然后AI把它做出来。你看了之后说"嗯,这个颜色不太对,我想要更暖一点的色调",AI马上帮你调整。你说"再加个动画吧,让卡片出现的时候有个淡入的效果",AI几秒钟就把动画加好了。整个过程你几乎没有写过一行代码——你甚至可能都没有看过AI生成的代码。你只是在不断地"感受"结果、表达反馈、引导方向,然后AI替你完成所有的编码工作。
这个过程中,你的角色不再是"工程师",而是更像一个"甲方"或者"策展人"。
你在描述你的愿望,然后AI帮你实现。你不需要知道CSS的渐变语法怎么写,不需要知道拖拽排序的JavaScript逻辑怎么实现,不需要知道动画的性能优化要注意什么,你只需要知道你想要什么,以及当AI给你结果时你能判断它是不是你想要的。这就是Vibe Coding的精髓:不是通过精确的技术描述来引导AI,而是通过感性的、氛围式的、体验导向的表达来与AI共创。
这种编程方式带来的体验是全新的,也是令人着迷的。很多尝试过Vibe Coding的开发者描述那种感觉时说,它像是在和一位极其懂行的设计师合作。而这种体验之所以能够成立,是因为大语言模型在对人类语言和设计意图的理解上已经达到了一个临界点,它能够从"我想要一个日落的感觉"这样的模糊描述中推断出具体的技术实现。它不是从技术参数出发来理解你的需求,而是从语义和美学出发来理解你的需求。这是Vibe Coding能够存在的前提条件。
但Vibe Coding的意义远远不止于一种"偷懒的编程方式"。它代表了一种更深层的行业革新——编程的"所有权"正在从懂技术的人手中向有创意的人手中转移。在Vibe Coding的实践中,一个不懂任何编程语言的产品经理可以在一小时内做出一个可用的原型,一个设计师可以在不写一行代码的情况下构建出完整的交互界面,一个创业者可以在一个下午的时间里验证一个产品想法。这些人在传统上需要依赖程序员来实现他们的创意,而这个过程中不可避免会发生信息的损耗、沟通的摩擦和排期的延迟。但Vibe Coding直接绕过了这个环节,创意者直接面对AI,用他们最擅长的方式(用自然语言表达创意和感受)来创作软件。
从这个角度看,Vibe Coding是编程民主化的最终形态。
前面我们讨论了AI编程辅助让程序员更高效,让非程序员也能参与编程,而Vibe Coding把这种参与推到了极致:非程序员不需要学习任何编程知识,不需要理解任何技术概念,就可以"做出"软件。他们的工具不再是编程语言,而是自然语言。他们的技能不再是对语法的掌握,而是对创意的表达、对审美的判断、对用户体验的感知。
但是,Vibe Coding也引发了激烈的争议。反对者的担忧主要集中在几个方面。
一是代码质量和安全意识的问题。Vibe Coding的实践者往往完全不知道AI生成的代码里有什么,他们可能正在运行一段包含了SQL注入漏洞的Web应用而不自知,可能在一个生产环境中部署了一段写死了API密钥的代码,可能在使用一个有着严重性能问题的算法而不察觉。在传统的开发流程中,程序员在写代码的过程中会自然地建立起对代码质量的基本判断,他知道什么样的代码是危险的、什么样的实现是脆弱的。Vibe Coding完全跳过了这个环节,开发者对代码的质量没有任何感知。用Karpathy自己的话来说就是:"你在Vibe Coding的时候不是在编程,你是在即兴创作。你不需要知道代码在做什么,你只需要知道它看起来是对的。"
二是长期的能力退化。如果一个开发者长期使用Vibe Coding的方式工作,他永远不亲手写代码,不阅读自己项目中的代码,不深入理解系统是如何工作的,那么他的技术能力会不可避免地退化。他可能会变成一个"只会提需求的人",而不是一个"能解决问题的人"。一旦遇到AI无法处理的边缘情况他就完全无能为力了。这种担忧与前面讨论的"AI依赖导致能力退化"的担忧一脉相承,只是在Vibe Coding中被放大到了极致。
第三是Vibe Coding诞生的代码的可持续性。一个完全依靠AI生成、没有人真正理解的代码库,当需要修改、扩展或调试时会发生什么?如果你不知道这段代码是怎么工作的,你如何修改它?如果你不知道它的内部结构,你如何调试一个隐藏很深的bug?Vibe Coding在创建新东西时的体验是极其愉悦和高效的,但它在维护和迭代已有系统时的体验可能非常糟糕。这就像是盖一座房子,你可以用最快的速度把房子搭起来,但如果没人知道地基是怎么打的、电线是怎么走的、水管是怎么布的,那当房子出了问题的时候,修理的难度会比从头盖一座新房子还要大。
但Vibe Coding的支持者对这些批评有不同的看法。
他们认为,Vibe Coding本来就不是用来构建和维护复杂的企业级应用的。它的核心应用场景是快速原型开发、个人项目、创意验证和学习探索。对于这些场景来说,"代码质量"的重要性远低于"创意实现的速度"。一个创业想法需要在一周内被验证,Vibe Coding可能是最快的验证方式。一个设计师想要探索一个交互概念,Vibe Coding可以提供几乎实时的反馈。一个学生想要学习编程,Vibe Coding可以让他先看到"编程能做出什么",再深入理解"代码是如何工作的",这种"先体验、后理解"的学习路径可能比传统的"先学习、后实践"更加符合人类的认知规律。
并且,也有人认为Vibe Coding可能正在创造一种全新的"编程语言",一种介于自然语言和代码之间的中间形态。传统的编程语言是为机器设计的,它们需要精确、无歧义、符合语法。自然语言是为人类设计的,它们可以模糊、可以暗示、可以借助上下文和共情来传达意思。Vibe Coding的工作方式实际上就是在把自然语言当作一种"编程语言"来使用。虽然这种"语言"非常不精确,但借助AI的"翻译能力",它已经能够在很多场景下产生可工作的结果。如果AI的翻译能力继续提升,那么未来"用自然语言编程"可能真的会成为一种主流的编程方式。
在实际的工作流中,Vibe Coding和专业编程也并不是非此即彼的关系。越来越多的开发者采用一种"分层"的策略:在创意探索和快速原型阶段使用Vibe Coding的方式,快速构建出可用的东西;在确定方向后、进入产品化阶段时切换到传统的AI辅助编程模式。这两种模式在同一个项目中交替使用,各自发挥各自的优势。
Vibe Coding还催生了许多有趣的工具和实践。一些开发者开始用语音输入来"说"代码,他们对着麦克风描述他们的想法,AI直接生成结果。这种"说话编程"的体验比打字更加流畅和自然,也更能激发创造力。一些工具开始支持"实时协作式Vibe Coding",比如让多个用户同时与AI对话,共同构建一个软件项目,每个人都可以用自然语言添加功能、修改界面、调整逻辑。还有一些实验性的项目在探索"Vibe Coding + 游戏化",让用户通过完成关卡、解锁成就的方式来学习用自然语言引导AI构建软件。
从更宏观的角度来看,Vibe Coding的兴起反映了AI时代一个更普遍的趋势:人与工具的互动方式正在从"精确操作"向"意图表达"转变。在AI时代,你只需要表达你的意图,你想要什么、你的目标是什么、你追求的感觉是什么,然后AI自己决定具体的操作。Vibe Coding是这个大趋势在编程领域最彻底的体现。
这当然有风险、有局限、有争议。但它打开了一扇让更多人可以参与软件创造的门。而这扇门一旦打开,就再也关不上了。
AI编程工具生态: 主流工具的实战对比与选择指南
尽管我们试图避免让这篇文章变成工具清单,但如果不梳理一下当前AI编程工具的全貌,很多讨论会变得空洞。所以我们不妨来聊一下当前行业中的各项工具。
事实上。这些工具品类繁多,每个工具都有自己的设计哲学、定价策略和适用场景。与其泛泛地罗列名字,不如拿几组最核心的对比来剖析它们在实际使用中的差异。
如果把AI编程工具看作一个生态系统,它们大致可以被划分为几个不同的品类,每个品类以不同的方式改变了编程工作的方式。
AI编程工具的品类繁多,每个工具都有自己的设计哲学、定价策略和适用场景。与其泛泛地罗列名字,不如拿几组最核心的对比来剖析它们在实际使用中的差异。
先看最基础也用户量最大的品类:编辑器内嵌的AI代码补全工具。GitHub Copilot是这个领域的开创者,到2025年它已经覆盖了几乎所有主流IDE——VS Code、JetBrains全家桶、Neovim、甚至Xcode等等等等。Copilot的定价是个人用户每月十美元,企业用户每月十九美元,对学生免费。它的最大优势是"无处不在"——你几乎在任何编辑器里都能用,而且不需要切换工作流。它的补全方式是被动的,你正常写代码,它在后台预测你的下一步,然后以灰色文字的形式弹出建议,你按Tab接受。这种"不打扰"的体验让很多开发者觉得Copilot就像是一个"自动补全的超级升级版"。但Copilot也有明显的短板:它对项目的整体上下文理解有限——它能看到你当前打开的文件,但不一定能理解整个项目的架构;它在生成较长代码块时经常偏离方向;它不支持跨文件的智能重构。用一位资深开发者的原话说:"Copilot适合在已经明确知道要写什么的时候帮你加速打字,但不适合在不确定要写什么的时候帮你做设计。"
Amazon Q Developer(前身CodeWhisperer) 走了一条略微不同的路线。它对个人用户完全免费,这是它吸引独立开发者和学生群体的最大卖点。它的代码补全质量在标准任务上与Copilot不相上下,但在AWS相关的场景下明显更强——比如生成与S3、Lambda、DynamoDB交互的代码时,Q Developer的准确率和上下文贴切度都显著高于Copilot。如果你正在开发一个部署在AWS上的应用,Q Developer是性价比最高的选择。但它的短板是社区生态不如Copilot丰富,支持的IDE范围也略窄一些。
通义灵码(现在的Qoder CN,他们重新升级了通义灵码)是国内使用最广泛的AI编程助手,它对Spring Boot、MyBatis、Vue、React等国内主流技术栈的支持很到位,而且对中文表达的理解明显优于国外工具——你用中文写注释或者提示,它生成的代码更贴合你的预期。但它对国外小众框架和前沿技术的支持更新速度略慢于Copilot。
接下来说AI原生编辑器这个品类。"原生"二字的区别很重要:传统IDE加AI插件的方式,AI是附加在编辑器之上的;而AI原生编辑器是从底层就把AI作为核心组件来设计的。Cursor是这个品类中最成功的一个,它在2025年的付费用户已经突破数十万。Cursor的定价是每月二十美元起步。为什么有人愿意为它付费,而不用免费的Copilot?因为Cursor提供的体验是完全不同的。在Cursor里,你可以用Ctrl+K选中一段代码然后直接说"把这个函数改成分页查询的实现方式",AI会直接在你的文件中修改代码。你可以打开Chat面板问"我们项目中的用户认证逻辑在哪里?有哪些文件涉及?"AI会扫描整个项目目录后给出精确的文件列表。你可以用Composer功能同时修改多个文件——比如"帮我重构支付模块,把支付逻辑从控制器中抽离到一个独立的Service类中"——AI会自动创建新文件、修改旧文件中的导入和调用代码、保持代码风格一致。这些能力是Copilot那种"在行尾补全下一行"的模式无法做到的。
Cursor背后还有一个关键的设计选择是"模型自由"。它不绑定自己的模型,而是让你选择底层模型——GPT-4、Claude Sonnet、Claude Opus、Gemini Pro,甚至是自部署的开源模型。不同模型在不同任务上各有优劣:Claude Sonnet在理解复杂项目上下文方面表现最好,GPT-4在标准编程任务的稳定性和覆盖面上最可靠。开发者在实际使用中往往会为一个项目配置多个模型——用Claude处理重构和代码理解,用GPT-4处理日常的代码生成。这种灵活性是Copilot给不了的。
Windsurf则是另一个我比较推荐的AI原生编辑器,由Codeium公司开发。它的特色在于Cascade模式——这是一个可以直接在编辑器中执行操作的AI代理。你告诉它"修复这个函数的性能问题",它会自己去阅读函数代码、分析瓶颈、生成修改方案、在编辑器中预览改动、让你确认后再应用。这种"代理式"的交互介于传统的AI辅助和完全的自主Agent之间,在很多场景下体验比Cursor更自然。Windsurf的定价策略与Cursor接近,目前有免费版和二十美元的Pro版。
第三类工具是命令行AI工具,也是我个人最喜欢的一类。这类工具不依赖图形界面,直接在终端中运行,适用于服务器环境、CI/CD流程和脚本化工作场景。在这个品类中,有一个绕不开的名字——Claude Code。它是Anthropic在2025年发布的官方AI编程工具,与Cursor和Copilot最大的不同在于,Claude Code完全运行在终端中,没有图形界面。这不是一个"缺点",而是一种设计审美的选择。Claude Code的设计者认为,终端是开发者对计算机最精确、最直接的控制界面——去掉了IDE的图形层,去掉了鼠标操作,去掉了视觉干扰,只剩下代码、命令和AI之间的纯粹的文本对话,而我对此深表认同。
Claude Code的工作方式与Cline有些相似:你在项目的根目录中启动它,它读取整个项目的文件结构,理解项目的技术栈和代码组织方式,然后你可以用自然语言下达编程任务。
它的核心能力体现在几个方面。项目级别的代码理解、全文件编辑能力、终端命令的自主执行。这与那些"只生成代码但不执行"的工具有着本质的区别。
Claude Code在实际使用中的体验与Cursor和Copilot有非常明显的差异。Cursor和Copilot更适合"你在编辑器里写代码,AI在旁边辅助"的工作流,而Claude Code更适合"你告诉AI要做什么,然后看它执行"的工作流——这更接近前面讨论的自主编程Agent的体验。很多开发者采用这样的组合方案:用Cursor作为日常的编码环境来处理需要精细控制的编码工作,同时打开一个Claude Code终端来处理那些需要全局理解的重构任务、多文件修改和自动化操作。
Claude Code的定价模式与大多数编程工具有所不同。它采用基于API消耗的计费方式,而不是固定的月费,这种模式对于使用频率不高的开发者来说更加经济,但对于重度用户来说,每月的API费用可能轻松超过Cursor或Copilot的固定月费。但Claude Code支持使用不同的Claude模型,所以你大可以在简单任务上使用更便宜的Sonnet模型,在复杂任务上切换到更强大的Opus模型,这样可以显著控制成本。
说回命令行AI工具。这类工具在开发者社区中的普及度比人们想象的要高得多。
Shell-GPT可以让你在终端中用自然语言下达指令,Shell-GPT会生成对应的shell命令并询问你是否要执行它。对于系统管理员和DevOps工程师来说,这节省的不是一点点时间,而是根本性地改变了他们在终端中的工作方式。
GitHub CLI内置的AI功能(gh copilot)也可以在终端中直接使用,它对Git操作的支持特别实用,你输入"把最新的三个commit合并成一个"或者"创建一个PR,标题是修复登录Bug",它自动生成对应的git命令。
还有一类工具正在快速崛起:那就是面向非专业开发者的"一键生成"工具。v0.dev(来自Vercel)的目标用户非常明确:前端开发者、设计师和产品经理。你可以在浏览器中描述你想要的UI界面,或者上传一张设计稿截图,v0会直接生成完整的、可运行的React组件代码,支持Tailwind CSS和Shadcn UI。它不是生成一个示意图,而是生成可以直接嵌入到真实项目中的代码。Bolt.new更进一步,你直接在浏览器中描述需求,它在云端创建一个完整的项目,包含后端、前端、数据库、部署配置。这些工具的出现正在模糊"谁有资格做软件"的边界。
在国内,AI编程工具的市场格局与国外有明显差异。
CodeGeeX作为开源项目,最大的优势是可以私有化部署,这对银行、政府和数据敏感型企业来说是决定性的。很多金融机构已经将CodeGeeX部署在自己的内网服务器上,确保代码数据不出域。百度Comate在百度的AI生态中有深度集成。但总体而言,国内开发者的选择逻辑和国外类似:看技术栈匹配度、看价格、看模型质量。
但众所周知,最重要的还是成本。
一个全栈开发者如果每天使用Cursor Pro(每月二十美元)加上Claude或GPT-4的API调用费用,每月的总开销大约在五十到一百美元之间。
那么这笔投入能否收回?
如果AI工具每天帮你节省一个小时,按一个开发者的时间成本计算,投资回报率是几十倍。这也是为什么越来越多的公司愿意为团队统一采购这些工具,因为它不再是一个"实验性的额外开销",而是一个已经被验证的生产力投资。
现在你们理解了这个工具生态后,就拥有了一个很重要的视角:
没有"最好的工具",只有"最适合你的工作流的工具组合"。
所以别指望着一劳永逸,没有那样的东西,你还是要不断寻找最适合你的工具组合。要知道,工具之间不是替代关系,而是互补关系。找到适合你的组合,远比纠结于"哪个工具最强"更有价值。
自主编程Agent:当AI从助手变成开发者
前面我们已经多次提到Devin、Cline、OpenHands这些名字,现在是时候深入探讨它们代表的范式——自主编程Agent。这些系统的出现标志着AI编程的一个重大转折:从"帮助人类写代码"到"替人类写代码"。
但这些自主编程Agent的实际表现如何呢?坦率地说,远没有演示那么完美。在实际使用中,它们面临着一系列棘手的问题。
第一个问题是复杂任务的规划能力不足。 面对一个真正复杂的、涉及多个子系统、多个模块、多个技术栈的任务,Agent的规划往往过于简单或者完全错误。它可能试图在一个文件中完成所有功能,而正确的做法应该是拆分到多个文件。它可能选择了一个不适合当前项目架构的技术方案。这种规划的缺陷在任务执行到一半时才暴露出来,导致大量的返工。与人类开发者不同,Agent在规划阶段缺乏经验,就是那种基于多年经验的、对什么方案可行什么方案不可行的预判能力。
第二个问题是调试能力的局限性。当Agent写的代码运行失败时,它会尝试调试。但它的调试策略往往是"盲目重试"或"随机修改"。真正有经验的人类开发者调试时采用的系统方法,Agent并不擅长。一个错误可能需要人类开发者花两分钟解决,但Agent可能反复尝试半小时,最终仍然没有成功。当前Agent在调试方面的能力,大概相当于一个初学编程的学生的水平,看到错误就随机尝试,而不是系统性地排查。
第三个问题是项目级上下文理解的缺失。Agent虽然可以读取项目的文件,但它对项目的"整体理解"是肤浅的。它知道项目中有哪些文件,但不知道为什么要有这些文件。它知道代码中定义了哪些类,但不知道这些类的设计意图和演化历史。这种上下文理解的缺失导致Agent的修改经常与项目的既有设计不一致,它可能引入了一种新的错误处理模式,而项目已经有一个标准化的错误处理方式;它可能使用了一个新的日期处理库,而项目中已经统一使用了一个现有的库。这些不一致在单次生成中看不出来,但在项目层面上会积累成严重的技术债务。
第四个问题是状态管理和执行稳定性。当一个任务需要持续数小时、涉及数十个文件的修改时,Agent很容易忘记了自己最初的目标,或者在一个无关的分支上浪费了大量时间。Agent在长时间运行中保持"执行纪律"的能力还远不如人类。人类开发者会定期回溯目标、检查进度、调整策略,而Agent一旦进入了某个操作序列,很容易"只顾赶路,不管方向"。
这些问题意味着,在实际开发中,自主编程Agent还不能真正取代人类开发者。
它们更适合的场景是明确定义、边界清晰、可独立验证的任务。
但这些局限性并不意味着自主编程Agent不重要。恰恰相反,它们在特定场景下已经能创造巨大的价值。
想象一个初创团队,面临大量的前端页面开发任务。这些页面在功能上类似,都是"从API获取数据、渲染表格或者列表、提供搜索和筛选功能"。让一个Agent来负责实现这些页面,人类开发者审查和调整,生产效率可以提升数倍。再想象一个大型项目的工作量评估场景,让Agent分析代码库,评估实现一个新功能需要修改哪些文件、涉及哪些风险,这比人类手动分析快得多。这种模式化、重复性的工作恰好是Agent擅长的。
自主编程Agent真正在改变的不是"程序员会不会失业"(这个讨论太早了),而是"程序员的时间花在哪里"。如果一个Agent可以处理百分之六十到百分之七十的常规编码工作,人类程序员就可以把更多的时间花在需求分析、架构设计、技术选型、代码审查和复杂问题的解决上。这些工作才是软件开发中最有挑战性、最有价值的部分。
AI编程落地的市场现状:2025到2026年的真实图景
以上讨论的是技术和工具本身,现在我们把视线转向市场:
AI编程在真实世界中的采用情况到底如何?
不看宣传看"疗效",说实话,这个领域在2025年到2026年间的变化速度超出了大多数人的预期。
根据2025年GitHub Octoverse报告的统计,在GitHub平台上,由AI生成的代码已经占到所有新增代码的百分之四十二,这个数字在2022年几乎为零,在2023年约为百分之十,在2024年跃升到百分之三十左右。三年时间从零到接近一半,这个渗透速度在软件开发历史上是前所未有的。
更值得注意的是,AI生成的代码不再只是"小脚本"或者"玩具项目",它开始广泛出现在生产级项目中。GitHub的分析显示,超过百分之六十的付费Copilot用户表示,他们在生产环境中运行过AI生成的代码。这是AI编程从"帮写工具"到"生产力基础设施"转变的关键信号。
同样,McKinsey在2025年的一项研究中发现,使用AI编程工具的开发团队在完成标准化的开发任务时,平均速度提升约百分之三十五到四十五。但这个平均值掩盖了一个重要的问题:不同复杂度任务的提升幅度截然不同。
对于简单任务(CRUD API、基本的数据处理脚本、标准化的UI组件),提升幅度可以达到百分之六十到八十。而"时间节省"最集中的环节是编写模板代码、查找API文档、编写单元测试这三类场景。对于中等复杂度的任务(多表联查的业务逻辑、状态管理方案的设计、第三方API的集成),提升幅度在百分之三十到五十之间。对于高复杂度的任务(系统架构设计、性能优化、安全审计、遗留系统的重构),AI的贡献非常有限,提升幅度不到百分之十,有时甚至会因为AI生成的不正确代码需要返工而拖慢进度。
而在行业采用层面,也有个值得关注的发展趋势。
金融行业(尤其是银行和保险)是AI编程工具增长最快的领域之一。这听起来可能有些意外,因为金融行业以保守著称。但现实是他们的实际需求很明显:大量的合规报告代码、监管接口集成、数据处理管道的开发工作,这些任务既繁重又需要高精度,恰好是AI编程工具擅长的领域。高盛和摩根大通等机构在2025年已经将AI编程工具纳入了核心开发流程,并且报告了显著的效率提升。
但企业级采用面临的最大障碍不是技术能力,而是数据安全和合规。尤其是对于金融和医疗行业的企业来说,是不允许代码离开自己的网络环境的。他们需要的不是调用云端API的AI编程工具,而是能够在内部服务器上私有化部署的代码模型。这直接推动了开源代码模型的市场需求
Code Llama、DeepSeek Coder、StarCoder2、Qwen2.5-Coder等开源模型在企业私有化部署场景中的需求激增。CodeGeeX在国内金融行业的成功很大程度上也是因为这个,它可以完整部署在企业内网,代码数据不出域。到2025年底,几乎所有主流云服务商都推出了"AI编程私有化部署"的解决方案,这就是市场需求倒逼出来的结果。
需求市场的发展带动了人才市场的变化。从2024年开始,北美和中国的科技公司招聘中出现了一个非常引人瞩目的现象:对AI工具使用熟练度的要求在快速上升,而对传统编码技能(手写算法、手工调试)的要求在相对下降。
到2025年,超过百分之七十的中大型科技公司在JD中明确提到了AI编程工具的使用经验。一些公司甚至在招聘中专门设置了"AI编程能力评估"环节。
与此同时,初级开发者的"入行门槛"在发生微妙的变化,一方面,AI工具让一个人能做的事情变多了,这意味着团队可以用更少的人完成更多的事,所以招聘总量在压缩;另一方面,AI工具降低了做出"能运行但不一定正确"的代码的门槛,这意味着公司更难从海量的候选人中筛选出真正理解编程本质的人。结果是,优秀的初级开发者仍然稀缺,但"只会在教程指导下写代码"的初级开发者的市场价值在大幅缩水——其他岗位也是一样的情况。
AI代码的质量隐忧:优势、挑战与应对
AI生成的代码质量是一个被激烈讨论的话题,也是当前AI编程领域最核心的关切之一。
AI写出来的代码到底靠不靠谱?
这个问题很难用简单的"好"或"不好"回答。
先说优势的一面。AI生成的代码在语法正确性方面表现出色。你很少看到AI生成的代码有语法错,而这在初级人类开发者写的代码中倒是常见。
但问题也同样明显。
第一个问题是老生常谈的安全漏洞。AI倾向于生成"最常见的写法",而常见的写法未必是安全的写法。AI可能在SQL查询中使用字符串拼接而不是参数化查询,从而引入SQL注入风险;可能在处理用户输入时不进行充分的验证,从而引入XSS攻击风险;可能在密码存储中使用过时的哈希算法。这些安全漏洞不是因为AI"知道"这是一种漏洞,而是因为AI的统计规律中"大多数人这样写"的模式胜过了"安全的写法"的信号。虽然在后续模型迭代中有所改善,但安全风险始终是一个需要高度关注的问题。
性能问题同样急需解决。AI生成的代码往往在正确性方面通过测试,但在性能方面经常不尽如人意。AI倾向于选择"通用"的解决方案,而不是针对特定场景优化过的方案。它可能在不必要的场景中使用循环而不是更高效的向量化操作,可能在不需要深度复制的情况下进行深度复制,可能使用了复杂度不够优的算法。这些问题在小型项目中无伤大雅,但在大规模系统中可能造成灾难性的后果。比如AI生成的数据处理代码,它可以正确处理一万条数据,但在处理百万条数据时可能因为算法复杂度太高而直接卡死。
再一个就是代码一致性和可维护性。 AI在不同会话中生成的代码风格可能不一致——同一个变量在上一段代码中是userName,在这一段中可能变成了username,AI可能在一个文件中导入了lodash的某个函数,在另一个文件中用了同样的功能但用了原生JavaScript实现。这些问题在单次生成中不明显,但在长期、多人协作的项目中会积累成相当——甚至极其严重的维护负担。维护一个由大量AI生成代码组成的项目,就像是在维护一个由不同背景、不同习惯的众多开发者共同写成的项目,烦透了。
另外一个问题更加隐形:"黑盒代码"。当AI生成了一段代码后,程序员可能不完全理解这段代码在做什么,但他接受了它,因为它看起来是合理的,而且通过了测试。这在短期可以提高效率,但在长期会侵蚀团队对代码库的理解。当这段代码在未来出现问题时,没有人真正理解它的工作机制,修复的难度会大大增加。这就是"技术债务"的一种新形式——AI技术债务。与传统的技术债务不同,AI技术债更难被发现、更难被量化,也更加隐蔽。
面对这些问题,一些应对策略正在逐步形成并成为行业的共同选择。
比如对代码审查的加强。AI生成的每一段代码都应该经过严格的人工审查,特别是涉及安全、性能和核心业务逻辑的部分。很多团队已经制定了明确的政策:AI生成的代码必须经过和人类编写的代码相同的审查流程,不能有任何"因为是AI写的就放松标准"的例外。自动化测试覆盖率的提升也非常关键,如果代码有充分的测试覆盖,AI引入的很多问题可以在测试阶段被发现。而安全扫描工具的集成可以帮助检测AI代码中的常见漏洞模式。设置明确的编码规范和AI使用指南,这也是一种有效的管理手段。
还有一种方案就是建立"AI代码的信任分级"。对于不同重要程度的代码,给予AI不同程度的自主权。对于工具脚本、原型代码、非关键的辅助功能,给AI较大的自主权;但对于核心业务逻辑、安全敏感代码、金融和医疗领域的代码,限制AI的角色仅限辅助和建议,最终决策永远由人类做出。这种分级制度让团队在享受AI效率的同时,也保持了必要的风险控制。
另外现在还有不少团队选择另外一种方案:"让AI审查AI"。
一些团队使用AI来审查AI生成的代码——用一个模型检查另一个模型生成的代码中潜在的问题。选用这种方法的逻辑是因为不同的模型可能有不同的盲区,彼此互补可以提高整体覆盖率。当然,这不能完全替代人工审查,但可以在人工审查之前过滤掉一些常见的问题,减轻审查者的负担。
编程的未来:AI时代的人类开发者
讨论AI编程时,最绕不开的问题就是:程序员会失业吗?这个问题不仅程序员关心,整个社会都关心,因为编程是当代数字经济的核心技能之一。
首先需要明确的是,AI的确正在消灭一些编程工作。
那些以"写模板代码"为主要工作内容的岗位,他们的工作正在被AI以极快的速度替代。当一个公司可以让AI在几分钟内完成一个全栈CRUD功能时,它不再需要雇用一个初级工程师花三天来做同样的事情。这是一个已经正在发生的现实。
在2024年就已经有不少初级开发者被优化,但整体来看,行业对高级开发者和AI专家的需求在增加——而2026年,初级开发者面临的是"压根入不了行"的处境。
但同时,AI正在创造新的、更大规模的编程需求。当编程的"生产成本"大幅下降时,软件的"消费需求"会大幅上升——这是基本的经济学规律。
如果过去开发一个软件功能需要一万元,市场上只有一百个潜在买家愿意承担这个成本;当成本降到一千元时,潜在的买家可能变成一万个。AI降低了编写代码的门槛和成本,这意味着更多的软件、更多的功能、更多的数字化服务会被创造出来。
总的工作量在增加,只是"由谁来做"和"怎么做"在发生变化。
历史上,每一次自动化浪潮都遵循类似的模式——一些工作消失了,但更多的新工作被创造出来。打字员消失了,但软件工程师诞生了。
那么程序员这个职业会变成什么样?
行业普遍认为:程序员不会消失,但程序员的工作内容会彻底改变。
不是程序员消失了,而是"只写代码"的程序员消失了。未来的程序员更像是一个"AI Orchestrator",负责设计系统的架构、制定编码的规范、管理AI代理的工作、审查AI生成的代码、处理AI无法处理的复杂问题。也许他写的代码可能变少了,但他参与的创造性设计、决策和协调工作变多了。他的价值不在于"能写多少行代码",而在于"能做出多少正确的技术决策"。
这其实呼应了软件开发历史上一次又一次出现的趋势。在汇编语言的时代,程序员是那些懂得机器指令的人,让他高级编程语言如C和Java的出现让很多人担心"程序员的价值会不会被稀释"。互联网框架和低代码平台的兴起也引发了类似的担忧——"现在谁都能建网站了,Web开发者还有什么价值?"
而每一次,担忧都部分成真,那些低端的工作确实消失了,但每一次,剩下的程序员都变得更强大了,他们做的是更复杂、更有创造性的事情,而不是那些被自动化了的重复工作。AI对编程的影响同样可以在这个框架下理解。
对于正在学习编程的人,我建议你不要把时间花在学习那些AI已经做得很好的事情上。不要花大量时间去记忆框架的API细节、去死磕某个技术的配置参数、去刷语法题,这些事情AI一秒就能做到,你比不过AI的。把时间花在学习那些AI还做不好的事情上,比如系统思维(理解一个复杂系统如何由多个组件协同工作,如何在性能、可维护性、安全性之间做权衡);批判性思维(判断一个技术方案的优劣、识别一个设计中的潜在风险、在多种方案中选择最合适的那个);沟通能力(把模糊的需求转化为清晰的技术规范,与非技术人员有效沟通技术概念);领域知识(深入理解某个行业的业务逻辑和问题,知道"要做什么"和"为什么要做",而不仅仅是"怎么做")。这些能力在AI时代不仅没有贬值,反而因为AI的普及而变得更加珍贵。当代码本身变得廉价时,"知道要写什么代码"的能力远比"会写代码"的能力有价值。
对于那些不是程序员、但需要用编程来解决问题的从业者,比如什么数据分析师、生物信息学家、量化分析师、设计师、产品经理这些职位,AI编程工具对他们来说是利远远大于弊——朋友们,这是福音。
过去这些职位(或者类似的职位)往往需要花几个月甚至几年学习编程才能把自己的创意变成现实,而现在他们可以在AI的辅助下在几天内就完成原型开发。编程的民主化会让更多的"非程序员创造者"涌现出来,用代码解决他们领域的独特问题。
这些人可能永远不会成为传统意义上的"专业程序员",但他们会成为"用编程做X的人"(X可以是任何事情:生物信息分析、金融模型构建、教育内容生成、城市规划模拟)。
编程正在从一门"专业"变成一种"素养",就像今天会用Excel和管理文档一样,未来会用AI工具"编程"可能成为很多职业的基本技能。
结语:编程不会消失,但写代码的方式永远改变了
在这一篇中,我们真的用了很————————长的篇幅系统性地探讨了AI编程。
但贯穿这一切的主线始终是:编程的本质正在被重新定义。
编程不再是一个人默默地用键盘把逻辑敲进编辑器的孤独劳动。编程正在变成一种人与AI之间的深度协作—
这对于大家来说,既是一个挑战也是一个机遇。
挑战在于过去那种"学会一门语言、记住一堆API、找到一份工作"的路径不再可靠了。机遇在于编程的门槛正在降低,编程的边界正在扩展,编程的可能性正在变得前所未有的广阔。
你不会因为"不会写代码"而被挡在创造者的门外,但你会因为"不会思考"而永远无法真正踏入这个领域。
文章开头我提到了一幅画面:你对着编辑器说出需求,AI在几秒内生成可运行的代码。这个画面在今天已经是现实,但它可能只是未来更宏大图景的冰山一角。
当AI不仅能够写代码,还能够理解复杂的业务逻辑、设计优雅的系统架构、甚至自主地发现和修复生产环境的问题时,编程这件事本身将彻底改头换面。
但工具在变,语言在变,范式在变,但那个从混沌中创建秩序、从需求中创造价值的过程,是编程永恒的本质。AI是编程的伙伴,不是编程的终结。理解这一点,我们才能在AI时代的编程变革中从容应对,而不是被浪潮裹挟着不知所措。
Ps:AI入门手册的整个体系中,AI编程这一篇和AI Agent那一篇有着紧密的联系,AI Agent的"工具使用"能力在编程场景中得到了最集中的体现,而自主编程Agent又是AI Agent理念在软件开发领域最激动人心的应用。理解了两者之间的这种关系,你对AI技术的理解就不再是割裂的、碎片化的,而是连贯的、体系化的。
互动讨论区
0 条记录No data in communication log.
从小白到入门的路线图
**在一本AI入门手册里,这一章可能是最特殊的一篇。** 前面十七章,我们从"什么是AI"讲到了全球产业格局,从机器学
AI时代的人才与职业
当人工智能从实验室里的论文走进每一个人的日常工作流,当一行自然语言就能生成可运行的程序,当一段语音描述就能产出一段堪比专
中国AI产业基础解读
在全球AI产业的棋盘上,中国毫无疑问是最值得深入观察的变量之一。 如果只看原创基础研究和技术突破的"首发"数量,中国与
全球AI产业格局:中美欧的角力
如果你在2022年底(也就是ChatGPT刚刚发布的那段时间)去参加任何一场科技行业的会议,你会发现所有人都在讨论同一个