Wink Pings

让 AI 并行写代码不难,难的是给每个 agent 分到一个干净数据库

Databricks 的 Lakebase 把整个 Postgres 数据库分支做到一秒内完成,copy-on-write,空闲分支不花计算费。每个 coding agent 拿到独立数据库,迁移、测试跑完就删。原生 Postgres 的 CREATE DATABASE TEMPLATE 会全量复制文件,父库有人连着还会失败,这个差距很实在。

coding agent 并行开发这件事,代码层面的答案已经比较清楚了。Git worktree 给每个 agent 一个独立目录和分支,文件不打架。但往下走一层,数据库还是共享的。

每个 agent 都要读 schema、跑迁移、塞种子数据、执行测试。一个开发库或 staging 库同时被三个 agent 用,结果就是迁移互相覆盖、测试数据互相污染,或者干脆退化成 mock,测的东西跟线上不是一回事。

Databricks 推文配图

Databricks 博客作者 Thibaut Gourdel 把这叫被忽略的瓶颈。他们给的方案是 Lakebase 的数据库分支:整个 Postgres 数据库在不到一秒内分出一个完整副本,不管库多大。底层是 copy-on-write,子分支和父分支共享数据页,只有真正产生差异时才占额外存储。空闲分支可以 scale-to-zero,不跑的时候不计计算费。

跟原生 Postgres 比,差距在哪。有网友在评论区指出,普通 Postgres 有 CREATE DATABASE x TEMPLATE parent,但它是把每个文件都复制一遍,而且父库上有任何连接时就会失败。复制慢、会阻塞、不适合给每个 agent 开一份。

Lakebase 的做法在工程上怎么落地,博客给了一条完整链路。

本地并行 agent 用 Git worktree 隔离代码,仓库里加一个 post-checkout hook,新建 worktree 时自动调 Lakebase CLI 建一个数据库分支。agent 在 worktree 里改代码、跑迁移,数据库是它自己的,跟别人没关系。干完活提 PR,worktree 和数据库分支一起回收。

每个 agent 一个分支的配置

PR 阶段换成 GitHub Actions。PR 一开,CI 创建一个以 PR 编号命名的临时 Lakebase 分支,父分支是生产。迁移工具对着这个分支跑 schema 变更,例子里用的是 Drizzle,然后部署一个 preview 应用指向这个分支的连接串,最后生成 schema diff 贴到 PR 评论里,告诉 reviewer 哪张表、哪个列、哪个索引变了。PR 合并或关掉,分支删除。

PR 里的 schema diff 评论

有个细节值得注意:数据库分支不像 Git 分支那样合并回去。父分支和子分支可以各自独立变化,合并数据不现实。schema 变更走代码里的迁移文件,由部署流程负责推进到父分支。换句话说,代码合并,数据库靠迁移重放。

带 Lakebase 分支的开发循环

除了开发和 PR,分支还能干别的。从生产库某个时间点拉一个分支出来复现 bug,在真实数据上调试,修完就删。上线前建分支跑一遍迁移和测试,确认没问题再推生产。需要真实数据又不想碰敏感信息,可以结合 Unity Catalog 做脱敏。

并行 Claude 会话加 Lakebase 分支

这东西解决的不是新问题,是老问题被 agent 放大了。以前三五个开发者共用一个开发库,冲突靠自觉和约定。现在 agent 并行跑,速度快、数量多,人为协调跟不上。数据库分支把隔离做成默认选项,每个 agent 一份,用完即弃。

Databricks 的原文和示例仓库在下面,GitHub Actions 的配置可以直接抄。

原文:https://www.databricks.com/blog/lakebase-and-agentic-sdlc-branching-databases-coding-agents

示例仓库:https://github.com/databricks/tmm/tree/main/Lakebase-Agentic-CI

发布时间: 2026-10-30 00:32