前几天看到 Vercel 官方博客发了一篇文章,讲他们团队把 Turborepo 的任务图计算速度提升了 96%。整个过程很有意思,不是堆人肉优化,而是 AI Agent、沙箱环境和人工审核结合的产物。翻译过来分享给大家。
## 背景:任务图计算的痛点
每次运行 `turbo run`,Turborepo 首先要分析你的仓库结构、脚本和依赖关系,构建任务图。这个过程是纯开销,仓库越大成本越高。在 Vercel 内部那个 1000+ 包的 Monorepo 上,M4 Pro Max 上要花大约 10 秒。这显然不可接受。
## 第一阶段:无监督 Agent 能做到什么?
作者在睡觉前随手起了 8 个后台编码 Agent(通过 Vercel Sandboxes),每个分配不同的 Rust 代码区域,提示词大概是:
> 找性能优化点,必须是有完善测试的核心路径,加上基准测试。特别关注哈希相关代码。
第二天早上,8 个里有 3 个交出了可合并的成果:
– 用引用哈希代替克隆整个 HashMap,减少了约 25% 的墙钟时间
– 把 `twox-hash` 替换成 `xxhash-rust`,提升约 6%
– 还顺便修了一个 Floyd-Warshall 算法的 TODO(虽然这个不在 `turbo run` 的核心路径上)
**但 Agent 的问题也很明显:**
– 从来不会想到直接在 Turborepo 自己的代码库上跑基准测试(明明可以 dogfooding)
– 容易钻牛角尖,强行让第一个想法work,而不是跳出来抽象思考
– 会追求微基准测试的漂亮数字(比如 97% 提升),但实际对生产无效
– 从不写回归测试
– 从不使用 `turbo` CLI 的 `–profile` 调试标志
所以靠 Agent 单独跑是不可行的,需要人工介入。
## 第二阶段:Markdown Profile + 迭代循环
作者做的第一件事其实很无聊:跑 profile。用 `turbo run build –profile` 然后在 Perfetto 里看火焰图。
**但问题来了:** Chrome Trace 的 JSON 格式对 Agent 不友好——函数名断行、噪音数据混在一起、grep 不友好。Agent 读这种东西和你一样费劲。
于是作者受 Jarred Sumner 的一条推特启发,给 Turborepo 新增了一个 `turborepo-profile-md` crate,输出 Markdown 格式的 Profile:
“`markdown
# CPU Profile
| Duration | Spans | Functions |
| 21.6s | 871 | 97 |
**Top 10:** `visit_recv_wait` 69.8%, `put` 30.6%, `build_http_client` 0.6%…
## Hot Functions (Self Time)
| Self% | Self | Total% | Total | Function | Location |
| 69.8% | 15.1s | 69.8% | 15.1s | `visit_recv_wait` | `visitor/mod.rs:358` |
“`
改成这个格式之后,同样的模型、同样的代码库,Agent 提出的优化建议质量**大幅提升**。
接下来的迭代循环很标准:
1. 让 Agent 在 Plan Mode 下分析 Markdown Profile 找热点
2. 人工审核优化建议,决定做哪些
3. Agent 实现
4. 用 `hyperfine` 做端到端基准验证
5. 提 PR
6. 重复
这个循环在四天内产生了 20+ 个性能 PR,主要在三个方向:
**并行化**(最大头):Git 索引构建、glob 文件遍历、lockfile 解析、package.json 加载全部改成并发。
**减少内存分配**:引用式哈希、预编译 glob 排除过滤器、复用 HTTP 客户端。
**减少系统调用**:批量 git 子进程调用、用 `libgit2` 替换 git 子进程,再换成更快的 `gix-index`。
## 总结
这篇的核心收获不是某个具体优化技巧,而是**工作流设计**:
– 无监督 Agent 能找到一些 easy wins,但不够可靠
– 把数据格式改成 Agent 友好型(Markdown Profile),能大幅提升 Agent 产出质量
– 最终还是要人来把关:审核提案、跑端到端基准、决定是否合并
工程实践没有银弹,但好的工具组合确实能让效率提升一个量级。
—
*原文:https://vercel.com/blog/making-turborepo-ninety-six-percent-faster-with-agents-sandboxes-and-humans*




























暂无评论内容