内容整理于:2024.11,供参考。
目录
现状
在当今科技迅速发展的背景下,生成式人工智能(AI)在各个领域的应用已经成为热门话题。其中,人工智能编程工具的崛起无疑是软件开发行业早期受到冲击的领域之一。目前AI辅助编程主要有三种模式:IDE模式、Prompt模式、Agent模式。
- IDE模式:通过使用工具(如Cursor等)智能分析代码上下文,仅需简单的TAB键操作即可生成代码片段甚至是完整代码,显著提高编程效率。
- Prompt模式:开发者提供描述性的prompt,AI据此生成代码块,然后开发者将其整合到项目中。这种模式要求开发者对prompt撰写有较高的理解与能力。
- Agent模式:在这种模式下,AI作为自主的编程助手,理解开发者的意图并主动规划(强化学习增强的思维链等)和执行任务。开发者可以与AI对话,提出问题或请求功能,而AI则基于上下文自动生成代码、测试用例,甚至进行调试。Agent模式更接近于超级AI的初级模拟,试图通过自然语言交互与上下文理解,模拟人类思维,自主规划并处理复杂编程任务。
虽然IDE和Agent模式本质上都是Prompt模式的变种,但Agent模式更像是对超级AI的初级尝试,使开发者能够更专注于高层设计,将重复性任务交给AI处理。不过,这三种模式都属于初级辅助模式,虽然已经能显著提升开发效率。这些模式的辅助效能还与多种因素相关,比如:
- 人类提示工程(Prompt engineering )水平:开发者如何有效地与AI沟通需求,直接影响输出质量。
- AI对不同编程语言的掌握和擅长程度这样语法复杂的语言,AI生成的代码可能更容易出现编译错误。相比之下,Go语言生成的代码往往更容易直接运行。
- 编程任务的特性:不同类型的编程任务可能更适合不同的AI辅助方式。
注:随着AI在推理方面的提升(乃至形成独立的推理层),“过提示工程”可能不仅无法提高推理性能,还有可能妨碍模型工作。也就是说对于推理能力越来越强的大模型,反倒是提示词越简洁越好,因为思维链都隐藏到了模型内部,如果再用思维链提示反而会适得其反。
当前AI的局限性与未来展望
当前的AI系统更像是一个知识数据库,主要基于已有的知识进行推理,与现实世界的互动能力仍然有限,如缺乏访问互联网和本地系统的能力。这种限制导致AI只能生成代码,却无法验证其逻辑是否正确或者能否编译运行。此外,AI与人类的交互手段仍相对初级,大多局限于文本、图片或语音的形式,这些方式在面对复杂需求时显得笨拙。
那么未来理想的AI辅助编程模式应该是什么样的呢?我认为应是端到端编程,即通过多种交互手段(自然语言、语音、图片以及将来的未知方式等)输入需求,AI直接输出已部署完毕且可正确运行的完整程序。在超级AI时代,这种编程模式将成为现实,届时AI与程序员的交互方式将迎来革命性变化。
我们可以将当前阶段称为"AI的过渡时代"。正如OpenAI的Sam Altman所预言那样,真正的智能时代可能还需要几千天才能到来。在这个超级AI出现的时代,端到端的编程模式可能才会真正实现。
根据Sequoia Capital的最新研究报告,AI技术正在从"快速思考"(System 1)向"慢速思考"(System 2)演进。System 1指的是快速、直觉性的反应,而System 2则涉及更深层次的推理和问题解决能力。这种演进正在推动一种新的"推理层"的发展,这可能是通向真正智能时代的关键一步:

超级AI时代的编程模式可能包括:
- 脑机接口:通过思维直接传达编程意图。
- AR手势交互:在虚拟空间中操控代码组件,如钢铁侠电影中的场景。
- 多模态融合交互:结合语音、手势、眼动跟踪等多种方式。
- 自适应自然语言处理:AI能够理解和解析非结构化的自然语言,转换为代码逻辑。
这些技术的发展可能会让未来的编程体验更像是与高度智能的助手协作,而非单纯的工具使用。如今脑机接口、AR增强现界等技术也在快速演进,很可能与超级AI带来的智能时代同时到来。
程序员角色的转变
在超级AI时代,程序员的角色将发生显著的变化。程序员基本上不再编码,而是更多地转变为"系统架构师"、"AI协作者"和"创新推动者"。他们的工作会更多地涉及高层次的问题解决、创新思考和跨学科合作(复合型人才)。技术知识仍然重要,但更重要的是理解业务需求、系统设计、伦理考量和用户体验等更广泛的技能。
Sequoia Capital的报告指出,随着AI技术的进步,软件开发正在从"软件即服务"(SaaS, Software as a Service)模式转向"服务即软件(Service as a Software"模式。这意味着AI应用不仅仅是提供软件工具,而是直接提供完整的服务解决方案。这种转变将极大地扩展AI应用的市场,从软件市场扩展到更广阔的服务市场。

随着超级AI的出现,我们还可能会看到AI系统不仅能辅助编程,还能自主编写、维护和优化代码,即AI的自主性。然而,这种高度自治的系统也可能面临复杂的自我管理问题。
借鉴《黑客帝国》中的概念,未来的AI系统可能会像一个巨大的自维护程序,但仍需要"异常处理程序"来解决一些无法自动修复的关键问题。在这个场景中,人类程序员可能扮演类似"尼奥"的角色,成为系统无法自行解决问题时的最后求助对象。
这种人机协作模式可能类似于现代软件系统中的"live reload"概念:当AI遇到无法自动解决的问题时,它会寻求人类的帮助,重新加载并修复系统,从而保持整个生态系统的稳定运行。
所以,AI只是程序员的得力助手,而不是替代者,我们每个人都需要享受和拥抱AI带来的便利。在人工智能日渐崛起的时代,科技为我们提供了更加丰富的工具和资源。即使是零基础的用户,也可以通过AI辅助的编程工具轻松制作出小型软件,解决实际问题。小辣椒的成功无疑是这场变革的缩影,显示了普通人在技术助力下如何改变自我、超越自我的可能性。
随着AI工具的不断更新和复杂应用场景的深入,未来会有更多用户踏上这一崭新的编程之旅。或许不久的将来,我们将看到更多新颖的应用程序面世,推动数字经济的发展,服务于各行各业。
常见问题讨论
1、目前开发者们用得比较多的生成式 AI 编程工具有哪些?它们各自有哪些优缺点?
目前大家主要使用的工具有Github Copilot、Cursor、Baidu Comate等,主要的交互形式是代码补全和代码会话,前者就是集成在 IDE 中,后者可以在 IDE 中,也可以是单独的交互界面。此外就是嵌入到研发流程中的 AI 增强,比如 Code Review,Agent 自动升级 JDK,诊断各类错误等等。它们都能在一定程度上帮助开发者提高日常研发工作的效率。至于缺点,有些产品比较成熟,如补全和会话,而其他的就相对都还在比较初步的阶段。
2、最近的 Cursor 有开发者表示月付 100 刀都愿意用,那么 Cursor 抓住了开发者的哪些通点?据您观察,为什么 AI 编程工具的发展迭代这么快?
Cursor 相比 Github Copilot 之类的主流编程助手工具,由于抛开了 IDE 设计的思维历史,显然其产品思维更底层,即它在尝试重新思考 IDE 应该怎么做,例如它可以在任意文件夹 / 文件 /Codebase 呼出会话上下文,这个是其他 IDE 无法做到的,因此它给人“惊艳”的感觉。
至于为什么 AI 编程工具发展这么快,第一是因为程序员群体薪资高,因此给他们提高效率的商业价值非常显著;第二是这个群体对新技术充满热情,更积极拥抱新的技术,因此也促进了这个领域的发展迭代。
3、总体看,AI 编程工具发展到什么程度了?开发者在工作中使用生成式 AI 工具时,您有什么建议?将来 AI 编程工具还可以做哪些方面的优化改进?
目前的 AI 编程工具都是基于之前的研发流程范式在改进,从各种产品不断涌现来看,还处于初步的阶段,而且模型的演进给这类产品的想象空间带来了巨大的不确定性。对开发者来说,肯定是需要去主动拥抱和使用才是正确的,因为未来 AI 必定能够替代开发者的一部分工作。
AI 编程工具的优化方向,可能主要是两方面:一部分是模型自身的突破;另一部分是企业需要重新思考自己的数据,能够让编程工具充分用起来。
4、有没有因为员工使用 AI 工具 coding 担心代码质量等问题?具体有采取了哪些管理措施来保障代码质量吗?
团队的日常开发工作最好有严格的 code review 和单元测试覆盖的流程,无论是否是 AI 生成的代码,都需要经过 code review 和 CI,所以并不用太担心质量问题,实践中也可以观察和追踪 AI 生成的代码引入的严重生产问题。事实上,很多时候人写的代码质量,并不见得比 AI 生成的代码质量高,也有一些基于 AI 做 code review 的工具,虽然还仅仅处于比较起步的阶段,但随着时间的积累,这方面的工具肯定能帮助改进代码质量的。
还有一些代码质量的问题是需要在运维阶段才容易被发现的,传统的做法会在发布的工具建设、监控能力的改进上下功夫,长期来看这部分应该也能充分使用 AI 的能力,也就是说大家说的 SRE Copilot,但是这个会更难一些,因为它要结合大量实时的数据分析。
5、有开发者曾担心 AI 编程工具会给企业带来更多的技术债?
首先,今天各类主流 Copilot 生成的代码质量还是不错的,没很多人想象的那么糟糕;其次,今天许多开发者写的代码质量是很差的,没很多人想象的那么好,因此用 AI 工具会带来更多技术债这个说法本身不成立。更何况技术债更多时候不仅仅体现在编码那一时刻,组织架构是否合理、系统架构是否合理、技术 Leader 是否重视长期的技术健康度,都远发挥了更重要的作用。
6、现在一些公司提倡使用 AI 编程工具同时对开发岗位了进行优化,如何看待这个现象?当前形势下,开发者应该如何打造自身竞争力呢?
从商业角度就是个简单的成本逻辑,提升效率 = 降低成本,下一步就推导到优化岗位了,这个也理解。很多人短期内高估了 AI 的能力,因此急急忙忙就要拿到效果。今天 AI 编程工具的能力还比较初步,如果能替代一些岗位的话,只能是一些比较简单的岗位,比如不涉及复杂业务逻辑的前端,或者一些有了测试用例的文档后编写测试用例代码的测试岗。但实际上我们看到 AI 出现以前,这些岗位在很多公司都被逐渐用外包(编程能力较弱)来取代正式员工了,背后的成本逻辑其实是一致的。
无法被 AI 取代的部分,主要有几方面:
- 需要大量沟通理解的领域模型和业务逻辑,我们不能指望 AI 和人聊后,把业务逻辑梳理清楚。
- 对可用性质量要求比较高的部分,例如调度系统、中间件、存储核心系统。
- 其实也就是暗含在 2 中的,就是逻辑极度复杂的场景,短期模型能力好像还不够。
参考资料
[1] 《智能时代》(The Intelligence Age): https://ia.samaltman.com/
[2] ChatGPT: https://chatgpt.com/
[3] Claude: App unavailable \ Anthropic
[4] Cursor: Cursor
[5] 提示工程(Prompt engineering ): https://en.wikipedia.org/wiki/Prompt_engineering
[6] AI对不同编程语言的掌握和擅长程度: AI大模型也有自己偏爱的编程语言,你猜猜谁最擅长Go?
[7] Go语言: Go | Tony Bai
[8] “过提示工程”可能不仅无法提高推理性能,还有可能妨碍模型工作: https://openai.com/index/learning-to-reason-with-llms/
[9] Sequoia Capital的最新研究报告: Generative AI's Act o1: The Reasoning Era Begins | Sequoia Capital
[10] 阿里许晓斌:AI编程工具发展现状与未来展望_技术风险_代码_Cursor