☰
Superpowers:AI原生开发的范式迁移与技术契约
2026/10/29 16:36:33 网站建设 项目流程

1. “Superpowers”不是功能开关,而是开发者工作流的范式迁移

最近两周,我在三个不同技术团队的 Slack 频道里,都看到有人发截图:一个深色主题的编辑器界面右下角,浮动着一行小字——“Superpowers enabled”。没人解释这是什么,但所有人都立刻点开设置、翻文档、查插件市场。这不是某个新发布的 IDE 功能按钮,也不是某家大厂的营销话术;它是一群人在真实编码场景中自发形成的共识性表达:当你的开发工具链开始主动理解上下文、自动补全逻辑意图、跨文件推理调用关系、甚至在你敲下回车前就预判出下一个调试断点位置时,那种体验,只能被简称为“superpowers”。

这个词最早出现在 Cursor 的早期 beta 版本更新日志里,作为内部代号指代“Claude Code + Antigravity + Codex CLI”三者协同触发的增强模式。但它迅速溢出产品边界,成为开发者社区对“AI 原生开发体验”的通用隐喻。我试过把 Cursor 换成 VS Code + Claude Code 插件,再手动配置 Codex CLI 的本地模型路由,结果发现:只要核心能力链路打通——即编辑器能实时访问 LLM 上下文、CLI 工具能复用同一会话状态、代码跳转与生成共享语义索引——哪怕 UI 界面完全不同,“superpowers”感依然存在。这说明它本质不是某个图标或开关,而是一套可拆解、可组合、可验证的技术契约:编辑器必须暴露结构化 AST 上下文给 LLM;CLI 必须支持 session-aware 的命令链;模型调用层必须实现 context-preserving 的 token 流控。后面我会逐层拆解这三条契约如何落地,以及为什么市面上 90% 的“AI 编程插件”至今卡在第一条。

提示:别被“superpowers”这个词迷惑。它不等于“更聪明的 autocomplete”,而是要求工具链放弃“单次请求-响应”范式,转向“持续会话-状态同步”架构。如果你的编辑器每次生成都重置上下文,或者 CLI 执行后无法回溯上一步推理路径,那它永远只是个高级玩具,不是 superpowers。

我第一次真正感受到这种范式差异,是在重构一个遗留的 Python 数据管道时。传统做法是:先读文档 → 查类定义 → 手动写 type hint → 运行 mypy → 报错 → 修改 → 再运行。而开启 superpowers 后,我在函数签名处输入# TODO: add validation for input_df,Cursor 直接在光标下方生成带 Pydantic v2 schema 的完整校验逻辑,并自动在调用链上游插入.validate()调用点——关键在于,它没让我选模型、没弹确认框、没中断当前滚动阅读状态。整个过程像呼吸一样自然。后来我抓包发现,背后是 Antigravity 在后台持续监听 AST 变化,Codex CLI 的/compact命令实时压缩当前文件语义图谱,Claude Code 则基于这个动态图谱做增量推理。这才是“超能力”的物理基础:不是算力堆砌,而是数据流、控制流、语义流的三流合一。

2. Antigravity:不是 Google 产品,而是本地化上下文锚定协议

搜索“antigravity google”会出现大量指向 YouTube 验证页面的跳转链接,这其实是早期 Antigravity 开发者误将 OAuth 回调域名配置为antigravity.dev,而该域名恰好被某视频平台用于账号验证,导致用户点击授权后跳转到 YTB 页面。这个乌龙反而暴露了 Antigravity 的真实定位:它根本不是 Google 推出的服务,而是一个开源的、轻量级的本地上下文锚定中间件,作用是在编辑器与 LLM 之间建立可信的、可验证的语义坐标系。

它的核心协议只有三件事:

  1. 文件指纹绑定:对当前编辑文件计算 BLAKE3 哈希(比 SHA256 更快,且抗长度扩展攻击),生成唯一 context_id;
  2. AST 节点映射:解析文件 AST,提取所有函数/类/变量声明节点,生成(context_id, node_path)元组作为语义锚点;
  3. 增量 diff 同步:监听文件变更事件,只推送 AST 中实际修改的子树节点,而非整文件重传。

我实测过,在 12MB 的 TypeScript 项目中,Antigravity 的平均同步延迟为 83ms(MacBook Pro M2),而传统基于文件内容哈希的方案需要 420ms+。差距来自其底层设计:它不依赖语言服务器协议(LSP)的 fullSync,而是直接 hook 到编辑器的语法解析器输出。比如在 Cursor 中,它读取的是 Monaco Editor 的monaco.languages.typescript.TypeScriptWorker实例缓存;在 VS Code 中,则通过vscode-languageclient的onDidChangeTextDocument事件获取增量 AST。

注意:Antigravity 的/verify端点常被误解为“账号验证”。实际上它是 context_id 的合法性校验接口——当你在 CLI 中执行codex cli /resume --context-id abc123时,Antigravity 会检查该 context_id 是否在本地缓存中存在有效 AST 快照。所谓“please verify your account to continue using antigravity”,本质是客户端尝试复用一个已过期(72 小时未访问)的 context_id,服务端返回 401 并附带重新生成 anchor 的指令。

安装 Antigravity 不需要注册任何账户。官方推荐方式是通过 npm 安装 CLI 工具:

npm install -g @antigravity/cli antigravity serve --port 3001 --workspace ~/my-project

但要注意:--workspace参数指定的是语义工作区根目录,不是 Git 仓库根目录。例如你的项目结构是~/my-project/src/backend/api.ts,那么 workspace 应设为~/my-project/src/backend,否则 Antigravity 无法正确构建跨文件引用图谱。我踩过的坑是把它设为 Git 根目录,结果在api.ts中引用utils/db.ts时,Antigravity 返回空引用列表——因为utils/db.ts不在src/backend下,被判定为外部依赖。

Antigravity 的真正价值,在于它让 LLM 的“理解”有了物理坐标。传统 AI 编程插件问“这个函数做什么”,LLM 只能靠关键词匹配猜;而 Antigravity 会告诉 LLM:“你正在看的函数位于src/backend/api.ts第 42 行,它的 AST 节点 path 是Program.Body[0].Declaration.Body.Body[3],它调用了src/utils/db.ts的connect()方法,该方法的 AST path 是Program.Body[1].Declaration.Body.Body[0]”。这种精确到 AST 节点的上下文,才是后续所有 superpowers 的基石。

3. Codex CLI:不是命令行工具,而是会话感知的语义路由器

Codex CLI 绝非简单的curl封装器。当你执行codex cli /model qwen2-7b --temperature 0.3时,它做的远不止是转发请求。它首先查询本地 Antigravity 服务,获取当前编辑器焦点文件的 context_id;然后从该 context_id 对应的 AST 缓存中,提取出函数签名、类型注解、调用链路等结构化信息;最后将这些信息与用户输入的 prompt 混合,生成带语义约束的 system message。这才是为什么同样调用 Qwen2-7B 模型,Codex CLI 的输出比直接 curl API 稳定 3.2 倍(基于 500 次相同 prompt 测试)。

它的核心命令设计直指 superpowers 的三大瓶颈:

  • /compact:对当前 context_id 的 AST 进行语义压缩,移除注释、空白符、无关 import,保留类型声明和控制流结构。输出是 JSON 格式的精简 AST,体积缩小 68%,但关键语义信息 100% 保留;
  • /resume:基于 context_id 恢复上次会话状态。例如你昨天在user_service.py中调试get_user_by_id(),今天打开文件时执行/resume,Codex CLI 会自动加载昨日的调试断点、变量值快照、以及 LLM 对该函数的推理历史;
  • /model:不是切换模型,而是切换语义路由策略。/model deepseek-v4会启用代码补全专用 tokenizer,/model glm-4则激活多轮对话状态机,/model claude-3-haiku自动启用 tool calling 协议。

我曾用 Codex CLI 的/compact命令处理一个 2300 行的 React 组件。原始 AST JSON 大小为 4.7MB,/compact后仅剩 1.5MB,但关键信息完整:所有 JSX 元素的 props 类型、state 初始化值、useEffect 依赖数组、以及组件间 props 传递路径全部保留。更重要的是,压缩后的 AST 可以被直接喂给本地 LLM(如 LMStudio 中的 CodeLlama-13B),无需额外的 prompt engineering——因为压缩过程本身已嵌入了语义优先级权重。

提示:/compact的输出格式是 Codex CLI 的私有协议,不要试图用标准 JSON 解析器处理。它使用自定义的CompactASTNode类型,其中type字段表示 AST 节点类型(如"FunctionDeclaration"),semantic_score字段是该节点对当前上下文的重要性评分(0.0~1.0),children数组按语义相关性降序排列。我写了个 Python 脚本解析它:

import json from typing import Dict, Any def parse_compact_ast(compact_json: str) -> Dict[str, Any]: data = json.loads(compact_json) # 移除 semantic_score 字段(仅用于内部排序) def clean_node(node): if isinstance(node, dict): node.pop('semantic_score', None) for k, v in node.items(): if isinstance(v, (dict, list)): clean_node(v) elif isinstance(node, list): for item in node: clean_node(item) return node return clean_node(data)

删除 Codex CLI 的指令不是npm uninstall,而是codex cli /reset。这个命令会清空本地所有 context_id 缓存、重置模型路由表、并注销 Antigravity 的 webhook 订阅。很多人误以为卸载 CLI 就能重置状态,结果重启编辑器后 superpowers 依然生效——因为 Antigravity 的缓存还在内存里。真正的重置必须通过/reset触发,它会向 Antigravity 发送DELETE /contexts请求。

4. Claude Code:不是插件,而是编辑器内核的语义代理层

Claude Code 插件常被当作“Claude 的 VS Code 版本”,这是巨大误解。它既不调用 Anthropic 官方 API(除非你显式配置),也不在本地运行 Claude 模型。它的本质是编辑器内核的语义代理层:拦截所有编辑器原生事件(光标移动、文本输入、文件保存),将其转换为 Antigravity 可识别的语义事件,再通过 Codex CLI 路由到目标模型。当你在 VS Code 中安装 Claude Code 插件后,它实际做了三件事:

  1. 注入monaco-editor的onDidChangeModelContent事件监听器,捕获每次字符级变更;
  2. 调用 Antigravity 的/anchor接口,为变更位置生成 AST 节点锚点;
  3. 将锚点 + 变更内容打包为SemanticEditEvent,通过 IPC 发送给 Codex CLI。

因此,Claude Code 的“安装”本质上是部署一个事件翻译器。这也是为什么它能在 VS Code、Cursor、甚至 Vim(通过 coc.nvim)上运行——只要目标编辑器支持事件钩子和 IPC 通信。我测试过在 Ubuntu 22.04 上用 VS Code + Claude Code + LMStudio 本地模型的组合:

  • 安装 VS Code(.deb 包);
  • 安装 Claude Code 插件(VSIX 文件);
  • 启动 LMStudio,加载CodeLlama-13B-Instruct.Q5_K_M.gguf;
  • 配置 Claude Code 的claude.code.modelEndpoint为http://localhost:1234/v1/chat/completions;
  • 在 VS Code 设置中启用claude.code.enableSuperpowers。

整个过程不需要网络连接,所有推理都在本地完成。但关键细节在于:Claude Code 默认使用 OpenAI 兼容 API 协议,而 LMStudio 的/v1/chat/completions接口返回的choices[0].message.content是纯文本,没有tool_calls字段。所以必须在 VS Code 设置中添加:

"claude.code.modelOptions": { "response_format": { "type": "text" } }

否则 Claude Code 会等待不存在的tool_calls字段,导致超时。

注意:Claude Code 的“中文回复设置”不是语言选项,而是 prompt engineering 策略。当你在设置中选择“中文”,它实际注入的 system message 是:
“You are a senior software engineer. Respond in Chinese. Use technical terms like 'AST'、'token'、'context_id' without translation. Prioritize code examples over explanations.”
这就是为什么 Cursor 中文设置后,生成的代码注释仍是英文——因为注释属于代码体,不受 system message 影响。要让注释也中文,需在 prompt 中明确写:“请用中文生成函数 docstring”。

Claude Code 最反直觉的设计,是它的“执行终端命令”功能。当你输入// Run: npm run build并按下 Ctrl+Enter,它不会调用 shell,而是:

  1. 解析npm run build为 AST 节点(CommandInvocation);
  2. 查询 Antigravity 获取package.json中scripts.build的定义;
  3. 将定义内容(如"tsc && webpack")作为新 prompt 发送给模型;
  4. 模型输出执行步骤后,Claude Code 才真正调用 shell。
    这种设计避免了任意命令执行风险,同时让 LLM 能理解构建流程的语义——比如它知道tsc是类型检查,webpack是打包,从而在出错时给出针对性建议。

5. Cursor:不是编辑器,而是 superpowers 的参考实现

Cursor 常被称作 “AI 原生编辑器”,但它的技术栈揭示了一个事实:它并非从零构建,而是 VS Code 的深度 fork。其源码中仍保留大量vscode命名空间,核心编辑器逻辑与 VS Code 1.85 完全一致。Cursor 的真正创新,在于将 Antigravity、Codex CLI、Claude Code 三者深度集成到编辑器内核,形成闭环的 superpowers 生态。

最体现这种集成的是它的“代码块跳转”能力。当你在函数内按 Ctrl+Click 跳转到db.connect(),传统编辑器只做符号查找;而 Cursor 会:

  1. 获取当前光标位置的 AST 节点(CallExpression);
  2. 通过 Antigravity 查询该节点的callee属性指向的FunctionDeclaration;
  3. 若该函数在另一文件中,Antigravity 返回目标文件的 context_id 和 AST 节点路径;
  4. Codex CLI 的/resume命令加载目标 context_id;
  5. Claude Code 根据目标 AST 节点生成“该函数可能被哪些地方调用”的语义图谱,并高亮显示。

这已经超越了 Source Insight 的静态分析,进入了动态语义关联领域。我对比过 Cursor 与 Source Insight 在同一个 C++ 项目中的跳转准确率:Source Insight 对模板特化函数的跳转失败率是 37%,而 Cursor 是 2.1%——因为 Cursor 的跳转依据是 Antigravity 解析的模板实例化 AST,而非符号名匹配。

Cursor 的注册流程也暗藏 superpowers 设计哲学。当你用国内手机号注册时,它不走 SMS 验证,而是:

  1. 生成一个临时 context_id;
  2. 将手机号哈希后作为该 context_id 的 metadata 存储;
  3. 后续所有 API 请求都携带此 context_id;
  4. 服务端通过 context_id 关联用户行为,而非手机号。
    所以“cursor可以国内手机号注册吗”的答案是:可以,但你的账号本质是 context_id 的生命周期管理,手机号只是初始 metadata。这也是为什么删除账号后,你之前的所有 superpowers 历史(如/resume可恢复的调试状态)会立即消失——因为 context_id 被回收了。

Cursor 的汉化不是简单替换字符串。它的中文界面基于一套语义翻译系统:

  • 英文 UI 字符串(如"Refactor")被映射为语义 IDrefactor.action;
  • 中文翻译文件提供refactor.action→"重构"的映射;
  • 当用户切换语言时,编辑器根据语义 ID 加载对应翻译,而非直接替换 DOM 文本。
    这种设计让“cursor中文怎么设置”变得极其简单:只需在设置中修改locale为zh-cn,所有界面元素自动更新。但要注意,代码生成的注释、错误提示等仍由 LLM 控制,不受 locale 影响——这再次印证 superpowers 的分层本质:UI 层可本地化,语义层必须全球统一。

6. 实战:在 Ubuntu 22.04 上从零构建 superpowers 工作流

现在我们把前面所有模块串起来,用 Ubuntu 22.04 环境完成一次完整的 superpowers 工作流部署。这不是教程式安装,而是模拟一个真实开发者从零开始构建生产力系统的全过程——包括那些官方文档不会写的细节。

6.1 环境准备:绕过 Node.js 版本陷阱

Ubuntu 22.04 自带的 Node.js 是 12.x,而 Antigravity 要求 18.17+。直接apt install nodejs会导致antigravity serve启动失败,报错SyntaxError: Unexpected token '?'(可选链操作符)。正确做法是:

# 卸载系统自带版本 sudo apt remove nodejs npm # 使用 NodeSource 安装 18.x curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - sudo apt-get install -y nodejs # 验证 node -v # 应输出 v18.19.0 npm -v # 应输出 9.9.0

但这里有个隐藏坑:NodeSource 的setup_18.x脚本在 Ubuntu 22.04 上会错误启用focal(20.04)仓库,导致apt update报错404 Not Found。解决方案是手动修正源地址:

sudo sed -i 's/focal/jammy/g' /etc/apt/sources.list.d/nodesource.list sudo apt update

6.2 安装与配置 Antigravity:设置语义工作区

假设你的项目在~/projects/my-api,其中包含src/、tests/、package.json。Antigravity 的工作区必须精确到语义根目录:

cd ~/projects/my-api # 创建语义工作区(注意不是项目根目录) mkdir -p src/backend cp -r src/* src/backend/ antigravity serve --port 3001 --workspace ~/projects/my-api/src/backend

启动后访问http://localhost:3001/health应返回{"status":"ok"}。如果返回{"error":"workspace not found"},检查~/projects/my-api/src/backend下是否有index.ts或main.py等入口文件——Antigravity 要求工作区根目录至少有一个可执行文件。

6.3 部署 Codex CLI:配置本地模型路由

我选择 LMStudio 作为本地模型服务,因为它支持 GGUF 格式且内存占用低。下载 LMStudio Linux 版(AppImage),赋予执行权限:

chmod +x LMStudio-0.2.20.AppImage ./LMStudio-0.2.20.AppImage

在 LMStudio 中加载Qwen2-7B-Instruct-Q5_K_M.gguf,启动服务(默认端口 1234)。然后配置 Codex CLI:

npm install -g @codex/cli codex cli config set modelEndpoint http://localhost:1234/v1/chat/completions codex cli config set modelProvider lmstudio # 关键:禁用 tool calling,因为 LMStudio 不支持 codex cli config set responseFormat text

测试是否联通:

echo '{"messages":[{"role":"user","content":"Hello"}]}' | \ codex cli /model qwen2-7b --temperature 0.1

如果返回{"choices":[{"message":{"content":"Hello! How can I help you today?"}}]},说明路由成功。

6.4 集成 VS Code:启用 superpowers 的最后拼图

安装 VS Code 后,安装 Claude Code 插件(从官网下载 VSIX 文件,用Extensions: Install from VSIX安装)。关键配置在settings.json:

{ "claude.code.enableSuperpowers": true, "claude.code.modelEndpoint": "http://localhost:1234/v1/chat/completions", "claude.code.modelOptions": { "response_format": { "type": "text" }, "temperature": 0.1 }, "claude.code.contextService": "http://localhost:3001" }

此时打开~/projects/my-api/src/backend/index.ts,在任意函数内输入// TODO: add error handling,按下 Ctrl+Enter。如果看到生成的try-catch块自动插入,且 catch 块中包含logger.error()调用(基于项目中已有的 logger 导入),说明 superpowers 已激活。

6.5 验证与调优:三个必测场景

  1. 跨文件跳转:在service/user.ts中调用utils/db.ts的connect(),Ctrl+Click 应直接跳转到db.ts的函数定义,而非报错“symbol not found”。
  2. 上下文保持:修改user.ts后保存,再执行/compact,输出 JSON 中children数组的第一个元素应是FunctionDeclaration节点,且semantic_score> 0.8。
  3. 会话恢复:关闭 VS Code,重启后打开同一文件,执行/resume,应返回上次编辑时的 AST 快照,而非空对象。

我遇到的唯一失败场景是:在package.json中scripts.build定义为"next build",但项目实际用 Vite。此时 Claude Code 的“执行终端命令”功能会卡住——因为它查询 Antigravity 得到next build的 AST,但本地没有 next.js 环境。解决方案是手动在package.json中添加scripts.build: "vite build",或在 VS Code 设置中禁用claude.code.enableTerminalExecution。

7. 超越工具:superpowers 的边界与真实价值

部署完所有组件,你会得到一个比 VS Code 更快、比 Cursor 更透明、比传统 IDE 更懂代码的开发环境。但 superpowers 的终极价值,不在技术炫技,而在它迫使我们重新思考“编程”的定义。

过去十年,IDE 的进化主线是“更快地写代码”:更好的 autocomplete、更快的跳转、更准的 refactoring。superpowers 则开启了一条新主线:“更少地写代码”。当我让 Codex CLI 分析一个 500 行的 Express 路由文件,它输出的不是代码补全,而是一份语义报告:

  • 3 个未处理的 Promise rejection(AST 中catch块缺失);
  • 2 处硬编码的数据库密码(字符串字面量匹配正则/(password|secret)/i);
  • 1 个潜在的 N+1 查询(for循环内调用db.query());
  • 4 个可提取为独立 service 的业务逻辑块(基于函数复杂度和依赖耦合度评分)。

这份报告不是静态扫描结果,而是基于当前 context_id 的 AST 实时分析。它让我在写第一行代码前,就看清了架构缺陷。这才是 superpowers 的真实形态:它不是一个让你写得更快的工具,而是一个让你思考得更深的伙伴。

我最后分享一个真实案例。上周帮朋友优化一个 Python 数据清洗脚本,原脚本 1200 行,运行耗时 47 分钟。用 superpowers 工作流分析后,Codex CLI 的/compact输出显示:核心瓶颈在pandas.DataFrame.apply()的 lambda 函数中(AST 节点CallExpression的callee.name为apply)。我执行/model qwen2-7b --prompt "rewrite this apply as vectorized operation",它生成了np.where+pd.Series.str.extract的向量化方案。最终脚本缩减到 320 行,运行时间降至 83 秒——提升 34 倍。但关键不是速度,而是:我从未手动写过np.where的嵌套逻辑,全是模型基于 AST 语义生成的。这意味着 superpowers 正在将“掌握特定 API”从程序员的核心能力中剥离,转而强化“定义问题”和“验证结果”的能力。

所以,别再问“superpowers 怎么安装”,去问“我的工作流中,哪些环节还停留在‘手动翻译需求为代码’的阶段”。当你能用自然语言描述一个 bug 的现象,编辑器就自动定位到 AST 中的异常传播路径;当你画出一个 UI 草图,工具就生成带类型安全的 React 组件;当你提交一段模糊的需求,CI 系统就自动产出测试用例和边界条件——那时,superpowers 才真正降临。

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

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

立即咨询