在如今,大部分代码已经是通过AI辅助编写的。问题不在于我们是否会在开发中使用LLM,而在于如何与之协作。在三个月内构建了涵盖前端、后端和AI管道的实际功能后,我发现极端方式并不可行:纯手工编写代码速度太慢,而纯粹的氛围式编程在代码库增长时会崩溃。目前最实用的工作流程是混合式的:人类定义架构,AI协助实现,人类监督和优化结果。

精简版

在工程团队中与LLM协作产生可维护代码的实用指南

在与LLM进行大量协作编程之后,我将坚持一种中等层次的工作流程,在完全自主编写代码和纯粹氛围式编程之间位于第38百分位。以下方法帮助我为长期项目产生高质量代码:

  • 学习新工具和架构:如果你计划长期使用这些工具,在完全陌生的领域练习自主编写代码
  • 框架协作策略:在使用较新框架时,更多地进行手工工作,只有在拥有扎实的架构和设计理解后才转向AI
  • 智能体开发:与智能体协作时使用精心规划和规范驱动的开发
  • 测试策略:要求AI生成测试并自行测试功能,然后仍然进行手工测试。AI有时会过度迎合你的需求,为了满足你实现功能的要求而删除难以覆盖的测试
  • 单智能体协作:一次只与一个智能体协作并观察其行为,这样可以在其偏离轨道时及时中断
  • 协作态度:将AI协 作视为与初级开发人员的工作一样。你需要自主理解需要实现什么以及如何实现。要求AI处理小而清晰的特性
  • 代码优化:精简和简化生成的代码,特别是当你知道其他开发人员将继续维护时

我不认为我们会完全信任LLM处理所有事务,并完全失去对代码库中发生情况的控制。因此,我相信演进代码库的最实用方法是与AI协作并能够理解它的所有行为。正因如此,代码的未来位于极端氛围式编程和手工代码编写之间的中间地带。

何时使用极端氛围式编程

氛围式编程仍有其适用场景,以下是在不进行任何代码编辑的情况下有效使用的场景:

  • • 快速原型设计,用于传达想法
  • • 设置非常简单的项目,如落地页面
  • • 在已经结构化的代码库中实现明确定义的小型和典型变更(在前端代码库中添加第50个组件,或在后端应用程序中实现第5个路由)
  • • 编写一次性脚本和不会被代码库其他部分使用的模块

完整故事

开始氛围式编程之前

如你所知,你可以通过一个提示词就获得令人惊叹的结果和原型。然而,如果你走这条路线,只需几个小时,你就会遇到困境——你会发现自己有一个包含2k+行代码的文件,由于一个文件中包含大量上下文和逻辑,没有任何LLM能帮助你向项目中添加更多功能。

极端氛围式编程通常能让你以100倍的速度遇到软件开发周期的典型问题。

如果你用熟悉的语言和框架编写这个,你可以轻松发现问题并指导LLM重写。然而,如果你过去几个月一直在进行氛围式编程,你可能开始忘记如何做到这一点以及什么是最合适的技术栈和方法 😅。

所以,我有信心地说,与LLM协作的第一个原则是掌握基础知识并设置自己的架构。即使LLM能够产生良好的架构模式,你仍然需要理解它;否则,你会失去对代码库中发生情况的任何感觉。当你无法验证输出时,你就无法演进系统。

目前,像Replit这样的在线编辑器正试图通过添加多智能体系统来修复这个问题,其中一个智能体编写代码,另一个架构师智能体审查它。然而,这些多智能体系统还很年轻,它们产生的结果仍然不可靠

如果你确实想从零开始使用LLM编写东西,并且代码库中没有示例,那么你最好的选择是清楚地分离"氛围式编码"部分与代码的其余部分,并确保不会从该模块向外部导入任何东西。因此,第二个原则是将你的感觉与代码分离。

氛围式编程的主要挑战之一是调试LLM编写的代码。特别是如果这是由另一个人氛围式编程的代码。我认为这发生是因为LLM是在整个互联网语料库上训练的,对于你的平均提示,它产生的是互联网的平均结果。然而,这个平均结果通常比你实际需要的要冗长得多。

因此,第三个原则是不要在罕见语言或新框架中进行氛围式编程。LLM用于训练的数据越少,它产生的输出就越不可靠。当我尝试使用Cursor智能体时,我看到的、最糟糕的结果是在我试图为使用LangChain栈的代码编程时。LangChain只有几年的历史,并且发展很快,最近已经经历了三次主要更新。生成的代码冗长程度是2到10倍,而且常常根本无法工作。

有一些方法可以部分规避这个问题,如索引最新的文档或使用Context7 MCP

然而,对我来说,我意识到如果我将在新环境中做大量工作,我仍然需要阅读文档并进行一些手工编码,然后才能切换到智能体模式。

流程

我认识的大多数开发者都是这样使用LLM的:

我很快意识到关闭人-AI循环很简单,方法是:

你仍然会进行手工验证,但在此之前得到的结果要好得多。

这个循环运行得相当好。该流程中的问题是,你有时仍会发现AI产生不满意的结果,并且必须进行大量手工工作或完全重写所有内容。为了应对这种情况,你需要遵循一些额外的原则:

提供尽可能多的相关上下文

设身处地为AI考虑,从它的角度看待你提供的任务是有帮助的。如果你在它的位置上,仅凭提供的上下文你能完成任务吗?

有方法可以改善你的工作流程,如为任务跟踪器或Notion数据库使用MCP。然而,我在其中的成功非常有限,因为使用10+工具,你的上下文会变得臃肿,AI很难正确使用这些工具。而且这些MCP工具还处于早期阶段,甚至要从Jira工单获取信息,我都必须非常具体地要求AI查找特定工单,如果我运气好的话,它会在第三次尝试时能够做到这一点 🙃。

对我有效的方法是对第一个提示词使用元提示。它看起来像这样:

    1. 告诉AI:“我想实现一个新功能,这是关于它的很多非结构化上下文。生成一个提示词来帮助我实现它”
    1. 找到你将工作的任务的所有相关上下文(你任务的非结构化描述、文档、相关数据、转录文本等)。将每个上下文片段包围在标签中
    1. 优化生成的文本,一旦你满意,可以使用它作为IDE内的起始提示词

处理小功能

在我的Nebius.Academy指导实践中,我给出了练习AI辅助编程的挑战。我提供了一个包含吃豆人游戏的仓库,要求学生为这个游戏实现一些变更。

你可以在这里查看挑战并自己尝试。

简单挑战你通常可以不看代码库就完成。

中等挑战更棘手——如果你分解它并分别执行每个步骤,你可以做到。但如果你尝试一次完成所有步骤,AI会很乐意生成一些东西,但这会是完全无意义的。

这是Replit智能体如何完成一个中等挑战——一些东西起作用了,但外星人的行为是有问题的

而一个困难挑战,我在研讨会期间从未看到完成过,它需要更深入理解代码库和非常仔细的规划。

将AI视为初级/中级开发人员

不要允许它开始执行,直到你确认生成的计划看起来合理

提示:有新兴的模式和库有助于实现这一点。像.cursorrules、Kiros规划阶段等。我取得合理成功的是OpenSpec。它将帮助生成项目描述,你将工作的每个特性都将遵循清晰的流程。

OpenSpec使用AI进行更改的流程

即使有了像OpenSpec这样的工作流,一旦我开始使用它们,就会有一些不明确的问题——如果在规划过程中忘记了一些东西,该怎么办?现在,讨论似乎倾向于支持将信息添加到规范并重新生成代码,但这可能需要很多时间。更实用的方法是用额外命令指导AI,但随后你也需要单独修改规范。

另外,当你收集了大量规范时,你可能需要一些索引/RAG来有效地处理这些规范。天堂保佑如果你的规范与代码不同步——在这种情况下,你可能完全不使用它们会更好。我们可能需要调整工作流程,以便每个任务都通过规范生成——这将提供最新的文档,并为AI提供大量相关上下文。但这需要所有开发人员遵守相同的规范驱动开发过程,我个人在团队中还没有尝试过。

观察AI工作并在偏离时中断

当我们与Anthropic的销售人员通话时,他告诉我们Anthropic工程师同时运行6个智能体。我尝试过这样做,但即使同时运行2-3个智能体,感觉就像多任务处理的最糟糕版本。所以现在我相信监督你的智能体并与之协作,即使你有一个强烈的规划阶段。这也类似于在开发阶段捕获错误与在代码审查阶段捕获错误——如果你在错误的代码生成中间停止AI,你会更快得到期望的结果。

如何学习AI大模型?

如果你对AI大模型入门感兴趣,那么你需要的话可以点击这里大模型重磅福利:入门进阶全套104G学习资源包免费分享!

这份完整版的大模型 AI 学习和面试资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

在这里插入图片描述

这是一份大模型从零基础到进阶的学习路线大纲全览,小伙伴们记得点个收藏!

请添加图片描述
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

100套AI大模型商业化落地方案

请添加图片描述

大模型全套视频教程

请添加图片描述

200本大模型PDF书籍

请添加图片描述

👉学会后的收获:👈

• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

LLM面试题合集

请添加图片描述

大模型产品经理资源合集

请添加图片描述

大模型项目实战合集

请添加图片描述

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

在这里插入图片描述

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐