
Compound Engineering:让每次开发都比上一次更容易
"
前言:当开发遇上"复利效应"
想象这样一个场景:
你的团队正在开发一个新功能。按照传统方式:
- 第一次实现:花了 3 天
- 第二次类似功能:花了 2.5 天(因为有经验)
- 第三次类似功能:花了 2 天(更熟练了)
- ...
- 第十次类似功能:还是花了 2 天(遇到新问题)
这看起来像是"熟能生巧",但实际上,你的效率并没有真正提升,因为你每次都在重复解决类似的问题。
现在,想象另一种方式:
Compound Engineering(复合工程)
- 第一次实现:花了 3 天,但记录了所有经验和模式
- 第二次类似功能:花了 1 天(复用了文档化的经验)
- 第三次类似功能:花了 0.5 天(模式已经固化)
- ...
- 第十次类似功能:花了 0.2 天(几乎自动化)
这就是复利效应在软件开发中的应用。
今天,我们就来探索这个野心勃勃的开源项目:Compound Engineering。
一、Compound Engineering 是什么?
1.1 核心定位
Compound Engineering 是一个官方的复合工程插件,支持 Claude Code、Codex、Cursor 等多个 AI 编程工具。
核心特点:
- ✅ 跨平台支持:Claude Code、Codex、Cursor、Kimi、Grok、Devin 等
- ✅ 开源免费:完全开源,MIT 许可证
- ✅ AI 驱动:利用 AI 技能自动化工程流程
- ✅ 复利导向:每次工作都比上次更容易
设计目标:
"Each unit of engineering work should make subsequent units easier -- not harder." "每个工程单元都应该让后续单元更容易——而不是更难。"
1.2 为什么是"Compound"?
命名由来:
- "Compound" 来自"Compound Interest"(复利)
- 暗示这个方法像复利一样,让知识和经验不断积累和增值
- 每次工作都为下一次工作打下更好的基础
寓意:
- 不是简单的"经验积累"
- 而是"知识的复利增长"
- 让每次开发都产生可复用的资产
二、核心理念:从技术债务到知识复利
2.1 传统开发的问题
技术债务的累积:
第 1 次开发:
新功能 → 代码 + 经验(未记录)
第 2 次开发:
类似功能 → 代码 + 更多经验(未记录)
问题:上次的经验在哪里?
第 3 次开发:
又是类似功能 → 代码 + 更多经验(未记录)
问题:又要重新学习
第 N 次开发:
还是类似功能 → 代码 + 更多经验(未记录)
问题:为什么还在重复?技术债务的后果:
- 每个功能都增加复杂性
- 每个 bug 修复都留下更多本地知识
- 代码库越来越大
- 上下文越来越难保持
- 下次变更变得更慢
2.2 Compound Engineering 的反转
知识复利的增长:
第 1 次开发:
需求 → 规划 → 执行 → 评审 → 文档化
产出:代码 + 文档 + 模式
第 2 次开发:
类似需求 → 规划(参考文档)→ 执行(复用模式)→ 评审 → 更新文档
产出:更好的代码 + 更完善的文档 + 更固化的模式
第 3 次开发:
又是类似需求 → 快速规划(文档完善)→ 快速执行(模式固化)→ 评审 → 维护文档
产出:高质量的代码 + 完善的文档 + 固化的模式
第 N 次开发:
任何需求 → 自动化规划 → 自动化执行 → 自动化评审 → 自动化文档
产出:完美交付知识复利的优势:
- 每个功能都增加可复用资产
- 每次评审都沉淀新模式
- 文档库越来越完善
- 模式越来越固化
- 下次变更变得更快
2.3 80/20 法则
Compound Engineering 的分配:
80% 规划和评审:
- 需求澄清
- 方案设计
- 代码评审
- 知识沉淀
20% 执行:
- 代码实现
- 测试验证
- 部署上线传统开发的分配:
20% 规划和评审:
- 需求澄清(匆忙)
- 方案设计(简单)
- 代码评审(形式)
- 知识沉淀(缺失)
80% 执行:
- 代码实现(大量返工)
- 测试验证(频繁调试)
- 部署上线(紧急修复)价值对比:
- Compound Engineering:前期投入大,后期效率高
- 传统开发:前期投入小,后期效率低
三、核心工作流:六步循环
3.1 工作流概览

核心循环:
- ce-brainstorm:头脑风暴需求
- ce-plan:规划实现
- ce-work:执行计划
- ce-simplify-code:简化代码
- ce-code-review:代码评审
- ce-compound:复合学习
3.2 Step 1:ce-brainstorm(头脑风暴)
目的:
通过交互式 Q&A 深入思考功能或问题,在规划之前编写仅包含需求的统一计划。
关键活动:
- ✅ 识别核心需求
- ✅ 澄清模糊点
- ✅ 识别潜在风险
- ✅ 定义成功标准
- ✅ 编写需求文档
输出物:
- 需求文档(requirements-only plan)
- 风险清单
- 成功标准
示例:
## 需求:用户登录功能
### 核心需求
- 支持邮箱/密码登录
- 支持第三方登录(Google、GitHub)
- 支持记住登录状态
### 模糊点
- 是否支持多设备登录?
- 登录失败如何处理?
- 第三方登录失败如何回退?
### 潜在风险
- 安全性:密码存储、Token 管理
- 性能:第三方登录超时
- 兼容性:不同浏览器行为
### 成功标准
- 用户能在 30 秒内完成登录
- 登录成功率 > 99%
- 支持 Chrome、Firefox、Safari3.3 Step 2:ce-plan(规划实现)
目的:
将功能想法或仅需求计划丰富为实现就绪的计划。
关键活动:
- ✅ 分析需求文档
- ✅ 设计技术方案
- ✅ 分解任务
- ✅ 定义接口
- ✅ 规划测试
输出物:
- 技术方案文档
- 任务分解清单(WBS)
- 接口定义
- 测试计划
示例:
## 技术方案:用户登录功能
### 架构设计┌─────────┐ │ 前端 │ React + TypeScript └────┬────┘ │ HTTP/HTTPS ┌────↓────┐ │ 后端 │ Node.js + Express └────┬────┘ │ ┌────↓────┐ │ 数据库 │ PostgreSQL └─────────┘
### 任务分解
1. 数据库设计
- users 表
- sessions 表
- oauth_accounts 表
2. 后端 API
- POST /api/auth/login
- POST /api/auth/oauth
- GET /api/auth/session
3. 前端页面
- 登录表单
- 第三方登录按钮
- 记住登录状态
### 接口定义
POST /api/auth/login
Request: { email, password }
Response: { token, user }
Error: { code, message }3.4 Step 3:ce-work(执行计划)
目的:
本地执行或通过合格的跨模型作者执行实现就绪的计划,同时保留主机验证、提交和发布。
关键活动:
- ✅ 按照计划实现代码
- ✅ 编写单元测试
- ✅ 进行本地验证
- ✅ 提交代码
- ✅ 准备发布
输出物:
- 实现代码
- 单元测试
- 提交记录
特性:
- ✅ 支持本地执行
- ✅ 支持跨模型执行(如使用更强的模型)
- ✅ 保留验证和提交流程
3.5 Step 4:ce-simplify-code(简化代码)
目的:
在评审之前优化刚编写的代码以提高清晰度和可重用性。
关键活动:
- ✅ 代码审查
- ✅ 重构优化
- ✅ 提取可复用逻辑
- ✅ 添加注释和文档
- ✅ 统一代码风格
输出物:
- 优化后的代码
- 重构记录
- 可复用组件
示例:
// 优化前
function login(email, password) {
if (!email || !password) {
throw new Error('Email and password required');
}
const user = db.findUserByEmail(email);
if (!user) {
throw new Error('User not found');
}
if (user.password !== hash(password)) {
throw new Error('Invalid password');
}
return generateToken(user);
}
// 优化后
class AuthService {
async login(credentials: LoginCredentials): Promise<AuthResult> {
this.validateCredentials(credentials);
const user = await this.findUser(credentials.email);
this.verifyPassword(user, credentials.password);
return this.generateAuthResult(user);
}
private validateCredentials(credentials: LoginCredentials): void {
if (!this.isValidEmail(credentials.email)) {
throw new AuthError(AuthErrorType.INVALID_EMAIL);
}
if (!this.isValidPassword(credentials.password)) {
throw new AuthError(AuthErrorType.INVALID_PASSWORD);
}
}
// ... 其他方法
}3.6 Step 5:ce-code-review(代码评审)
目的:
在合并之前进行仅报告的多智能体评审;本地应用是显式的。
关键活动:
- ✅ 对照计划评审代码
- ✅ 检查代码质量
- ✅ 识别潜在问题
- ✅ 提出改进建议
- ✅ 生成评审报告
输出物:
- 评审报告
- 问题清单
- 改进建议
评审维度:
- ✅ 功能完整性:是否实现了所有需求
- ✅ 代码质量:是否清晰、可维护
- ✅ 性能:是否满足性能要求
- ✅ 安全性:是否有安全漏洞
- ✅ 测试覆盖:是否有充分的测试
3.7 Step 6:ce-compound(复合学习)
目的:
将学习成果捕获到 docs/solutions/ 中,以便下一个循环以更好的上下文开始。
关键活动:
- ✅ 总结本次经验
- ✅ 提取可复用模式
- ✅ 编写解决方案文档
- ✅ 更新知识库
- ✅ 固化最佳实践
输出物:
- 解决方案文档(docs/solutions/)
- 模式库
- 最佳实践
示例:
# docs/solutions/user-authentication.md
## 问题
如何实现安全的用户认证功能?
## 方案
### 架构
- 使用 JWT Token
- 密码使用 bcrypt 哈希
- 支持第三方 OAuth
### 实现要点
1. **密码安全**
- 使用 bcrypt 哈希(salt rounds: 10)
- 密码强度验证(至少 8 位,包含字母和数字)
2. **Token 管理**
- JWT 有效期:24 小时
- Refresh Token 有效期:30 天
- Token 存储在 HttpOnly Cookie
3. **第三方登录**
- 使用 OAuth 2.0
- 支持 Google、GitHub
- 失败回退到邮箱登录
### 可复用组件
- `AuthService`:认证服务
- `AuthMiddleware`:认证中间件
- `AuthController`:认证控制器
### 测试要点
- 测试正常登录流程
- 测试密码错误场景
- 测试第三方登录失败
- 测试 Token 过期
## 经验教训
1. ✅ **提前设计**:在实现前设计完整的认证流程
2. ✅ **安全优先**:密码和 Token 的安全性至关重要
3. ✅ **用户体验**:第三方登录失败时要有清晰的提示
## 相关模式
- Authentication Pattern(认证模式)
- Token Management Pattern(Token 管理模式)
- OAuth Integration Pattern(OAuth 集成模式)四、复利效应:如何让每次开发都更容易
4.1 知识的复利增长
第一次开发:
- 时间:3 天
- 产出:代码 + 零散经验
- 问题:经验未记录,下次还要重新学习
第二次开发(使用 Compound Engineering):
- 时间:2 天
- 产出:代码 + 解决方案文档
- 改进:记录了经验,下次可以复用
第三次开发(复用文档):
- 时间:1 天
- 产出:代码 + 更完善的解决方案文档
- 改进:复用了文档,更新了经验
第 N 次开发(模式固化):
- 时间:0.5 天
- 产出:代码 + 固化的模式
- 改进:模式已经固化,几乎自动化
4.2 模式的固化
从文档到模式:
第 1 次:
docs/solutions/user-authentication.md
(问题描述 + 解决方案 + 经验教训)
第 2-3 次:
参考文档,优化实现
更新文档,补充细节
第 4-5 次:
提取可复用组件
形成代码模板
第 6+ 次:
模式固化
一键生成模式库的价值:
- ✅ 减少重复思考
- ✅ 提高代码质量
- ✅ 加速开发速度
- ✅ 降低错误率
4.3 团队的知识复利
个人复利:
- 开发者 A 记录经验
- 开发者 A 下次复用
团队复利:
- 开发者 A 记录经验
- 开发者 B 复用经验
- 开发者 C 优化经验
- 整个团队受益
跨团队复利:
- 团队 A 记录经验
- 团队 B 复用经验
- 团队 C 优化经验
- 整个组织受益
五、安装与使用
5.1 支持的平台
官方支持:
- ✅ Claude Code
- ✅ Cursor
- ✅ Codex App
- ✅ Codex CLI
其他支持:
- ✅ Kimi Code CLI
- ✅ Cline
- ✅ Grok Build CLI
- ✅ Devin CLI
- ✅ GitHub Copilot
- ✅ Factory Droid
- ✅ Qwen Code
- ✅ OpenCode
- ✅ Pi
- ✅ Antigravity CLI
5.2 Claude Code 安装
步骤:
# 添加市场
/plugin marketplace add EveryInc/compound-engineering-plugin
# 安装插件
/plugin install compound-engineering注意:
- 如果已经安装了旧版本,需要先刷新市场
- 运行
/plugin update不会更新到新版本 - 必须先刷新市场,再安装
5.3 Cursor 安装
步骤:
# 在 Cursor Agent chat 中
/add-plugin compound-engineering
# 或在插件市场搜索
# 搜索 "compound engineering"5.4 Codex App 安装
步骤:
- 打开 Codex app,从侧边栏打开 Plugins
- 点击 Add / Add plugin marketplace
- 输入:
- Source:
EveryInc/compound-engineering-plugin - Git ref:
main - Sparse paths: 留空
- Source:
- 点击 Add marketplace
- 选择 Compound Engineering,安装 compound-engineering
- 重启 Codex
5.5 Codex CLI 安装
步骤:
# 注册市场
codex plugin marketplace add EveryInc/compound-engineering-plugin
# 安装插件
codex plugin add compound-engineering@compound-engineering-plugin
# 或在 Codex 中
# 运行 /plugins,找到 Compound Engineering 市场,选择 compound-engineering 插件,点击 Install
# 重启 Codex非默认配置:
# 安装到 work profile
CODEX_HOME="$HOME/.codex/profiles/work" codex plugin marketplace add EveryInc/compound-engineering-plugin
CODEX_HOME="$HOME/.codex/profiles/work" codex plugin add compound-engineering@compound-engineering-plugin5.6 卸载旧版本
问题:
- 如果之前使用 Bun convert/install 安装,可能在
AGENTS.md中有旧的 tool map
解决方案:
# 方法 1:使用 Claude
Remove the obsolete Compound Engineering Codex tool-map block from my Codex home AGENTS.md.
# 方法 2:手动删除
# 检查 $CODEX_HOME/AGENTS.md 或 ~/.codex/AGENTS.md
# 删除 <!-- BEGIN COMPOUND CODEX TOOL MAP --> 到 <!-- END COMPOUND CODEX TOOL MAP --> 之间的内容六、核心价值:从累积到复利
6.1 知识资产化
传统开发:
- 经验存在开发者脑中
- 开发者离职,经验流失
- 新人重新学习
Compound Engineering:
- 经验文档化
- 经验可复用
- 新人快速上手
6.2 模式固化
传统开发:
- 每次都重新设计
- 每次都重新实现
- 每次都重新调试
Compound Engineering:
- 模式一次设计
- 模式多次复用
- 模式持续优化
6.3 效率提升
传统开发:
- 第一次:3 天
- 第二次:2.5 天
- 第三次:2 天
- ...(效率提升有限)
Compound Engineering:
- 第一次:3 天
- 第二次:1.5 天
- 第三次:0.8 天
- ...(效率指数提升)
6.4 质量保证
传统开发:
- 质量依赖个人能力
- 质量难以保证
- 质量难以度量
Compound Engineering:
- 质量依赖流程
- 质量可以评审
- 质量可以度量
七、适用场景与用户
7.1 个人开发者
场景:
- 个人项目
- 自由职业
- 学习新技术
价值:
- ✅ 记录个人经验
- ✅ 提高开发效率
- ✅ 固化个人模式
7.2 小团队
场景:
- 初创公司
- 小型团队
- 敏捷开发
价值:
- ✅ 共享团队经验
- ✅ 加速新人上手
- ✅ 统一开发规范
7.3 大型组织
场景:
- 企业级项目
- 多团队协作
- 长期维护
价值:
- ✅ 跨团队知识共享
- ✅ 降低沟通成本
- ✅ 提高整体效率
八、局限性与挑战
8.1 学习曲线
挑战:
- 需要理解复合工程理念
- 需要适应新的工作流
- 需要改变传统习惯
解决方案:
- 从小项目开始
- 逐步引入工作流
- 持续优化流程
8.2 初期投入
挑战:
- 第一次使用需要更多时间
- 需要建立文档体系
- 需要固化模式
解决方案:
- 长期主义思维
- 看重复利价值
- 持续投入优化
8.3 团队接受度
挑战:
- 团队成员可能有抵触
- 觉得流程繁琐
- 不愿意改变习惯
解决方案:
- 展示价值案例
- 逐步引导改变
- 提供培训支持
8.4 工具依赖
挑战:
- 依赖特定的 AI 工具
- 工具可能有 bug
- 工具可能更新慢
解决方案:
- 选择成熟工具
- 建立备用方案
- 参与开源贡献
九、未来展望
9.1 短期目标
功能完善:
- 更多技能支持
- 更好的文档
- 更多的集成
性能优化:
- 更快的执行速度
- 更低的资源占用
- 更好的错误处理
9.2 中期目标
生态扩展:
- 更多平台支持
- 更多语言支持
- 更多框架支持
社区建设:
- 更大的社区
- 更多的贡献
- 更好的文档
9.3 长期愿景
核心目标:
"让每次开发都比上一次更容易。"
具体方向:
- 自动化更多的流程
- 智能化更多的决策
- 固化更多的模式
- 积累更多的知识
十、总结
10.1 核心回顾
Compound Engineering 的核心价值:
知识资产化
- 经验文档化
- 经验可复用
- 经验可积累
模式固化
- 一次设计
- 多次复用
- 持续优化
效率提升
- 指数级提升
- 复利增长
- 长期受益
质量保证
- 流程化
- 可评审
- 可度量
10.2 革命性意义
"从技术债务到知识复利"
传统开发累积技术债务,Compound Engineering 创造知识复利。这意味着:
- 不是每次都从零开始
- 不是每次都重复犯错
- 不是每次都重新学习
"从个人经验到团队资产"
传统开发依赖个人经验,Compound Engineering 创造团队资产。这意味着:
- 经验不再随人员流失
- 新人快速上手
- 团队整体提升
"从线性增长到指数增长"
传统开发效率线性增长,Compound Engineering 效率指数增长。这意味着:
- 不是越做越慢
- 而是越做越快
- 最终几乎自动化
10.3 最终思考
Compound Engineering 不是要替代传统开发,而是要回答一个问题:
"如果我们让每次开发都为下一次开发打下更好的基础,它会给开发效率带来什么?"
答案:
- 知识资产化
- 模式固化
- 效率指数提升
- 质量持续保证
这就是 Compound Engineering 的野心:让每次开发都比上一次更容易。
参考资源
- GitHub 仓库:https://github.com/EveryInc/compound-engineering-plugin
- 技能文档目录:https://github.com/EveryInc/compound-engineering-plugin/blob/main/docs/skills/README.md
- 复合工程文章:https://every.to/chain-of-thought/compound-engineering-how-every-codes-with-agents
- 故事背景:https://every.to/source-code/my-ai-had-already-fixed-the-code-before-i-saw-it
如果你觉得这篇文章有帮助,欢迎点赞、转发,让更多人了解这个让每次开发都比上一次更容易的开源项目!
