八年后,它终于出现了。
不是八年磨一剑,是八年想动手,但一直不敢。
一个Google工程师,想做SQLite开发工具,整整想了八年。
然后今年,他用AI花了三个月,搞定了。
但就在上线前,他亲手把代码全删了,重写了一遍。
这可能是目前关于AI编程最真实的一篇记录。
八年不敢动手的痛
故事主角叫Lalit,在Google Perfetto团队工作。PerfettoSQL——一个基于SQLite的查询语言——是他们团队的核心工具。
但他发现,整个行业对SQLite开发者体验的投入,几乎是零。
“SQLite明明这么重要,为什么没人做一个好用的开发工具?”
他试过把开源的SQLite工具借过来用。结果呢?不是不够可靠,就是不够快,要么就是根本没法适配PerfettoSQL的扩展。
从零做一个?念头动过无数次,但每次都被同一个理由劝退:
这项目太难了,而且太琐碎了。
难在哪?SQLite没有正式的语法规范,没有稳定的解析器API。整个解析器的核心代码是C写的,将近400条语法规则,每条规则都要精确对应解析树里的一个节点。
“这工作太重复、太枯燥。理解SQLite源码就花了我好几天,一个虚拟表API就把我搞崩了。”
一个业余时间想做的副项目,难度直接劝退。
三个月,AI帮我动手了
转折发生在2025年底。
他决定测试一下AI的极限:能不能完全“凭感觉”编程(vibe-code),把这个工具做出来?
用AI(Claude Code),用最大套餐,每晚和周末肝。
一月份,他几乎当起了“半吊子技术经理”,把设计和实现全丢给AI。解析器、格式化器、Web Playground……功能一个一个蹦出来。
二月底,核心功能基本跑通了。
他很兴奋。AI帮他跨过了最大的心理障碍——启动那一步。
“以前我总是'我得先搞懂SQLite怎么解析',现在变成了'我先让AI给我整一个出来看看'。只要有东西能玩,我就能往下走。”
但很快,代价来了。
第一个月:代码爽了,人崩了
一月底,他仔细看了一下AI写的代码。
完全是一坨 spaghetti。
- Python提取脚本,他自己看不懂
- 函数散落在各种文件里,毫无结构
- 几个文件直接干到几千行
“能跑,能解决眼前的问题。但要扩展?要整合到Perfetto里?门都没有。”
他做了一个决定:
删掉,全部重写。
这次他换成了Rust。并且改了玩法——
- 自己掌控所有设计决策
- AI只当“强化版自动补全”
- 每个改动都严格review
- 随时重构,不惯着
二月份,新版本的功能开始真正收敛。三月中旬,0.1版本上线。
但整个过程中,他发现了一些比代码更难处理的东西。
AI的另一面:爽是真的爽,痛也是真的痛
先说AI帮他省了多少事。
克服惯性。 想做八年的事,AI让他终于动起来了。不用先在脑子里想清楚所有设计,直接让AI生成一个能跑的原型,完了再改。
写代码确实快。 只要需求能拆清楚,AI写得比他快,风格还更标准。文档、注释、代码布局,都给你整得明明白白。
Research神器。 他之前完全不懂Wadler-Lindig这种格式化理论,AI给他讲了一遍,又快又准。一个小时就整出了原本要花一两天学的VS Code插件。
“AI把'我不知道该学什么'的问题,直接变成了'我该问什么'。”
但代价呢?
上瘾。 这东西太像老虎机了。发一个prompt,等几秒,要么出好东西,要么出垃圾。深夜两点还在想“再来一个prompt万一成了呢”。
“累的时候prompt写得模糊,输出更烂,然后继续试,形成恶性循环。明明自己写可能更快,但就是停不下来。”
失去手感。 好几次,他对代码的整体架构还有感觉,但具体细节全忘了。哪个函数调哪个,哪个变量在哪定义——完全失联。
“这时候跟AI沟通也崩了。你说'改一下那个做Bar的东西',AI得先猜你在说哪个FooClass。”
设计拖延。 因为AI重构太方便,他总想“回头再改”。结果设计决策一拖再拖,代码库一直保持在“我看不懂”的状态。
“vibe-coding那一个月,我理解了问题,但如果一开始就在关键设计上更果断,本来可以更快找到对的架构。”
真正的问题:AI不会“设计”
他后来总结了一个关键洞察:
AI擅长“局部正确”,但不擅长“全局好看”。
一个函数、一个类,通常有标准答案,AI做得很好。但架构——所有局部拼在一起形成的样子——AI根本把握不了。
“代码就像物理。在局部看牛顿定律很简单,但放大到整个时空,曲线就出来了。AI能做好每个函数,但它拼不出好架构。”
最典型的例子:公共API设计。
他花了整整几天手动改API,就因为AI设计的那套“完全没法用”。没有测试能验证“好不好用”,没有客观指标——这恰恰是AI最弱的地方。
“这就是为什么我最后删掉重写。AI可以帮你实现,但设计得你自己来。”
三个月vs八年
现在syntaqlite上线了。
一个完整的SQLite开发工具:解析器、格式化器、VS Code插件、Python bindings、Web Playground、文档站点。
如果没AI,可能再等八年也不会动手。
但如果没有这次“删掉重写”,可能现在他手里只有一坨跑不起来的代码。
“AI是极强的实现力放大器,但它不能代替设计。它能回答具体的技術问题,但它没有历史感,没有品味,不知道一个API用起来到底爽不爽。”
结尾
这篇文章最值钱的不是“AI真牛”的 hype,而是一个真正干过活的人告诉你:
AI可以帮你启动,帮你加速,但别让它帮你做决定。
想清楚再动手,永远比改代码更重要。
【锐评】:这才是AI编程的真实样子——不是一键生成完美项目,而是帮你跨过心理障碍,再亲手推翻自己一遍。AI是放大器,你是什么人,它就放大什么。
参考链接:
https://lalitm.com/post/building-syntaqlite-ai/