Stripe「Minions」:一键生成、端到端交付的无人值守编码代理

Stripe 在内部打造了一套名为 Minions 的编码代理:从接到任务到产出可评审的 PR,全程几乎无需人类介入。现在,Stripe 每周有超过 1000 个合并的 PR 是由 Minions 从头到尾生成的(人类负责 Review,但不写代码)。

为什么要自研?

在 Stripe 这种超大规模、强约束的工程环境里,“从零写个原型”和“在成熟巨型代码库里安全改动”完全不是一回事:

• 代码库规模巨大(数亿行),栈也相对小众:大量后端是 Ruby + Sorbet,还有大量 Stripe 自研库,LLM 天然不熟
• 业务风险极高:Stripe 的代码承载着 每年超过 1 万亿美元 的支付规模,并受金融合规与监管约束
• 既要让代理“会写”,也要让它“按规矩写、能跑通、能过 CI”,并与既有研发流程深度结合

工程师怎么用?

最常见的入口是 Slack

• 在讨论线程里 @Slack App 就能发起 Minion,它会读取整个线程与相关链接作为上下文
• 也集成到内部系统里:文档平台、Feature Flag、工单系统等
例如 CI 发现 flaky tests,会生成工单,直接提供按钮让 Minion 去修

完成后,Minion 会:

• 创建分支 → 推送 → 跑 CI → 按模板生成 PR

如果效果不理想,人类可以补充指令让它再改;即使不完美,也常常是很好的“可用起点”。

Minions 背后怎么运作(要点版)

Stripe 的思路是:把“创意生成”交给 LLM,把“必须可靠执行的步骤”交给确定性工具链

• 运行环境:在隔离的 devbox 中执行(10 秒内可启动,预热并预载代码与服务),与生产与公网隔离,便于并行
• Agent 框架:基于 Block 的开源编码代理 goose 的 fork,并做了强定制
• 规则与上下文:读取各类 agent rule 文件,但多为“按目录条件生效”,避免全局死规则拖累
• 工具调用:接入 MCP(函数调用通用协议),并建设内部 MCP 服务 Toolshed,提供 400+ 工具(文档、工单、构建状态、Sourcegraph 搜索等)
• 反馈与质量闸门:
• 首先跑本地启发式 lint/检查(通常 <5 秒)
• 再跑选择性的 CI(Stripe 有 300 万+ 测试),部分失败可自动修复
• 为控制成本与等待时间:最多两轮 CI,强调“能本地提前发现就不要拖到 CI”

接下来

这篇是系列 Part 1,主要讲“怎么用、能做什么”;Part 2 会深入实现细节。整体信号很明确:当“开发者注意力”成为稀缺资源时,无人值守、可并行的编码代理正在改变工程协作方式。

原文链接:https://stripe.dev/blog/minions-stripes-one-shot-end-to-end-coding-agents

#AI工程化 #编码代理 #开发者效率 #CI实践 #Stripe
 
 
Back to Top 1px