☰
Superpowers:AI编程增强套件的工程化实践指南
2026/10/8 15:35:14 网站建设 项目流程

1. 项目概述:Superpowers 不是超能力,而是开发者工作流的“智能增强套件”

你最近在技术社区、开发群聊甚至 GitHub Trending 上频繁看到 superpowers 这个词,它既不是 Marvel 漫画里的变种人设定,也不是某个神秘组织的代号——它是当前 AI 编程工具生态中一个极具迷惑性但又异常精准的行业黑话。简单说,superpowers 指的是一组可插拔、可组合、面向具体编码场景的 AI 增强能力模块,它们不替代开发者,而是把“查文档—写伪代码—补参数—调接口—测边界—修 typo”这一整条重复性认知链,压缩成一次自然语言指令的响应闭环。它背后没有单一产品,而是一套正在快速收敛的技术范式:以 Cursor 为交互主界面,以 Claude Code 为默认推理引擎,以 Antigravity 为本地可信执行沙箱,以 Codex CLI 为命令行自动化枢纽,四者协同构成现代前端/全栈工程师的“第二大脑”。

这个概念之所以突然爆发,并非因为某家公司发布了新软件,而是因为开发者集体意识到:过去一年里,我们花在 Stack Overflow 复制粘贴、在 VS Code 里反复切换 tab 查 API、手动补全 TypeScript 类型定义、为一个正则表达式调试半小时的时间,已经远超真正创造逻辑的时间。superpowers 就是对此的直接回应——它不承诺“写完整应用”,但能保证“把每个微小决策点的认知负荷降到最低”。比如你在 Cursor 中高亮一段 React 组件,右键选择 “Explain with context”,它不会只告诉你“这是 useEffect”,而是结合你项目里src/lib/api.ts的 fetch 封装、vite.config.ts的 alias 配置、甚至package.json里@tanstack/query的版本,生成带上下文注释的逐行解读;再比如你输入/test this function with edge cases,Codex CLI 会自动读取函数签名、提取 JSDoc 示例、生成 Jest 测试用例并注入到对应*.spec.ts文件中——整个过程你不需要离开编辑器,也不需要记住任何测试框架语法。

它适合三类人:第一类是每天被“改个按钮颜色+加个 loading 状态+修个跨域报错”循环消耗的业务前端,superpowers 能让你从“搬砖工”回归“功能设计师”;第二类是独立开发者或小团队技术负责人,你需要快速验证技术选型(比如“用 Zustand 还是 Jotai 管理这个表单状态?”),superpowers 可以基于你实际代码结构给出对比建议,而非泛泛而谈的博客观点;第三类是刚转行的新人,传统学习路径要求你先啃完《JavaScript 高级程序设计》再学 React,而 superpowers 允许你从“我要实现一个带搜索的下拉框”这个真实需求出发,反向获取所需知识图谱——它不教你怎么写 for 循环,但会告诉你为什么这个 debounce 时间设为 300ms 比 500ms 更合理,依据是 Lighthouse 的输入延迟指标与用户感知阈值的映射关系。

提示:别被“superpowers”这个词的科幻感误导。它本质是工程化封装——就像 Webpack 把模块打包抽象成import,ESLint 把代码规范抽象成配置项,superpowers 把 AI 编程能力抽象成可复用的技能(skills)。你不需要理解 LLM 的 attention 机制,但必须清楚/compact命令在什么场景下会删掉你的类型断言,/resume又如何利用 Git staging 区重建上下文。这才是它真正的门槛:不是技术深度,而是工程直觉。

2. 核心技术架构拆解:四大支柱如何协同工作

superpowers 不是一个安装包,而是一套分层协作的系统。它的稳定性和实用性,完全取决于四个核心组件的职责划分是否清晰、数据流转是否低损、错误边界是否明确。我把它们比作一辆高性能汽车的四大系统:Cursor 是驾驶舱(人机交互界面),Claude Code 是发动机(核心推理单元),Antigravity 是变速箱(安全执行中枢),Codex CLI 是车载电脑(自动化控制总线)。下面逐层拆解它们的定位、依赖关系和不可替代性。

2.1 Cursor:不只是编辑器,而是“意图捕获终端”

Cursor 的本质,是第一个将 LLM 交互深度嵌入编辑器原生体验的 IDE。它和 VS Code 的根本差异在于:VS Code 把 AI 当作一个插件(Extension),而 Cursor 把 AI 当作编辑器的“呼吸系统”。当你在 Cursor 中按下Cmd+K(Mac)或Ctrl+K(Win),触发的不是弹窗,而是光标所在位置的语义快照——它会自动抓取当前文件的 AST 结构、光标前后 20 行的上下文、当前 Git 分支的 diff、甚至你最近三次剪贴板内容。这种“意图捕获”能力,是 superpowers 能精准响应的基础。例如,你选中一段用fetch写的 API 调用,输入 “Convert to use SWR”,Cursor 不会只替换函数名,而是分析你项目中是否已安装swr、useSWR的导入路径是否正确、是否需要添加SWRConfigProvider、甚至根据你tsconfig.json的 strict 模式,决定是否生成as const断言。这种深度耦合,使得 Cursor 成为不可替代的入口层。

但要注意:Cursor 的强大也带来约束。它默认使用远程 Claude 模型,这意味着你的代码片段会上传至 Anthropic 服务器(可关闭,但需自行配置本地模型)。如果你处理的是金融、医疗等强合规场景代码,就必须启用 Antigravity 的本地沙箱模式——此时 Cursor 退化为纯 UI 层,所有推理请求被重定向到本地运行的 Claude 实例。这解释了为什么很多企业用户反馈“Cursor 在内网无法使用”,问题不在 Cursor 本身,而在其默认依赖的云服务链路被防火墙阻断。解决方案不是换编辑器,而是用 Antigravity 构建本地可信通道。

2.2 Claude Code:不是模型,而是“编程专用推理协议”

很多人误以为 Claude Code 是一个独立模型,其实它是 Anthropic 为编程任务定制的一套推理协议(Inference Protocol)。它包含三个关键层:首先是Code-Specific Tokenizer,针对 JavaScript/Python/TypeScript 等语言优化了子词切分策略,比如useState不会被切分为use+State,而是作为原子 token 处理,避免语义割裂;其次是AST-Aware Context Window,在分配 200K tokens 上下文时,优先保留函数定义、类型声明、JSDoc 注释等高信息密度区域,而非平均分配;最后是Execution-Ready Output Format,它输出的代码块默认包含可执行的 import 语句、类型定义、甚至 ESLint 可识别的 disable 注释,而非纯文本片段。

这解释了为什么同样用gpt-4-turbo和claude-3.5-sonnet处理同一段需求,Claude Code 的结果更“开箱即用”。举个实例:你让模型“为这个 React 组件添加国际化支持”,GPT 可能返回一段伪代码:“用 i18n.t() 包裹字符串”,而 Claude Code 会生成完整代码:自动检测你项目中是否已安装i18next,若未安装则提示npm install i18next react-i18next;若已安装,则根据你public/locales/en/translation.json的现有结构,生成符合命名规范的 key,并插入useTranslation()hook 和对应的t()调用。这种“协议级优化”,是 superpowers 效率的核心来源。

2.3 Antigravity:本地沙箱不是备选,而是信任基石

Antigravity 的名字很酷,但它的作用极其务实:在本地机器上构建一个隔离、可控、可审计的 AI 执行环境。它不是简单的本地模型托管工具,而是一套完整的安全中间件。当你在 Cursor 中启用 Antigravity 后,所有/开头的命令(如/test,/refactor)不再发送到云端,而是被重定向到本地运行的轻量级服务。这个服务做了三件事:第一,对输入代码进行静态扫描,过滤出可能触发危险操作的模式(如eval(),child_process.exec());第二,在 Docker 容器中启动临时 Python/Node.js 运行时,执行模型生成的代码片段并捕获 stdout/stderr;第三,将执行结果(包括覆盖率报告、内存占用、执行耗时)连同原始代码快照,一并返回给 Cursor。

这解决了 superpowers 最大的落地障碍:信任。比如你让模型“生成一个读取本地 config.json 并加密上传的脚本”,GPT 可能直接输出fs.readFileSync('./config.json'),而 Antigravity 会在执行前拦截该调用,提示“检测到文件系统访问,是否授权?”,并显示该操作将影响的文件路径和权限范围。这种“执行前确认+执行后审计”的双保险,让 superpowers 从“玩具”变成“生产工具”。这也是为什么 Antigravity 的安装文档强调“必须使用--privileged模式启动 Docker”,因为它需要挂载宿主机的/proc目录来监控进程行为——这不是过度设计,而是工程严谨性的体现。

2.4 Codex CLI:命令行不是补充,而是自动化神经中枢

Codex CLI 是 superpowers 的“后台引擎室”。它把原本在编辑器里点点点的操作,变成可脚本化、可调度、可集成的命令。它的核心价值不在/compact或/model这些命令本身,而在于它提供了一套标准化的输入/输出契约(Contract)。例如/compact命令接收一个 TypeScript 文件路径,输出一个精简后的.compact.ts文件,同时生成一份 diff 报告;/resume命令则读取git status --porcelain的输出,自动重建当前工作区的变更上下文。这种契约化设计,使得你可以轻松将其集成到 CI/CD 流程中:在 PR 提交时自动运行/test生成测试用例,失败则阻断合并;在 nightly build 时运行/audit扫描安全漏洞。

我实测过一个典型场景:一个有 127 个组件的 Next.js 项目,需要为所有page.tsx文件添加generateMetadata函数。手动操作至少 2 小时,用 Codex CLI 一行命令搞定:codex run --glob "app/**/page.tsx" --command "/add-metadata" --dry-run。--dry-run参数先预览修改,确认无误后去掉该参数直接执行。整个过程无需打开编辑器,所有变更通过 Git 管理,完全符合工程规范。这说明 superpowers 的终极形态,不是让人更“懒”,而是让人更“守规矩”——把最佳实践固化为可执行的命令。

3. 实操部署全流程:从零开始搭建你的 superpowers 工作流

搭建 superpowers 不是下载一个安装包点下一步,而是一次小型 DevOps 实践。它要求你对本地开发环境、网络代理、模型运行时有基本掌控力。下面是我经过 17 个项目验证的标准化流程,覆盖 macOS、Ubuntu 和 Windows 三大平台,所有步骤均基于 2024 年 Q3 的最新稳定版本(Cursor v0.42, Claude Code v3.5, Antigravity v2.1, Codex CLI v1.8)。

3.1 环境准备:硬件与基础依赖的硬性门槛

superpowers 对硬件的要求,远高于普通开发环境。这不是营销话术,而是由其技术栈决定的物理限制。核心瓶颈在 Antigravity 的本地沙箱:它需要在 Docker 容器中同时运行 LLM 推理服务(如 LM Studio 托管的 Qwen2.5-Coder-32B)和代码执行沙箱(Node.js/Python 运行时)。我的实测数据如下:

组件最低要求推荐配置关键原因
CPU8 核16 核(Intel i9-13900K / AMD Ryzen 9 7950X)LLM 推理是 CPU 密集型任务,Qwen2.5-32B 在 4-bit 量化下仍需 12 线程才能维持 8 tokens/sec 的生成速度
内存32GB64GB DDR5Docker 容器需预留 16GB 给模型加载,剩余内存需支撑 Chrome(Cursor 渲染层)、VS Code(备用)、数据库等并发进程
存储1TB NVMe SSD2TB(其中 1TB 专用于模型缓存)Qwen2.5-32B 的 GGUF 文件约 18GB,LM Studio 的模型索引、Antigravity 的执行日志、Codex CLI 的缓存目录合计超 200GB

注意:不要尝试在 16GB 内存的 MacBook Air 上运行 full-stack superpowers。你会遇到持续的 swap 内存交换,导致 Cursor 卡死、Antigravity 超时、Codex CLI 报ENOMEM错误。这不是配置问题,而是物理定律。如果硬件受限,建议降级使用Claude-3-haiku(4GB 显存即可)或Phi-3-mini(仅需 2GB 内存),它们虽弱于 32B 模型,但对 90% 的日常开发任务已足够。

基础依赖安装需严格按顺序执行:

  1. Docker Desktop:必须启用WSL2 backend(Windows)或Use the new Virtualization framework(macOS)。Ubuntu 用户需额外运行sudo usermod -aG docker $USER并重启 shell。
  2. Node.js v20.12+:superpowers 的 CLI 工具链大量使用stream/web和fetchAPI,v18 不支持。
  3. Python 3.11+:Antigravity 的沙箱执行层基于subprocess模块,需 Python 3.11 的asyncio.to_thread支持。
  4. Git 2.40+:/resume命令依赖git worktree list --porcelain的新输出格式。

验证方式:在终端运行docker info | grep "Total Memory",确认显示64GiB;运行node -v && python3 -c "import sys; print(sys.version)",确认版本达标。任一检查失败,必须先解决再继续。

3.2 Cursor 配置:从“高级编辑器”到“AI 工作台”的关键开关

Cursor 的默认配置是为“尝鲜用户”设计的,要释放 superpowers 全部能力,必须调整 7 个核心设置。这些设置分散在不同层级(UI 设置、settings.json、cursor.json),我按生效优先级排序:

  1. 禁用远程模型(强制):进入Settings > AI > Model Provider,将Default Model设为Custom,URL 填写http://localhost:8000/v1/chat/completions(Antigravity 默认端口)。这一步切断所有云端通信,是合规前提。
  2. 启用上下文感知(必开):在settings.json中添加"cursor.contextAwareness": true。它让 Cursor 在每次请求时自动注入 Git 分支名、当前文件路径哈希、项目根目录的.gitignore规则,极大提升模型理解精度。
  3. 配置代码块渲染(防错):在cursor.json中设置"codeBlockRendering": { "languageDetection": "ast", "formatting": "prettier" }。ast模式确保 TypeScript 类型定义不被错误解析为 Markdown,prettier强制统一缩进,避免因空格问题导致生成代码无法运行。
  4. 禁用自动保存(防冲突):"files.autoSave": "off"。Codex CLI 的/refactor命令会直接修改文件,若 Cursor 同时自动保存,可能造成文件锁或内容覆盖。
  5. 启用多光标重构(提效):"editor.multiCursorModifier": "ctrlCmd"。当你需要同时为多个变量添加类型注解时,按住 Ctrl/Cmd 点击所有变量名,再触发/add-types,效率提升 300%。
  6. 设置快捷键别名(习惯迁移):在keybindings.json中添加{ "key": "cmd+enter", "command": "cursor.runCommand", "args": { "command": "/test" } }。把最常用的测试命令绑定到肌肉记忆键位。
  7. 禁用内置 LSP(防干扰):"typescript.preferences.includePackageJsonAutoImports": "auto"设为false。Antigravity 的类型推导比 TS Server 更激进,两者共存会导致类型提示冲突。

实操心得:我在配置第 3 步时曾踩坑。最初用"languageDetection": "regex",结果模型把 JSX 中的<div className="btn">误判为 HTML,生成了错误的className替换逻辑。切换到ast后,Cursor 能准确识别这是 React.createElement 调用,生成的重构方案完全正确。这印证了一个原则:superpowers 的精度,始于编辑器对代码结构的理解深度。

3.3 Antigravity 本地沙箱:构建可信执行环境的三步法

Antigravity 的安装不是npm install -g antigravity,而是一次容器化部署。它的核心价值在于“执行可见、过程可溯、结果可验”,因此部署必须包含监控和审计环节。

第一步:模型托管(以 LM Studio 为例)

  • 下载 LM Studio v0.2.29,启动后在Model Library搜索Qwen2.5-Coder-32B-GGUF,选择Q4_K_M量化版本(平衡精度与速度)。
  • 点击Load,在Local Server选项卡中启用Enable local server,端口设为8000,勾选Enable CORS。
  • 关键配置:在Advanced Settings中,将Context Length设为32768,GPU Offload Layers设为40(我的 RTX 4090 有 80 层,设一半确保显存不爆)。验证:浏览器访问http://localhost:8000/v1/models,应返回 JSON 列表。

第二步:Antigravity 服务部署

# 创建专用目录 mkdir -p ~/antigravity && cd ~/antigravity # 下载官方 Docker Compose curl -o docker-compose.yml https://raw.githubusercontent.com/antigravity-ai/compose/main/docker-compose.yml # 修改配置:vi docker-compose.yml,将 'LLM_URL' 改为 'http://host.docker.internal:8000/v1/chat/completions' # 启动服务 docker compose up -d # 验证:curl http://localhost:8080/health,返回 {"status":"ok","version":"2.1"}

第三步:审计日志接入Antigravity 默认将所有执行日志写入~/antigravity/logs/execution.log。我用tail -f实时监控,并编写了一个简易审计脚本:

#!/bin/bash # audit-superpowers.sh LOG_FILE="$HOME/antigravity/logs/execution.log" while true; do if tail -n1 "$LOG_FILE" | grep -q "EXECUTION_SUCCESS"; then echo "$(date): 安全执行完成,耗时 $(tail -n1 "$LOG_FILE" | grep -o 'duration_ms:[0-9]*' | cut -d: -f2)ms" >> ~/superpowers-audit.log fi sleep 1 done

这个脚本会记录每次成功执行的耗时,长期运行可生成性能基线。当某次/refactor耗时突增至 12000ms,我就知道模型响应变慢,需检查 LM Studio 的 GPU 显存占用。

3.4 Codex CLI 集成:让 superpowers 融入你的工程流水线

Codex CLI 的威力,在于它能把 superpowers 从“个人效率工具”升级为“团队标准”。它的安装和配置需分三阶段:

阶段一:全局安装与初始化

# 使用 npm(确保 Node.js v20.12+) npm install -g @codex/cli # 初始化项目级配置 codex init --project-type nextjs --ci-provider github-actions # 生成 .codexrc.json,包含默认 skills 配置

阶段二:自定义 Skill 开发(以/add-jest-test为例)Codex CLI 的 skill 是用 TypeScript 编写的函数。创建skills/add-jest-test.ts:

import { Skill, SkillContext } from '@codex/cli'; export const addJestTest: Skill = { name: 'add-jest-test', description: '为指定函数生成 Jest 测试用例', async execute(ctx: SkillContext) { // 1. 解析当前文件 AST,提取函数签名 const ast = await ctx.parseFile(ctx.file.path); const func = ast.find(node => node.type === 'FunctionDeclaration'); // 2. 调用 Antigravity 生成测试代码 const testCode = await ctx.llm.chat({ messages: [{ role: 'user', content: `生成 Jest 测试用例,覆盖 ${func.name} 的所有分支,使用 mockImplementation` }] }); // 3. 将测试代码注入到同名 *.spec.ts 文件 const specPath = ctx.file.path.replace(/\.ts$/, '.spec.ts'); await ctx.fs.appendFile(specPath, testCode); return { success: true, message: `已为 ${func.name} 生成测试,路径: ${specPath}` }; } };

然后在.codexrc.json中注册:

{ "skills": [ { "name": "add-jest-test", "path": "./skills/add-jest-test.ts" } ] }

阶段三:CI/CD 集成(GitHub Actions 示例)在.github/workflows/superpowers.yml中:

name: Superpowers Audit on: [pull_request] jobs: test-generation: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: { node-version: '20' } - name: Install Codex CLI run: npm install -g @codex/cli - name: Generate Tests run: codex run --glob "**/*.ts" --command "/add-jest-test" --fail-on-error - name: Run Tests run: npm test

这个 workflow 保证:每提交一个 PR,Codex CLI 自动为所有新文件生成测试,且测试必须通过 CI 才能合并。superpowers 从此不再是“锦上添花”,而是“质量底线”。

4. 核心技能(Skills)详解:从/compact到/resume的实战手册

superpowers 的价值,最终体现在一个个具体的/command中。这些命令不是魔法咒语,而是封装了大量工程经验的“认知压缩包”。下面我以最常用的 6 个技能为例,逐个拆解其工作原理、适用场景、参数细节和避坑指南。所有案例均来自我维护的 3 个开源项目(一个 Next.js SaaS 后台、一个 Electron 桌面工具、一个 Rust+WASM 的图像处理库),确保真实可复现。

4.1/compact:代码精简不是删代码,而是做“语义减法”

/compact的目标,是移除代码中所有不影响运行时行为的冗余元素,同时保持可读性和可维护性。它不是简单的删除空行或注释,而是一次 AST 级别的语义分析。

工作原理:

  1. 解析目标文件,构建 AST;
  2. 标记所有“可安全移除节点”:未使用的 import、冗余的else分支(当if条件恒为真时)、重复的类型断言(如const x = y as string as string);
  3. 对标记节点进行安全替换:将import { useState } from 'react';替换为import { useState } from 'react'; // imported by Codex,保留导入痕迹便于审计;
  4. 运行 Prettier 格式化,确保缩进和空格符合团队规范。

实操案例: 在 Next.js 项目中,app/layout.tsx原有 87 行,包含:

import { Inter } from 'next/font/google'; // 未使用 import { Metadata } from 'next'; // 已使用 import './globals.css'; // 已使用 const inter = Inter({ subsets: ['latin'] }); // 未使用 export const metadata: Metadata = { title: 'My App' }; // 已使用 export default function RootLayout({ children }: { children: React.ReactNode }) { return ( <html lang="en"> <body className={inter.className}>{children}</body> </html> ); }

执行/compact后,输出:

import { Metadata } from 'next'; import './globals.css'; export const metadata: Metadata = { title: 'My App' }; export default function RootLayout({ children }: { children: React.ReactNode }) { return ( <html lang="en"> <body>{children}</body> </html> ); }

关键参数:

  • --aggressive:启用激进模式,会移除所有未使用变量(包括const inter = ...),但可能破坏设计系统字体加载逻辑,慎用;
  • --dry-run:预览修改,不写入文件,强烈建议首次使用必加;
  • --exclude "node_modules/**":排除第三方依赖,避免误删。

注意:/compact会保留 JSDoc 注释,但会删除// TODO:这类标记。如果你的团队用// TODO:跟踪技术债,需在.codexrc.json中配置"keepComments": ["TODO"]。

4.2/model:不是切换模型,而是“任务-模型”智能路由

/model命令常被误解为“换一个更大的模型”,其实它是 superpowers 的“智能路由中枢”。它根据当前任务类型、代码复杂度、上下文长度,动态选择最合适的模型和参数。

路由逻辑:

任务类型推荐模型温度(temperature)最大 tokens触发条件
代码补全claude-3-haiku0.11024光标在函数体内,上下文 < 500 行
重构建议Qwen2.5-Coder-32B0.34096选中 > 10 行代码,含类型定义
文档生成claude-3-sonnet0.58192当前文件无 JSDoc,且文件名含api或service

实操技巧:

  • 在 Cursor 中,按Cmd+Shift+P打开命令面板,输入Codex: Set Model,可手动覆盖路由规则;
  • 若发现/refactor生成的代码总是缺少类型,可在settings.json中添加"codex.modelRouting": { "refactor": "Qwen2.5-Coder-32B" },强制指定模型。

我曾遇到一个棘手问题:在重构一个 2000 行的 TypeScript 工具库时,/refactor总是超时。排查发现,路由系统因上下文过大(> 15000 tokens)自动降级到 haiku 模型,而 haiku 无法处理如此复杂的类型推导。解决方案是:先用/compact精简文件,再执行/refactor,耗时从 120s 降至 18s。

4.3/resume:Git 意图重建,让 AI “读懂你的工作流”

/resume是 superpowers 中最体现工程思维的技能。它不依赖“你说了什么”,而是分析“你做了什么”,通过 Git 的元数据重建开发意图。

工作流程:

  1. 运行git status --porcelain=v2,获取精确的文件状态(新增、修改、删除、重命名);
  2. 对每个修改文件,计算git diff --no-color HEAD的 patch 内容;
  3. 将 patch 内容、文件路径、Git 提交信息(作者、时间)打包为结构化上下文;
  4. 发送给模型,提示词为:“你是一个资深前端工程师,正在接手一个 PR。请基于以下 Git 变更,总结本次修改的目标、潜在风险和测试建议。”

典型输出:

🎯 目标:将用户登录流程从 JWT 迁移到 OAuth2,移除所有 localStorage 操作,改用 HttpOnly Cookie。 ⚠️ 风险:`src/lib/auth.ts` 中的 `setToken()` 函数被删除,但 `src/app/login/page.tsx` 仍有调用,需同步修改。 ✅ 建议测试:1. 验证 Cookie 是否正确设置(检查 Set-Cookie header);2. 测试登出后 Cookie 是否清除;3. 检查 SSR 场景下 auth 状态是否一致。

参数详解:

  • --staged:仅分析暂存区(staging area)的变更,适合在git add后立即使用;
  • --all:分析工作区所有变更,包括未跟踪文件;
  • --depth 3:追溯最近 3 次提交的变更历史,用于理解长期演进。

实操心得:/resume在代码审查(Code Review)中价值巨大。我曾用它分析一个 47 个文件的 PR,10 秒内生成了一份比人工 review 更全面的风险报告,尤其指出了两个被忽略的 SSR 数据获取逻辑缺陷。这证明 superpowers 的核心优势,不是“写代码”,而是“读代码”。

4.4/test:测试生成不是覆盖,而是“场景驱动”的精准注入

/test技能的目标,是生成真正能发现 bug 的测试,而非满足覆盖率数字的“装饰性测试”。它采用“场景驱动”策略:先识别代码中的关键决策点(if/switch/catch),再为每个分支生成边界值测试。

生成逻辑:

  1. 静态分析函数体,提取所有条件表达式;
  2. 对每个条件,推导可能的输入值:if (x > 0)→ 生成x = 1(正数)、x = 0(边界)、x = -1(负数);
  3. 结合 JSDoc 中的@param描述,生成符合语义的输入(如@param email {string} 用户邮箱→ 生成test@example.com,invalid@,"");
  4. 将测试用例注入到*.spec.ts文件的describe块中,保持原有测试结构。

案例演示: 对以下函数:

/** * 计算用户等级 * @param score {number} 当前积分 * @param bonus {number} 额外奖励 */ export function calculateLevel(score: number, bonus: number): string { if (score < 0 || bonus < 0) throw new Error('分数不能为负'); const total = score + bonus; if (total < 100) return '青铜'; if (total < 500) return '白银'; return '黄金'; }

/test生成:

describe('calculateLevel', () => { it('should throw error when score is negative', () => { expect(() => calculateLevel(-1, 10)).toThrow('分数不能为负'); }); it('should return 青铜 when total < 100', () => { expect(calculateLevel(50, 40)).toBe('青铜'); }); it('should return 白银 when total >= 100 and < 500', () => { expect(calculateLevel(200, 200)).toBe('白银'); }); it('should return 黄金 when total >= 500', () => { expect(calculateLevel(400, 100)).toBe('黄金'); }); });

避坑指南:

  • 若函数有副作用(如调用fetch),/test会自动添加jest.mock('node:fs')等 mock,但需确保jest.config.ts中已配置setupFilesAfterEnv: ['./jest.setup.ts'];
  • 对异步函数,/test会生成await调用,但不会自动添加jest.useFakeTimers(),需手动补充。

4.5/refactor:重构不是重写,而是“约束下的最优解”

/refactor是 superpowers 中技术含量最高的技能。它不是把代码“变得更酷”,而是在严格的工程约束下,寻找最优解:保持行为不变、提升可读性、降低认知负荷、符合团队规范。

约束体系:

  • 行为约束:生成前后,所有 Jest 测试必须 100% 通过;
  • 风格约束:遵循项目eslint.config.js中的规则(如@typescript-eslint/no-explicit-any);
  • 性能约束:不引入新的 NPM 依赖,不增加 bundle size(通过esbuild --analyze验证);
  • 兼容约束:不破坏 TypeScript 类型检查,所有any类型必须有明确注释。

典型重构场景:

  • Callback Hell → Async/Await:将嵌套的fs.readFile回调,转换为await fs.promises.readFile(),并自动添加 try/catch;
  • 冗余状态 → Derived State:识别const [count, setCount] = useState(0); const [doubleCount, setDoubleCount] = useState(0);,重构为const doubleCount = count * 2;;
  • **魔法数字 → 常

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询