
在手工编写代码18年后,我几乎一夜之间停止了这一习惯。去年,人工智能逐渐融入我的日常工作:从寻求代码第二意见,到用自然语言生成正则表达式。随着Claude Code中Opus 4.5模型的应用,直接向AI解释需求比亲手编码更高效。几个月后,我再也无法想象回到过去。
这种转变初看令人不安,但更多带来的是解放感。许多曾计划搁置的改进,如今仅需一个提示词即可启动。
交付量激增,质量护栏依旧
在Filestage,我们将每月合并的PR数量从约200个提升至300个,增幅达50%,且未增加Bug报告。每位开发者每月的AI订阅成本仅为20美元。团队工具选择各异,包括Codex、Claude Code和Cursor。除了吞吐量提升,我们还以更少的时间和更高的信心处理了更复杂的产品变更。
智能代理(Agents)的进化得益于我们对CI护栏的持续投入:涵盖代码规范、类型检查、重复代码检测、100%测试覆盖率及端到端测试。代理的每次更改都会触发即时反馈。鉴于当前模型能力,我认为未经AI代码审查合并代码已属不负责任,甚至未来仅凭AI审查批准即可合并PR,这已不再荒谬。
吞吐量的提升也暴露了CI流程瓶颈。由于端到端测试依赖第三方Webhook,我们触及了Cloudflare免费隧道的限制,导致CI中断;共享开发数据库也面临连接压力。借助基础设施即代码设置和开源FRP隧道,我迅速通过“氛围编码”解决了这些问题。
抽象层依然关键
我赞同DHH关于手工编码终结的观点,但他预测智能代理将转向汇编乃至微代码的看法过于激进。尽管让代理使用底层语言可能获得性能优势,但保留高级抽象层至关重要:
- 准确性要求:生成汇编代码需预测寄存器、偏移量等细节,这些本应由编译器处理,增加了出错风险。
- 上下文保留:高级代码如
users.filter(u => u.active)能以极少Token表达复杂逻辑,而汇编指令会急剧膨胀上下文窗口,增加理解难度。 - 推理辅助:类型、模块和数据结构揭示了意图与约束,降级为汇编将丢失大量语义信息。
既然Clang等工具已能高效将源码转换为机器码,无需让LLM重复这一确定性过程。我的判断是:LLM → 高级表示 → 确定性编译器 → 机器代码。随着代理接管更大系统,高级抽象的价值将愈发凸显。
文本文件之后的未来
长期以来,软件构建方式受限于括号匹配、格式争论及碎片化的代码维护。Bret Victor在《编程的未来》中描述的愿景仍未完全实现。如果智能代理能处理代码,我们是否可以直接操作逻辑、接口和数据模型?UML或实体关系图能否成为与活体系统同步的日常界面?
我期待这样一个环境:深入查看用例逻辑,观察数据流动,并将生产环境上下文(如实际用户路径、请求阻塞点)融入其中。虽然具体形态尚不明确,但多年来第一次,我觉得它触手可及。在敲击键盘18年后,我很兴奋去探索编程的下一步感觉。