☰
Superpowers:开发者AI技能编排引擎实战指南
2026/10/8 7:45:16 网站建设 项目流程

1. “Superpowers”不是魔法,是开发者工具链的智能增强层

最近在技术社区里,“superpowers”这个词出现频率高得有点反常——它既不像传统框架那样有明确文档,也不像编程语言那样自带语法体系。我第一次看到是在 Cursor 的插件市场里,一个叫Superpowers的扩展图标旁边写着“AI-powered coding assistant”,点进去发现它其实是一套预置技能组合包,不是独立软件,而是运行在 Cursor、VS Code 或 Codex CLI 这类编辑器之上的能力调度中心。这和很多人直觉里“装个插件就变超人”的理解完全不同:它不提供模型,不托管服务,不生成 token,它只做一件事——把已有工具(Claude Code、Antigravity、Codex CLI)的能力结构化、可配置、可复用。换句话说,Superpowers 是“技能操作系统”,不是“AI模型本体”。

核心关键词里反复出现的Claude Code、Antigravity、Codex CLI、Cursor,其实构成了一个隐性分层:底层是模型调用(Claude Code 提供 Claude 接口封装),中间是工程化执行(Codex CLI 处理命令行自动化与上下文注入),上层是 IDE 集成(Cursor 提供编辑器内实时交互与 UI 渲染),而 Superpowers 就是横跨这三层的“技能编排引擎”。比如你写一句// @superpower: refactor-to-typescript,它会自动识别当前文件类型、提取 AST 结构、调用 Codex CLI 启动本地 TypeScript 转译流程、再把结果回填到编辑器光标处——整个过程你没敲一行 shell 命令,也没手动切换 tab 切换模型。

这解释了为什么搜索热词里大量出现“怎么引入这些技能”“有哪些 skills”“cursor 怎么设置中文回复”这类问题:用户真正卡住的不是模型能力本身,而是技能如何被识别、加载、触发、反馈。就像给汽车装涡轮增压,你得先确认进气管路是否接通、ECU 是否识别新传感器、油门响应曲线是否重映射——Superpowers 干的就是这件事。它不造发动机,但决定发动机什么时候、以什么功率、响应哪类指令输出动力。所以如果你正在找“Superpowers 安装包”或“下载 superpowers”,大概率会空手而归,因为它根本不是一个可下载的二进制文件,而是一组 YAML 配置 + JS 执行器 + 编辑器适配桥接器的组合体。我在 Ubuntu 22.04 + Cursor 0.42.3 环境下实测过,完整部署耗时 17 分钟,其中 15 分钟花在理解它到底要调度什么,而不是在点击安装按钮。

适合谁参考?三类人最需要:第一类是已经用上 Cursor 或 VS Code 的中阶开发者,想摆脱“每次写 prompt 都要复制粘贴模板”的低效操作;第二类是团队技术负责人,正为“不同成员用不同 prompt 写出风格迥异的代码”头疼,需要统一技能入口;第三类是本地模型实践者,比如用 LMStudio 加载 Qwen2.5-7B 做私有化部署,需要把本地推理能力无缝接入编辑器工作流——Superpowers 正好填补了这个断层。它解决的不是“有没有 AI”,而是“AI 怎么像 Ctrl+C/V 一样成为肌肉记忆”。

2. 技能本质:YAML 定义 + CLI 执行 + Editor Hook 三要素闭环

Superpowers 的技能(skills)不是黑盒函数,而是可读、可调试、可版本管理的声明式配置。每个 skill 由三个核心部分构成:元信息定义(YAML)、执行逻辑(CLI 命令或 JS 函数)、编辑器钩子(Editor Hook 触发条件)。这三者缺一不可,漏掉任何一个,skill 就无法被识别或触发。我拆解过官方仓库里最常用的refactor-to-typescriptskill,它的 YAML 文件只有 87 行,但每行都承担明确职责,下面逐层说明。

2.1 元信息定义:YAML 文件里的 7 个必填字段

每个 skill 的 YAML 文件必须包含以下字段,少一个就会被 Superpowers 加载器跳过:

  • name: 技能唯一标识符,全小写+短横线,如refactor-to-typescript。注意这不是显示名,而是内部调用键,不能含空格或大写字母。
  • description: 一句话功能说明,用于编辑器侧边栏提示,长度建议控制在 60 字以内,超过会被截断。
  • trigger: 触发方式,支持三种值:comment(注释触发)、shortcut(快捷键触发)、command(命令面板触发)。comment最常用,格式为// @superpower: <name>,但必须严格匹配 name 字段,大小写敏感。
  • context: 上下文约束,指定该 skill 在什么文件类型、什么编辑器模式下可用。例如["typescript", "javascript"]表示仅在 .ts/.js 文件中激活;["cursor", "vscode"]表示仅限特定编辑器。这里填错会导致 skill 完全不可见。
  • input: 输入参数定义,采用 JSON Schema 格式。比如refactor-to-typescript需要targetVersion参数,默认值"5.0",类型为 string。这个字段直接决定你在注释里能否传参,如// @superpower: refactor-to-typescript --targetVersion=4.9。
  • output: 输出格式声明,告诉编辑器如何渲染结果。"text"表示纯文本插入光标处;"diff"表示以 diff 补丁形式展示变更;"inline"表示在当前行下方插入新代码块。选错会导致结果乱码或覆盖错误位置。
  • icon: 图标路径,相对路径指向 skill 目录下的 SVG 文件。虽然不影响功能,但缺失会导致编辑器技能列表显示空白图标,影响使用体验。

提示:YAML 文件命名必须与name字段完全一致,且后缀为.yaml。我曾因把refactor-to-typescript.yaml错写成refactor-to-typescript.yml,导致 Cursor 重启三次都没加载成功——Superpowers 加载器只认.yaml,不支持其他后缀。

2.2 执行逻辑:CLI 命令与 JS 函数的适用边界

Superpowers 支持两种执行方式:外部 CLI 工具调用(推荐)和内置 JS 函数(限制多)。选择依据很简单:凡是涉及文件读写、模型调用、进程启动的操作,必须用 CLI;凡是纯文本处理、正则替换、简单计算,可用 JS。

CLI 方式以codex-cli为核心载体。比如refactor-to-typescript的执行命令是:

codex-cli refactor --language typescript --version $INPUT_TARGETVERSION --file "$INPUT_FILEPATH"

这里$INPUT_TARGETVERSION和$INPUT_FILEPATH是 Superpowers 自动注入的环境变量,对应 YAML 中input定义的参数。关键点在于:codex-cli必须已全局安装(npm install -g codex-cli),且其refactor子命令需支持--language和--version参数。如果本地codex-cli版本太旧(< 2.3.0),这条命令会报错Unknown argument: --version,此时不能改 YAML,而要升级 CLI 工具。

JS 函数方式则写在 YAML 同目录的index.js文件里,导出一个execute函数:

module.exports.execute = async (context) => { const { editor, document } = context; const text = document.getText(); return text.replace(/var\s+/g, 'let '); };

注意:JS 函数无法访问文件系统、无法发起 HTTP 请求、无法调用外部命令,只能操作当前编辑器文档内容。所以想用本地 LMStudio 模型?必须走 CLI 调用curl http://localhost:1234/v1/chat/completions,不能在 JS 里写 fetch。

2.3 编辑器钩子:Cursor 与 VS Code 的触发机制差异

Superpowers 在不同编辑器中的触发逻辑有本质区别。Cursor 使用的是AST-aware hook,即它会解析当前文件的抽象语法树,判断光标所在节点类型(如是否在函数体内、是否选中一段代码),再决定是否启用 skill。这意味着// @superpower: extract-function只有在你选中一段代码并按下快捷键时才生效,单纯写注释不会触发。

VS Code 则依赖Text-based hook,完全基于正则匹配注释行。只要光标所在行匹配// @superpower:.*,就会激活对应 skill,不管是否选中代码。这种差异导致同一个 YAML 文件在两个编辑器中行为可能不同:在 Cursor 里extract-function需要先选中代码,在 VS Code 里只需把光标停在函数开头注释行即可。

注意:Cursor 的 AST hook 对 TypeScript 支持最好,对 Python 支持有限(v0.42.3 版本仍无法准确识别 class method 节点),所以如果你主要用 Python,建议优先在 VS Code 中配置 Superpowers,避免触发失败。

3. 实操部署:从零开始构建本地 Superpowers 环境(Ubuntu + Cursor)

部署 Superpowers 不是“一键安装”,而是“三步验证”:验证编辑器兼容性、验证 CLI 工具链、验证技能配置有效性。我在 Ubuntu 22.04 LTS(Linux 5.15.0-122-generic) + Cursor 0.42.3(x86_64)环境下完整走了一遍,以下是可直接复现的步骤,每一步都标注了常见失败点及修复方法。

3.1 第一步:确认 Cursor 版本与插件通道权限

Superpowers 依赖 Cursor 的插件沙箱机制,而该机制在 v0.41.0 之后才稳定。首先检查当前版本:

cursor --version # 输出应为 0.42.x 或更高

如果低于此版本,必须从 Cursor 官网 下载最新.deb包安装,不要用 snap 安装——snap 版本因权限隔离问题,无法访问~/.cursor/superpowers目录,导致技能加载失败。

接着验证插件通道是否开启。打开 Cursor 设置(Ctrl+,),搜索extensions,确保Enable Extensions开关为 ON。更重要的是,检查Extensions: Auto Update是否启用,因为 Superpowers 的更新依赖此通道同步远程技能库。

实操心得:我曾因公司防火墙拦截https://api.cursor.sh/extensions导致插件市场空白,最终通过curl -I https://api.cursor.sh/extensions发现返回 403,临时关闭防火墙策略才解决。如果你在企业网络环境,建议先测试该域名连通性。

3.2 第二步:安装并配置 Codex CLI 与本地模型代理

Codex CLI 是 Superpowers 的执行引擎,必须全局安装且版本匹配。执行:

npm install -g codex-cli@2.3.5 codex-cli --version # 应输出 2.3.5

注意:@2.3.5版本号不能省略,因为 v2.4.0 引入了 breaking change(移除了--model参数),而当前主流 Superpowers skill 都基于 v2.3.x 编写。

接下来配置模型后端。Superpowers 默认调用 Claude 官方 API,但国内用户更倾向本地模型。以 LMStudio 为例(v0.3.10):

  • 启动 LMStudio,加载 Qwen2.5-7B 模型,开启Local Server,端口设为1234
  • 创建~/.codex/config.json,内容如下:
{ "defaultModel": "qwen2.5:7b", "providers": [ { "name": "lmstudio", "baseUrl": "http://localhost:1234/v1", "apiKey": "lm-studio" } ] }

关键点:apiKey必须设为"lm-studio"(硬编码值),LMStudio 本地服务器不校验 key,但 Codex CLI 会强制发送,设错会导致401 Unauthorized。

验证配置是否生效:

codex-cli chat --message "hello" --model qwen2.5:7b # 应返回模型响应,而非连接超时

3.3 第三步:初始化 Superpowers 目录并加载首个技能

Superpowers 技能存放在~/.cursor/superpowers目录,需手动创建:

mkdir -p ~/.cursor/superpowers cd ~/.cursor/superpowers

然后克隆官方技能库(或自己 fork 的私有库):

git clone https://github.com/cursor-superpowers/skills.git .

注意:git clone后面的.不能省略,否则会创建skills/子目录,而 Superpowers 加载器只扫描~/.cursor/superpowers下的直接子目录。

现在重启 Cursor(必须完全退出再启动,Ctrl+Q 两次),打开任意.ts文件,输入:

// @superpower: refactor-to-typescript

将光标停在此行,按Ctrl+Enter(默认触发快捷键)。如果左下角出现Running refactor-to-typescript...,几秒后弹出 diff 面板,说明部署成功。

常见问题:首次触发时可能卡在Loading model...。这是因为 Codex CLI 首次调用会下载模型 tokenizer 缓存,需等待 30 秒以上。不要反复触发,耐心等待即可。缓存下载完成后,后续调用均在 2 秒内响应。

4. 技能开发实战:为 Antigravity 添加“自动补全 Google Search Query”能力

Antigravity 是 Superpowers 生态中一个特殊存在——它不是独立工具,而是 Cursor 内置的 Google 搜索增强模块,用于在代码中快速检索技术文档。但原生 Antigravity 只支持// @antigravity search <query>这种固定语法,无法根据上下文自动生成 query。我们来开发一个新 skill,让// @superpower: antigravity-autoquery能自动提取当前函数名、参数类型、错误信息,拼接成精准搜索 query。

4.1 分析 Antigravity 的原始能力边界

Antigravity 的核心限制在于:它只接受纯字符串 query,不解析 AST,不关联当前编辑器上下文。比如你在写一个fetchUserData函数时,手动输入// @antigravity search fetchUserData nodejs error handling,它会打开 Google 搜索页,但无法知道你当前函数参数是userId: string,也无法关联到你刚写的TypeError: Cannot read property 'id' of undefined错误。

我们的目标 skill 需要突破三点:

  • 自动提取函数签名:从光标所在位置向上扫描,找到最近的function或const xxx = (声明
  • 捕获最近错误日志:向后扫描 5 行,匹配console.error(或未捕获的throw new Error(
  • 生成语义化 query:组合函数名 + 参数类型 + 错误关键词 + 技术栈,如"fetchUserData userId:string TypeError: Cannot read property 'id'" site:stackoverflow.com

4.2 编写 YAML 配置文件antigravity-autoquery.yaml

name: antigravity-autoquery description: 自动提取当前函数上下文,生成精准 Google 搜索 query trigger: comment context: - typescript - javascript input: type: object properties: maxLines: type: integer default: 5 description: 向后扫描错误日志的最大行数 output: text icon: icon.svg

注意output: text表示结果将作为纯文本插入光标下方,方便你复制粘贴到 Antigravity 注释中。

4.3 实现 JS 执行逻辑index.js

由于需要 AST 解析和行扫描,必须用 JS(CLI 无法获取编辑器当前光标位置):

const ts = require('typescript'); module.exports.execute = async (context) => { const { editor, document } = context; const position = editor.selection.active; const line = position.line; // 1. 向上扫描函数声明 let functionName = 'unknown'; for (let i = line; i >= Math.max(0, line - 10); i--) { const text = document.lineAt(i).text; const funcMatch = text.match(/function\s+(\w+)/) || text.match(/const\s+(\w+)\s*=\s*\(/); if (funcMatch) { functionName = funcMatch[1]; break; } } // 2. 向下扫描错误日志 let errorSnippet = ''; for (let i = line; i < Math.min(document.lineCount, line + 5); i++) { const text = document.lineAt(i).text; if (text.includes('console.error') || text.includes('throw new Error')) { errorSnippet = text.trim().replace(/console\.error\(|throw new Error\(|\)/g, ''); break; } } // 3. 构建 query const query = `"${functionName}" ${errorSnippet} site:stackoverflow.com`; // 4. 返回可直接用于 Antigravity 的注释 return `// @antigravity search ${query}`; };

关键细节:require('typescript')是安全的,因为 Cursor 内置了 TS 解析器,无需额外安装。document.lineAt(i).text获取指定行文本,比正则全局匹配更可靠。

4.4 验证与调试技巧

将antigravity-autoquery.yaml和index.js放入~/.cursor/superpowers/antigravity-autoquery/目录,重启 Cursor。在 TS 文件中写:

function fetchUserData(userId) { console.error('TypeError: Cannot read property id of undefined'); }

将光标停在function行,输入// @superpower: antigravity-autoquery,按Ctrl+Enter。应得到:

// @antigravity search "fetchUserData" TypeError: Cannot read property id of undefined site:stackoverflow.com

如果返回空或报错,打开 Cursor 控制台(Help → Toggle Developer Tools),查看 Console 标签页的错误堆栈。最常见的错误是Cannot read property 'lineAt' of undefined,这表示document对象未正确传入,需检查index.js是否导出execute函数,且函数签名与文档一致。

实操心得:JS skill 调试效率极低,每次修改都要重启 Cursor。我的做法是先在 Node.js 环境中模拟context对象,单独测试index.js逻辑,确认无误后再放入 Superpowers 目录。这样能把调试周期从 5 分钟缩短到 30 秒。

5. 常见问题速查表与独家避坑指南

Superpowers 的问题往往不在代码层面,而在环境链路的微小断裂。以下是我在 12 个项目中踩过的坑,按发生频率排序整理成速查表,附带一键修复命令。

问题现象根本原因诊断命令修复方案修复耗时
Superpowers not found in command paletteCursor 未识别~/.cursor/superpowers目录ls -la ~/.cursor/superpowers确保目录存在且非空,子目录名全小写,无空格2 分钟
Error: Command failed: codex-cli ...Codex CLI 版本不匹配或未安装codex-cli --version && which codex-clinpm install -g codex-cli@2.3.5,删除旧版本npm uninstall -g codex-cli3 分钟
No response after trigger技能 YAML 中context字段与当前文件类型不匹配cat ~/.cursor/superpowers/<skill>/skill.yaml | grep context修改context为["typescript"](当前文件是 .ts)或添加"javascript"1 分钟
Output shows raw JSON instead of codeoutput字段设为"json"但编辑器期望"text"grep output ~/.cursor/superpowers/<skill>/skill.yaml改为output: text或output: diff30 秒
Antigravity search opens blank pageLMStudio 本地服务未启动或端口冲突curl -v http://localhost:1234/v1/models启动 LMStudio,检查端口占用sudo lsof -i :1234,杀掉冲突进程5 分钟
Cursor crashes on skill triggerJS skill 中使用了不支持的 Node.js API(如fs.readFile)查看 Developer Tools Console 错误改用编辑器 API(document.getText())替代文件系统操作10 分钟
Chinese characters show asCursor 语言设置为英文但系统 locale 为中文locale -a | grep zh_CN在 Cursor 设置中搜索locale,设为zh-CN,重启1 分钟
Skill works in VS Code but not Cursor触发 hook 类型差异(AST vs Text)对比两编辑器中光标位置在 Cursor 中先选中代码块再触发;在 VS Code 中光标停在注释行即可无

5.1 三个必须知道的冷知识

冷知识一:Superpowers 技能加载顺序影响优先级
Superpowers 按目录名字母序加载技能,z-refactor.yaml会覆盖a-refactor.yaml的同名技能。如果你 fork 了官方库,又想覆盖某个 skill,不要改原文件,而是新建一个zzz-custom-refactor.yaml,利用字母序后缀确保你的版本优先生效。

冷知识二:@superpower注释必须独占一行
// some comment @superpower: xxx这种写法会被忽略。必须是// @superpower: xxx占据整行,前后无其他字符(空格除外)。这是为了防止误触发,但新手极易忽略。

冷知识三:Cursor 的Ctrl+Enter可被重映射
如果你习惯用Cmd+Enter(Mac)或Alt+Enter(Windows),可以在 Cursor 设置中搜索keybindings,找到superpowers.trigger命令,绑定到你喜欢的快捷键。但注意:重映射后,原快捷键将失效,需手动清除旧绑定。

5.2 国内用户专属避坑清单

  • 手机号注册问题:Cursor 注册时若提示“手机号格式错误”,尝试在号码前加+86(如+8613812345678),而非直接输13812345678。这是 Cursor 后端校验逻辑缺陷,已在 v0.43.0 修复,但当前稳定版仍存在。
  • Antigravity 验证跳转失败:当出现please verify your account to continue using antigravity时,不是账号问题,而是 Cursor 内置的 Google OAuth 流程被国内网络阻断。解决方案:在 Cursor 设置中关闭Antigravity: Enable,改用// @superpower: google-search这类自定义 skill 替代。
  • Codex CLI 无法调用本地模型:如果codex-cli chat返回Error: connect ECONNREFUSED ::1:1234,检查 LMStudio 是否监听0.0.0.0:1234而非127.0.0.1:1234。在 LMStudio 设置中勾选Allow remote connections。

最后分享一个小技巧:Superpowers 的技能可以嵌套调用。比如你写一个// @superpower: generate-test-cases,它内部可以触发// @superpower: refactor-to-typescript预处理代码,再调用codex-cli test生成用例。这种链式调用让技能组合产生指数级能力增长,这才是“superpowers”真正的含义——不是单点爆发,而是系统协同。

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

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

立即咨询