乐于分享
好东西不私藏

我给 AI 助手做了一次"减肥手术"——Claude Code Superpowers 技能优化实录

我给 AI 助手做了一次"减肥手术"——Claude Code Superpowers 技能优化实录

我让 AI 帮我改一行代码,它回我说:”要不要先做个头脑风暴?”

不是 AI 抽风了——是它每次开对话都自动加载了一整套开发流程,然后努力把所有任务都塞进这条流水线里。

这就是我决定优化 Superpowers 技能包的起点。Superpowers 是 Jesse Vincent(GitHub @obra)为 Claude Code 编写的一套提示词模板(Claude Code 叫它”Skills”),包含 13 个技能,覆盖从需求分析到代码交付的完整流程。设计很用心,GitHub 上也颇受欢迎。但实际用下来,我发现了一些值得改进的地方。

于是我花了一点时间,和 Claude 一起做了一次彻底的优化。过程中最大的收获不是”删了多少行”,而是一个认知:

优化 AI 的提示词,和优化代码遵循同样的原则——先改架构,再改实现。

第一层:什么时候加载?这才是最大的杠杆

原版 Superpowers 有一个核心设计:一个叫 using-superpowers 的”总调度”技能被配置为每次新建会话自动注入

这意味着什么?无论你是启动一个复杂的开发项目、写一封邮件、还是随口问一个问题,AI 都会先加载整套 Superpowers 的调度逻辑,然后判断”这次要不要走 brainstorming → writing-plans → executing-plans 这条流水线”。

类比一下:这就像你每次打开手机,系统都自动启动 Photoshop、Excel、Xcode 全家桶,然后判断”这次要不要用”。大多数时候你只是想看个微信,但全家桶已经把内存吃满了。 

这个设计带来两个问题:

  • 每次对话都额外消耗 Token
    ——加载调度指令本身就占上下文窗口,而大多数对话根本不需要走开发流程
  • AI 对非编码任务也试图套用开发流程
    ——你让它帮忙写个邮件,它可能先问你”要不要做个头脑风暴”

优化方案很简单:改为按需调用。

using-superpowers 不再自动注入,只在用户明确启动开发类任务时才加载。日常对话、写作、调研等场景完全不受影响。

这一刀没有改动任何技能的内容,但可能是整个优化中收益最大的单一改动——因为它减少的不是几十行提示词,而是大量本不需要的完整调度周期。如果你每天开十几个新会话,其中大半是非开发任务,这一改动每天就省掉了十几次完全不必要的调度加载。

第二层:加载了什么?精简每个技能的内容

解决了”什么时候加载”的问题后,下一步是审视”加载了什么”。打开每个技能文件一看,发现不少内容对 AI 的实际执行帮助有限,但每次调用都要消耗 Token。

具体发现了什么?

大量”说服性”而非”指令性”的内容。举个例子,test-driven-development 这个技能原版 372 行,其中:

  • GraphViz 流程图:~30 行——图表是给人看的视觉辅助,AI 用文字描述的步骤就能理解流程
  • “Why Order Matters” 原理解释:~50 行——解释 TDD 为什么要先写测试。但 AI 不需要被说服,它只需要被告知”先写测试”就会照做
  • Rationalizations 表格 11 条 + Red Flags 13 条:~60 行——设计意图是防止 AI 跳步,但同样的效果用几条精炼规则就能达到

也就是说,一个技能里大约 40% 的内容属于”道理没错,但 AI 不需要这么多论证才能执行指令”的部分。

语气过于绝对,导致 AI 行为僵化。原版技能里有不少这样的措辞:

EXTREMELY-IMPORTANT: This is not negotiable!There is a 1% chance you’ll actually do this correctlyThis is dishonesty. This is lying.Iron Law: NEVER skip this step

我理解作者的用意——AI 确实有”偷工减料”的倾向,强硬语气是为了对抗这种倾向。但副作用是:AI 要么完全遵守导致僵化(简单任务也走完整流程),要么在多条”NEVER”和”ALWAYS”相互冲突时无所适从。给出明确的条件判断效果更好:

# 原版NEVER skip the spec review. This is not negotiable.# 优化后默认执行 spec review。跳过条件:用户主动授权,或变更少于 20 行且不涉及接口变化。

一些设计假设和我的使用场景不匹配。原版作者是经验丰富的专业开发者,他的工作流很完整,但其中一些设定并不适合所有人:

  • 默认使用 Git Worktree(高级分支隔离)——纯编码项目里很有价值,但我用这套技能也处理很多非编码工作(写报告、做调研、整理文档),这些场景下 Worktree 没有用武之地
  • 每个任务强制两轮代码审查——大型项目的好习惯,但不是所有改动都需要这么重的流程
  • 一些文化梗(比如 “Circle K” 便利店引用)——会心一笑,但对非北美用户来说莫名其妙

五条优化策略

我们怎么改的

1. 精简辅助性内容 — GraphViz 流程图、效果展示文案、统计数据、详细反面案例(保留核心警告)

2. 绝对语气改为条件判断 — “NEVER” 改为默认行为 + 明确的跳过条件

3. 强制依赖改为可选 — Git Worktree、双轮审查、固定文件路径,全部降级为”建议”

4. 统一术语 — “human partner” 统一为 “user”

5. 合并同类项 — 分散在多个表格里的 20+ 条注意事项,压缩为 3-6 条 “Essentials”

部分技能的优化对比:

技能
优化前
优化后
主要精简
writing-skills
656 行
91 行
TDD 类比长文、绝对规则声明
test-driven-development
372 行
72 行
原理解释、24 条警告合并为 4 条
systematic-debugging
297 行
56 行
详细案例、统计数据
subagent-driven-development
278 行
75 行
两张流程图、效果展示
receiving-code-review
214 行
48 行
情绪应对指南、文化梗引用
brainstorming
165 行
55 行
9 步压缩为 8 步,流程图精简

第三层:缺了什么?发现流水线的结构性盲区

优化过程中还有一个意外收获。当我把 13 个技能按使用顺序排列出来后,发现了一个空缺:

brainstorming
writing-plans
executing
code-review
finishing

头脑风暴和写计划之间,没有调研环节。

原版的 brainstorming 技能直接从”问用户需求”跳到”提出方案”。也就是说,AI 全凭自己的训练数据在”闭门造车”。如果遇到它不熟悉的领域(比如某个冷门框架的最佳实践),它会硬编一个”看起来合理但实际可能过时”的方案。

于是我新增了一个 research 技能,插入到流水线中:

brainstorming
research
writing-plans
executing

research 技能的定位:不是学术论文式的深度研究,而是”动手之前先查一查”的轻量级验证。搜索官方文档确认 API 可用性、查看 GitHub Issues 排除已知坑、对比社区对同类方案的评价、验证版本兼容性。

它和另一个独立工具 syswebfetch(网页抓取)的关系是:research 负责”调研什么、怎么组织结论”,syswebfetch 是它的数据获取手段之一。research 是侦探,syswebfetch 是侦探手里的放大镜。

三层优化后的整体效果

68%
总行数减少比例(2,800+ 行 → 904 行)
13 → 14
技能数量(新增 research)
~65
每个技能平均行数

回头看:Prompt 优化和代码优化是一回事

这次优化最大的认知收获是:优化 Prompt 和优化代码遵循完全相同的原则

三层优化,收益递减

第一层:架构(什么时候加载)— 取消强制注入,按需调用。改动最小,收益最大。

第二层:实现(加载什么内容)— 精简每个技能的冗余内容。工作量最大,但单点收益不如第一层。

第三层:补全(缺了什么)— 发现并填补结构性盲区。这是优化过程中的意外收获。

就像代码优化一样——你可以花一周微调算法常数,但如果一开始就选错了数据结构,那些微调毫无意义。Prompt 优化也是:先确保技能在正确的时机加载,再去打磨内容。

另外几个具体心得

Prompt 也需要”代码审查”。我们通常只审查代码,不审查 Prompt。但技能文件本质上就是程序——它指挥 AI 如何行动。定期审查你的技能文件,问自己:这段话删掉后,AI 的行为会变差吗?如果不会,那就删。

通用工具要和专用流程分离。原版倾向于把所有技能串成一条严格的流水线。但调试、测试、并行分发这些技能其实是”通用工具”,应该在任何阶段都能独立调用。优化后我们把技能分成两类:

流水线技能(有先后顺序)

brainstorming → research → writing-plans → executing → finishing → code-review

工具技能(随时可用)

systematic-debugging、test-driven-development、dispatching-parallel-agents、verification-before-completion

减少 Token 就是减少成本。Claude 按 Token 计费,技能内容在每次调用时都会注入上下文。优化后光是技能文件本身的 Token 消耗就减少了近 70%。积少成多,这是实实在在的钱。

最后

这次优化让我意识到:我们和 AI 助手的关系,越来越像管理一个团队

你不会给团队成员发一份 50 页的操作手册——你会给出清晰的原则、合理的默认行为、以及何时可以变通的条件。对 AI 也一样。

如果你也在用 Claude Code 或类似的 AI 编程工具,不妨花点时间审视一下你的配置文件和技能文件。不是说要删掉一切,而是先问”加载时机对不对”,再问”加载内容精不精”。从架构到实现,和优化代码一个道理。

致敬原作者:Superpowers 原版由 Jesse Vincent(GitHub @obra)创建,是一套设计精心、覆盖全面的技能包。本文的优化完全基于我个人的使用场景和偏好,并不意味着原版有什么”问题”——只是每个人的需求不同。如果你是专业开发团队且主要用于编码,原版的完整流程和严格约束可能正是你需要的。