1. 从“superpowers”这个标题说起:它到底是什么
第一次看到“superpowers”这个词,很多人脑子里蹦出来的可能是超级英雄电影里的超能力,或者某个游戏里的技能系统。但如果你是在技术社区、开源项目或者开发者工具讨论里刷到这个词,那它大概率指向的是一个完全不同的东西——一个围绕 AI 编程助手能力扩展的工程化方案。我最早接触这个概念是在一个自动化代码生成的工作流里,当时有人提到“给 AI 加上 superpowers”,我一开始以为是某种夸张的修辞,后来才发现它指的是一套让 AI 助手从“能聊天”变成“能干活”的增强机制。
简单来说,superpowers 不是某一个具体的软件,也不是一个可以双击安装的 exe 文件。它更像是一种设计思路和工具集的组合,核心目标是让 AI 编程助手具备更长的上下文记忆、更精准的代码理解、更稳定的多步骤任务执行能力,以及更贴近真实项目结构的操作权限。你可以把它理解成给一个原本只会纸上谈兵的顾问,配上了一套完整的工具箱、一张项目地图和一本操作手册,让他能直接上手拧螺丝、接电线、调参数。
这个主题适合谁看?如果你是一个经常用 AI 辅助写代码的开发者,或者你正在搭建自己的自动化开发流水线,又或者你只是好奇为什么别人的 AI 助手能一口气改完十几个文件而你的只能一段一段吐代码,那这篇内容就是为你准备的。我会从整体设计思路、核心细节、实操过程、常见问题四个维度,把 superpowers 这套东西拆开揉碎讲清楚。里面会涉及一些具体的配置思路、参数选择的理由,以及我在实际使用中踩过的坑和总结出来的技巧。不管你是刚听说这个词的新手,还是已经尝试过但遇到瓶颈的老手,应该都能找到对自己有用的部分。
2. 整体设计与思路拆解:为什么需要给 AI 加“超能力”
2.1 普通 AI 编程助手的三个天花板
在聊 superpowers 的设计思路之前,得先搞清楚普通 AI 编程助手到底卡在哪里。我用过不少代码生成工具,也帮团队搭建过内部的 AI 辅助开发流程,总结下来,普通助手有三个很难绕过去的天花板。
第一个是上下文窗口的物理限制。不管你用的是哪个模型,它一次能“记住”的 token 数量是有限的。一个中型项目动辄几万行代码,你不可能把所有文件都塞进去。结果就是 AI 只能看到你粘贴的那一小段,它不知道这个函数在项目里被谁调用、依赖了哪些模块、有没有全局配置会影响它的行为。这就像让一个修车师傅只看着一个螺丝刀去判断发动机哪里坏了,信息量根本不够。
第二个是任务执行的碎片化。你让 AI 帮你“重构用户登录模块”,它可能会给你一段看起来不错的代码,但这段代码放在哪个文件、需要改哪些 import、要不要同步更新测试用例、数据库迁移脚本要不要动,它一概不管。你得自己把它的输出拆解、搬运、拼接、调试。这个过程里只要有一个环节对不上,整个改动就崩了。
第三个是缺乏对项目结构的感知。一个真实的项目有目录层级、有配置文件、有环境变量、有构建脚本、有依赖锁文件。普通 AI 助手对这些东西是“盲”的,它不知道你的项目用的是 Maven 还是 Gradle,不知道你的前端是 React 还是 Vue,不知道你的测试框架是 JUnit 还是 TestNG。它给出的代码往往需要大量手工适配才能跑起来。
superpowers 这套思路的核心,就是针对这三个天花板分别给出工程化的解决方案。它不是靠某个单一技术突破,而是靠一套组合拳:用检索增强来突破上下文限制,用任务编排来拆解复杂流程,用项目感知来让 AI 理解真实工程环境。
2.2 检索增强:让 AI 自己去找需要的代码
上下文窗口不够用,最直接的思路就是“不要把所有东西都塞进去,只塞最相关的”。这就是检索增强生成(RAG)在代码场景下的应用。superpowers 在这方面的设计,通常包含三个关键组件:代码索引、语义检索和上下文组装。
代码索引不是简单地把文件内容存进数据库,而是要对代码做结构化解析。比如把每个函数、类、接口、配置项都提取出来,建立它们之间的调用关系、继承关系、引用关系。这个过程有点像给整个项目画一张地图,每个代码单元是一个地点,调用关系是道路。索引的质量直接决定了后面检索的准确度。
语义检索则是当 AI 需要完成某个任务时,系统根据任务描述去索引里找最相关的代码片段。比如任务里提到“用户认证”,检索模块就会去找跟 auth、login、token、session 相关的函数和配置。这里的关键是检索策略,不能只靠关键词匹配,还要结合代码的语义向量。我试过纯关键词的方案,结果经常把不相关的代码也捞进来,反而干扰了 AI 的判断。
上下文组装是最后一步,把检索到的代码片段按照一定的优先级和格式拼接到提示词里。这里有个细节很重要:要给每个片段标注来源文件路径和行号,这样 AI 在生成修改建议时才能准确指出“改哪个文件的哪一行”。没有这个标注,AI 的输出就会变成一堆没有归属的代码块,你还得自己猜它想改哪里。
2.3 任务编排:把大目标拆成可执行的小步骤
有了足够的上下文,接下来要解决的是“怎么让 AI 一步一步把活干完”。superpowers 在任务编排上的设计,通常遵循“规划-执行-验证”的循环。
规划阶段,系统会让 AI 先输出一个任务分解列表。比如“重构登录模块”会被拆成:读取现有登录代码、识别依赖的数据库表、生成新的认证逻辑、更新相关测试、修改配置文件、运行测试验证。这个列表不是给用户看的,而是作为后续执行的路线图。我实测下来,让 AI 先规划再执行,比直接让它写代码的成功率高出很多,因为规划过程本身就是在帮它理清思路。
执行阶段,系统会按照规划列表逐个执行子任务。每个子任务执行时,都会重新触发一次检索,把当前步骤需要的代码片段拉进来。这样做的好处是每一步的上下文都是精准的,不会因为前面步骤的输出而污染后面的判断。这里有个经验:子任务的粒度要控制好,太粗了容易失败,太细了会频繁触发检索导致效率下降。一般来说,一个子任务对应一个函数级别的改动比较合适。
验证阶段,系统会尝试运行测试、检查语法、对比预期输出。如果验证不通过,会回到执行阶段重新尝试,或者调整规划。这个循环最多重复几次,避免无限重试。我在实际使用中发现,验证环节是区分“玩具”和“工具”的关键。没有验证的 AI 编程助手,你永远不敢让它直接改生产代码;有了验证,至少能在本地环境里放心让它折腾。
2.4 项目感知:让 AI 知道自己在什么环境里干活
项目感知是 superpowers 里最容易被忽视但实际影响最大的部分。它要做的事情是让 AI 在动手之前,先搞清楚这个项目的“脾气”。
具体来说,项目感知包括几个层面。第一是技术栈识别,通过读取 pom.xml、build.gradle、package.json、requirements.txt 等文件,判断项目用的语言、框架、构建工具和依赖版本。第二是目录结构理解,知道源码放在哪里、测试放在哪里、配置文件放在哪里、资源文件放在哪里。第三是编码规范提取,通过分析现有代码的命名风格、注释习惯、异常处理方式,让 AI 生成的代码跟项目风格保持一致。第四是环境约束识别,比如 Java 版本、Node 版本、数据库类型、中间件版本,这些都会影响代码能不能跑起来。
我见过很多 AI 生成的代码“看起来对但跑不起来”,十有八九就是项目感知没做好。比如 AI 给你写了一段用了 Java 17 新特性的代码,但你的项目还在 Java 8 上跑;或者 AI 用了某个库的最新 API,但你的依赖锁文件里还是旧版本。superpowers 通过项目感知把这些约束提前告诉 AI,从源头上减少这类问题。
3. 核心细节解析与实操要点
3.1 代码索引的构建策略与参数选择
代码索引是整套系统的地基,建得好不好直接决定后面所有环节的效果。我在搭建索引时,主要关注三个参数:索引粒度、更新频率和存储结构。
索引粒度决定了每个索引项包含多少代码。太粗了,检索出来的片段太大,浪费上下文窗口;太细了,检索结果太零碎,AI 拼不出完整的逻辑。我的经验是,以“函数”或“方法”作为基本索引单元比较合适,同时把类定义、接口定义、配置文件也单独索引。对于特别长的函数,可以按逻辑块再切分,但要在元数据里标注它们属于同一个函数。
更新频率方面,如果是个人开发环境,可以每次启动 AI 助手时重建索引,反正项目不大,几秒钟的事。如果是团队协作或者大型项目,就需要增量更新机制,只重新索引发生变化的文件。我试过全量重建一个中型 Java 项目(大约五万行代码),大概需要十几秒,还能接受;但如果是几十万行的项目,就必须上增量了。
存储结构我推荐用向量数据库加关系型数据库的组合。向量数据库存代码的语义向量,用于相似度检索;关系型数据库存代码的结构化信息,比如文件路径、函数名、调用关系、依赖关系。检索时先用向量数据库找到语义相近的候选集,再用关系型数据库做过滤和排序。这个组合方案比纯向量检索准确率高不少,尤其是在处理“找某个接口的所有实现类”这类结构化查询时。
注意:索引构建时一定要排除编译产物、依赖包、日志文件这些非源码内容。我一开始没注意,把 target 目录和 node_modules 也索引进去了,结果检索出来的全是第三方库的代码,完全没法用。
3.2 提示词模板的设计与迭代
superpowers 的效果很大程度上取决于提示词的质量。我经过多轮迭代,总结出一个比较稳定的提示词结构,包含五个部分:角色定义、项目上下文、任务描述、约束条件和输出格式。
角色定义是告诉 AI 它现在是什么身份。比如“你是一个资深 Java 后端工程师,熟悉 Spring Boot 生态和微服务架构”。这个设定会影响 AI 的用词习惯和技术选型倾向。我试过不写角色定义,AI 有时候会用一些很偏门的写法,虽然能跑但维护性差。
项目上下文就是前面检索出来的代码片段和项目信息。这里要注意排序,把最相关的放在最前面,因为很多模型对开头的内容注意力更集中。每个片段前面加上文件路径和行号范围,方便 AI 引用。
任务描述要具体,不能太笼统。“优化一下这段代码”和“把这段代码里的循环查询改成批量查询,减少数据库调用次数”效果完全不一样。后者给了明确的优化方向和验收标准,AI 更容易给出符合预期的结果。
约束条件包括代码风格、兼容性要求、性能指标等。比如“保持现有的异常处理风格”、“不要引入新的第三方依赖”、“方法复杂度不超过 10”。这些约束能有效防止 AI 自由发挥过头。
输出格式我一般要求 AI 按“修改说明 + 代码块 + 影响范围”的结构来输出。修改说明让它解释为什么这么改,代码块给出具体改动,影响范围列出可能受影响的模块。这个格式方便我快速判断改动是否合理,也方便后续的验证环节。
3.3 多步骤任务的拆解原则
把一个大任务拆成多个小步骤,听起来简单,做起来很容易翻车。我踩过的坑包括:拆得太粗导致单步失败率太高,拆得太细导致步骤之间依赖混乱,拆得不对导致顺序错误。
我的拆解原则是“按数据流拆,不按功能拆”。举个例子,假设任务是“给用户模块增加手机号登录功能”。按功能拆可能是:改数据库、改后端接口、改前端页面、改测试。这个拆法的问题是,后端接口改到一半发现数据库字段还没加,就得回退重来。
按数据流拆则是:先确定数据模型变更(数据库加字段),再确定数据访问层变更(DAO 加方法),再确定业务逻辑层变更(Service 加逻辑),再确定接口层变更(Controller 加路由),最后是前端和测试。这个顺序保证了每一步依赖的数据结构都已经就绪,不会出现“改到一半发现缺东西”的情况。
另一个经验是,每个步骤都要有明确的“完成标志”。比如“数据库加字段”的完成标志是迁移脚本执行成功且字段存在,“DAO 加方法”的完成标志是单元测试通过。有了完成标志,验证环节才能自动判断这一步是否真的做完了,而不是 AI 说做完了就完了。
3.4 验证环节的自动化实现
验证环节是 superpowers 从“建议工具”变成“执行工具”的分水岭。没有验证,AI 的输出永远只是草稿;有了验证,才能形成闭环。
验证的实现方式取决于项目类型。对于 Java 项目,最基本的验证是编译通过。可以用 Maven 或 Gradle 的 compile 命令,检查 AI 生成的代码能不能通过编译。这一步能过滤掉大部分语法错误和明显的类型不匹配。
再进一步是单元测试。如果项目有现成的测试用例,直接运行相关测试类。如果 AI 修改了某个函数,就运行覆盖这个函数的测试。测试通过说明改动没有破坏原有功能。我一般会要求 AI 在修改代码的同时,也更新对应的测试用例,这样验证环节才有东西可跑。
更高级的验证包括静态代码分析、代码风格检查、安全扫描。比如用 Checkstyle 检查命名规范,用 SpotBugs 检查潜在 bug,用 OWASP Dependency Check 检查依赖漏洞。这些工具的输出可以作为验证结果反馈给 AI,让它继续修正。
实操心得:验证失败时,不要直接把错误信息扔给 AI 让它重试。先把错误分类,是语法错误、逻辑错误还是环境错误。语法错误直接重试就行;逻辑错误需要把相关代码和测试用例一起给它;环境错误则要检查是不是项目感知环节漏掉了某些配置。
4. 实操过程与核心环节实现
4.1 环境准备与基础依赖安装
动手搭建 superpowers 之前,先把环境理清楚。我以 Java 项目为例,因为热词里提到了 superpowers java,而且 Java 生态的工程化程度高,适合演示完整流程。其他语言的项目思路类似,只是具体工具不同。
基础环境需要这几样东西:JDK(建议 11 或 17)、Maven 或 Gradle、Git、一个支持 API 调用的 AI 模型服务、一个向量数据库(可以用本地的 Chroma 或 Milvus Lite,也可以用云服务)。如果项目有数据库依赖,本地最好也装一个对应的数据库,方便跑集成测试。
我个人的配置是:JDK 17 + Maven 3.9 + Git 2.40 + 本地 Chroma + 模型 API。这个组合在 Windows、macOS、Linux 上都能跑,没有特别的平台限制。安装过程就不赘述了,都是标准操作。重点说一下向量数据库的选择:如果只是个人项目,Chroma 最省事,pip install 就能用;如果是团队项目,建议上 Milvus 或者云服务,支持并发和持久化。
环境变量方面,需要配置模型服务的 API Key、向量数据库的连接地址、项目根目录路径。我习惯把这些写在一个 .env 文件里,然后用 dotenv 加载。这样切换项目时只需要改 .env,不用动代码。
4.2 项目索引的初始化与增量更新
环境就绪后,第一步是给项目建索引。我写了一个简单的索引脚本,核心逻辑是遍历项目源码目录,对每个 Java 文件做解析,提取类、方法、字段、注解、import 等信息,生成结构化数据存入关系库,同时把代码内容转成向量存入向量库。
解析 Java 代码我用的 JavaParser,它能生成完整的抽象语法树,比正则匹配靠谱得多。每个方法提取的信息包括:所在类、方法名、参数列表、返回类型、访问修饰符、注解、方法体代码、起始行号和结束行号。这些信息在后续检索和上下文组装时都会用到。
向量化用的是模型服务提供的 embedding 接口。这里有个细节:代码的 embedding 和自然语言的 embedding 不太一样,最好用专门针对代码训练过的 embedding 模型。我用过通用的文本 embedding,检索代码时准确率明显偏低,换成代码专用的之后提升很明显。
增量更新我是在 Git hook 里做的。每次 commit 之后,触发一个脚本,对比这次 commit 和上次 commit 的文件差异,只重新索引变化的文件。这个方案的好处是不需要额外维护文件状态,Git 本身就是最好的版本追踪工具。实测下来,一个中型项目每次增量更新只需要一两秒,几乎无感。
4.3 任务执行流程的完整演示
假设现在有一个具体任务:给一个 Spring Boot 项目的用户服务增加“根据手机号查询用户”的接口。我完整走一遍 superpowers 的流程。
第一步,任务输入。我在命令行里输入任务描述:“在 UserService 中增加根据手机号查询用户的方法,并在 UserController 中暴露对应的 GET 接口,路径为 /api/users/phone/{phone}。”
第二步,项目感知。系统自动读取 pom.xml,识别出这是 Spring Boot 2.7 项目,Java 11,用了 MyBatis-Plus 作为 ORM,用了 Swagger 做接口文档。同时读取项目目录结构,确认 Service 层在 src/main/java/com/example/service,Controller 层在 src/main/java/com/example/controller。
第三步,检索相关代码。系统根据任务描述,检索出 UserService 类、UserController 类、UserMapper 接口、User 实体类、以及现有的根据 ID 查询用户的方法作为参考。这些代码片段被组装进提示词。
第四步,任务规划。AI 输出规划列表:1. 在 UserMapper 中增加根据手机号查询的方法;2. 在 UserService 中增加对应的方法;3. 在 UserController 中增加 GET 接口;4. 更新 Swagger 注解;5. 增加单元测试。
第五步,逐步执行。每个子任务执行时,系统重新检索当前步骤需要的代码,生成修改建议,然后应用到文件。比如第一步执行时,检索出 UserMapper 的现有方法作为模板,AI 生成新的 Mapper 方法并写入文件。
第六步,验证。所有步骤完成后,系统运行 mvn compile 检查编译,然后运行 UserServiceTest 和 UserControllerTest。如果测试通过,任务完成;如果失败,根据错误信息定位问题,回到对应步骤重新执行。
整个流程走下来,从输入任务到验证通过,大概需要两三分钟。其中大部分时间花在模型推理上,索引和检索几乎不耗时。这个效率比手工写代码快很多,而且因为每一步都有验证,质量也有保障。
4.4 参数计算与选择过程实录
在搭建过程中,有几个参数需要根据实际情况计算和调整,我记录一下自己的选择过程。
第一个是检索返回的代码片段数量。这个参数控制每次给 AI 喂多少上下文。太少,信息不够;太多,浪费 token 还可能引入噪声。我的计算方法是:先估算模型的上下文窗口大小,比如 8K token;然后预留 2K 给任务描述和输出,剩下 6K 给代码片段;每个代码片段平均 200 token,那么最多返回 30 个片段。实际使用时,我一般设置返回 10 到 15 个,因为检索结果按相关度排序后,后面的片段价值递减很快。
第二个是向量检索的相似度阈值。低于这个阈值的片段会被过滤掉,避免不相关内容混入。我一开始设的是 0.7,结果发现经常漏掉一些相关但表述不同的代码。后来降到 0.5,召回率上来了,但精确率下降。最终我采用动态阈值:先取相似度最高的前 20 个,然后看第 10 名的分数,如果分数骤降就截断,如果平缓就多取一些。这个策略比固定阈值灵活很多。
第三个是任务重试次数。验证失败后允许重试几次,这个参数影响成功率和耗时。设得太低,容易半途而废;设得太高,可能陷入死循环。我的经验值是 3 次。第一次失败通常是遗漏了某个细节,第二次失败可能是理解偏差,第三次还失败说明任务本身有问题,需要人工介入调整任务描述或拆解方式。
5. 常见问题与排查技巧实录
5.1 检索结果不准确怎么办
检索不准确是最高频的问题,表现是 AI 拿到的代码片段跟任务不相关,导致生成的代码驴唇不对马嘴。排查思路分三层。
第一层,检查索引质量。如果索引里根本没有相关代码,那检索肯定找不到。我遇到过一种情况:项目里有些代码是用 Lombok 生成的 getter/setter,JavaParser 解析时看不到这些方法,导致索引缺失。解决办法是在索引时把 Lombok 注解也解析进去,或者干脆把编译后的 class 文件也纳入索引范围。
第二层,检查 embedding 模型。不同模型对代码的理解能力差异很大。我试过用通用文本模型做代码检索,结果“用户查询”和“订单查询”的向量距离很近,因为字面相似。换成代码专用模型后,这两个的向量距离就拉开了,因为模型能理解它们操作的是不同的实体。
第三层,检查检索策略。纯向量检索有时候会漏掉一些关键词匹配就能找到的结果。我的改进方案是混合检索:先用关键词做一轮粗筛,再用向量做精排。比如任务里提到“UserMapper”,那就先把所有包含 UserMapper 的代码片段捞出来,再从中用向量找最相关的。这个混合策略把检索准确率提升了不少。
5.2 AI 生成的代码编译不通过
编译错误的原因五花八门,我整理了一个速查表,按出现频率排序。
| 错误类型 | 典型表现 | 排查方向 | 解决思路 |
|---|---|---|---|
| 缺少 import | cannot find symbol | 检查 AI 是否遗漏了 import 语句 | 在提示词里要求 AI 输出完整的 import 列表 |
| 版本不兼容 | method not found | 检查项目依赖版本和 AI 使用的 API 版本 | 在项目感知环节明确标注依赖版本 |
| 类型不匹配 | incompatible types | 检查泛型、装箱拆箱、类型转换 | 把相关类型定义一起检索给 AI |
| 语法错误 | illegal start of expression | 检查括号、分号、关键字拼写 | 直接重试,通常是模型输出截断导致 |
| 重复定义 | duplicate class/method | 检查是否与现有代码冲突 | 检索时把同名方法一起返回,让 AI 知道已存在 |
我遇到最多的是缺少 import。AI 生成代码时经常假设某些类已经导入了,但实际上没有。后来我在提示词里加了一条硬性要求:“输出代码时必须包含所有新增的 import 语句,并标注在代码块开头。”这条加上之后,import 相关的编译错误减少了八成以上。
避坑技巧:如果项目用了 Lombok,AI 生成的代码里可能会手动写 getter/setter,跟 Lombok 自动生成的冲突。解决办法是在项目感知环节明确告诉 AI“本项目使用 Lombok,不要手动生成 getter/setter”。
5.3 测试通过但功能不对
这是最隐蔽的问题:编译通过、测试通过,但实际功能不符合预期。原因通常是测试用例本身没有覆盖到关键逻辑,或者 AI 修改了测试用例让它“适应”错误的代码。
我的防范措施有三个。第一,禁止 AI 修改现有测试用例的断言逻辑。如果 AI 觉得测试需要改,必须单独提出来,由人工确认。第二,增加集成测试环节。单元测试通过后,再跑一轮集成测试,用真实数据库和真实 HTTP 请求验证功能。第三,人工抽查关键改动。对于涉及金额、权限、数据一致性的代码,不管测试是否通过,我都会人工看一遍 AI 的改动。
我踩过一次坑:AI 把“根据手机号查询用户”实现成了“根据手机号模糊查询用户”,测试用例只测了精确匹配,所以通过了。但上线后发现输入部分手机号会返回一堆无关用户。后来我在提示词里加了“精确匹配”的明确要求,并且在测试用例里增加了模糊匹配的负向测试。
5.4 执行速度慢的优化思路
superpowers 的完整流程涉及多次模型调用和检索,速度慢是常见抱怨。我实测下来,一个中等复杂度的任务大概需要两到三分钟,其中模型推理占 70% 的时间。
优化方向有几个。第一,并行化检索。多个子任务的检索可以并行执行,不用串行等待。我用线程池把检索环节并行化后,整体耗时减少了大概 20%。第二,缓存模型响应。对于相同的代码片段和任务描述,模型输出通常是一样的,可以缓存起来避免重复调用。第三,精简提示词。把不必要的历史对话和冗余说明去掉,只保留核心信息,能减少 token 数量,加快推理速度。第四,选择更快的模型。如果任务不复杂,可以用小模型;只有复杂任务才用大模型。我一般设置一个路由规则:简单任务走小模型,复杂任务走大模型。
5.5 团队协作中的配置管理
个人使用 superpowers 和团队使用是两码事。团队使用最大的挑战是配置一致性:每个人的环境不同、模型 API Key 不同、索引版本不同,导致同样的任务在不同人机器上结果不一样。
我的解决方案是容器化。把 superpowers 的运行环境打包成 Docker 镜像,包括 Python 运行时、依赖库、索引工具、验证脚本。每个人拉取同一个镜像,配置通过环境变量注入。这样保证了工具链的一致性。
索引的版本管理也很重要。我把索引文件也纳入 Git 管理,每次代码合并后自动重建索引并提交。这样每个人拉取代码时,索引也是最新的。虽然索引文件比较大,但用 Git LFS 管理后问题不大。
模型 API Key 的管理我用的是团队共享的密钥池,每个人从池里取一个,用完归还。这样避免了密钥泄露,也方便统计用量。如果团队规模大,建议上专门的密钥管理服务。
6. 从个人实践出发的几点体会
我在多个项目里用过 superpowers 这套思路,有顺利的时候,也有翻车的时候。最大的体会是:它不是一个“装上就能用”的即插即用工具,而是一个需要根据项目特点持续调优的工程方案。索引策略、提示词模板、验证规则,这些都需要结合具体项目反复打磨。
另一个体会是,AI 编程助手的价值不在于“替代人写代码”,而在于“把人从重复劳动里解放出来”。那些有明确模式、有现成参考、有自动化验证的代码改动,交给 superpowers 效率很高。但涉及架构设计、业务逻辑创新、复杂权衡的决策,还是得人来拍板。把这两者分清楚,才能发挥它的最大价值。
最后分享一个小技巧:每次任务完成后,把 AI 的修改建议和最终采纳的版本都存下来,定期回顾。你会发现某些类型的任务 AI 总是犯同样的错误,这时候就可以针对性地优化提示词或增加验证规则。这个反馈循环跑起来之后,整套系统的成功率会越来越高。