7月7日,Simon Willison发了条只有几行字的release公告:sqlite-utils 4.0发布了,详情点链接。这种公告他写了两百多次,大多数时候没人会多看一眼。

但这次值得多看一眼。就在两天前,他自己在博客里写过一句话:这个即将转正的4.0rc2版本,主要由AI编写,花费大约149.25美元。一句轻描淡写的release note,背后是一次相当具体的实验——一个维护了多年的核心开源库,把大版本升级的实际开发工作,交给了AI。

4.0到底更新了什么

功能层面,4.0不算小修小补。三项核心变化:

  • 数据库schema迁移(database schema migrations):终于补上了sqlite-utils长期缺的一块——结构化地管理数据库结构变更,而不是靠手写SQL或推倒重来。
  • 嵌套事务.通过db.atomic()实现,允许事务里再套事务,方便更复杂的写入逻辑做局部回滚。
  • 复合外键.支持多列组合的外键约束,这是不少数据建模场景里绕不开的需求。

这三项加在一起,更像一次面向长期用户的"补课",而不是锦上添花。

4.0关键数字 149.25美元 AI编写4.0rc2的成本 3 核心新特性:schema迁移/嵌套事务/复合外键

升级前先看这几处不兼容

大版本号跳到4,通常意味着breaking changes,这次也不例外。从4.0a1的release notes看,至少有四处会咬到老用户:

  • `db.table(name)不再兼容视图,视图访问要改用db.view(name)`。
  • 生成schema时,标识符的引用方式从方括号改成了双引号。
  • 默认浮点类型从FLOAT改成了REAL
  • 命令行导入CSV/TSV时,默认开启类型检测,而不是像以前那样统一按文本处理。
4.0破坏性变更对照 4.0之前 4.0之后 表/视图访问 db.table()通用 db.view()拆分 标识符引号 方括号[ ] 双引号" " 默认浮点类型 FLOAT REAL CSV/TSV导入 不自动识别类型 默认类型检测

这几处改动都不显眼,但都踩在实际使用的路径上。如果下游代码依赖旧的schema输出格式做字符串匹配,或者拿旧版CSV导入结果直接入库,升级后大概率会出问题。官方发布文章的标题只写了"新增schema迁移",没把"breaking"两个字放进去,这多少有点低估了它对老用户的影响。

  • 提醒.升级前最好先跑一遍现有测试,重点检查视图访问、浮点字段比对和CSV导入这三处。

149.25美元买到了什么

真正有意思的,是这笔账。Willison自己承认,4.0rc2这一版"主要由Claude Fable编写"。Claude Fable具体是什么样的工作流、他怎么把AI接入日常维护流程,公开信息里没有细说——这本身就是个待验证的问题,不宜替他把话说满。

149.25美元这个数字也一样,来源可信,但口径不明。这笔钱算的是纯API调用费,还是包含了他自己审阅代码、跑测试、修bug的时间成本,档案里没有交代。考虑到他是这个项目的原作者,对代码结构极熟,"审阅成本"本身可能被极大压低了——这不是普通开发者能复制的条件。

但即便打了折扣,这件事的分量还在。子曰"工欲善其事,必先利其器",荀子讲得更直接:"君子生非异也,善假于物也"。一个维护了多年的成熟开源库,把大版本的实际编码工作交给AI,还愿意公开成本明细——这比单纯"又发布了一个新版本"更值得记一笔。它说明AI辅助编程已经跨过了"帮着写demo"的阶段,开始真正承担有真实用户、有历史包袱的核心库开发。

代码可以让AI写,但账本和责任,终究得维护者自己签字。

该看什么

对普通用户,这次升级的判断很简单:功能是实打实的加分项,但升级前先过一遍breaking changes清单,别嫌麻烦。

对关注"AI能不能干开源维护活"这件事的人,更该盯着后续:4.0正式版有没有修掉rc阶段暴露的问题、社区对这类"AI主笔"版本的issue反馈是热闹还是冷淡。这些信号,比一次性的成本数字更能说明AI辅助开发到底走到了哪一步。