导语
你有没有经历过这样的场景:
让 AI 帮你写个功能,它二话不说直接开干,结果做出来的东西根本不是你想要的?
或者更糟------代码是能跑,但全是坑,测试没有,文档为零,最后还得你自己擦屁股?
我最近发现了一个名为 Superpowers 的开源项目,它提出了一套让 AI 编程从"瞎猜"变成"工程化"的完整方法论。试用一周后,我的工作效率提升了至少 3 倍。
今天,我就把这套方法论的核心精华拆解给你,不管你是用 Claude、Cursor 还是其他 AI 编程工具,都能立刻上手。
一、为什么你的 AI 编程总是翻车?
先做个小测试。当你让 AI 帮你开发功能时,它通常是怎么做的?
错误示范:
markdown
你:我想做个用户管理系统 AI:好的!*立刻开始创建 UserController、UserService、UserRepository...*
发现问题了吗?没有设计,没有确认,没有计划,直接开干。
这正是 Superpowers 项目创始人 Jesse 指出的核心问题:
"As soon as it sees that you're building something, it doesn't just jump into trying to write code. Instead, it steps back and asks you what you're really trying to do."
翻译成人话就是:别急着写代码,先搞清楚你到底要什么。
二、Superpowers 的核心:三阶段工作流
Superpowers 把软件开发拆解成三个关键阶段,每个阶段都有严格的"硬门"(Hard Gate),不通过就不能进入下一步。
阶段 1:Brainstorming(头脑风暴)------ 想清楚再动手
核心规则:
- ❌ 禁止写任何代码
- ❌ 禁止创建任何文件
- ✅ 必须通过问答理解需求
- ✅ 必须提出 2-3 个方案并给出推荐
- ✅ 必须分章节呈现设计并获得批准
实际操作示例:
你:我想做个待办事项应用 AI(正确做法): 好的,在开始之前,我想先了解几个问题: 1. 这个待办应用的核心用户是谁?(个人使用/团队协作/客户 facing) 2. 需要哪些核心功能?(仅基础 CRUD/需要提醒/需要分类标签/需要协作) 3. 技术栈有偏好吗?(Web/移动端/桌面应用) 4. 有截止时间或特殊约束吗? 我们一个一个来,先回答第一个问题吧。
关键洞察: 很多人会跳过这一步,觉得"简单功能不需要设计"。但 Superpowers 明确指出:
"Simple projects are where unexamined assumptions cause the most wasted work."
越是简单的项目,越容易因为未经验证的假设而浪费时间。
阶段 2:TDD(测试驱动开发)------ 红绿重构循环
这是 Superpowers 最严格的部分,也是最能保证质量的部分。
铁律:
css
NO PRODUCTION CODE WITHOUT A FAILING TEST FIRST (没有先写失败的测试,就不允许写生产代码)
RED-GREEN-REFACTOR 循环:
-
RED(红)
:写一个失败的测试
- 测试要描述"应该发生什么"
- 运行测试,确认它失败(这才是正确的失败)
-
GREEN(绿)
:写最少的代码让测试通过
- 不要过度设计
- 只要能通过测试就行
-
REFACTOR(重构)
:保持测试绿色,优化代码质量
- 提取重复代码
- 改进命名
- 优化结构
为什么这么严格?
Superpowers 给出了一个扎心的理由:
"If you didn't watch the test fail, you don't know if it tests the right thing."
如果你没看着测试失败,你就不知道它是否测试了正确的东西。
实际案例:
错误做法(先写实现):
typescript
matlab
// 先写了实现代码 function retryOperation(op, maxRetries = 3) { for (let i = 0; i < maxRetries; i++) { try { return op(); } catch (e) { if (i === maxRetries - 1) throw e; } } } // 然后补测试 test('retry works', () => { expect(retryOperation(...)).toBe('success'); });
正确做法(先写测试):
typescript
sql
// 第一步:写测试 test('retries failed operations 3 times', async () => { let attempts = 0; const operation = () => { attempts++; if (attempts < 3) throw new Error('fail'); return 'success'; }; const result = await retryOperation(operation); expect(result).toBe('success'); expect(attempts).toBe(3); }); // 第二步:运行测试,看着它失败 ✅ // 第三步:写实现代码
阶段 3:Subagent-Driven Development(子代理驱动开发)------ 让 AI 自主工作
这是 Superpowers 最厉害的部分:让 AI 能够自主工作 2 小时不翻车。
核心机制:
-
任务分解:把计划拆成 2-5 分钟能完成的小任务
-
子代理执行:每个任务派发给一个"新鲜"的子代理
-
两阶段审查
:
- 第一阶段:审查是否符合设计规范
- 第二阶段:审查代码质量
为什么有效?
- 每个子代理都有隔离的上下文,不会被污染
- 专业分工:实现的只管实现,审查的只管审查
- 强制审查:不通过就不能继续
实际效果:
"It's not uncommon for Claude to be able to work autonomously for a couple hours at a time without deviating from the plan you put together."
三、我的实战经验:如何把这套方法用到任何 AI 工具上
你不需要安装 Superpowers 插件(虽然它支持 Claude Code、Cursor、Codex 等多个平台),就可以借鉴这套方法论。
我的改良版工作流:
1. 需求澄清阶段(对应 Brainstorming)
在让 AI 写代码前,我会先说:
arduino
"我们先不写代码。我想让你帮我设计这个功能: 1. 先问我一些问题,了解我的真实需求 2. 然后给我 2-3 个方案,并给出你的推荐 3. 等我确认设计后,再开始实现"
2. 测试先行阶段(对应 TDD)
每次实现功能前,我会要求:
arduino
"请用 TDD 方式实现: 1. 先写一个失败的测试 2. 运行给我看它失败了 3. 再写最少的代码让它通过 4. 最后重构优化"
3. 代码审查阶段(对应 Subagent Review)
即使是 AI 写的代码,我也会要求它自我审查:
arduino
"现在请审查你的代码: 1. 是否符合我们之前确认的设计? 2. 有没有过度工程化的地方? 3. 测试覆盖率够吗? 4. 有没有更好的实现方式?"
实际案例:我用这套方法做了什么?
上周,我用这套方法让 AI 帮我实现了一个实时协作的文档编辑系统。
传统做法可能得到的结果:
- 能用的代码,但架构混乱
- 没有测试,不敢重构
- 文档为零,维护困难
使用 Superpowers 方法后的结果:
- 清晰的分层架构(WebSocket 层、业务逻辑层、数据持久化层)
- 95% 测试覆盖率
- 完整的设计文档和 API 文档
- AI 自主工作了 3 个小时,我只在关键节点做了确认
四、为什么这套方法有效?我的深度思考
1. 它利用了 AI 的优势,规避了劣势
AI 的优势:
- ✅ 快速生成代码
- ✅ 模式识别能力强
- ✅ 不会疲劳
AI 的劣势:
- ❌ 容易过度工程化
- ❌ 缺乏全局视角
- ❌ 不会主动问问题
Superpowers 的方法:
- 用强制提问规避"不問就干"
- 用测试先行规避"过度设计"
- 用分离子代理规避"上下文污染"
2. 它把"建议"变成了"强制约束"
很多开发方法论失败的原因是:它们是"建议"。
Superpowers 的不同之处:
sql
<HARD-GATE> Do NOT invoke any implementation skill until you have presented a design and the user has approved it. </HARD-GATE>
这不是建议,是强制约束。
3. 它尊重人性(和 AI 的本性)
- 承认"简单项目"最容易翻车
- 承认 AI 会急于写代码
- 承认人类会懒得问问题
所以它设计了强制流程,让你和 AI 都不得不遵守。
五、你可以立刻上手的 3 个技巧
技巧 1:5 分钟设计会议
在开始任何功能开发前,花 5 分钟和 AI 做设计讨论:
arduino
"给我 3 个实现方案,分别说明: - 优点 - 缺点 - 适用场景 - 你的推荐"
技巧 2:测试契约
和 AI 约定:
arduino
"写任何功能前,我们先写测试。 如果测试不能先失败,就不允许写实现代码。"
技巧 3:审查清单
让 AI 在提交代码前,回答这些问题:
arduino
"请用这个清单审查你的代码: □ 是否符合设计文档? □ 有没有未使用的代码? □ 测试覆盖率多少? □ 有没有边界情况没测试? □ 命名是否清晰? □ 有没有更简单的实现方式?"
六、最后的思考:这不是银弹,但比瞎猜强
Superpowers 不是万能的。它适合:
- ✅ 需要长期维护的项目
- ✅ 有明确需求的功能
- ✅ 多人协作的代码
它可能不适合:
- ❌ 一次性原型
- ❌ 探索性实验
- ❌ 时间极度紧张的情况
但核心思想是普适的:
- 先思考,再行动
- 用流程保证质量,而不是依赖自觉
- 让审查成为习惯,而不是负担
结语
AI 编程不是要取代程序员,而是要放大程序员的能力。
Superpowers 这套方法论,本质上是把成熟的软件工程实践,转化成了 AI 能理解和执行的流程。
它可能看起来繁琐,但当你看到 AI 能自主工作 2 小时不翻车,当你不再为 AI 写的代码擦屁股时,你会发现:这套方法,真香。
延伸资源:
- Superpowers GitHub: github.com/obra/superp...
- 支持平台:Claude Code、Cursor、Codex、OpenCode、Gemini CLI
- 我的实践心得:用这套方法,代码质量提升的不只是 AI,还有你自己
互动话题: 你在 AI 编程中遇到过哪些翻车现场?欢迎在评论区分享,我们一起讨论如何用这套方法避免。
注: 本文基于我对 Superpowers 项目的深入研究和实际使用体验。核心观点都来自项目文档和源码分析,但加入了我的实战经验和个人思考。希望能帮你更好地利用 AI 编程,而不仅仅是被 AI 带着走。