返回资讯中心
外部精选
软件工程
#开发者实时流

Lovable 团队删除几乎所有 Agent 代码,复盘 10 万次 PR 经验

来源标题:We deleted almost all our agent code, and other lessons from 100k PRs

Lovable 团队在累计超过 10 万次 PR 后,删除了几乎全部自研 Agent 代码并重构实现方式。创始人回顾称,原计划与最终产品高度相似,但过程中需反复调整给模型的自由度及错误拦截机制。目前用户已在平台创建逾 7000 万个项目。

Hacker News 最新antonoo2026/11/8 · 今天24 分钟阅读

以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。

让Lovable变得简单可靠,意味着我们必须反复重新思考它的运作方式。技术格局不断变化,曾经有帮助的工程决策可能开始成为阻碍。许多构建AI产品的团队都面临同样的问题:哪些应该保留,哪些应该重建?

2023年春天,我在GitHub上发布了一个名为GPT Engineer的开源项目。你描述想要的软件,它会提出澄清问题,然后写出整个代码库。那年晚些时候,我写下了Lovable的计划:不会编程的人可以通过聊天创建、部署和改进软件,并即时看到结果。在我们的代码库积累了超过100,000个pull request之后,我的联合创始人Fabian和我们由工程师、设计师和产品经理组成的团队已将那个计划变成了Lovable,迄今为止我们的用户已在平台上创建了超过7000万个项目。

我最近重读了最初的计划,它和我们最终构建的东西惊人地相似。我没有预料到的是,我们多少次重新发明了实现目标的方式。一路上,我们不得不重新思考给模型多少自由、如何快速捕获它的错误,甚至如何fork它正在运行的计算机。

我猜想其他构建软件产品的团队也在应对许多相同的挑战。我希望分享我们如何应对这些挑战能让这项工作稍微轻松一些。

我们选择帮助人们创建新的应用程序。他们带来一个想法,Lovable会生成代码库并一键托管。专注于全新项目让我们避开了现有代码库、依赖项和环境的巨大多样性。我们通过选择一个有主见的栈进一步缩小了问题范围,放弃了早期让用户在前端栈之间选择的选项。

这些选择加在一起,让我们能够控制所使用的库、代码结构以及运行环境。我们可以在自己理解的环境中运行生成的代码、检查失败并自动改进整个系统。对这套通用设置的改进可以惠及许多项目。

原则很简单:约束问题、控制执行、从结果中学习。

让应用程序显示在屏幕上是一回事。在用户不断提出一个又一个变更请求时保持它正常运行则更难。

开发者可以检查损坏的应用程序并修复代码。从未编程过的人需要产品替他们处理更多这类工作。

我一直推动我们走向自主agent,因为我预期模型会快速改进。我希望我们为那些未来的模型而构建。我们的工程师Mårten Wiman将此推向了一个非常复杂的异步设计,agent可以创建任务并委托给子agent。但约束较少的agent会陷入技术死胡同,制造错误并采取没有可预测完成时间的行动。给它们更多自由反而让产品变得更不可靠。

所以我们退后了一步。我们删除了几乎所有的agent代码,回到一个用户请求产生一条相当可预测的工具链的模式,输出端有聊天和实时预览。到2024年底,主要的编辑流程是单个响应,包含所请求的文件更改。当时原生tool calling对我们来说还不够可靠,所以我们让模型将代码包裹在类似XML的标签中,比如<lov-write>,并在agent完成后解析编辑内容。

我们有重试和错误处理,但没有开放式循环让模型运行工具、检查结果并选择下一步动作。用户可以在预览中检查结果并引导下一次更改。

模型对一次能考虑的代码量也有限制。随着应用程序增长,选择向它们展示什么本身就成了一个问题。我们使用微调的小型LLM来识别每次更改所依赖的代码,包括不需要编辑的文件,并将该上下文传递给编码模型。

我们正在学习既塑造模型能做什么,也塑造它能看到什么。

选择正确的代码只是上下文问题的一部分。随着人们构建,我们看到相同的错误反复出现。2023年的计划说Lovable将由微调模型驱动,这些模型在产品生成的数据上训练,这样每次失败尝试都会让系统变得更好。

2024年,我们找到了一种更简单的起步方式:工程师检查损坏应用的聊天日志,并写下简短笔记,解释反复出现的错误以及如何避免它们。

我们称之为“knowledge files”。一个图标问题可以变成一条简单的指令,就像这样:

Icons

只使用lucide-react中存在的图标。 绝不要编造图标名称。如果不确定,选一个通用的。 知识文件示例(示意性)。

一个检索步骤选择相关笔记并将其添加到模型的上下文中。没有微调,只是文本。今天任何使用agent skills的人都会熟悉这个模式:将有用的指令保存在文件中,并加载与任务相关的那些。

我相信这项工作对我们2024年底的起飞至关重要,我甚至将其称为一种scaling law。从一个损坏应用中得到的有用经验可以帮助下一个人,而无需等待我们训练新模型。

我们后来在Lovable Stack Overflow中应用了同样的想法,为agent检索问题和解决方案。一个早期版本将用户卡住的比例降低了5%。

一个能纠正自己错误的agent仍然必须让你等待这些纠正完成。如果每次尝试都需要完整构建,即使是很小的更改也可能变成缓慢的对话。

我们构建了沙箱,保留每个项目的文件并在用户工作时保持其开发服务器运行。编辑可以更新实时预览,而无需重新生成生产构建包。

独立的增量TypeScript检查复用早期检查的工作来捕获代码组合方式中的错误。agent可以利用这些错误在项目仍在运行时着手修复。

(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)

正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →