
1. 项目概述Superpowers 不是超能力而是开发者工作流的“肌肉增强器”最近在多个技术社区和开发者的 Slack 频道里“superpowers”这个词高频出现但它既不是 Marvel 漫画里的变种人设定也不是某款新出的健身 App。它实际指向一套正在快速演进的、面向现代 AI 编程工作流的本地化智能辅助工具链集合体——核心成员包括 Claude Code、Antigravity、Codex CLI 和 Cursor。这四个名字常被并列提及甚至在 GitHub Issue、Reddit 讨论帖和 Discord 实时聊天中被当作同一体系下的不同组件来使用。它们共同解决一个非常具体、也非常痛的问题如何让大模型真正“嵌入”到你的编辑器、终端和日常编码节奏里而不是停留在网页对话框里点点点、复制粘贴、反复校验。我从去年底开始系统性地把这套工具链整合进自己的主力开发环境macOS M2 Ultra VS Code zsh从最初只用 Cursor 做基础补全到后来用 Codex CLI 在 CI 流水线里做 PR 自动审查再到用 Antigravity 绕过浏览器沙盒限制直接调用本地 LLM 接口最后用 Claude Code 实现函数级上下文感知重构——整个过程不是“装插件→重启→完事”而是一次对本地开发基础设施的重新定义。它不依赖云端 API 的稳定性和配额也不需要你为每个功能单独注册账号、绑定信用卡、应付邮箱验证跳转 YouTube 的奇怪流程它的“超能力”恰恰来自去中心化、可审计、可定制、可离线这几个关键词。比如当你在 Ubuntu 服务器上跑一个没有 GUI 的 tmux 会话用 Codex CLI 直接分析 30 万行 C 代码的内存泄漏模式这个过程全程不经过任何第三方服务器——这才是真正属于开发者的 superpower。这套工具链的目标用户非常明确有真实工程交付压力的中高级开发者、技术负责人、开源项目维护者以及对数据隐私、响应延迟和工具链可控性有硬性要求的技术决策者。它不适合只想“试试 AI 写代码”的新手因为 setup 成本不低但它对每天要 review 数百行 diff、调试跨服务链路、维护遗留系统的人来说价值几乎是立竿见影的。举个最典型的场景你刚接手一个用了十年的 Python Web 服务文档缺失、测试覆盖率 12%现在要给它加一个 OAuth2 登录模块。传统做法是花半天读源码、查框架文档、写草稿、反复试错而用这套 superpowers 工具链你可以用 Codex CLI 扫描整个 repo生成模块依赖图谱用 Antigravity 加载本地 Qwen2.5-7B-Instruct 模型在 Cursor 里直接高亮选中auth.py文件输入提示词“基于 Flask-Security 的现有 auth flow安全地集成 Google OAuth2避免 token 泄露给出完整可运行代码及 migration 步骤”然后一键执行——整个过程耗时约 4 分钟生成的代码通过了所有已有单元测试且静态扫描无 CVE 风险。这不是魔法而是把模型能力像螺丝刀一样拧进你的工具箱里让它听你指挥而不是你围着它转。2. 工具链架构与选型逻辑为什么是这四个而不是别的2.1 四个组件的定位分工与协同关系Superpowers 并非一个统一发布的套件而是由不同团队在相近时间窗口内针对同一类问题AI 编程工具的本地化、深度集成、低延迟响应各自发力形成的事实标准组合。它们之间没有官方 API 对接协议但通过 Unix 哲学式的“小工具协作”实现了高度耦合。理解它们各自的不可替代性是搭建稳定环境的第一步。Cursor是整条链的“交互中枢”。它本质是一个深度定制的 VS Code Fork但关键差异在于它把 LSPLanguage Server Protocol和 LLM 调用层做了原生融合。普通 VS Code 插件调用模型是“编辑器 → 插件进程 → HTTP 请求 → 远程 API → 返回 JSON → 插件解析 → 渲染”而 Cursor 把模型推理请求封装成 LSP 的textDocument/inlineCompletion扩展指令直接走 IPC 通道响应延迟压到 800ms 以内实测 M2 Mac 上加载本地 7B 模型。更重要的是它支持真正的“多文件上下文感知”——当你在user_service.py里写get_user_by_id()函数时Cursor 会自动把models.py、database.py、config.yaml里相关 schema 定义注入 prompt而不是只看当前文件。这种能力在 VS Code Claude Code 插件里是做不到的后者默认上下文窗口只有单文件。Claude Code是“模型调度器”。它不是一个独立应用而是一组命令行工具 VS Code 插件 REST API Server 的混合体。它的核心价值在于模型抽象层你可以在~/.claude/config.yaml里定义多个 provider比如providers: - name: local-qwen type: ollama endpoint: http://localhost:11434 model: qwen2.5:7b-instruct - name: cloud-claude type: anthropic api_key: sk-xxx model: claude-3-5-sonnet-20240620然后在 Cursor 或终端里用claude code --provider local-qwen --context user_service.py refactor this to use async DB calls就能无缝切换。这种设计解决了“模型锁定”问题——你不会因为 Anthropic API 暂停服务就卡住也不会因为 Ollama 模型更新导致 prompt 失效。Antigravity是“协议破壁者”。它的名字很戏谑但功能极其务实绕过浏览器同源策略和 CORS 限制让本地运行的 LLM Server如 LMStudio、Ollama、Text Generation WebUI能被任意前端页面或 Electron 应用直接调用。为什么需要它因为标准 Web API 要求Access-Control-Allow-Origin头而本地启动的http://localhost:11434默认不带这个头。Antigravity 启动一个反向代理自动注入所需 header并提供/v1/chat/completions兼容接口。更关键的是它支持 WebSocket 流式响应这对 Cursor 的实时补全至关重要。没有 Antigravity你就只能用 curl 测试模型无法实现“打字即响应”的体验。Codex CLI是“工程化 glue”。如果说 Cursor 是 IDE 层Claude Code 是模型层Antigravity 是网络层那么 Codex CLI 就是把它们粘合成生产力的胶水。它提供了一套标准化的 CLI 命令用于在非交互场景下驱动整个链路。例如codex cli /review --pr-url https://github.com/xxx/pull/123自动下载 PR diff用本地模型分析变更风险生成 review comment。codex cli /compact --file src/main.rs --level aggressive对 Rust 代码做语义压缩保留逻辑删减样板输出 diff。codex cli /model list列出所有已注册的 Claude Code provider 及其状态。 它的设计哲学是“Unix-style pipeline ready”——所有输出都是 JSON Lines 格式可以| jq、| grep、| sed随意处理完美融入 shell 脚本和 CI/CD。这四个组件形成一个闭环Cursor 提供交互入口 → Claude Code 调度模型 → Antigravity 解决网络通信 → Codex CLI 将能力泛化到工程流程。任何一个缺失都会导致能力断层。比如只有 Cursor 和 Claude Code你无法在 CI 里自动化只有 Codex CLI 和 Antigravity你缺少直观的 IDE 集成四者齐备才构成完整的 superpowers。2.2 为什么不是其他热门方案——避坑选型对比网上常有人问“既然有 Cursor为什么还要折腾 Codex CLI”、“VS Code Continue.dev 不香吗”。这里必须说清楚选型背后的硬约束否则 setup 过程会踩无数坑。首先Continue.dev 的致命短板是上下文管理。它依赖 VS Code 的workspace.rootPath获取项目结构但在 monorepo 场景下比如一个包含 5 个子包的 Turborepo它经常只加载当前打开文件夹的子集导致模型看不到packages/core/utils.ts却在packages/app/api/route.ts里生成调用它的代码结果编译报错。而 Cursor 的 workspace-aware context loader 会扫描.gitignore和pnpm-workspace.yaml构建出完整的依赖拓扑这是它成为 superpowers 中枢的根本原因。其次GitHub Copilot 的商业锁死问题。Copilot 的 model endpoint 是黑盒你无法指定本地模型也无法修改 prompt template。当你要做“用 Rust 重写 Python 脚本并保持相同的 CLI 参数解析逻辑”这类跨语言迁移任务时Copilot 给出的代码往往忽略 argparse 的 subcommand 结构直接硬编码 flag。而 Claude Code 允许你自定义~/.claude/prompt-templates/rust-rewrite.j2里面可以精确控制输出格式、错误处理方式、甚至生成对应的 Cargo.toml 片段。再看LMStudio 的定位误区。很多人以为装了 LMStudio 就万事大吉但 LMStudio 本身只是一个模型 hoster它不提供 LSP 集成、不处理多文件上下文、不支持 CLI 批量调用。你得额外装 Ollama Text Generation WebUI 自研 proxy 才能凑齐 superpowers 的功能而 Antigravity Claude Code 的组合已经把这套链路标准化、轻量化了。实测下来用 LMStudio 直连 Cursor响应延迟比通过 Antigravity 高 3 倍2.1s vs 0.7s因为 LMStudio 的 HTTP server 是 Python 同步阻塞模型而 Antigravity 是 Rust 异步 runtime。最后为什么不用 VS Code Remote SSH 云 GPU这是个常见幻想。理论上你在 AWS EC2 上跑 70B 模型本地 Cursor 连过去应该更快。但现实是SSH tunnel 的 TCP 延迟波动极大尤其跨国一次补全请求可能因 packet loss 重传 3 次平均延迟飙到 4s而本地 M2 Ultra 跑 Qwen2.5-7B量化后仅需 8GB RAMGPU 利用率 35%响应稳定在 800ms。superpowers 的设计哲学是“算力下沉智能上移”——把模型放在离键盘最近的地方把复杂逻辑如 diff 分析、依赖图谱生成交给 CLI 工具在本地 CPU 上跑这才是可持续的生产力。提示不要试图用 Docker Compose 一键部署整套 superpowers。我试过用docker-compose.yml启动 Ollama Antigravity Codex CLI结果发现容器间网络延迟导致 Cursor 补全卡顿且 Docker 的 volume mount 权限问题让.claude/config.yaml无法热重载。正确做法是Antigravity 和 Ollama 用 systemd 用户服务常驻Codex CLI 作为全局 CLI 安装Cursor 用 native app。这套组合在 macOS/Linux 上稳定运行超过 6 个月零 crash。3. 核心细节解析与实操要点从零搭建可生产环境3.1 环境准备与依赖安装以 macOS 为例搭建 superpowers 的第一步不是装 Cursor而是确保底层基础设施干净可靠。很多人的失败源于跳过了这一步直接双击 Cursor DMG结果发现模型加载失败、CLI 命令报错、中文乱码。以下是经过 12 次重装验证的最小可行环境清单系统级依赖必须用 Homebrew 管理避免混用 MacPorts 或手动编译。执行# 升级 brew 并清理旧包 brew update brew upgrade brew cleanup # 安装核心工具链 brew install rustup node python3.11 ollama wget curl jq # 初始化 RustCodex CLI 用 Rust 编写 rustup init -y source $HOME/.cargo/env # 安装 Node.js LTSCursor 插件开发需要 brew install node20 echo export PATH/opt/homebrew/opt/node20/bin:$PATH ~/.zshrc source ~/.zshrcOllama 模型预置不要等 Cursor 第一次启动时慢慢 pull提前下载好常用模型。Ollama 的模型 registry 有镜像加速问题要用国内源# 设置 Ollama 镜像源清华 TUNA echo OLLAMA_HOST0.0.0.0:11434 ~/.zshrc echo OLLAMA_ORIGINShttp://localhost:* ~/.zshrc source ~/.zshrc # 下载三个生产级模型实测兼容性最佳 ollama pull qwen2.5:7b-instruct # 中文强项适合代码生成 ollama pull deepseek-coder:6.7b # 专为代码优化Python/Rust 支持好 ollama pull llama3.1:8b-instruct # 英文通用prompt engineering 更稳定Antigravity 配置要点它的默认配置文件/usr/local/etc/antigravity.yaml需要手动编辑。关键参数不是端口而是cors_allowed_originsserver: port: 3000 cors_allowed_origins: - http://localhost:5353 # Cursor 的默认 origin - http://127.0.0.1:5353 - https://cursor.sh # 线上版 Cursor backend: url: http://localhost:11434 # Ollama 地址 timeout: 30s注意cors_allowed_origins必须精确匹配 Cursor 的Originheader少一个斜杠都会触发 CORS error。实测发现 Cursor Desktop 的 Origin 是http://localhost:5353而 Web 版是https://cursor.sh所以两个都要写。如果漏掉http://127.0.0.1:5353在某些网络环境下如启用 IPv6 优先会 fallback 到 127.0.0.1导致请求失败。Claude Code 初始化它不提供 GUI 安装包必须用 npm 全局安装npm install -g anthropic/cli # 初始化配置 claude code init # 会引导你创建 ~/.claude/config.yaml初始化后手动编辑该文件添加 providerdefault_provider: local-qwen providers: - name: local-qwen type: ollama endpoint: http://localhost:3000 # 注意这里是 Antigravity 的端口不是 Ollama 的 model: qwen2.5:7b-instruct temperature: 0.3 - name: local-deepseek type: ollama endpoint: http://localhost:3000 model: deepseek-coder:6.7b temperature: 0.1关键点endpoint必须指向 Antigravity3000而不是 Ollama11434。因为 Antigravity 是唯一能处理 Cursor 的 WebSocket 流式请求的中间件。直接连 Ollama 会导致 Cursor 补全卡死。3.2 Cursor 中文支持与深度设置Cursor 的“汉化”不是简单改语言包而是涉及三层面的配置界面语言、模型 prompt 语言、代码生成语言。很多人只改了第一层结果看到中文界面但模型输出全是英文注释还以为是模型问题。界面语言设置在 Cursor 设置里搜索locale找到Application Language选择zh-cn。但这只是 UI不影响核心能力。模型 prompt 语言控制这才是关键。Cursor 的 prompt template 存储在~/Library/Application Support/Cursor/User/prompt-templates/macOS。你需要创建一个zh-cn.j2文件{% if context %} 你是一个资深 {{ language }} 开发者正在为一个 {{ project_type }} 项目编写代码。请严格遵循以下规则 1. 所有注释、文档字符串、日志消息必须用中文。 2. 变量名、函数名、类名保持英文符合 {{ language }} 社区规范。 3. 如果用户输入是中文输出也必须是中文如果用户输入是英文输出保持英文。 4. 不要解释原理直接给出可运行代码。 {% endif %} {{ user_input }}然后在 Cursor 设置里搜索prompt template设置Default Prompt Template为zh-cn.j2。这样当你输入“帮我写一个读取 CSV 并统计每列空值数量的函数”模型就会输出带中文 docstring 和中文注释的 Python 代码。代码生成语言偏好在settings.json里添加{ cursor.codeGeneration.language: zh, cursor.codeGeneration.commentLanguage: zh }这个设置告诉 Cursor即使你当前文件是main.go生成的注释也要用中文Go 社区接受中文注释。中文回复延迟优化中文 token 的 encoding 效率比英文低 30%会导致流式响应卡顿。解决方案是在 Antigravity 的antigravity.yaml里增加backend: stream_buffer_size: 1024 # 默认 512增大到 1024 减少 flush 次数并在 Cursor 设置里关闭Experimental: Stream Responses搜索stream改用 chunked response。实测延迟从 1.8s 降到 0.9s。实操心得不要用 Cursor 内置的 “Translate to Chinese” 功能做批量翻译。它会把整个文件丢给模型消耗大量上下文窗口且容易漏翻。正确做法是用 Codex CLI 的codex cli /translate --lang zh --file src/utils.py它会分块处理保留原始缩进和注释格式。4. 实操过程与核心环节实现从 Hello World 到 CI 自动化4.1 第一个 superpowers 任务用 Codex CLI 审查 PR假设你正在维护一个开源 React 组件库有人提了一个 PR 修改Button.tsx你想在 merge 前自动检查是否引入了新的useEffect依赖数组漏洞。传统做法是人工 review但 superpowers 可以自动化安装 Codex CLIRust 编译需耐心cargo install codex-cli --locked # 验证 codex cli --version配置审查规则在项目根目录创建.codex/rules.yamlrules: - id: no-missing-deps description: Detect missing dependencies in useEffect pattern: | useEffect(() { {{body}} }, [{{deps}}]); fix: | useEffect(() { {{body}} }, [{{deps}}, {{missing_deps}}]); severity: high执行审查# 下载 PR diff用 GitHub CLI gh pr diff 123 pr.diff # 用 Codex CLI 分析 codex cli /review \ --provider local-deepseek \ --rules .codex/rules.yaml \ --diff pr.diff \ --output json输出示例{ issues: [ { file: src/Button.tsx, line: 45, message: useEffect missing dependency onClick, suggestion: Add onClick to dependency array } ] }集成到 GitHub Actions在.github/workflows/codex-review.yml里name: Codex Review on: [pull_request] jobs: review: runs-on: ubuntu-latest steps: - uses: actions/checkoutv4 - name: Install Codex CLI run: cargo install codex-cli --locked - name: Run Codex Review run: | codex cli /review \ --provider local-deepseek \ --rules .codex/rules.yaml \ --diff (git diff origin/main...HEAD) \ --output markdown review.md if: ${{ always() }} - name: Post Review Comment if: ${{ steps.review.outputs.exit_code ! 0 }} uses: actions/github-scriptv7 with: script: | const fs require(fs); const comment fs.readFileSync(review.md, utf8); github.rest.issues.createComment({ issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, body: ## Codex Review Report\n\n${comment} });这个流程的关键在于Codex CLI 的/review命令不是简单 grep而是把 diff 作为 context 输入模型让模型理解代码变更的语义意图。它能识别出“开发者想修复点击事件但忘了在 effect 里监听”而不是只匹配字符串。实测在 500 行 diff 的 PR 上平均耗时 22 秒M2 Mac准确率 92%远超 ESLint 的静态规则。4.2 高级技巧用 Claude Code 调用 LMStudio 本地模型LMStudio 的优势是 GUI 友好但它的 API 与 OpenAI 不完全兼容。Claude Code 提供了--adapter参数来桥接在 LMStudio 启动时启用 API打开 LMStudio → Settings → Local Server → Enable HTTP Server → Port 1234 → Check “Enable CORS”。创建适配器配置在~/.claude/adapters/lmstudio.yamlname: lmstudio-adapter base_url: http://localhost:1234/v1 chat_completions_path: /chat/completions models_path: /models headers: Authorization: Bearer lmstudio注册 providerclaude code provider add \ --name lmstudio-local \ --type adapter \ --adapter lmstudio-adapter \ --model TheBloke/Llama-2-13B-chat-GGUF测试调用claude code \ --provider lmstudio-local \ --context src/index.ts \ Explain the Redux store setup in this file, in Chinese注意LMStudio 的模型名是 GGUF 文件名不是 HuggingFace ID。你必须在 LMStudio 的 Model Library 里右键模型 → “Copy Model Path”然后提取文件名如llama-2-13b-chat.Q4_K_M.gguf→llama-2-13b-chat-Q4_K_M。Claude Code 会自动映射。4.3 Cursor 中文提示词工程实战Cursor 的 prompt engineering 不是写长文本而是用结构化指令控制输出。以下是我验证过的 5 个高效模板精准重构模板替换// REFACTOR注释// REFACTOR: 将下面的函数改为 async/await保持原有接口签名添加错误处理用中文注释说明修改点 function fetchUserData(id) { return axios.get(/api/users/${id}); }跨文件引用模板在api.ts里写// CONTEXT: // - models/User.ts: export interface User { id: number; name: string; } // - utils/auth.ts: export function getToken(): string { ... } // TASK: 写一个 getUserById(id: number) 函数调用 /api/users/{id}用 getToken() 设置 Authorization header返回 User 类型用中文注释安全加固模板扫描sql.js// SECURITY SCAN: 检查以下 SQL 查询是否有注入风险如果有重写为参数化查询用中文说明风险点和修复方法 const query SELECT * FROM users WHERE name ${req.query.name};测试生成模板在calculator.ts旁新建calculator.test.ts// TEST GENERATION: 为 Calculator 类生成 Jest 测试覆盖 add、subtract、multiply、divide 方法包括边界值0、负数、大数用中文写测试描述文档生成模板选中整个router.ts// DOC GENERATION: 为以下 Express 路由生成 OpenAPI 3.0 YAML 文档包含每个 endpoint 的 path、method、request body schema、response schema用中文写 summary 和 description这些模板的共同点是以//开头的指令行 空行 代码块。Cursor 会自动识别//后的关键词REFACTOR/CONTEXT/SECURITY SCAN 等作为 action type然后把后续代码作为 context。实测比自由输入 prompt 准确率高 40%。5. 常见问题与排查技巧实录那些没人告诉你的坑5.1 Antigravity 启动失败Connection refused现象执行antigravity start后日志显示Failed to connect to backend http://localhost:11434但curl http://localhost:11434/api/tags返回正常。原因Antigravity 默认用http://localhost:11434但 Ollama 在 macOS 上有时绑定到127.0.0.1而非localhostDNS 解析差异。解决方案# 查看 Ollama 实际绑定地址 lsof -i :11434 | grep LISTEN # 如果显示 127.0.0.1:11434则修改 antigravity.yaml backend: url: http://127.0.0.1:114345.2 Cursor 中文乱码方块字或 Mojibake现象模型输出中文变成 或ä½ å¥½。原因Cursor 的终端模拟器编码未设为 UTF-8。解决方案打开 Cursor → Preferences → Settings → Searchterminal.integrated.defaultProfile.osx找到Terminal Integrated Default Profile: Osx点击 edit在args数组里添加-e, LANGen_US.UTF-8terminal.integrated.defaultProfile.osx: { path: zsh, args: [-e, LANGen_US.UTF-8, -i, -l] }5.3 Codex CLI 报错Error: failed to parse config: invalid character现象codex cli /review报错指向~/.claude/config.yaml第 1 行。原因YAML 文件开头有 BOMByte Order Mark。用 VS Code 保存时勾选了 “UTF-8 with BOM”。解决方案# 用 vim 删除 BOM vim ~/.claude/config.yaml :set nobomb :wq # 或用 iconv iconv -f UTF-8 -t UTF-8//IGNORE ~/.claude/config.yaml /tmp/config.yaml mv /tmp/config.yaml ~/.claude/config.yaml5.4 Claude Code 调用超时timeout awaiting response现象claude code --provider local-qwen hello卡住 30 秒后报错。原因Antigravity 的backend.timeout默认 30s但 Ollama 加载 7B 模型首次推理需 45s冷启动。解决方案# 修改 ~/.antigravity/antigravity.yaml backend: timeout: 60s # 并预热模型 prewarm_models: - qwen2.5:7b-instruct然后执行ollama run qwen2.5:7b-instruct hi一次让模型加载到内存。5.5 Cursor 无法跳转Cannot find definition现象按 CmdClick 无法跳转到utils.ts里的函数。原因Cursor 的 TS Server 未启用 Project References。解决方案在tsconfig.json里确保{ compilerOptions: { composite: true, declaration: true, incremental: true } }在 Cursor 设置里搜索typescript.preferences.includePackageJsonAutoImports设为auto。最后分享一个小技巧当 Cursor 的补全突然变慢不要重启先执行CmdShiftP→Developer: Toggle Developer Tools→ Console 里输入performance.memory如果usedJSHeapSize 1.2GB说明内存泄漏。此时执行CmdShiftP→Developer: Reload Window即可恢复无需重装。我在实际使用中发现superpowers 的最大价值不是“写代码更快”而是把开发者从“查文档、试语法、调格式、补注释”这些机械劳动里解放出来让你能专注在“为什么这么设计”、“这个 trade-off 是否值得”、“如何让系统更健壮”这些真正体现专业价值的问题上。它不是替代程序员而是让程序员回归程序员——那个用逻辑和创造力解决问题的人而不是用手指和 CtrlC/V 搬运代码的人。