问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

AI编程最全解析:从趋势到实践

创作时间:
作者:
@小白创作中心

AI编程最全解析:从趋势到实践

引用
CSDN
1.
https://blog.csdn.net/datawhale/article/details/144921545

AI编程(AI Coding)正在以前所未有的速度改变软件开发的面貌。从代码补全到独立完成任务的Agent形式,AI Coding不仅降低了开发门槛,还提升了开发效率。本文将为您详细介绍AI Coding的发展趋势、影响以及实践方法,帮助您更好地把握这一技术变革带来的机遇。

AI Coding 的发展与影响

大语言模型的演进趋势

AI Coding的核心发展趋势体现在AI自主性的飞速提升。从最初以代码补全、代码问答为主的Copilot形式(如GitHub Copilot)到目前以独立完成任务的Agent形式(如Devin)演进。

代码大模型的演进速度非常快,相较于去年同一时间的产品,如今的模型能力超乎预期。前沿模型在代码生成任务上提升显著,其成本和速度在持续优化,尤其是从0到1生成小型项目上的表现。总之,前沿模型在变得更强更小,这意味着更好的体验和更低的成本。

此外,大家普遍认为2025年是属于Agent应用的一年,大模型在这方面的能力达到了实现成熟应用的拐点并且其能力会持续加强,主要可以体现在以下四个方面:

  • 规划(Planning):制定计划、将计划拆分成子任务、为子任务设定目标、基于反馈对计划进行调整。
  • 记忆(Memory):记录在Agent执行过程中产生的历史思考、行动和环境观测。
  • 感知(Perception):接收来自环境的信息,可以是文本或多模态的形式。
  • 行动(Action):基于计划和LLM的决策,和环境进行交互并对环境造成状态的改变。对于行动而言一个重要的机制就是控制和使用外部工具。

AI Coding 带来的改变与影响

每一个技术革新的过程都会经历若干个阶段,我们现在正在跨越从早期市场到主流市场这个鸿沟。对于早期的采用者来说,他们看到了这项技术的巨大潜力并且为之兴奋,尽管不成熟或者有时候效果不佳,但是AI Coding的使用体验非常神奇。这个工具能猜到你的意图并给出对应的代码,并且在持续快速地提升,越来越稳定,完成更难的任务。

正因为AI Coding是一个快速演进的领域,我们需要了解它当前的局限性,为未来的各种可能性做好准备,可能一个任务今天无法完成但是在明天模型升级后就可以实现了。唯一的应对办法是刻意练习,刻意地用LLM完成一些日常的任务,感知模型能力的边界和变化,并且尝试用工程的手段去弥补模型能的不足以投入使用(比如用RAG去除幻觉)。一方面你会深化认知和技巧,另一方面一旦达到零界点你将是第一批的受益者。

豆包MarsCode 与 AI Coding

豆包MarsCode 的判断与思考

AI Coding目前还处在早期的阶段(尽管相对其它的应用场景要成熟很多,并且已经在企业中大范围应用),但是它的发展速度非常快(过去两年LLM性能快速地提升),功能形态、交互方式、应用场景都在随之持续变化,总体向着更加自主、进一步解放生产力的方向发展。

在字节内部,豆包MarsCode已经覆盖了70%以上的开发者,从编码阶段就开始为开发者贡献代码和技术解决方案。在代码提交后,AI也会参与代码评审,自动生成测试用例提升覆盖率,上线后也用于辅助线上问题的定位和解决等等。

新功能 Apply 的诞生与亮相

我们可以从一个公式去理解豆包MarsCode在进行Apply产品功能设计时的思考:

p·(t + a)

其中p是LLM失败的概率,t是从用户请求到响应的时间,a是在失败情况下造成的任何额外损失,这个公式得到的结果就是用户在使用过程中感受到风险的大小。当用户意识到某个功能存在风险(高延迟,低成功概率)时,他们会停止使用并且很难恢复信任,这种情况在LLM应用上更为明显。

代码问答侧边栏是一个风险非常低的功能。因为有流式传输,你可以立即开始阅读,t是很小的,但是p通常相对较高。在生成代码时,即使LLM不完美,你也有一段新的代码可以参考、构建和重新提示以改进方案,它不会马上修改源代码,因此a也是非常小的。于是,当代码修改方案已经被确认后,如何快速且准确的将这些修改更新到代码中就非常重要。Apply解决了这关键的最后一步,无需手动复制粘贴或者手动修改,直接通过智能分析实现在对应的位置修改代码,让整个代码问答工作流变得更流畅。Apply功能大大降低了代码变更的成本。

高效利用 AI Coding 的方法与实践

优化 AI 生成代码的质量、可靠性和安全性

  • 高质量上下文:模糊不清的上下文容易导致大模型出现幻觉。完成一个任务时对人重要的信息大概率对AI也非常重要,你可以通过主动显式地引入这些信息来帮助AI。比如代码补全打开相关的文件,问答的时候用#Code/#File/#Folder引入明确的代码片段来实现。
  • 生成测试用例:让AI在完成一段功能后添加对应的测试用例,可以提升任务的稳定性,也可以避免后续的任务破坏已有的功能。
  • 项目实践沉淀:每个项目都会有自己的编码规范和最佳实践,这些知识都值得沉淀。当前LLM的指令跟随和上下文感知能力都非常强,加入这些规则和知识库会对任务的完成效果和稳定性有非常大的帮助。

实现 AI Coding 在大型项目的可行性探索

我们在大型工程中也要解决可行性的问题,在LLM时代之前我们会怎么做?我们会通过做抽象、做架构隔离、做分工、记录文档等等方式来解决。一个大工程如果在这些方面做的很好,那么对实践AI Coding也大有帮助。

哪怕一个项目有几十甚至几百万行代码,但是解决一个具体问题时人们和AI所需要的上下文都是相对有限的。目前的AI Coding工具背后都会有一个代码知识图谱系统支持,用于召回与当前任务相关的上下文。随着Agent的出现,AI会自己分析任务并调用IDE中的工具探索、获取上下文,做到更加的精确。

对开发者的机遇与建议

机遇

  • 降低开发门槛:软件开发不再是技术门槛高的专属领域,只要具备洞察力,个体即可利用AI构建工具,满足长尾需求。AI Coding让多人参与到解决实际问题的创新之中,释放了开发潜力。
  • 提升个体生产力:以CPU做类比,Copilot 相当于提升单核处理效率,而 Agent 则让开发者拥有多核并行能力。未来可能会有很多小型但是极具战斗力的团队或者创业公司。

建议

  • 学习能力:对于学生或者职场新人,成长是最重要的事情,在学校除了打好基础,培养有效学习的能力也非常重要。
  • 好奇心:好奇心是一个优秀程序员的重要特征,它能驱动你对一个问题的持续深耕,也能驱动你去探索前沿的技术。
  • 驾驭 AI 的能力:除了好奇心,还要有满足好奇心的能力。大模型的出现极大降低了这一能力的门槛,成长的效率会大幅提升。驾驭好这个工具也会成为日后在职场中的一个竞争优势。

如何用 AI 助力学习

学习和巩固计算机基础知识

进入职场后,你会发现计算机科学基础课程的重要性在职场中会愈发凸显。无论是学习新技术、设计解决方案,还是定位线上疑难问题,都需要对计算机软硬件体系有深刻理解。然而,学校的理论教学往往与实际应用场景脱节,这时AI就可以成为你的得力助手:

  • 将理论落地实践:学习一个知识点时,AI可以提供相应的应用场景,解释在实际工程中的实现方式,甚至提醒你可能遇到的异常情况。
  • 明确使用场景:以数据结构和算法为例,AI不仅可以帮助你理解它的实现,还能告诉你在何种场景下使用何种算法或数据结构,让学习更加贴近真实项目需求。

快速掌握语言、框架和工具的实践操作

  • 优化学习流程:AI能帮你解决工具链安装、工程创建、依赖配置等繁琐任务,让你快速进入核心知识点的学习,减少对技术门槛的畏惧。
  • 个性化指导:AI会根据你的实际水平提供量身定制的解释和帮助,耐心解答每一个问题,让学习过程更加舒适、无压力。
  • 引导工程最佳实践:高校教育中对开发工具、编程规范等方面的内容常常不足,因此MIT也出了这样的课程:The Missing Semester of Your CS Education。AI已经学习了大量实际项目的最佳实践,可以在问答中直接指导你正确使用工具并遵循规范。
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号