Google 工程师谈 DevTools 中 AI 代理的陷阱:从意大利面条代码到 Rust 重构
Google 工程师 Lalit Maganti 花了三个月和大约 250 小时开发 syntaqlite——一套 SQLite 工具套件,包括解析器、格式化器、代码检查器和 LSP 服务器。第一种方法是将一切完全委托给 Claude,导致代码变得无法管理,只能全部推倒重来。改用 Rust 并将 AI 作为自动补全工具,最终发布了可用的 0.1 版本。
第一迭代:委托给 AI 导致代码混乱
Maganti 从最大化自动化开始:Claude 负责设计和实现,而作者仅扮演经理角色。一个月内,他们创建了:
- 用 C 实现的解析器。
- 格式化器。
- Web 界面。
- 500 多个测试。
结果在功能上能工作,但审查时暴露了问题:
- 函数乱七八糟地散布在各个文件中。
- 模块膨胀到数千行代码。
- 从 SQLite 源代码提取代码的管道变得连作者自己都看不懂。
代码库变成了“意大利面条代码”。解决方案:彻底拆除并重新开始。
第二迭代:Rust、手动设计、AI 自动补全
切换技术栈到 Rust 后,Maganti 亲自掌控架构。Claude 只用于根据精确规范生成代码,并进行严格审查。
关键实践:
- 自动化测试:一个驱动程序将每个 SQL 查询与 1390 个上游 SQLite 测试进行对比,验证 syntaqlite 解析器。
- 持续重构:每次更改都经过手动审查。
- 日志记录:日志(约 4000 字)、会话记录、提交历史。
核心部分在二月组装完成,0.1 版本于三月中旬发布。这个酝酿了 8 年的项目,作为副业得以实现。
AI 代理的陷阱:从沉迷到失控
Maganti 将使用 Claude 的过程比作玩老虎机:
- “再来一个提示”拖到深夜。
- 疲劳导致提示质量下降。
- 失去对代码库的“感觉”,变成管理别人代码的经理。
沟通出现断层:模糊描述导致错误解读。AI 在函数/类层面表现出色,但在架构、API 设计和项目上下文方面力不从心。
关键经验教训
- AI 加速实现,但无法取代设计:模型缺乏“品味”和历史积累。
- 完全委托导致代码失控:手动审查必不可少。
- Rust + AI 自动补全胜过 C + 代理:架构至关重要。
- 基于上游测试验证至关重要,针对 SQLite 解析器。
- 日志记录加速迭代:发布日志而非一次性故事。
对中高级开发者的建议
- 将 AI 用于常规任务:自动补全、重构小部分代码。
- 保留对架构的控制:模型无法把握长期上下文。
- 实现自动化管道:与参考测试(SQLite 上游)对比。
- 记录会话:分析提示、提交、错误。
Maganti 的方法表明:AI 能加速副业项目,但需要自律。Syntaqlite 是人类与代理在复杂 DevTools 中平衡的典范。
— Editorial Team
暂无评论。