Compounding Engineering Pattern
Nikola Balic (@nibzard)· emerging
问题
传统软件工程存在边际收益递减的问题:每新增一个功能特性都会提升系统复杂度,导致后续功能特性的开发难度加大。技术债务不断累积,员工入职适应周期变长,新团队成员难以快速产出成果。
在使用AI编码Agent时,这一问题会被进一步放大——由于经验知识未被系统地捕获与规范化,Agent会反复犯下相同的错误。
方案
转变思路:将所有经验总结固化为可复用的Agent指令,让每个功能都具备可复利迭代的复合价值。
当你完成一个功能后,请记录以下内容:
- 计划中有效的举措以及需要调整的部分
- 测试阶段发现的、此前未被排查出的问题
- Agent犯过的常见错误
- 值得复用的模式与最佳实践
随后将这些洞察融入以下载体:
- Claude MD / 系统提示词(system prompts):全局编码标准
- 斜杠命令:可重复执行的工作流(例如
/test-with-validation) - 子Agent:专用验证器(例如安全审查Agent)
- 钩子(Hooks):防止回归问题的自动化检查
最终效果:每个功能都会让下一个功能的开发更轻松高效,因为代码库会逐渐具备“自我学习”的能力。
graph LR
A[开发功能] --> B[记录经验总结]
B --> C[转化为提示词/命令]
C --> D[下一个功能复用已有知识]
D --> E[开发更轻松高效]
E --> A
如何使用
功能开发阶段:
- 追踪Agent最初出现错误的点
- 记录计划中需要修订的部分
- 文档化测试过程中发现的边缘案例
- 梳理需要反复解答的问题
功能完成后:
- 在
CLAUDE.md中更新新的编码规范或模式 - 为需重复执行的工作流创建斜杠命令(slash commands)
- 为专项验证任务构建子Agent(subagents)
- 添加钩子(hooks)以自动规避常见错误
- 编写可固化需求的测试用例
来自Every的示例:
“我们有一种名为‘复利式工程’的开发范式,核心目标是让下一个功能的开发更顺畅……我们会把所有实践积累的经验教训都固化下来。测试初期我们发现了哪些问题?遗漏了哪些内容?随后我们会将这些经验整合到所有prompt、子Agent和斜杠命令中。”
这种模式能让非专业人员快速进入高效工作状态:
“哪怕我完全不懂代码的运行逻辑,也能直接切入某一代码库开展工作,因为我们有这套累积构建的记忆系统。”
权衡
优点:
- 提升生产效率:每个功能都切实让后续操作更高效
- 知识留存:经验成果不再依赖个人记忆
- 优化入职体验:新团队成员(人类或AI)可复用积累的知识
- 减少重复失误:Agent不再犯相同的错误
- 动态文档:由于日常被使用,指令始终保持时效性
缺点:
- 前期时间投入:需要在每个功能完成后坚持记录,需具备自律性
- 维护成本:随着模式变化,prompt和指令需要持续更新
- 过度规范风险:过多规则会导致Agent灵活性下降
- 工具依赖:需要可扩展的Agent系统(如斜杠命令、钩子等)
- Prompt膨胀:系统prompt会随时间推移逐渐变得臃肿庞大
参考文献
关键词:
重点阐释复合式工程与常规工程的核心差异(前者通过已实现功能降低后续开发难度),同时介绍将工程全流程经验固化到AI工具(含提示词、子代理、斜杠命令)的实践策略,内容源自《AI & I》播客中关于Claude Code的专业分享。
- 丹·希珀:“在常规工程中,你每新增一个功能,都会让下一个功能的开发变得更困难。而在复合式工程中,你的目标是让刚完成的功能能让下一个功能的开发变得更轻松。”
\n\n
- 丹·希珀:“我们将所有经验教训进行固化梳理……比如我们如何制定计划、哪些部分需要调整、测试启动后发现了哪些问题、我们遗漏了哪些内容,随后把这些经验固化到所有提示词、所有子代理以及所有斜杠命令当中。”
\n\n
- 《AI & I 播客:如何像开发者一样使用Claude Code》 https://every.to/podcast/transcript-how-to-use-claude-code-like-the-people-who-built-it
来源摘要
正在获取来源并生成中文摘要…
来源: https://every.to/podcast/transcript-how-to-use-claude-code-like-the-people-who-built-it