AI 编码代理必须强制检查并加载相关 Superpowers 技能,这是整个方法论生效的纪律基础。核心机制是:代理收到任何任务后,必须先判断是否有哪怕 1% 的概率适用任何技能,并调用对应的 Skill(或平台等效工具)加载内容,而非自行探索或直接回答。本文将拆解 using-superpowers/SKILL.md 中定义的强制规则、不同平台的工具适配方案以及具体的执行流程。

using-superpowers 工作机制:为什么代理必须先加载相关技能

Superpowers 工作流 中,using-superpowers 技能是启动纪律。它不指导具体编码,而是规定了代理如何发现和加载其他所有技能。缺少这一步,brainstormingwriting-planstest-driven-development 等后续流程便无从触发,AI 很容易回到自由探索、即兴回应的低效状态。

核心规则:1% 可能性,100% 强制调用

using-superpowers/SKILL.md 通过一个醒目的 <EXTREMELY-IMPORTANT> 块确立了非谈判性规则:

If you think there is even a 1% chance a skill might apply to what you are doing, you ABSOLUTELY MUST invoke the skill. IF A SKILL APPLIES TO YOUR TASK, YOU DO NOT HAVE A CHOICE. YOU MUST USE IT.

这意味着代理必须将用户的任何输入都视为潜在任务,并在思考或行动前执行技能检查。该规则旨在根除代理的几种常见错误行为,文件中的 Red Flags 表对此有清晰对照:

代理常有的想法 事实
“这只是一个简单问题” 问题也是任务。需要检查技能。
“我需要先获取更多上下文” 技能检查优先于澄清提问。
“让我先探索一下代码库” 技能会告诉你如何探索。先检查。
“这个技能我记得” 技能会迭代。必须读取当前版本。
“感觉这样有生产力” 无纪律的行动浪费时间。技能防止这种情况。

强制检查的执行流程

当代理收到用户消息时,它必须遵循 SKILL.md 中描述的决策流:

  1. 判断是否有技能可能适用:代理评估用户请求,哪怕有微小的关联可能(1%),都必须进入下一步。
  2. 调用 Skill 工具:在 Claude Code 中,这意味着使用 Skill 工具加载相关技能的 SKILL.md 文件。
  3. 宣布使用技能:代理应告知用户它正在使用哪个技能来处理任务。
  4. 执行技能内容:加载的技能可能包含检查清单。代理应为每个清单项创建待办事项(如使用 TodoWrite 工具),然后严格按照技能指导行动。

如果代理明确判断没有技能适用,它才能直接回应用户。即便判断错误,调用了不相关的技能,过程也是可逆的——代理确认后无需使用该技能。整个流程确保了技能被主动发现和使用。

指令优先级与用户控制

Superpowers 的技能并非铁律。SKILL.md 明确了指令的优先级层次:

  1. 用户明确指令(如 CLAUDE.mdGEMINI.md 中的设置或直接对话)— 最高优先级。
  2. Superpowers 技能 — 覆盖默认系统行为。
  3. 默认系统提示 — 最低优先级。

例如,如果用户的 GEMINI.md 配置禁用 TDD,即使 test-driven-development 技能要求必须遵循 TDD,代理也应服从用户指令。这确保了用户对工作流的最终控制权。

跨平台适配:不同的“钥匙”

using-superpowers 技能的核心是调用一个“技能工具”,但这个工具在不同平台有不同名称和机制。SKILL.md 提供了入口,并指向具体的映射文件。理解这些适配是让技能在非 Claude Code 平台上生效的关键。Gemini CLI 与 GitHub Copilot CLI 如何适配 SuperPowers 技能工具名 文章对此有更深入的探讨。

Claude Code:原生 Skill 工具

在 Claude Code 中,代理直接使用其内置的 Skill 工具来加载技能内容。这是最直接的路径。

其他平台的工具映射

对于非 Claude Code 的平台,代理需要遵循映射表,使用各自的等效工具:

  • Codex:根据 codex-tools.md,Codex 原生支持技能加载。代理只需遵循加载后的指令。但对于子代理派发,需要将 Task 工具替换为 spawn_agent
  • Copilot CLI:根据 copilot-tools.md,使用 skill 工具。技能从已安装的插件中自动发现。
  • Gemini CLI:根据 gemini-tools.md,使用 activate_skill 工具。工具映射会通过 GEMINI.md 文件自动加载。
  • OpenCode:通过插件 .opencode/plugins/superpowers.js 实现。该插件会在会话开始时,将 using-superpowers 的核心内容和 OpenCode 专用的工具映射(如 Task -> OpenCode 子代理系统,TodoWrite -> todowrite)直接注入到第一条用户消息中,并确保技能路径被加入配置。

Gemini CLI 的特殊入口

Gemini CLI 通过 GEMINI.md 文件中的 @import 指令来加载 using-superpowers 技能及其工具映射参考,实现了技能的自动引入。相关映射详情可参考 gemini-tools.md

OpenCode 的引导注入

OpenCode 版 SuperPowers 插件源码解析中详细说明了,插件通过 config hook 自动将技能目录加入配置,并通过消息变换 hook 将 using-superpowers 内容注入第一条用户消息,而非系统消息,以避免 token 膨胀和兼容性问题。它同时注入了针对 OpenCode 的工具替换说明。

验证“先加载技能”是否生效

作为开发者或用户,你可以通过以下迹象验证代理是否遵守了 using-superpowers 规则:

  • 明确声明:代理的回复中会包含类似“正在使用 brainstorming 技能来…”的语句。
  • 流程合规:代理不会直接开始编码或给出方案,而是先进行需求澄清(头脑风暴)或询问更多细节。
  • 工具调用记录:在支持日志的平台(如 Claude Code)中,你应能看到 Skill 工具被调用的记录。
  • 错误处理:当代理试图跳过技能检查时(例如,直接开始写代码而未询问设计),这通常意味着规则未被正确加载或执行。检查插件或技能文件的安装路径。

技能类型与执行严格度

using-superpowers 还定义了技能的两种类型,代理需据此调整行为:

  • 严格型技能(如 test-driven-developmentsystematic-debugging):必须完全遵循,不得偏离纪律。
  • 灵活型技能(如某些设计模式):可将原则适应于具体上下文。

技能本身会说明其类型。

using-superpowers 通过一套明确的、可验证的强制检查流程,确保了 Superpowers 技能库不再是可选参考,而是代理行为的基本约束。它是连接用户意图与标准化开发流程的第一座桥梁,也是整个工作流闭环得以运转的起点。

FAQ

Q: 为什么代理不能“先回答简单问题,再检查技能”? A: 因为“简单问题”可能涉及上下文、代码结构或后续任务,这些恰恰是技能(如 brainstormingsystematic-debugging)所管理的领域。先回答可能误导代理进入错误路径,消耗更多 token 并降低质量。

Q: 在不支持子代理的平台(如 Gemini CLI)上,涉及 subagent-driven-development 的流程会如何? A: 技能会识别平台能力并自动降级。根据 gemini-tools.md,Gemini CLI 不支持传统的子代理派发,因此相关技能会回退到使用其原生工具(如 @generalist)和提示词模板来模拟子代理工作流,或引导用户采用单会话执行模式。

Q: OpenCode 插件为什么将引导内容注入用户消息而非系统消息? A: 根据插件源码 .opencode/plugins/superpowers.js 的注释,这是为了避免系统消息带来的 token 重复膨胀,并防止多条系统消息破坏某些模型(如 Qwen)的处理逻辑,确保引导内容稳定生效。