别再让 AI 当“面向撞大运编程”的码农了!最近两周,我彻彻底底受够了“Cursor/Claude 写代码,我背线上 P0 事故”的折磨。让 AI 写个增删改查,它经常一顿操作猛如虎,连个单元测试都不写,一通乱改导致其他微服务直接报错。

直到这两天,我在 GitHub 上挖到了一个名叫 Superpowers 的爆火开源插件。我花了一个周末把它接入到我们的企业级 Spring Boot 项目中,结果爽飞了——它直接给 Claude Code 穿上了一件“高级架构师”的外衣,把 TDD(测试驱动开发)、代码审查等 20 多种工程化工作流直接做成了标准的 Skill。

今天这篇,全程干货,带你看看我是怎么用 Superpowers 治好 AI 的“瞎跑病”,并把我们的代码交付质量拉满的。

💡 先给结论:Superpowers 到底干了啥?

一句话总结:它不是让 AI 写代码变快,而是让 AI 写代码变“规矩”了。

传统的 AI 辅助编程(比如直接用 Claude 问答)就像是给了一个聪明但没有任何工程素养的实习生一个键盘,想到哪写到哪。而 Superpowers 插件在底层注入了系统化的方法论。当你下达指令时,它会自动触发对应的工作流(比如:先写测试 -> 运行测试失败 -> 写业务代码 -> 运行测试通过 -> 提交)。

🛠️ 实操演练:如何给 Claude Code 注入“超级力量”?

接入过程非常简单,核心在于配置环境变量。我是结合 Intellij IDEA + Terminal 来操作的。

第一步:拉取插件配置(以 Mac/Linux 为例)

我习惯把工作流配置放在项目的根目录下统一管理。

# 克隆 Superpowers 的规则库到你的本地(或者直接作为 Git Submodule)
git clone https://github.com/superpowers-workspace/superpowers.git ~/.superpowers

# 在你的 Java 项目根目录下,建立软链接,将规则注入到 Claude Code 的系统提示词目录
ln -s ~/.superpowers/skills ./superpowers_skills

第二步:激活 TDD 与 Code Review Skill

进入 superpowers_skills 目录,你可以看到几十个 .md 文件,每一个都是一套成熟的方法论。我在做核心交易链路开发时,强烈依赖 tdd.mdcode-review.md

只要你的终端启动了 Claude Code,并处于该项目路径下,Claude Code 就会自动读取这些 Skill。

💥 核心场景:从“瞎写”到“TDD 极限编程”的真实踩坑

上个迭代,我需要重构一个极其复杂的计费规则引擎。我直接让 Claude Code 出手,结果踩了大坑。

❌ 错误写法:没有 Superpowers 约束的裸奔 AI

我直接在终端输入:

“帮我重写 BillingService.java,把硬编码的折扣规则替换成策略模式。”

AI 的典型“瞎跑”过程:

  1. 删掉旧代码。
  2. 直接生成一堆新代码。
  3. compile error!由于没考虑到 Spring Bean 的注入顺序,部分策略类未初始化。
  4. 我去查错,手动排雷,修好 Bug。
  5. 上线提测,测试同学发现原本正常的“满减优惠”逻辑被覆盖了。

这种先写业务代码、再查漏补缺的方式,在复杂工程中就是灾难。

✅ 正确写法:用 Superpowers 驱动 TDD 工作流

引入插件后,我的 Prompt 根本不需要变复杂,直接说需求,插件会自动拦截并转换工作流。

我在终端输入:

“给 BillingService 加入节假日折扣策略。”

此时,Superpowers 的 TDD Skill 开始接管 Claude Code 的思维。我亲眼在终端里看到了如下的绝妙输出:

  1. 阶段一:需求分析与测试用例生成
    Claude Code 停止了直接写 Java 代码的行为,而是先创建了一个测试类:

    // 路径: src/test/java/com/demo/service/BillingServiceTest.java
    @SpringBootTest
    class BillingServiceTest {
        @Autowired
        private BillingService billingService;
    
        @Test
        @DisplayName("当处于节假日且金额大于100时,应享受8折优惠")
        void shouldApplyHolidayDiscountWhenAmountOver100() {
            BigDecimal finalPrice = billingService.calculate(new Order(new BigDecimal("150.00"), true));
            assertThat(finalPrice).isEqualByComparingTo("120.00");
        }
        
        @Test
        @DisplayName("非节假日不享受折扣")
        void shouldNotApplyDiscountWhenNotHoliday() {
            // ... 正常逻辑的边界测试
        }
    }
    
  2. 阶段二:红灯(运行测试,确认失败)
    Claude Code 自动执行了 mvn test。终端报错,提示找不到节假日策略。AI 淡定地输出了:“测试未通过,符合 TDD 预期,开始实现业务逻辑。”

  3. 阶段三:绿灯(编写刚好通过测试的业务代码)
    它才去写真正的业务类:

    @Service
    public class HolidayDiscountStrategy implements DiscountStrategy {
        @Override
        public BigDecimal apply(BigDecimal amount) {
            return amount.multiply(new BigDecimal("0.8"));
        }
    }
    
  4. 阶段四:自动 Code Review
    代码写完后,Superpowers 的审查 Skill 自动触发。AI 自己开始审查代码,并输出报告:“检查到当前策略未处理金额为 null 的极端情况,建议加防御性编程。”然后它自己把代码补全了!

整个闭环!一气呵成!没有任何人工介入,单元测试覆盖率直接拉到了 90% 以上。

⚠️ 踩坑细节排雷

在使用这套工作流时,我也踩了两个恶心的坑,大家一定要注意:

  1. Spring Boot 启动太慢导致 AI 等待超时:
    在 TDD 流程中,AI 会频繁执行 mvn test。如果你的项目很大,Spring 上下文启动要十几秒,AI 的 Tool 执行可能会超时报错。
    👉 我的解法: 在项目中引入 testcontainers,并在 Claude Code 的配置里设置较长的 timeout 时间。尽量用 @WebMvcTest 这种切片测试代替完整的 @SpringBootTest,让 AI 跑得更快。
  2. Code Review Skill 误判循环依赖:
    有时候 AI 审查时,发现两个 Service 互相注入,会陷入死循环修改(A 改成构造器注入,B 又报错,来回拉扯)。这时候需要在 Superpowers 的提示词中加一句:

    “在进行代码审查时,忽略 Spring 的双向依赖重构建议,保持现有 @Autowired 字段注入。”

🚀 落地工作流建议(建议直接抄作业)

为了让团队里的其他兄弟也能用爽,我总结了一套可以直接落地的标准工作流:

  1. 规范目录结构: 强制要求每个需求必须先触发 TDD Skill,没有测试覆盖的代码,在 Git Hook 中直接拦截。
  2. CR 双重保险: 让 AI 扮演“挑剔的高级工程师”,在生成 PR 前跑一遍 code-review.md 工作流,把低级错误(比如未关闭的流、错误的事务传播机制)扼杀在本地。
  3. 调试专家: 遇到复杂的 NPE 或者内存泄漏,直接呼叫 debug.md。不要直接丢几百行日志给它,而是引导它:“请分析这个 Heap Dump 文件,结合 Superpowers 的 Debug Skill,找出大对象残留的根因。”

AI 工具已经非常强了,但现在决定程序员生产力的,不再是你会不会敲代码,而是你懂不懂把软件工程的最佳实践,转化为约束 AI 的方法论

如果这篇实战经验对你有启发,点个赞👍收藏⭐ 吧!这是对我这个天天熬夜踩坑的老程序员最大的鼓励。
下一篇预告:很多同学私信问我本地跑这么爽,怎么结合 CI/CD?下一篇我将分享《告别流水线手动点:用 Claude Code + GitHub Actions 打造全自动的 AI 代码审查流水线》,千万不要错过!

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐