Compounding Engineering Pattern

Nikola Balic (@nibzard)· emerging

问题

传统软件工程存在边际收益递减的问题:每新增一个功能特性都会提升系统复杂度,导致后续功能特性的开发难度加大。技术债务不断累积,员工入职适应周期变长,新团队成员难以快速产出成果。

在使用AI编码Agent时,这一问题会被进一步放大——由于经验知识未被系统地捕获与规范化,Agent会反复犯下相同的错误。

方案

转变思路:将所有经验总结固化为可复用的Agent指令,让每个功能都具备可复利迭代的复合价值。

当你完成一个功能后,请记录以下内容:

  1. 计划中有效的举措以及需要调整的部分
  2. 测试阶段发现的、此前未被排查出的问题
  3. Agent犯过的常见错误
  4. 值得复用的模式与最佳实践

随后将这些洞察融入以下载体:

  • Claude MD / 系统提示词(system prompts):全局编码标准
  • 斜杠命令:可重复执行的工作流(例如 /test-with-validation
  • 子Agent:专用验证器(例如安全审查Agent)
  • 钩子(Hooks):防止回归问题的自动化检查

最终效果:每个功能都会让下一个功能的开发更轻松高效,因为代码库会逐渐具备“自我学习”的能力。

graph LR
    A[开发功能] --> B[记录经验总结]
    B --> C[转化为提示词/命令]
    C --> D[下一个功能复用已有知识]
    D --> E[开发更轻松高效]
    E --> A

如何使用

功能开发阶段:

  1. 追踪Agent最初出现错误的点
  2. 记录计划中需要修订的部分
  3. 文档化测试过程中发现的边缘案例
  4. 梳理需要反复解答的问题

功能完成后:

  1. CLAUDE.md中更新新的编码规范或模式
  2. 为需重复执行的工作流创建斜杠命令(slash commands)
  3. 为专项验证任务构建子Agent(subagents)
  4. 添加钩子(hooks)以自动规避常见错误
  5. 编写可固化需求的测试用例

来自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

← 返回社区