AI Pulse

Warp 如何在 Claude 上构建自我改进的智能体

Warp 如何在 Claude 上构建自我改进的智能体

在我们的系列文章中,我们重点介绍初创公司如何利用 AI 改变其行业。在本文中,我们分享 Warp 如何将无状态用户反馈转化为其智能体的自我改进循环。

快速概览

- 名称:Warp
- 成立时间:2020
- 创始人:Zach Lloyd(CEO)
- 技术栈:Rust、Golang、GitHub Actions、内部智能体编排平台(Oz)、Claude Platform
- 增长:融资 7300 万美元。每月有 80 万开发者在 Warp 上构建。财富 500 强中 56% 使用 Warp。迄今为止,Warp 内运行了 1000 万次 Claude Code 会话,每周超过 40 万次。Warp Agent 对话总数达 4000 万次。

智能体需要可靠且有效地处理重复性任务。一个首次提示词能完成 80% 任务的智能体,仍然可能给用户带来嘈杂而恼人的体验。Warp 在这方面吃过苦头,并以此为依据制定了产品策略,为全球近 100 万开发者创造了改进后的体验。

Warp 是一个 AI 驱动的终端和智能体开发环境,基于 Claude Platform 构建。团队在其内部代码审查智能体上遇到了这种“嘈杂体验”问题。工程师们抱怨该智能体发表无用的评论,输出质量低下。

团队最初尝试了权宜之计,比如根据观察到的代码审查失败手动重写提示词。这使输出更可用,但无法规模化。改进 AGENTS.md 等上下文文件也有帮助,但远非完整解决方案。最终,他们意识到真正的问题是:无论智能体的用途是什么,反馈通常会在会话结束时消失,从而从智能体循环中移除了关键上下文。他们的解决方案是:一个基于 Agent Skills 的框架,用于创建自我改进的智能体,让反馈随时间不断积累,持续优化和增强智能体输出。继续阅读,了解他们如何在 Claude Platform 之上利用技能构建这一机制。

基于技能构建的智能体自我改进循环

核心技术是一个使用技能(skills)的自我改进循环。技能是基于文件的知识编码,将指令从原始提示词中分离出来。Warp 发展出了一种由两个技能组成的自我改进智能体架构,人类反馈位于两者之间。

内层/基础技能包含功能性领域知识和指令。例如,当 PR 被打开时,Warp 的代码智能体会使用该基础技能和上下文来生成其审查意见。

人类对智能体输出的反馈是自我改进循环的关键组成部分。对于代码审查,反馈可以简单到点个赞,但越明确越好。Warp 创始人 Zach Lloyd 解释说:“人类可以确认“这是一条不错、有用的评论”,但也可以给出详细理由说明为什么某次代码审查不好。像“你建议重命名这个变量,但我们代码库的惯例是这种全局变量使用特定的命名上下文”这样的具体信息,会告诉智能体下次如何做对。”

外层/改进技能充当观察者智能体,按计划运行,而不是针对每个任务运行。它提取累积的人类反馈,将智能体的建议与人类的回应进行比较,并对基础技能提出一个小而聚焦的修改建议。

由于技能是纯文本文件,智能体非常擅长更新它们。这些更新可以被审查、批准和合并,能够通过正常的 PR/代码审查工作流流动;一旦合并,内层技能的下一次运行就会继承该改进。Warp 现在在其整个开源仓库中运行这一模式,分别有规格编写、审查和分流智能体,每个都带有自己的自我改进循环。

Zach 说:“基于文件的技能是一种为智能体编码知识的方式,无需将这些知识直接放入提示词中,而是让智能体在执行任务时随时查阅。这个框架其实非常简单:有一个基础的领域特定技能,然后有一个改进技能来优化该领域特定技能。这种简单性正是这种方法的美妙之处。”

如何编写自我改进的智能体技能

以下是 Warp 团队在编写智能体循环的自我改进技能时一些久经考验的建议:

- 写原则,而不是规则:Zach 说,“构建技能时,要像指导一个聪明人一样,而不是像给计算机编程。在技能中加入像“寻找重复代码”这样的方向,比详尽的变量命名规则提供更好的指导。”

- 解释原因:提供规则背后的理由,让智能体能够推理问题,而不是遵循僵硬的指令,这同样有助于更好的泛化。

- 让反馈变得毫不费力:在人们已经工作的地方捕获反馈,比如直接在 PR 或 issue 上评论。同时,让这一切自动发生,无需额外的提交步骤。Zach 指出:“低摩擦是保持信号流动的关键。如果你让反馈太难,你就得不到反馈,也就无法改进技能。”

- 保持技能小巧,并采用渐进式披露:一个好的技能文件并不大;它引用资源文件和脚本,而不是一次性把所有内容都倒入上下文。

- 反馈质量 > 数量,但数量也有帮助:来自资深工程师的少量详细、领域特定的反馈,可能比大量草率的反馈更有价值,因为二元的点赞/点踩无法说明原因。Zach 继续说:“如果反馈来自一个人,且围绕智能体本无法获得的领域特定知识非常详细,那么即使样本量相对较小,也能获得非常好的信号。话虽如此,高质量信号的语料库越大越好。在 Warp,我们用循环来管理整个开源仓库。我们有数百人贡献,我们进行数千次代码审查。”

- 在改进技能上投入额外精力:在编写改进技能(观察者智能体)上投入额外精力,其回报不仅限于当前的智能体循环,因为改进技能在不同用例中具有很高的可重用性。“除了领域特定知识部分,这是一个相当可重用的机制——代码审查智能体的改进技能与其他任何智能体的改进技能并没有太大区别。”

循环实践:Warp 的问题分流智能体

Warp 的问题分流智能体展示了自我改进智能体技能框架。每当有人提交新的 GitHub issue 时,该模式就会被触发:一个 GitHub Action 启动一个智能体,分析 issue 的复杂度和可行性,分配标签,并建议修复方向。该分流智能体基于一个内层技能文件运行,该文件包含关于每个标签含义以及如何在行动前研究代码库的领域知识。

在一个示例 issue 中,第一阶段的内层技能完成了扎实的工作,但漏掉了一个标签:ready to spec(可以开始写规格),该标签表示贡献者可以开始针对该 issue 编写产品和技术规格。Warp 团队的一名维护者发现了这个缺口,并直接在 issue 上留下了反馈,就在工作发生的地方。关键是,他既解释了他的期望,也解释了原因:这种可操作的反馈便于智能体日后吸收。

外层改进技能在 Warp 的智能体编排平台 Oz 中作为定时“更新分流”智能体运行。该智能体认证到 GitHub,运行技能附带的 Python 脚本来拉取带有反馈的近期 issue,将其汇总成 JSON 文件,然后读回上下文。附带脚本本身就是一种最佳实践;技能可以引用资源文件,而不是每次运行都编写新代码。

接下来,智能体识别了维护者评论中的具体反馈信号,并提出了最小的修改来捕捉这些信号。它打开了一个 PR,修改内层技能,使其在 issue 描述了一个真实问题时应用“ready to spec”标签,即使确切的 UI/UX 形态尚未定义。

由于整个更新是一个技能文件,它可以通过正常的代码审查工作流流动。PR 附带描述,说明哪些信号促使了更改以及更改了什么。人类进行审查、批准和合并,分流技能的下一次运行将继承新知识。这最后的人类步骤闭环,并让人保持对实际更改的控制。

这正是 Warp 现在在其开源仓库中大规模运行的机制:规格编写智能体、审查智能体和分流智能体各自带有自己的自我改进循环。任何智能体,无论其任务是什么,只要从一开始就构建这样的循环,捕获人类反馈信号,将其转化为技能更新,智能体就能随时间不断改进,从一次性的帮手扩展为能在整个组织中产生复合效应的强大系统。

Warp 团队的最佳实践

- 你是否混淆了技能和记忆?技能是程序性的、稳定的——“如何做 X”,与运行无关,有意更改。记忆是智能体在推理时自动写入的,并且不断变化。

- 你需要一个改进循环,还是每个智能体一个?折中方案:一个模板化的基础循环捕获智能体之间的重叠部分,再叠加领域特定的权重。少量改进者可以各自拥有一个;一百个应该共享一个。

- 反馈错误时怎么办?假设它会发生。不要让智能体盲目接受反馈——给它上下文进行合理性检查,过滤哪些人的输入算数,并在过滤或最终审查阶段保持人类参与。

- 你的领域可验证吗?先构建验证工具,然后让智能体根据它进行调优:生成参考语料库,将输出与参考进行比较,修复,重复。

- 如果领域不可验证呢?在存在黄金输出的地方,依赖确定性评估。在必须使用人类反馈时,将其限制在领域专家范围内——不要打开闸门。

- 你如何知道整个系统在改进?跟踪人类已经在关注的全局指标——合并时间、贡献者数量、成本——并将其反馈给改进智能体。部署时循序渐进(爬行-走路-跑步)。

观看完整网络研讨会,观看现场演示并深入了解 Warp 如何使用 Claude 构建从团队反馈中学习并随时间自我改进的智能体。立即使用 Claude Platform 开始构建。

阅读原文
📚 相关主题 开发实践

订阅 AI Pulse

每天 08:00 · 12:30 · 18:30 · 23:50 更新