自动驾驶代码库

背景代理与软件交付的新时代
向下滚动
自动驾驶代码库

背景代理贯穿整个软件开发生命周期(SDLC)。

软件交付曾围绕键盘前人类的局限设计。如今,代理在后台自主运行于数千个代码仓库中。Stripe等公司已出现这一趋势,他们最近发表了关于其Minions平台,以及Ramp我们的旧流程已无法再吸收这些变化。如今,每位工程负责人都在问同一个问题:我们该如何从当前的交付流程过渡到自动驾驶代码库?

规划编码评审测试部署

我们的系统受限于本地主机

自动补全演变成了编码代理。编码代理又演变成了在你的笔记本电脑上并行运行的三个编码代理。工程师们开始使用工作树、越来越多的终端、备用Mac Mini。为了运行更多代理,他们什么都尝试。

但本地主机(localhost)并非为此设计。代理会争抢机器状态,机密会被泄露,而且当机器休眠时一切都会停止。

这对独立开发者可行,但对专业工程来说难以维持。我们必须让工程师摆脱工作站的束缚。代理需要在后台安全地大规模运行。

阅读:《本地主机的最后一年》作者:Johannes Landgraf,Ona联合创始人
虚假的巅峰

个人速度≠组织速度。

你推出了编码代理。工程师们速度更快了。拉取请求大量涌入。

然而,周期时间丝毫未变。DORA指标持平。积压任务不断增加。

因为收益是与个人叠加,而非与组织叠加。如果你在编码代理上投入时间却不解决其周围的系统问题,你只会陷得更深。
这就是虚假的巅峰。

开发者机器上的代理虚假的巅峰步骤01建立后台代理原语步骤02找出系统瓶颈步骤03扩展你的软件工厂
什么是后台代理

答案:在后台运行的代理

编码代理需要你的机器和关注,后台代理两者都不需要。它在云端的独立开发环境中运行:完整的工具链、测试套件、所有组件,完全与你的设备和会话解耦。

从你的笔记本电脑启动,从手机查看结果。可通过PR、Slack线程、Linear工单、webhook触发,或手动启动。

你无需操控它,也无需盯着它。这是一个异步任务:委派、离开、之后查看,它会运行到完成所需的时间。

编码代理后台代理
它们在哪里运行你的笔记本电脑或本地机器云端基础设施,远程触发
它们如何被触发你手动调用它们事件、计划、Slack消息、API调用——任何信号
范围单个仓库中的单个任务跨仓库、跨团队,以及整个SDLC
开发者的角色参与其中——观察、操控、迭代置身事外——提示、离开、查看输出
步骤01

建立后台代理原语

自主代理需要你笔记本电脑上不存在的基础设施。以下这些构建块是区分演示和部署的关键——沙箱执行、治理、与内部系统的连接、触发自动化以及集群协调。每一个构建块都为下一个铺路。

开发环境

代理需要一台计算机

在后台运行的代理需要拥有完整工具链、能够运行测试并通过密钥访问系统的执行环境。

环境应具备隔离性和可重现性,且与生产系统高度一致,以支持代理集群。其他所有构建都基于此。

模式1
模式2
代理拥有开发环境
以沙箱为工具E2B

代理拥有完整的开发环境。一台虚拟机运行开发容器,其中包含你的代码库、测试套件、数据库以及内部网络访问。

这是最接近人类开发者工作方式的模式。所有公开分享其代理架构的企业(包括Stripe和Ramp)都选择了这种模式。

代理在服务器或本地运行。当需要执行代码时,它通过API调用独立的远程沙箱。沙箱运行代码并返回结果。这在一定程度上隔离了密钥和执行过程,但代理只能执行代码,无法进行完整开发。

最适合开发代理产品的公司,而非改进自身工程工作流的组织。

虚拟机开发容器代理代码库测试套件构建系统数据库内部API密钥私有镜像仓库
你的服务器代理密钥状态推理沙箱(容器)执行代码返回结果API
阅读:不要自建沙箱作者:Lou Bichard,Ona公司现场CTO
治理

在运行时强制执行,而非通过提示

代理是你系统中的行为主体。它们需要与人类贡献者相同的管控——身份、权限、审计跟踪。

差异在于:由系统提示(“请不要删除文件”)执行的治理只是一种建议。在执行层实施的治理——拒绝列表、受限凭证、确定性命令阻止——才是实际治理。没有它,安全团队会完全否决自主代理。而他们这么做是对的。

上下文与连接性

防火墙内

无法访问内部系统的沙箱只是个玩具。代理需要承担IAM角色、查询数据库副本、调用内部API,并从私有仓库拉取内容——所有操作都在你的网络内部进行。上下文和连接性将孤立执行转化为实际工作。

触发器

将人类从调用循环中移除

如果每次代理运行都从开发者输入提示开始,那你只是自动化了工作本身,而非工作流。触发器将代理与关键事件连接起来:定时任务、Webhook、系统信号。每种模式对应不同的范围和节奏。

定时代理

按定时器触发。可预测、有边界、高频率——依赖更新、代码检查、覆盖率检查。

⚡︎

事件驱动代理

由系统事件触发——比如PR开启、CVE发布、警报触发。响应式、并发、持续监听。

代理集群

跨多个仓库执行一项任务。每个代理独立工作并产生自己的贡献。

代理群

多个代理,一个结果。每个代理处理不同方面,结果汇聚成单一交付物。

移动端

直接从手机或iMessage触发一个或多个代理。一条短信,一支队伍便会散开。这就是新的TDD——出租车驱动开发(Taxi Driven Development)。

队伍协调

一个意图,覆盖每个仓库

更新一个仓库是编码代理的任务。更新500个则是队伍任务。同一个沙箱会被复制到每个需要变更的仓库中——并行配置、进度跟踪、汇总结果。这正是个人生产力转化为组织吞吐量的关键所在。

步骤02

找出你的系统瓶颈

这些基础方法赋予你能力,而关键在于如何应用它们。这意味着要实际行动:调研开发者,与团队沟通,梳理时间消耗在哪里。每个组织的瓶颈各不相同,值得优先解决的瓶颈往往并不明显。

代码审查堆积速度比以往更快

拉取请求(PRs)会因你频繁切换上下文而搁置数小时。在规模化时,审查队列会积压,尽管编码速度加快,交付周期却依然持平。后台代理会在人类查看前自动审查每个PR,让审查者专注于设计而非格式。

步骤03

扩大你的软件工厂规模

工程组织是一个工业系统。如今,开发者在每个工位上:编写、审查、测试。后台代理改变了运营模式。工厂在运转,但你的工程师们在移动向前在循环中而非深陷其中

计划编码审查测试部署
每个PR在人工查看前会由代理进行审核
持续集成失败会在开发人员被呼叫前得到调查和修复
开发人员绝不会手动解决由代理处理的PR中的合并冲突
代理会对每个生产事件进行初步调查
安全漏洞会在几小时内修复,而非在冲刺周期内
阅读:软件开发工业化作者:克里斯蒂安·魏歇尔,Ona联合创始人
迈向自动驾驶代码库

你的工程师不在流程中。
他们在流程中。

开发流程(工厂车间)正在运转。代码被持续且自主地编写、审查、测试、部署。你的工程师在观察、设定约束、验证结果。

实践中的后台代理

精选网络研讨会
自主代码库的基本要素
为何后台代理无法在本地主机上运行
沙箱执行、治理、上下文与连接性,以及代理集群的编排——这些基础设施要素将编码代理转变为自主代码库。
年2月26日 · 30分钟
注册
使用场景深度解析
网络研讨会
大规模CI迁移
了解后台代理如何自动化跨数百个代码库的CI流水线迁移——无需人工介入。
年3月4日
注册
网络研讨会
CVE漏洞修复
从漏洞披露到部署修复仅需数小时,而非数周。后台代理可修补整个代码库中的漏洞。
年3月11日
注册
网络研讨会
从COBOL到Java的迁移
使用后台代理进行遗留系统现代化——来自大规模自主运行的企业迁移的真实模式
年3月18日
注册

进一步阅读

  1. [1]
    我们为何构建后台代理https://builders.ramp.com/post/why-we-built-our-background-agent
    Ramp
  2. [2]
    Minions:Stripe的一次性端到端编码代理https://stripe.dev/blog/minions-stripes-one-shot-end-to-end-coding-agents
    Stripe
  3. [3]
    Minions:Stripe的一次性端到端编码代理——第二部分https://stripe.dev/blog/minions-stripes-one-shot-end-to-end-coding-agents-part-2
    Stripe
  4. [4]
    脱离间隔时间:软件指挥家的崛起https://ona.com/stories/time-between-disengagements-the-rise-of-the-software-conductor
    Ona
  5. [5]
    软件开发的工业化https://ona.com/stories/industrializing-software-development
    Ona
  6. [6]
    迈向自动驾驶代码库https://cursor.com/blog/long-running-agents
    Cursor
  7. [7]
    扩展我们的长期运行代理研究预览https://cursor.com/blog/self-driving-codebases
    Cursor