核心观点

内容精讲

作者使用AI Agent(Claude Code、Cursor)构建了一个约15万行代码的复杂应用(Rust 12万行,其余TypeScript和Terraform),全程未人工审查代码。在开发中发现数据访问层单个文件膨胀到17,155行,充满重复代码:每次查询都重复HTTP请求设置和JSON编解码。这成为重构实验的契机。

实验设计严格:制定重构计划,定义一个代表性修改任务(如添加新查询),在每次重构步骤后让全新Agent执行同一任务并记录Token消耗。由于Agent不会从之前步骤学习,结果不受经验干扰。

共执行15步重构,包括提取FirestoreClient、抽取辅助函数、拆分查询模块、分离trait、创建codec、拆分fake_store等。每一步后记录数据访问层总行数、最大文件行数、输入/输出Token数、耗时。表格数据如下(基线到最终):输入Token从159,564降至27,360,最大文件从17,155行降至3,695行,数据访问层总行数基本稳定在16,500左右。

关键发现:输入Token在重构前期持平,直到最大文件开始缩小后才急剧下降,最终降幅83%。输出Token基本不变,说明重构并未简化修改本身,而是减少了Agent需要阅读的代码量。

降本机制:节省并非因为总代码减少,而是Agent能成功识别并只读取最小必要文件子集。观察Claude Code的思考输出和文件读取摘要,证实Agent每次读取的代码段越来越小。

策略性重构 vs 随机拆分:单纯将大文件随机切分可能适得其反,因为Agent需要翻阅多个文件。有效的方法是先进行局部重构提取重复逻辑,形成内部抽象层,再按职责拆分。最大降幅出现在最后一步,但前期步骤为这一跃迁奠定了基础。

经济性分析:按Sonnet 5定价$3/MTok,单次修改节省39.7美分。但考虑到调试、复杂功能开发中多次修改,以及可推广到整个代码库,累积节省可观。同时提出开放问题:重构整个代码库需要多少成本?收益能否倍增?

结论与局限:实验证实重构能有效降低AI Agent编程的Token消耗。但当前Claude的Token计数方法不可靠(作者用字符数/4近似),且实验仅针对单一数据访问层。未来需要更精确的计量工具和更大范围验证。

阅读价值

适合使用AI Agent进行软件开发的工程师和技术管理者。读完将获得量化证据,理解重构在Agent编程中的经济价值,以及如何策略性地重构代码库以降低AI使用成本。

阅读原文 → 返回 AI 技术文档

内容与图片版权归原作者所有 · 原文: https://martinfowler.com/articles/exploring-gen-ai/refactoring-economic-benefit.html