
我是一个从“能用编辑器写代码”进化到“让编辑器帮我写代码”的人。如果你最近逛技术社区大概率会看到一个词反复出现superpowers。这不是什么玄学能力而是一个实实在在改变了我和代码关系的神器——一个给 VS Code 装上“超能力”的 AI 插件。它能写单测、解释陌生代码、找 bug、生成文档甚至能帮你重构一段写得像迷宫一样的逻辑。这篇文章不跟你谈空洞的“AI 改变未来”就聊聊我实际用下来的体验superpowers 到底有什么 skills、怎么把它装进你的编辑器、每个技能具体怎么用、以及我踩过的那些坑。1. 这玩意到底是什么不只是又一个 AI 聊天框1.1 为什么叫 superpowers它解决了什么问题很多编辑器里的 AI 工具本质就是在侧边栏给你塞了一个聊天窗口。你复制代码贴进去它给你吐一段答案。这有用但很割裂——你得手动复制粘贴手动把结果搬回代码里稍不留神上下文就丢了。superpowers 不是这个思路。它的核心逻辑是不打断你写代码的流。它不是让你停下来去“问”而是直接在你的编辑器里针对你当前打开的文件、选中的代码段、甚至整个项目执行一系列预设好的“技能skills”。这些技能不是通用的对话模板而是专门为开发者日常高频场景设计的指令集。我举个最直观的例子。以前我想给一个函数补单元测试得先找到测试框架的写法再根据函数逻辑手写断言。用 superpowers 的 “Generate Unit Tests” 技能它会先分析你光标所在的方法或你选中的代码块理解它接收什么参数、返回什么结果、有哪些边界情况然后把一整套完整、可直接运行的测试代码直接生成出来。整个过程不需要你去描述需求它自己就知道该做什么。所以它解决的问题很明确把“写代码的意图”和“写代码的动作”之间的链路缩短。你只需要在关键节点上发出指令剩下的繁琐活它帮你干。1.2 它是怎么工作的看懂原理才能用得更好我拆解过它的实现机制其实并不神秘。它底层接的是 OpenAI 的 GPT-4o 或 Claude 3.5 这类大模型但在模型之上它做了一层非常关键的封装——把开发者写代码时的心智模型抽象成了若干可执行的“技能单元”。你可以在它的配置中心看到所有可用的技能清单比如“Generate Unit Tests”生成单元测试、“Explain Code”解释代码、“Find Problems”查找问题、“Generate Documentation”生成文档、“Improve Code”改进代码、“Check for Bugs”检查漏洞等等。每个技能背后都有一整套精心设计的提示词和交互流程它会自动收集你当前文件的上下文然后以特定的格式引导模型生成最贴合你需求的结果。这就像你请了一个助手你不是跟他说“你帮我看看这代码行不行”而是直接说“帮我写一份某某功能的测试用例”他知道该看哪些文件、该按什么格式输出、该考虑哪些边界条件。它不是一个只会聊天的 AI而是一个懂开发流程的 AI 助手。有意思的是这个项目本身是开源的你可以在 GitHub 上看到它的源码甚至可以自己扩展新的技能。这意味着它的能力边界不是固定的社区里已经有越来越多的人贡献了新的玩法。2. 核心技能拆解有哪些 skills每个能帮你干什么2.1 Generate Unit Tests不只是“生成测试”而是“理解逻辑后再设计测试”这个技能是我用的最多的。它内置在编辑器里之后你只要把光标放在某个函数上右键选择 “Superpowers: Generate Unit Tests”它就会开始工作。这里面的细节值得说一说。它不只是简单地把函数丢给模型说“写点测试”而是会先做一份“测试计划”。我观察过它的输出它会列出这个函数有哪些输入、哪些边界条件、哪些分支需要覆盖、Mock 哪些外部依赖然后才真正生成代码。比如你写了一个处理金额格式化的函数function formatCurrency(amount, currency USD) { const formatter new Intl.NumberFormat(en-US, { style: currency, currency, }); return formatter.format(amount); }它能识别出currency的默认值和amount的合法性边界然后生成包含非法参数、负数、小数点精度这些场景的测试用例。第一次用它生成测试时我惊呼“这比我工龄三年的同事考虑得还周全”。更贴心的是生成完之后它会问你要不要将测试文件保存到项目里。而且它会自动识别你的测试框架——你用的 Jest 它就生成 Jest 的写法你用的 Mocha 它就生成 Mocha 的写法。2.2 Explain Code从“这段代码干嘛的”到“这段代码为什么这么写”我在排查老项目代码的时候最头疼的就是看到一层套一层的回调函数或者一段满满魔法数字的判断逻辑。以前我会在浏览器里开个翻译页一点一点查。现在我用 superpowers 的 “Explain Code” 技能。它有两个模式很实用。一个是选中一段代码后让它解释这段代码具体在做什么——它会用自然语言给你拆解每一行是什么作用整体实现了什么功能。另一个是针对某一个函数深挖它的调用逻辑包括它被谁调用、它调用了谁、它在整个业务流程中处于什么位置。这个能力在做代码交接和新人入职时简直是核武器。我之前一个项目组来了个新同事我直接把核心模块发给他让他用 Explain Code 过一遍他比预期快了至少三天上手。2.3 Find Problems 和 Check for Bugs让 AI 当你的第一轮 code review写代码难免有疏忽但每次都要等人工 review 发现问题效率太低。superpowers 的排查类技能就是干这个的。“Find Problems” 更侧重于逻辑层面的问题——比如异步操作没有正确处理竞态条件、某个函数在特定输入下可能会崩溃、数组越界、空指针风险、未声明的变量等等。它不只看当前一段代码而是会分析整个文件内的相关逻辑。“Check for Bugs” 则更偏向于语法和语义层面的错误扫描。我实测过把一份故意留了几个 bug 的代码丢给它它找出来的问题相当精准。包括一个变量在赋值前就被引用、一个闭包导致的状态污染、参数顺序传反了这类人工 review 容易漏掉的问题。2.4 Generate Documentation 和 Improve Code把文档和重构的活也干了文档这个事儿很多开发者觉得麻烦、性价比低但团队协作里却很关键。用 “Generate Documentation” 技能你选中一个复杂函数它能帮你生成标准格式的 JSDoc 注释或者在文件头部生成一个说明当前文件功能、主要函数、使用方式的说明文档。内容准确度很不错因为它读的是你真实的代码逻辑不是凭空发挥。“Improve Code” 是我最期待的一个技能因为它直击开发者最关心的“怎么能写得更好”。它能识别出当前代码中的代码异味Code Smell——比如重复代码、过长函数、过深的嵌套、魔法数字然后给出具体的优化建议。你可以让它直接给出改进后的完整代码也可以让它分点告诉你问题在哪、建议怎么改由你来决定是否接受。3. 安装与引入指南一步步把超能力装进你的 VS Code3.1 准备工作确认环境依赖在开始之前你只需要准备两个核心东西VS Code和一个OpenAI API Key或者配置了 Claude 等模型的能力如果你用的是支持这些模型的服务商。VS Code 不用多说下载安装即可。OpenAI API Key 是必须的因为 superpowers 底层的模型调用是直接通过 API 走的。你可以在 OpenAI 的官网注册账号并创建 API Key。这个过程需要一点前置条件——比如需要能访问 OpenAI 的服务的网络环境。不过现在也有不少国内开发者通过一些替代方案来接入思路都是一样的就是把 API 地址和 Key 配置好就行。重要的是你要留意你的套餐额度superpowers 每个技能调用会消耗 tokens建议控制在可接受的试错范围内。为了让大家快速上手全网都在找的配置方式其实很简单。VS Code 左侧边栏点击扩展图标快捷键CtrlShiftX/CmdShiftX在搜索框输入 “superpowers” 进行搜索找到对应扩展后直接点击 Install 安装。注意目前官方渠道发布的是 VS Code 版本如果你是 JetBrains 系或者 Vim 用户暂时没有官方支持。不过它的核心协议和提示词数据集是公开的社区里已经有人在适配其他编辑器后面可能会有第三方支持。3.2 安装 Superpowers 扩展两种方式任选方式一通过扩展市场安装这是最简单的路径操作如下打开 VS Code使用快捷键CtrlShiftX打开扩展面板。在搜索栏输入 “superpowers”。找到开发者是 “ezuko” 或标识为 “Superpowers” 的扩展点击 Install。安装完成后侧边栏会出现一个 Superpowers 的专属图标那就是它的控制中心。点开它你会看到一个很简洁的界面顶部显示当前使用状态中间是技能列表的入口下方是设置项。方式二通过 GitHub 源码手动安装如果你在公司内网或者 VS Code 扩展市场访问不顺畅也可以走源码安装路线从 GitHub 上克隆 Superpowers 仓库到本地仓库地址是ezuko/superpowers你可以在 GitHub 上搜索到。进入目录后运行npm install在 VS Code 中打开这个项目目录File - Open Folder然后按F5启动 Extension Development Host 模式。这个模式会打开一个安装了当前扩展的临时 VS Code 窗口。这种方式适合想研究源码、想二次开发、或者面对特殊网络环境的用户。我最初就是通过这种方式在公司的内网环境里跑通的。3.3 配置 API Key让扩展能调用模型安装完扩展还不能直接用你需要配置 API Key。在 VS Code 里按CtrlShiftP打开命令面板输入 “Superpowers”会看到几个命令选择 “Superpowers: Set API Key”。它会弹出一个输入框你粘贴你的 API Key 进去回车确认。这个 Key 会被安全地存储在 VS Code 的本地配置中不会同步到你粘贴过代码的任何远程仓库。关于 Key 的管理有几个实操建议不要硬编码在代码里哪怕是你自己的私有库也尽量别在代码里写死 Key否则一旦仓库泄露别人就能白嫖你的额度。建议在配置里单独创建一个superpowers.json文件来保存 Key 和模型路由配置这样如果以后你想切换到不同模型Claude 或者本地推理模型只需要改这个文件就行。如果你有一定的安全保障需求可以把 Key 放在系统的环境变量里然后在配置中引用环境变量名。3.4 验证安装是否成功跑一个最简单的技能配置完之后怎么判断它已经能用了我推荐先跑一个轻量级的技能来验证。打开任意一个 JS 文件选中某一行代码右键选择 “Superpowers: Explain Code”。如果一切正常它会在一个侧边栏的面板里弹出解释内容告诉你这行代码做了什么、为什么这么写。如果没反应八成是 API Key 没配好或者网络无法正常访问 API。小技巧第一次运行时它可能会进行一次基础配置初始化用于设置模型参数等。如果你遇到弹窗提示“Superpowers extension will use the model: gpt-4o”直接点击接受即可。这也是它推荐的模型实测下来 gpt-4o 在代码类任务上综合表现最平衡速度快、质量稳定。4. 实操过程全记录我用 superpowers 真实完成了一次任务4.1 场景导入一个典型的“给老代码补测试”任务我手头有一个真实的需求在公司的支付模块里有一段处理优惠券折扣的代码逻辑比较绕涉及多个条件分支。因为历史原因这段代码没有对应的单元测试每次改动都提心吊胆生怕碰坏了某个边界条件。这段代码核心逻辑大概是这样的根据优惠券的类型满减、折扣、免邮、用户等级普通、会员、VIP、订单金额计算出最终优惠金额。不同组合下的优先级不同还有各种上限和下限约束。我决定用 superpowers 的 “Generate Unit Tests” 技能给这段“历史遗留代码”补上安全网。以下是我的完整实操记录。4.2 执行过程从选中代码到生成测试我先把光标点击到calculateDiscount这个函数名上然后打开命令面板快捷键CtrlShiftP输入 “Superpowers: Generate Unit Tests”回车执行。superpowers 并没有立即给我输出一大段代码而是先显示了几秒钟“Analyzing code structure...”的提示。这个环节是在读取整个函数及其上下文。然后它给出了一个简要的测试方案大致有# Test Plan 1. Test discount calculation for FULL_REDUCTION coupon type 2. Test discount calculation for DISCOUNT coupon type 3. Test discount calculation for FREE_SHIPPING coupon type 4. Test boundary conditions when order amount equals threshold 5. Test interaction with user level multiplier ...这个测试计划是可交互的你可以勾选你想让它生成哪几个场景或者直接全选让它在一次执行中全部生成。我勾选了全部场景然后它就开始基于计划逐条生成测试代码。最终它在一个侧边栏里展示完整代码并询问“要保存到./test/discount.test.js吗” 我点击“接受”它自动在我的项目里创建了测试文件并直接运行了测试。第一次跑完后测试结果是有两个用例失败的。因为我的代码里确实存在一个边界条件的隐患——当订单金额刚好等于满减阈值时判断条件写的是而不是导致刚好到达阈值时无法享受优惠。superpowers 生成的测试用例恰好覆盖了这个场景一下子就帮我暴露了一个隐藏了几个月的 bug。4.3 用 Explain Code 摸清老模块的底细接着我做第二步全面理解这个支付模块里几个核心函数的调用关系。我选中了applyDiscount函数执行 “Superpowers: Explain Code”。它输出的解释内容非常清晰不是简单的那几句“该函数用于计算折扣”而是分了三层函数职责负责根据传入的订单对象和用户对象计算出实际应付金额。关键逻辑拆解先判断优惠券是否存在再判断优惠券类型再调用calculateDiscount计算优惠额最后用订单金额减掉优惠额但设置了最低实付金额为 0。潜在风险点如果order或user为null代码会直接抛异常如果优惠券已过期但状态未更新会按正常券处理。这种解释方式对我的价值在于它不仅告诉你“代码干了什么”还提醒你“这里可能有什么坑”。这在我们做技术债清理、旧代码维护时是极为实用的。4.4 用 Find Problems 提前拦截线上事故然后我顺手对整个支付模块的文件执行了一次 “Superpowers: Find Problems”。其实我只是抱着试一试的心态结果它真的发现了一个值得警惕的问题。问题是关于浮点数计算的。代码里有这样一句const finalAmount orderAmount - discount;如果orderAmount和discount都是浮点数比如orderAmount19.9、discount5.3那么实际计算结果是14.599999999999998。这在支付场景下是不能接受的。看代码的时候容易忽略但它报出来之后我立刻就意识到了严重性。而且它还很贴心地给出了建议在计算金额时使用Math.round(amount * 100) / 100这种整数分处理或使用专门的 decimal 库。这是一个很能体现 superpowers 价值的例子它的人工智能不是替代你思考而是把你从“容易漏”的常规性审查中解放出来让你聚焦在更深层的问题上。4.5 用 Improve Code 做一次高质量重构参考在发现浮点数问题后我紧接着用了 “Improve Code” 技能看看它对于这段历史债务代码会给出什么改造建议。它返回的建议有好几条将魔法数字如折扣上限 100、最低实付 0提取为命名常量。将复杂的if-else分支重构为策略模式Strategy Pattern每种优惠券类型对应一个策略类。将计算和校验拆分为两个函数各司其职便于测试。金额统一用整数分存储和计算展示时再转小数。我并没有全盘照搬它的重构方案因为策略模式会让代码文件数量激增在团队内未必是最优解。但我采纳了“提取常量”和“金额用整数分”这两条改动量小、效果立竿见影。这就是我理想中的 AI 辅助不是给我一个黑盒方案而是给我一个决策依据和参考坐标。5. 常见问题与排查安装和使用中那些让人头秃的坑5.1 安装后一直转圈技能不执行这个我一开始也遇到过。可能的原因有三个第一API Key 没有正确配置或已经失效这种情况下你会在输出面板里看到 401 错误或 invalid api key 的提示。第二网络无法访问模型的 API 服务。第三VS Code 代理设置问题公司内网一般有代理但是 VS Code 扩展进程不一定走了代理。排查思路先打开 VS Code 的输出面板View - Output在下拉菜单里选 “Superpowers” 通道看具体的日志输出。如果是网络问题会有connect ETIMEDOUT或者fetch failed之类的关键字。如果代码里表现为一直转圈、没有任何返回八成就是网络访问不畅。这种情况可以先确认一下你当前的网络是否能正常访问 API 服务再确认 API Key 是否有效。5.2 提示 “Superpowers extension was built with the Superpowers CLI. To use Superpowers use...” 怎么办这个提示一般出现在扩展版本与 CLI 版本不匹配的情况下。它的意思是你这个扩展是基于某个版本的 Superpowers CLI 构建的但你现在可能用了一个不同版本的 CLI 去调用它。解决办法有两个忽略这个提示直接用扩展内置功能。如果你只用 VS Code 里的交互界面不依赖 CLI 命令那这个提示基本不影响使用。去 GitHub 拉取最新源码重新构建扩展。在项目目录里执行npm run build然后重新在 Extension Development Host 里加载。其实这个提示本身也透露了一个信息——Superpowers 本身有个配套的 CLI 工具专门用来在终端里跑一些批量任务比如给整个目录生成文档。不过 CLI 的配置稍微复杂一些对普通用户来说没必要优先搞它。5.3 tokens 消耗太快额度不够用这是个非常现实的问题。尤其是 “Improve Code” 和 “Generate Unit Tests” 这类技能它们会先做代码分析再生成结果中间会经历多轮 token 消耗。我实测下来处理一个中等复杂度的文件一次完整的技能调用大概会消耗 3000 到 8000 tokens具体取决于文件长度和模型。节省额度有几个实操技巧优先选择“解释类”技能如 Explain Code因为它们消耗远低于“生成类”技能如 Generate Unit Tests。不要对大文件直接全选执行先选中具体的函数或代码段缩小范围质量和速度都会更好。合理安排模型如果是 gpt-4o 太贵可以尝试换用 gpt-4o-mini如果支持的话速度快、成本低对于简单的解释和文档生成任务完全够用。5.4 生成的测试代码运行报错不是promise就是导入路径问题这需要注意的是生成代码是“无环境感知”的它只读取了你传递的函数本身并不会理解你项目里 module 的导入方式。比如你项目用的是 ESModule 规范但测试文件没有带上export语法就会导致导入失败。解决思路在生成时尽量让智能体了解你的构建形态。你可以先让 “Explain Code” 展示它分析的内容确认是否包含了模块导入信息如果没有在技能执行时补一句“使用 ESModule 导入方式生成”这类明确指令。Superpowers 支持在执行技能时附加自定义提示词这个功能很实用不要忽视。5.5 扩展无法识别某些框架的语法尤其是 Vue 或 TSX这是扩展当前的一个边界。superpowers 对原生 JavaScript 和 TypeScript 的支持很流畅但如果遇到.vue文件中的模板部分或者比较复杂的 JSX 嵌套它提取代码段的能力就会弱一些会发生识别不完整、上下文丢失的情况。我的经验是如果是.vue文件尽量选中script块内的逻辑把模板部分排除在外。如果是.tsx文件把组件函数整体选中它处理 JSX 语法的能力其实尚可但嵌套特别深的类型推导偶尔会糊涂需要你自己把类型定义文件打开并让技能感知到。6. 从“能用”到“好用”我的进阶使用心得6.1 把重复的技能动作绑定成快捷键用熟了之后每次右键找技能还是有点繁琐。我后来把几个高频动作绑定成了自定义快捷键。具体方法是打开 VS Code 的键盘快捷键设置CtrlK CtrlS搜索 “Superpowers”可以把 “Generate Unit Tests” 绑定为CtrlAltT把 “Explain Code” 绑定为CtrlAltE。这个小改动极大提升了我的使用频率。以前要右键、选菜单、等结果现在按一下组合键就完事感觉真的像有了超能力。6.2 自定义技能做出你自己的专属助手superpowers 的可扩展性是我最喜欢它的一点。在它的源码层级里技能定义其实就是一组 YAML 文件和 Markdown 提示词模板。你可以自己定义一个新的技能比如“生成 SQL 建表语句”或者“将 Python 代码转成 Go 代码”。具体做法可以参考官方 README 里的“Contribute a Skill”章节。简单来说你需要在技能目录下创建一个新文件夹里面包含一个描述文件和一个提示词模板文件提示词模板里可以引用来自当前文件的变量。这对于团队内部分享最佳实践和规范非常有价值。比如我们团队后端有一个统一的错误码规范我把它做成了一个技能以后任何人在编辑器里选中一段代码就能直接生成符合规范的错误码定义。6.3 结合团队协作让 AI 写的测试更符合团队风格团队协作时代码风格的一致性很重要。superpowers 生成的代码默认是通用风格未必跟你们团队的 eslint 或 prettier 配置完全一致。解决方式是在你的项目根目录里放一个.superpowersrc文件里面可以定义你的团队偏好。这个配置文件的语法我在这里不展开但你可以指定类似这样的规则“测试函数命名使用中文描述 long 文本”或者 “测试文件统一放到__tests__目录下”。这个文件会被技能自动读取在生成时引导模型输出贴合你团队风格的代码。这是我目前最推荐团队使用者去尝试的一个功能它能显著减少 AI 生成内容后的人工调整成本。7. 最后想聊点大实话7.1 别神话它也别低估它superpowers 就像是一个特别靠谱的初级开发同事——你给它一个明确任务它能做得又快又好但它不能完全替代你对系统的理解和架构判断。它生成的代码如果你自己逻辑都拎不清那 AI 生成的代码大概率也是空中楼阁。你需要具备的基础能力一点不能少你要能看懂它生成的是什么、知道为什么这么写、有能力发现它偶尔的小聪明和错误。7.2 我个人的使用心得它是“高杠杆率”的工具如果你问我要不要花时间学它我的答案是花半天时间试一下绝对值得。这个工具最大的杠杆效应在于它帮你把很多“不需要深度思考但必须仔细执行”的任务自动化了。我过去一周里如果用传统方式手动给那段支付模块补全测试、排查问题、生成文档估计得花至少两天时间。而 superpowers 在半小时内就全部完成了而且还额外帮我发现了隐藏 bug。7.3 后续还能怎么扩展这个方向我觉得很有潜力后续可以做的还有很多。比如你可以让技能直接生成 CI/CD 的配置片段或者把常见的代码规范检测做一个专门的技能库。开源项目的价值就在于它给了所有人一个起点而不是一个终点。我已经开始自己写新的技能了那种“把我的团队规范变成所有人的超能力”的感觉还挺上头的。最后再分享一个小技巧如果你在一个不熟悉的代码仓库里刚上手先用 superpowers 把整个目录的核心入口文件跑一遍 Explain Code你会比看半天 README 更快搞清楚这个项目的骨架。这个技巧帮我省下了好几次通宵加班。