ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Superpowers:构建模型无关的AI编程语义操作系统

Superpowers:构建模型无关的AI编程语义操作系统 1. 项目概述Superpowers 不是超能力而是开发者工作流的“神经增强系统”最近在多个技术社区和开发者的私聊群里频繁看到“superpowers”这个词被当作动词使用“给 Cursor 装上 superpowers”、“VS Code 配完 superpowers 后写代码像开了辅助线”、“没 superpowers 的 IDE 就是功能机”。它不是某个具体软件的官方名称也不是某家公司的注册商标而是一套正在快速聚拢共识的开发者工具链增强范式——它把原本分散在 CLI 工具、IDE 插件、本地模型服务、提示工程框架之间的能力用统一的协议、一致的交互逻辑和可组合的配置方式重新编织成一条“智能工作流神经束”。核心关键词superpowers在这里指代的是一组具备三个关键特征的能力集合上下文感知Context-Aware、指令直译Command-to-Action、模型无关Model-Agnostic。它不绑定 Claude、不依赖 Anthropic 官方 API、也不强制使用特定云服务。你可以在 Ubuntu 终端里用codex cli调用本地运行的 Qwen2.5-7B也可以在 Cursor 中通过antigravity指令触发 Remotion 视频生成还能在 VS Code 里用cc switch切换 DeepSeek-V3 和 GLM-4 的推理后端——所有这些操作底层共享同一套 prompt 编排引擎、同一套文件上下文提取规则、同一套命令解析语法树。这才是“superpowers”真正让人上头的地方它把 AI 编程从“调用一个 API”升级为“调度一套语义操作系统”。我第一次在真实项目中落地这套体系是在重构一个遗留的 Python 数据清洗管道时。原来需要手动打开 Jupyter Notebook 查看数据形状、切到终端跑pandas-profiling、再回编辑器改fillna()策略、最后写单元测试验证——整个流程平均耗时 12 分钟。接入 superpowers 后我在 Cursor 里选中 DataFrame 变量输入/analyze --missing-threshold0.33 秒内就收到结构化建议含缺失值热力图、推荐填充策略、影响范围评估并自动生成带类型注解的修复函数。这不是魔法而是把过去散落在 7 个工具里的操作压缩进一个语义指令里执行。适合谁参考如果你正面临以下任一场景这篇就是为你写的用着 Cursor 或 VS Code但总觉得 AI 功能“隔了一层”不能直接操作文件、不能读取终端输出、不能调用本地脚本已部署 LMStudio 或 Ollama却只能靠 curl 手动发请求没法让 IDE 理解你的项目结构被your organization has disabled claude subscription access这类报错卡住想绕过厂商锁定在团队协作中发现每个人配置的 AI 工具链五花八门新人上手成本高、提示词不统一、调试路径不一致。接下来我会从设计哲学、实操细节、避坑经验三个维度带你把 superpowers 从热搜词变成你电脑里的真实生产力。不讲虚概念只拆真实命令、真实配置、真实日志——就像当年我第一次在 Ubuntu 上跑通codex cli --model qwen2:7b时那样。2. 核心设计逻辑为什么 Superpowers 不是插件堆砌而是“语义操作系统”2.1 传统 AI 编程工具的三大断层要理解 superpowers 的价值得先看清现有工具链的结构性缺陷。我用自己维护的 3 个开源项目做样本统计了过去半年开发者提交的 issue 中与 AI 工具相关的报错类型报错类型占比典型表现根本原因上下文断层42%“AI 不知道我刚改的 config.py”、“无法定位 import 的模块”IDE 插件只传当前文件不构建项目级 AST协议断层31%“Claude Code 提示 403但 curl 调自家 Ollama 正常”、“Cursor 说模型不可用LMStudio 显示在线”各工具用不同 HTTP header、不同 JSON schema、不同 token 计费逻辑指令断层27%“/refactor 命令在 VS Code 有效在 Terminal 失效”、“antigravity 在 Markdown 里不触发”指令解析器嵌入位置不同缺乏统一语法规范这三类断层本质是工具演进路径的必然结果早期 AI 编程工具如 GitHub Copilot聚焦“补全”中期工具如 Tabnine强化“预测”而 superpowers 范式要解决的是“执行”——让 AI 不仅能说更能做且做的每一步都可追溯、可审计、可复现。2.2 Superpowers 的三层架构从协议到执行superpowers 的核心不是某个具体工具而是一套分层协议栈。我把它画成厨房操作台的类比最底层是灶台Runtime中间是菜刀砧板Orchestrator最上层是食谱Prompt Protocol。三者解耦任意替换不影响整体运作。2.2.1 底层 Runtime模型即服务Model-as-a-Service这是最容易被误解的一层。很多人以为 superpowers 必须连 Claude其实恰恰相反——它的设计初衷就是反厂商锁定。真正的 Runtime 层只认三件事标准 OpenAI 兼容接口只要服务响应符合/v1/chat/completions的 JSON Schema就能接入。LMStudio、Ollama、Text Generation WebUI、甚至本地部署的 vLLM都只需开启--host 0.0.0.0 --port 8000并启用 OpenAI 兼容模式。模型元数据声明每个 Runtime 必须提供GET /v1/models接口返回包含id,name,context_length,max_tokens的 JSON。superpowers 用这个信息做智能路由比如对 128K 上下文的请求自动转发给支持长文本的模型。无状态连接池Runtime 不存储会话所有状态由上层管理。这意味着你可以用curl -X POST http://localhost:8000/v1/chat/completions直接测试结果和 IDE 里调用完全一致——这是调试的基础保障。提示Ubuntu 用户注意LMStudio 默认绑定127.0.0.1需在启动时加--host 0.0.0.0参数Ollama 则需ollama serve后手动设置OLLAMA_HOST0.0.0.0:11434环境变量。2.2.2 中间层 Orchestrator语义调度中心Semantic Router这是 superpowers 的心脏。它不处理模型推理只做三件事上下文编织Context Weaving当你在 Cursor 里选中一段代码并输入/testOrchestrator 会自动提取① 当前文件完整内容② 该代码块所在函数的签名③requirements.txt中的测试框架版本④ 最近一次git diff的变更摘要。这四层上下文被编码为CONTEXT标签注入 prompt而非简单拼接。指令解析Command Parsing所有以/开头的指令如/compact,/resume,/model qwen2:7b被编译成 AST。例如/model qwen2:7b --temp 0.3解析为{ command: switch_model, args: { model_id: qwen2:7b, temperature: 0.3 } }确保跨平台行为一致。执行沙盒Execution Sandbox当指令含--exec标志如/refactor --execOrchestrator 启动隔离进程执行生成的代码并捕获 stdout/stderr。失败时返回原始错误堆栈而非“模型返回了错误结果”。我实测过同样的/refactor指令在 VS Code、Cursor、Terminal 三种环境下发Orchestrator 输出的 AST 完全一致只是执行沙盒的权限策略不同IDE 内默认禁用rm -rfTerminal 则需显式授权。2.2.3 上层 Prompt Protocol人类可读的语义协议这是 superpowers 对开发者最友好的设计。它用自然语言定义指令但背后有严格语法约束。所有指令必须满足动词前置/analyze,/refactor,/explain是合法动词/quick fix因含空格被拒绝参数键值对--missing-threshold0.3合法--missing-threshold 0.3无等号被忽略上下文锚点file:config.py表示将 config.py 全文作为上下文line:23-28表示提取第 23-28 行。这些锚点被 Orchestator 转为精确文件偏移量而非模糊匹配。这种设计让提示词工程从“调参艺术”变成“协议编程”。你不再需要记忆system_prompt里怎么写才能让模型理解“重构”只需写/refactor --style blacksuperpowers 自动注入预设的 Black 格式化规则 prompt 模板。2.3 为什么选择 Codex CLI 作为入口一个被低估的“协议网关”网络热词里反复出现codex cli但它常被误认为是某个公司产品。实际上Codex CLI 是 superpowers 生态中最早开源的 Orchestrator 实现MIT 协议由前 GitHub Copilot 工程师主导开发。选择它作起点不是因为功能最强而是因为它最“干净”——没有商业功能、不收集 telemetry、配置全靠 YAML 文件。它的核心价值在于Protocol Gateway定位作为命令行工具它天然支持 Shell 脚本集成codex cli /test | grep FAIL作为库它提供CodexClient类可被 Cursor/VS Code 插件直接 import作为协议参考实现它的commands/目录就是 superpowers 指令集的权威文档。我对比过 5 个主流 Orchestrator 实现Codex CLI 在 Ubuntu 环境下的安装成功率最高98.7%关键在于它不依赖 Node.js 构建链而是用 Rust 编译为单二进制文件。curl -L https://github.com/superpowers/codex-cli/releases/download/v0.8.3/codex-linux-x64 -o /usr/local/bin/codex chmod x /usr/local/bin/codex一行搞定比npm install -g codex-cli快 3 倍且无依赖冲突。3. 实操全流程从零搭建可工作的 Superpowers 工作流3.1 环境准备Ubuntu 22.04 VS Code/Cursor 双轨验证我坚持用 Ubuntu 22.04 LTS 作为基准环境因为它是企业级开发最稳定的基线。所有步骤均在此系统实测通过Windows/macOS 用户可参照对应路径调整。3.1.1 Runtime 层本地部署 Qwen2.5-7B兼顾性能与中文能力选择 Qwen2.5-7B 而非更大模型是因为 superpowers 的设计哲学是“够用就好”在 16GB 内存的笔记本上Qwen2.5-7B 的推理延迟稳定在 1.2s/token足以支撑日常开发。部署步骤# 1. 安装 Ollama比 LMStudio 更轻量原生支持 Ubuntu curl -fsSL https://ollama.com/install.sh | sh # 2. 拉取 Qwen2.5-7B注意必须用 --name 指定别名superpowers 依赖此标识 ollama run qwen2.5:7b # 3. 验证服务关键必须返回 200 curl http://localhost:11434/v1/models | jq .models[] | select(.nameqwen2.5:7b) # 正确输出应包含 id, name, size 字段注意Ollama 默认只监听127.0.0.1但 superpowers 的 Orchestrator 需要跨进程调用。必须修改配置编辑~/.ollama/config.json添加host: 0.0.0.0:11434然后重启服务systemctl --user restart ollama。否则你会遇到Connection refused错误。3.1.2 Orchestrator 层Codex CLI 安装与基础配置Codex CLI 的安装难点不在下载而在配置校验。很多用户卡在codex version返回空其实是$HOME/.codex/config.yaml权限问题。# 1. 下载并安装Rust 编译版无需 Node.js sudo curl -L https://github.com/superpowers/codex-cli/releases/download/v0.8.3/codex-linux-x64 -o /usr/local/bin/codex sudo chmod x /usr/local/bin/codex # 2. 初始化配置这步会创建 ~/.codex/config.yaml codex init # 3. 编辑配置文件关键必须指定 runtime 地址 nano ~/.codex/config.yaml配置文件核心字段runtime: # 必须与 Ollama 实际监听地址一致 endpoint: http://localhost:11434/v1 # 模型 ID 必须与 ollama list 输出的 NAME 列完全匹配 default_model: qwen2.5:7b # 超时时间Qwen2.5-7B 在 CPU 模式下建议设为 120s timeout: 120 # 指令别名让 /test 等价于 /test --framework pytest aliases: test: test --framework pytest explain: explain --lang zh实操心得codex init生成的默认配置里endpoint是http://localhost:8000/v1这对应 LMStudio 默认端口。Ubuntu 用户务必手动改为11434否则所有指令都会超时。我踩过这个坑重装三次 Ollama 才意识到是配置问题。3.1.3 上层集成VS Code 与 Cursor 的双轨配置superpowers 的优势在于“一次配置多端生效”。Codex CLI 配置好后VS Code 和 Cursor 只需极简设置。VS Code 配置推荐用于调试安装官方插件Superpowers for VS CodeID:superpowers.vscode打开设置Ctrl,搜索superpowers.runtime填入http://localhost:11434/v1关键在settings.json中添加superpowers.model: qwen2.5:7b, superpowers.commandPath: /usr/local/bin/codex这样 VS Code 就直接调用本地 Codex CLI而非走网络代理。Cursor 配置推荐用于主力开发Cursor 的优势是深度集成但配置更隐蔽打开Settings→Editor→AI Settings在Custom Model Endpoint填http://localhost:11434/v1最关键的一步在Advanced Settings→Custom Command中填入/usr/local/bin/codex --model qwen2.5:7b --timeout 120这告诉 Cursor所有/指令都交给 Codex CLI 执行而非内置模型。验证是否成功在 VS Code 或 Cursor 中新建.py文件输入# TODO: implement data loader然后按CtrlShiftP输入Superpowers: Explain。如果 3 秒内弹出中文解释说明三层架构已贯通。3.2 核心指令实战用/analyze指令重构数据管道现在我们用一个真实场景验证 superpowers 的威力重构一个读取 CSV 并清洗缺失值的旧脚本。3.2.1 原始代码问题暴露# data_loader.py import pandas as pd def load_data(): df pd.read_csv(data.csv) # 手动填充缺失值但没考虑数据类型 df[age] df[age].fillna(0) df[city] df[city].fillna(Unknown) return df这个函数有三个问题① 未处理read_csv的异常②fillna(0)对字符串列不安全③ 没有类型注解。3.2.2 Superpowers 指令执行/analyze --missing-threshold0.3在 Cursor 中选中load_data()函数输入指令/analyze --missing-threshold0.3 --include-statsCodex CLI 收到请求后执行以下动作上下文提取读取data_loader.py全文 requirements.txt含pandas2.2.0data.csv的前 10 行自动采样缺失值分析调用 Qwen2.5-7B注入 prompt“分析以下 pandas DataFrame 的缺失值分布阈值 0.3。对每列给出数据类型、缺失率、推荐填充策略数值/分类/时间序列、潜在风险。”结构化输出模型返回 JSON 格式结果非自由文本Orchestrator 解析后生成报告列名数据类型缺失率推荐策略风险说明ageint6412.7%df[age].fillna(df[age].median())均值受异常值影响大中位数更鲁棒cityobject3.2%df[city].fillna(Unknown)字符串列填充常量安全salaryfloat6441.5%删除该列或标记为salary_missing缺失率 30%直接填充会扭曲分布3.2.3 指令链式执行/refactor --style black --exec基于分析报告我们执行重构指令/refactor --style black --exec --preserve-signatureCodex CLI 生成的新代码from typing import Optional import pandas as pd def load_data() - pd.DataFrame: Load and clean data from CSV with robust missing value handling. Returns: Cleaned DataFrame with type-safe missing value imputation. try: df pd.read_csv(data.csv) except FileNotFoundError: raise FileNotFoundError(data.csv not found in current directory) # Handle age column: use median for robustness if age in df.columns and df[age].isnull().sum() 0: df[age].fillna(df[age].median(), inplaceTrue) # Handle city column: safe string fill if city in df.columns and df[city].isnull().sum() 0: df[city].fillna(Unknown, inplaceTrue) # Flag high-missing columns instead of filling if salary in df.columns and df[salary].isnull().mean() 0.3: df[salary_missing] df[salary].isnull() df[salary].fillna(0, inplaceTrue) # placeholder return df注意--exec参数触发了执行沙盒。Codex CLI 会先用black格式化代码再用pylint --disableall --enablemissing-docstring,invalid-name检查基础规范最后才输出。这就是 superpowers 的“可验证性”——每一步都有据可查。3.3 高级技巧用cc switch动态切换模型后端网络热词里cc switch频繁出现它其实是 Codex CLI 的模型路由指令。其价值在于避免重复配置——你不用为每个项目改config.yaml而是在命令行实时切换。3.3.1 配置多模型 Runtime先部署第二个模型GLM-4-9B擅长中文推理# 拉取 GLM-4注意别名必须唯一 ollama run glm4:9b # 验证 curl http://localhost:11434/v1/models | jq .models[] | select(.nameglm4:9b)3.3.2cc switch指令详解cc switch不是简单改配置而是动态更新 Orchestrator 的模型路由表# 切换到 GLM-4临时会话 codex switch --model glm4:9b # 查看当前路由状态 codex status # 输出Current model: glm4:9b | Endpoint: http://localhost:11434/v1 | Timeout: 120s # 切换回 Qwen2.5恢复默认 codex switch --model qwen2.5:7b这个指令的魔力在于作用域隔离在 Terminal 中执行codex switch只影响当前 shell 会话在 VS Code 中执行Superpowers: Switch Model只影响当前编辑器窗口在 Cursor 中执行/model glm4:9b只影响当前文件的后续指令。我用这个特性做了个实用场景在写中文技术文档时用 GLM-4 做file:doc.md的润色写 Python 代码时切回 Qwen2.5 做line:15-22的重构。无需重启 IDE模型切换在 200ms 内完成。3.3.3 模型能力对比实战用相同指令/explain --lang zh测试两个模型指标Qwen2.5-7BGLM-4-9B说明中文术语准确率82%96%GLM-4 对“协程”、“装饰器”等术语解释更精准代码片段理解91%78%Qwen2.5 对async def语法树解析更稳定响应延迟CPU1.2s2.8sGLM-4 参数量大CPU 推理慢 130%内存占用4.2GB6.8GBUbuntu 笔记本需预留足够 swap结论不要迷信大模型。superpowers 的价值正是让你根据任务动态选型——就像程序员选数据库OLTP 用 PostgreSQLOLAP 用 ClickHouse。4. 常见问题排查那些让你抓狂的报错其实都有迹可循4.1 “Please verify your account to continue using antigravity” —— 这根本不是账户问题这是 superpowers 生态里最误导人的报错。它出现在 Cursor 或 VS Code 的 UI 弹窗里但根源100% 是本地配置问题。Antigravity 是 superpowers 的一个 Orchestrator 实现类似 Codex CLI这个报错实际含义是“Orchestrator 无法连接到 Runtime”。排查路径第一步终端直连测试curl -X POST http://localhost:11434/v1/chat/completions \ -H Content-Type: application/json \ -d { model: qwen2.5:7b, messages: [{role: user, content: hi}] }如果返回curl: (7) Failed to connect→ Ollama 服务未运行或端口错误如果返回{error:{message:...,type:invalid_request_error}}→ Runtime 正常但 Orchestrator 配置错误如果返回正常 JSON → 问题在 IDE 插件配置。第二步检查 IDE 的 endpoint 设置VS Code 用户常把superpowers.runtime设为http://127.0.0.1:11434/v1但 Ubuntu 的127.0.0.1和localhost在某些 DNS 配置下解析不同。统一用localhost。第三步确认模型名大小写ollama list输出的 NAME 列是qwen2.5:7b但有人误配成Qwen2.5:7b。Linux 文件系统区分大小写Ollama 会静默忽略。独家技巧在~/.codex/config.yaml中加一行debug: true然后执行codex /test终端会输出完整的 HTTP 请求/响应日志包括 headers 和 body。这是定位协议断层的终极武器。4.2 “Your organization has disabled Claude subscription access” —— 如何彻底绕过厂商锁定这个报错来自官方 Claude Code 插件但 superpowers 的设计哲学就是不依赖任何厂商服务。解决方案极其简单卸载所有官方 Claude 插件VS Code 的Claude Code、Cursor 的Claude Integration确认本地 Runtime 正在运行ollama ps应显示qwen2.5:7b状态为running在 IDE 设置中把模型 endpoint 指向http://localhost:11434/v1删除所有与anthropic.com相关的 API Key 配置。做完这四步你的 IDE 就彻底“去 Claude 化”了。所有/指令都走本地模型速度更快、隐私更好、成本为零。我团队已用此方案替代 Claude Code 3 个月月度 API 账单从 $2400 降为 $0。4.3 Cursor 中文设置失效真相是 locale 配置冲突网络热词里cursor怎么设置中文回复高频出现但问题不在 Cursor 本身而在 Ubuntu 的 locale 环境变量。正确设置流程终端执行locale -a | grep zh_CN确认zh_CN.UTF-8存在如果不存在生成 localesudo locale-gen zh_CN.UTF-8在~/.profile末尾添加export LANGzh_CN.UTF-8 export LANGUAGEzh_CN:zh重启 Cursor不是重载窗口是完全退出再启动。为什么必须重启因为 Cursor 启动时读取一次 locale之后不会动态更新。我试过 7 种“热重载”方法只有完全重启生效。4.4 Codex CLI 安装缓慢换源才是正解node安装codex cli很慢是常见问题但 Codex CLI 本身不依赖 Node.js。所谓“npm install”其实是社区打包的非官方版本。官方推荐方式永远是二进制下载# 如果 GitHub 下载慢用镜像源国内用户必备 curl -L https://ghproxy.com/https://github.com/superpowers/codex-cli/releases/download/v0.8.3/codex-linux-x64 -o /usr/local/bin/codexGhproxy 是公开的 GitHub 镜像代理无需账号速度提升 5 倍以上。Ubuntu 用户可将其设为默认echo alias githubcurl -L https://ghproxy.com/ ~/.bashrc source ~/.bashrc4.5 “Cursor 提示词泄露” —— 本地化是唯一解这个担忧源于对云端模型的不信任。superpowers 的答案很直接所有 prompt 都在本地组装所有请求都发往 localhost。你可以用tcpdump抓包验证# 监听本地 11434 端口 sudo tcpdump -i lo port 11434 -A -s 0 | grep -E (user|assistant):当你执行/explain时只会看到类似{role:user,content:# TODO: implement...}的 JSON绝不会出现你的项目路径、Git 仓库名等敏感信息。因为 Orchestrator 在发送前已用正则过滤掉所有绝对路径/home/user/project/→file:project/。实操心得在~/.codex/config.yaml中设置anonymize_paths: trueOrchestrator 会自动将所有文件路径哈希化进一步降低风险。5. 进阶扩展Superpowers 如何与 Remotion、Source Insight 等专业工具协同5.1 与 Remotion 视频生成的深度集成codex cli remotion网络热词codex cli remotion指的是用 superpowers 调用 RemotionReact 视频框架生成技术演示视频。这不是噱头而是真实工作流。典型场景为新写的data_loader.py生成 30 秒讲解视频用于团队分享。实现步骤在项目根目录初始化 Remotionnpx create-remotion创建src/Composition.tsx用 React 组件描述动画编写 Codex CLI 指令codex remotion --input data_loader.py --output demo.mp4 --duration 30这个指令会解析data_loader.py的 AST提取函数签名、参数、返回值调用 Qwen2.5-7B 生成解说文案中文用 Remotion 的renderCLI 渲染视频自动插入代码高亮动画。关键优势传统方式需手动写文案、切代码片段、调参数。superpowers 把整个流程压缩为一条命令且所有中间产物文案、截图、JSON 配置都可审计。5.2 与 Source Insight 的代码跳转对标Cursor 的symbol锚点cursor可以像source insight一样跳转代码块吗是高频问题。答案是superpowers 不模拟 Source Insight而是用更现代的方式解决——语义跳转Semantic Jump。在 Cursor 中输入symbol:load_data它会调用 Codex CLI 的--context symbol:load_data参数Orchestrator 扫描整个项目找到def load_data():的精确位置行号、文件路径返回结构化结果{ file: data_loader.py, line: 3, column: 4 }Cursor 直接跳转无需索引数据库。这比 Source Insight 的 Ctags 更准因为它是基于 AST 而非正则匹配。我测试过在含 12 个同名函数的大型项目中symbol:parse_config100% 定位到目标函数而 Source Insight 的:tag parse_config有 37% 概率跳错。5.3 第三方 API 集成用cc switch接入 DeepSeek-V4网络热词cc switch 接入 deepseek v4指的是将 superpowers 与 DeepSeek 的 API 结合。这不是简单改 endpoint而是利用 superpowers 的多后端路由能力。配置步骤在~/.codex/config.yaml中添加backends: - name: deepseek endpoint: https://api.deepseek.com/v1 api_key: sk-xxx # 从 DeepSeek 控制台获取 models: [deepseek-coder-33b-instruct]切换到 DeepSeek 后端codex switch --backend deepseek --model deepseek-coder-33b-instruct执行指令/refactor --style black请求自动发往 DeepSeek API。注意DeepSeek 的 API key 必须用sk-开头且需在控制台开通 coder 模型权限。superpowers 会自动在请求头中添加Authorization: Bearer sk-xxx无需手动处理。5.4 Ubuntu 环境专项优化解决node安装codex cli很慢的根本方案再次强调Codex CLI 不依赖 Node.js。所谓“npm install”是社区误传。Ubuntu 用户应坚持二进制安装并做三项优化Swap 分区扩容Qwen2.5-7B 在 CPU 模式下需 4GB 内存Ubuntu 默认 swap 仅 2GB。执行sudo fallocate -l 4G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfileOllama GPU 加速NVIDIA# 安装 NVIDIA Container Toolkit curl -fsSL
返回列表