ARTICLE · 人工智能
持续重写 Spotify 的全部代码库
一语总结Spotify 的 Honk 智能体将 LLM 生成的代码改动与自动化验证相结合,实现大规模代码迁移的自动化,将 1,000 个合并 PR 的耗时从 3 个月缩短到 10 天,同时也让 PR 审查成为新的瓶颈。
在 Spotify,平台团队负责横跨数千个仓库的大规模迁移。脚本化的代码库群管理将内部框架的采用时间从一年缩短到不到一周,但长尾部分在边缘情况下出现问题。Honk 用 LLM 循环取代脆弱的脚本:生成代码改动、通过构建/测试进行验证、汇总失败原因,然后不断迭代。一个统一的验证工具将任务分发到 Maven、Yarn、Bazel 和自定义检查,并由 LLM 汇总构建错误。随着模型能力的提升,早期使用的“LLM 作为裁判”护栏最终被移除。在全量代码库群推广时发现,基础设施差异会阻塞测试,因此团队将智能体运行时与验证运行时分离,并复用现有 CI。Hack Week 期间的 Slack 集成表明,开发者希望从规划工作的地方直接发起 prompt-to-PR,并能够访问日志、仪表盘和工单。结果从 3 个月合并 1,000 个 PR 变为 10 天合并 1,000 个,瓶颈也随之转移到 PR 审查以及自动化留给人类的判断任务上。
- Spotify 用基于 LLM 的智能体取代了脆弱的 codemod 脚本,以处理迁移中的边缘情况。
代码库群管理将内部框架的采用时间从一年缩短到不到一周,但最后 30% 遇到了脚本无法处理的边缘情况。
- Honk 的核心循环是:生成、验证、汇总失败并迭代,全程通过统一的验证工具完成。
一个统一的验证工具将任务分发到 Maven、Yarn、Bazel 和自定义脚本;LLM 汇总构建失败原因,使智能体可以不断迭代,直到构建通过。
- 将智能体运行时与验证运行时分离,使迁移可以复用现有 CI。
云端 Pod 缺少笔记本电脑的权限、Docker 和 iOS 构建环境;通过推送分支并让验证服务驱动 CI,避免了重新搭建平台。
- Slack 集成揭示了对直接从工作规划界面发起 prompt-to-PR 的需求。
上下文分散在 Slack、Jira、仪表盘和日志中,因此智能体需要能够通过 API 访问这些来源,而不是仅限于迁移工作流。
- 更快的 AI 迁移如今让人工 PR 审查成为主要瓶颈。
合并从 3 个月 1,000 个 PR 变为 10 天 1,000 个;Bainbridge 的《自动化的讽刺》提醒我们,人类始终承担着最困难的判断任务。
持续重写 Spotify 的全部代码库
在 Spotify,平台团队负责横跨数千个仓库的大规模迁移。脚本化的代码库群管理将内部框架的采用时间从一年缩短到不到一周,但长尾部分在边缘情况下出现问题。Honk 用 LLM 循环取代脆弱的脚本:生成代码改动、通过构建/测试进行验证、汇总失败原因,然后不断迭代。一个统一的验证工具将任务分发到 Maven、Yarn、Bazel 和自定义检查,并由 LLM 汇总构建错误。随着模型能力的提升,早期使用的“LLM 作为裁判”护栏最终被移除。在全量代码库群推广时发现,基础设施差异会阻塞测试,因此团队将智能体运行时与验证运行时分离,并复用现有 CI。Hack Week 期间的 Slack 集成表明,开发者希望从规划工作的地方直接发起 prompt-to-PR,并能够访问日志、仪表盘和工单。结果从 3 个月合并 1,000 个 PR 变为 10 天合并 1,000 个,瓶颈也随之转移到 PR 审查以及自动化留给人类的判断任务上。
文章金句
"我们能自动验证的正确性维度越多,代码就会越正确。
"人们不想为了采取行动而离开规划工作的界面。
"当我们自动化流程时,往往会把最困难的任务留给自己。
"我们开始思考:如果用 LLM 替换我们的脚本会怎样?
"代码和测试非常适合评估正确性。