文章

八年想三个月做成:一个程序员用 AI 辅助开发的真实复盘

八年想三个月做成:一个程序员用 AI 辅助开发的真实复盘

昨天 HN 上一篇文章冲到了 920 分:Eight years of wanting, three months of building with AI。作者 Lalit Maganti 花了八年时间「想做」一套 SQLite 开发工具,结果在 AI 编码工具的辅助下,三个月就做出来了。

这篇文章值得一读的地方在于,它不是那种「AI 帮我一键生成」的吹牛帖,也不是「AI 全是垃圾」的反智文。作者非常系统地复盘了他用 Claude Code 开发 syntaqlite 的全过程 —— 哪里省了力,哪里踩了坑,最后得出了什么结论。

syntaqlite 项目 syntaqlite:基于 SQLite 原生语法的解析器、格式化器和语言服务器

项目背景:一个「又难又无聊」的需求

Lalit 是 Google Perfetto 项目的维护者,Perfetto 有一套基于 SQLite 的查询语言叫 PerfettoSQL。内部有超过 10 万行 PerfettoSQL 代码,用户自然会需要格式化器、linter、编辑器插件这些开发工具。

问题是,现有的 SQLite 工具要么不够准确,要么不够快,要么不够灵活。SQLite 又没有官方语法规范,甚至连 parse tree 都不暴露 —— 想做对,只能啃 SQLite 源码,从 400+ 条语法规则里手动提取。

又难又无聊。这个组合是业余项目的杀手。Lalit 想了八年,一直没动手。

第一阶段:纯 Vibe-Coding(失败)

2025 年末,Lalit 决定试试「最激进的 AI 辅助开发」:用 Claude Code + Max 订阅(每月 200 英镑),把自己定位成「半技术经理」,几乎所有设计和实现都让 AI 来。

一个月后,功能上确实跑通了 —— 解析器写出来了,格式化器能用,Web playground 也有了。

但代码是一坨意面。

作者原话:「我不理解 Python 提取流水线的大部分代码,函数散落在随机文件里,有几个文件膨胀到几千行。」代码极其脆弱,能解决眼前问题,但没法扩展,更没法集成到 Perfetto 工具链里。

唯一的收获:证明了方案可行,以及 AI 生成的 500+ 测试用例可以复用。

第二阶段:人主导 + AI 辅助(成功)

Lalit 把第一版全部扔掉,从零重写,同时把语言换成 Rust。更重要的是,他彻底改变了自己的角色:

  • 所有设计决策自己拿主意,不再让 AI 做架构选择
  • 把 AI 当成「强力自动补全」:给明确的函数签名和行为描述,让 AI 生成
  • 每个改动都认真 review,发现问题立刻修
  • 投资基础设施(lint、自动化测试、校验脚本)来自动检查 AI 输出

这套流程跑下来,两个月完成核心功能,三月中旬发布了 0.1 版本。

几个关键洞察

1. AI 帮你克服启动惯性

Lalit 自认有「面对大项目就拖延」的毛病。AI 的作用是把模糊的「我需要理解 SQLite 解析器如何工作」变成具体的「让 AI 先出个方案,我来挑毛病」。有了具体的原型可以拆解,后面每一步都容易多了。

2. AI 写「显然」的代码比你快

如果一个函数的输入输出都很明确,AI 写得比人快,而且风格更标准、文档更全。对于项目里 80% 的「普通代码」,这是巨大的加速。

但项目的核心复杂度(比如 syntaqlite 的提取流水线和解析器架构),AI 的「标准化」本能反而有害。这部分 Lalit 自己设计,很多甚至自己手写。

3. 大量重构是必须的

作者反复强调:用 AI 生成代码,必须持续重构。第一版失败的核心原因就是「没有足够重构」。在重写版本里,每生成一批代码,他就问自己「这丑不丑?」,然后花同样多的时间去整理。

「如果你不持续重构,事情会立刻失控。这是 vibe-coding 阶段最核心的教训。」

4. 最终产出的质量取决于人

AI 不会主动追求代码的优雅、可扩展性、长期可维护性。它会给你一个「能跑」的东西,但「能跑」和「好」之间的差距,只有人能填上。

我的看法

这篇文章最有价值的地方是诚实。不是「AI 牛逼我一键生成」,也不是「AI 垃圾全是 slop」,而是把整个过程摊开:哪里省了 3 倍时间,哪里踩了坑不得不推倒重来,最后的 best practice 是什么。

我每天用 Claude Opus 4 写代码,体感和 Lalit 的描述高度一致:

  • 架构设计不能交给 AI。让 AI 做架构,结果一定是「能跑但丑」
  • 单元测试让 AI 写是性价比极高的事。测试用例需要覆盖面,AI 擅长这个
  • Review 不能省。AI 写的代码里偶尔会藏着看起来对、实际有 bug 的逻辑
  • 重构要比平时更频繁。因为生成速度快,不重构就会堆成屎山

OfoxAI(ofox.ai)这样的多模型聚合平台让切换成本几乎为零 —— 当你需要比较不同模型在特定任务上的表现时,这种灵活性很有价值。

syntaqlite 这个项目本身也挺有意思。SQLite 是全球部署量最大的数据库引擎,终于有了一套真正靠谱的开发工具链。如果你日常写 SQL,可以去 GitHub 试试。


「AI 让我能够把八年的想法变成三个月的现实。但最终代码的质量,取决于我愿意投入多少精力去塑造它。」

本文由作者按照 CC BY 4.0 进行授权