1. 从“superpowers”这个热词说起:它到底是什么
第一次看到“superpowers”这个词挂在热搜上,我下意识以为是某部超英电影又出了新预告。点进去才发现,讨论度最高的其实是两拨人:一拨在问“superpowers怎么安装”,另一拨在分享自己用上之后效率翻倍的体验。这两拨人说的其实是同一个东西——一个给 AI 编程助手用的技能扩展包,社区里管它叫“超能力”。
说白了,superpowers 就是一套预置好的技能集合,装到你的 AI 编程环境里之后,原本只会“你说一句它写一段”的助手,突然就能自己规划任务、拆解步骤、调用工具、检查结果,甚至在你没盯着的时候把一整个小项目跑完。它解决的核心痛点很明确:大多数人用 AI 写代码,卡的不是模型不够聪明,而是不知道怎么把一个大需求拆成模型能一步步执行的指令。superpowers 把这套“拆解方法论”固化成了可复用的技能模块,你只要触发对应的技能,助手就按既定流程走。
这篇文章适合三类人看。第一类是刚听说这个词、想知道“安装 superpowers”到底装的是什么的新手;第二类是用过一阵子 AI 编程工具、但总觉得输出质量不稳定、想找一套系统方法的中级用户;第三类是想把自己团队的工作流沉淀成技能包、做二次开发的进阶玩家。我会从设计思路讲到实操步骤,再到踩过的坑,尽量让每一层读者都能拿走能直接用的东西。
需要先说明一点:superpowers 本身不是一个独立的软件,它依附于特定的 AI 编程助手运行。所以“安装”这个词其实有两层含义——一层是把技能包放进你的工作目录,另一层是让你的助手能识别并调用这些技能。很多人卡在第一步就是因为把这两层混为一谈了。
2. 核心设计思路拆解:为什么是“技能包”而不是“插件”
2.1 技能包和传统插件的本质区别
传统插件的工作方式是“挂载功能”——你装一个格式化插件,它就多一个格式化按钮;装一个 lint 插件,它就多一条检查规则。功能是死的,触发靠人。superpowers 走的是另一条路:它提供的不是功能,而是流程。一个技能本质上是一段结构化的指令文档,告诉助手“遇到这类任务时,应该按什么顺序、检查哪些点、产出什么格式的结果”。
这个区别很关键。插件解决的是“能不能做”,技能包解决的是“做得对不对、稳不稳”。举个例子,你让助手重构一个函数,没有技能包的时候它可能直接给你重写一版,风格和你项目里其他代码完全不搭。装了对应的技能之后,它会先读你项目里的代码规范、再看相邻模块的写法、然后才动手,最后还会自己跑一遍检查。同样的模型,输出质量差出一大截,差别就在这套流程上。
2.2 为什么用 Markdown 而不是代码来定义技能
我拆过几个技能文件,发现它们基本都是 Markdown 写的,而不是 JSON 或 YAML 那种结构化配置。一开始我觉得奇怪,后来想明白了:技能的核心是“给模型看的指令”,而模型对自然语言的理解远好于对配置字段的理解。用 Markdown 写,你可以把触发条件、执行步骤、注意事项、输出格式用最自然的方式表达出来,模型读起来没有歧义。
而且 Markdown 有个隐藏好处——可读性即文档。你团队里新来的人,不用学任何配置语法,直接打开技能文件就能看懂这个流程在干什么。这比维护一堆 JSON schema 友好太多了。我见过有团队把技能文件当活文档用,流程改了直接改 Markdown,比写 Wiki 还方便。
2.3 技能触发的两种模式:自动和手动
superpowers 的技能触发分两种。一种是自动触发,助手根据你的任务描述自己判断该用哪个技能。比如你说“帮我给这个模块加测试”,它识别到“加测试”这个意图,自动加载测试相关的技能。另一种是手动触发,你明确指定用哪个技能,比如输入特定的命令或关键词。
自动触发省事,但有个坑:模型判断意图有时候会偏。我遇到过让它写个简单脚本,它却加载了“完整项目初始化”技能,结果给我生成了一堆用不上的目录结构。手动触发可控,但需要你记住技能名。我的建议是,日常简单任务用自动,复杂任务或者对输出格式有严格要求时,手动指定更稳。
提示:如果你发现助手频繁误触发某个技能,可以在技能文件的触发条件里加更严格的限定词,比如把“写代码”改成“写生产环境的业务代码”,把测试脚本、一次性脚本这类场景排除掉。
3. 安装前的环境准备:别急着敲命令
3.1 确认你的助手支持技能扩展
不是所有 AI 编程助手都支持这套机制。装之前先确认两件事:你的助手有没有“技能”“指令集”“工作流”这类概念,以及它读取技能文件的目录是哪个。常见的情况是助手会在项目根目录或用户主目录下找特定的文件夹,比如.assistant/skills/或者skills/这种。具体路径得查你所用助手的文档,不同工具差别挺大。
我踩过的第一个坑就是路径放错了。当时我把技能包解压到了项目根目录,结果助手死活识别不到,折腾了半小时才发现它只认用户主目录下的那个隐藏文件夹。所以第一步一定是先确认路径,别急着复制文件。
3.2 目录结构应该长什么样
一个规范的技能包目录大概是这样组织的:
skills/ ├── planning/ │ ├── SKILL.md │ └── examples/ ├── testing/ │ ├── SKILL.md │ └── templates/ └── refactoring/ └── SKILL.md每个技能一个子目录,核心是那个SKILL.md文件,里面写清楚这个技能干什么、什么时候触发、怎么执行。examples/和templates/是可选的,用来放示例输出和模板文件,帮助模型理解期望的产出格式。
这里有个经验:技能目录名用英文,技能内容可以用中文。目录名是给系统识别用的,中文可能出编码问题;内容里的指令是给模型读的,用中文表达反而更精确,尤其是涉及中文业务场景的时候。
3.3 版本兼容性检查
superpowers 这类技能包更新挺频繁的,不同版本对助手的要求不一样。装之前看一眼技能包里的说明文件,确认它要求的助手版本范围。我有次装了个新版本,结果助手版本太老,技能里的某些指令语法它不认识,直接报错。回退到上一个版本就正常了。
如果你用的是团队统一环境,建议把技能包版本也纳入版本管理,和项目代码一起提交。这样团队里每个人拉下来的技能版本一致,不会出现“我这边能跑你那边不行”的情况。
4. 安装实操:从零到跑通第一个技能
4.1 获取技能包的三种途径
目前拿到 superpowers 技能包主要有三种方式。第一种是从官方或社区仓库直接克隆,这是最省事的,适合大多数人。第二种是下载打包好的压缩包手动解压,适合网络受限或者需要固定版本的场景。第三种是自己从零写,适合有特殊流程需求的团队。
我一般推荐第一种,但要注意克隆下来之后别直接就用,先看一眼目录结构和说明文件,确认版本和你的助手匹配。社区仓库有时候会有多个分支,主分支是开发版,可能有未测试的改动,稳定版通常在 release 标签下。
4.2 放置文件与路径配置
假设你的助手读取的是用户主目录下的技能文件夹,操作大概是这样的:
# 进入技能目录(路径以你的助手文档为准) cd ~/.assistant/skills/ # 克隆技能包 git clone <技能包仓库地址> superpowers # 确认目录结构 ls superpowers/放好之后,很多助手需要重启或者重新加载配置才能识别新技能。这一步别省,我见过太多人放完文件就开始测试,结果助手还在用旧的技能列表,怎么试都不对。重启之后,你可以用一个简单的测试指令验证,比如问助手“你现在有哪些可用技能”,看它列出来的列表里有没有新装的。
4.3 验证安装是否成功
验证分两步。第一步是识别验证,确认助手能看到技能。第二步是执行验证,确认技能真的能跑通。识别验证简单,问一句就行。执行验证建议用一个最小任务,比如让助手用“规划”技能拆解一个特别简单的需求,看它输出的结构是否符合技能定义里的格式。
如果识别到了但执行不对,大概率是技能文件里的指令写得太模糊,模型理解偏了。这时候可以打开SKILL.md看看,把模糊的地方改具体。技能文件是可以自己改的,不用怕改坏,改之前备份一下就行。
注意:修改技能文件后同样需要重新加载才生效。有些助手支持热加载,改完自动生效;有些不支持,得重启。不确定的话就重启,稳。
5. 核心技能逐个拆解:哪些值得优先用起来
5.1 规划类技能:把大需求拆成小步骤
规划类技能是我用得最多的一个。它的作用是当你抛出一个比较大的需求时,助手不会直接开始写代码,而是先产出一份任务拆解清单,列出要做哪几件事、每件事的依赖关系、建议的执行顺序。
这个技能的价值在于把思考过程显性化。以前你用助手,它直接给结果,你不知道它怎么想的,出了问题也不好定位。用了规划技能之后,它先把思路摆出来,你可以在这一步就纠正方向,避免它闷头写了一大堆才发现理解错了。我现在的习惯是,任何超过半小时工作量的任务,都先让它规划一遍,确认没问题再往下走。
5.2 测试类技能:让助手自己验证结果
测试类技能解决的是“AI 写的代码不敢信”这个问题。它的流程通常是:写完功能代码后,自动生成对应的测试用例,跑一遍,根据失败结果回头修代码,直到测试通过。
这里有个细节值得说:好的测试技能不会只生成“能跑通”的测试,它会要求覆盖边界情况。比如一个处理用户输入的函数,它会自动补上空输入、超长输入、特殊字符这些用例。这一点比很多人类程序员还严谨。我实测下来,用了测试技能之后,交付代码的返工率明显下降。
5.3 重构类技能:保持风格一致
重构类技能的核心是“先理解再动手”。它会先扫描项目里已有的代码风格、命名习惯、目录组织方式,然后按同样的风格来重构目标代码。这样重构完的代码不会显得格格不入。
我特别欣赏这个技能里的一点:它会保留原有的注释和文档,只改结构不改语义。很多自动重构工具会把注释弄丢,这个技能不会。对于维护老项目来说,这个特性太重要了。
5.4 技能组合使用的威力
单个技能已经很有用,但真正让我觉得“回不去”的是技能组合。比如一个完整的功能开发流程可以是:规划技能拆解任务 → 逐个实现 → 测试技能验证 → 重构技能统一风格。这一套走下来,助手基本能独立完成一个中等复杂度的模块,你只需要在关键节点把关。
组合使用的时候要注意顺序。规划一定放最前面,测试放在实现之后、重构之前。顺序错了效果会打折,比如先重构再测试,测试用例可能对不上重构后的接口。
6. 常见问题与排查技巧实录
6.1 助手识别不到技能怎么办
这是最高频的问题。排查顺序建议这样走:先确认技能文件放对了目录,再确认文件权限没问题,然后确认助手版本支持,最后确认是否需要重启。这四步能解决九成以上的识别问题。
剩下那一成,可能是技能文件的命名不符合要求。有些助手要求技能文件必须叫特定名字,比如SKILL.md全大写,或者必须有特定的头部字段。翻一下助手文档里的技能规范,对着改就行。
6.2 技能触发了但输出格式不对
输出格式不对,通常是技能文件里的格式说明不够具体。模型对“输出一个表格”这种模糊指令的理解每次都可能不一样。解决办法是在技能文件里给出具体的格式示例,把期望的输出直接写一个样例进去。模型看到样例,照着填的概率就高很多。
我一般会在技能文件末尾加一段“输出示例”,用代码块把期望的格式固定下来。这个习惯让我的技能输出稳定性提升了一大截。
6.3 多个技能冲突怎么处理
技能多了之后,偶尔会出现两个技能都想接管同一个任务的情况。比如“写测试”这个需求,测试技能和规划技能可能都觉得自己该上。这时候助手的表现是要么卡住,要么随便选一个。
解决办法是在技能文件里明确优先级和互斥关系。比如在测试技能里写“当任务明确是生成测试用例时,本技能优先于规划技能”。把这类规则写清楚,冲突就少了。
6.4 性能问题:技能太多会不会变慢
会。技能列表越长,助手每次判断该用哪个技能的开销越大。我实测过,技能数量从十个增加到三十个之后,响应速度有可感知的下降。所以建议按需加载,不常用的技能先移出目录,需要的时候再放回来。
另一个优化方向是精简技能文件。有些技能文件写了几千字,其实核心指令就几百字,剩下的都是冗余说明。把冗余删掉,模型读起来更快,判断也更准。
| 问题现象 | 最可能原因 | 排查动作 |
|---|---|---|
| 助手完全看不到技能 | 路径错误或未重启 | 确认目录、重启助手 |
| 技能触发但输出乱 | 格式说明模糊 | 补充输出示例 |
| 多技能冲突 | 优先级未定义 | 在技能文件里写明互斥规则 |
| 响应变慢 | 技能数量过多 | 移出不常用技能 |
7. 进阶玩法:把团队流程沉淀成自己的技能
7.1 从现有流程里提炼技能
写自己的技能,最好的素材就是你团队已经在跑的流程。比如你们每次发版前都要走一套检查清单,那这套清单就可以固化成一个“发版检查”技能。把清单里的每一步写成指令,加上触发条件,一个技能就成型了。
提炼的时候有个原则:一步一件事。不要把“检查代码风格并跑测试并更新文档”写成一个步骤,拆成三个。步骤越细,模型执行越稳,出问题也越好定位。
7.2 技能文件的写法要点
我总结了几条写技能文件的要点。触发条件要具体,别用“当用户需要帮助时”这种废话。执行步骤要有序,用编号列表。每步里如果有判断逻辑,写清楚判断依据。输出格式给示例。最后加一段“常见错误”,把你知道的坑写进去,模型会参考这段来避坑。
技能文件不用一次写完美,先写个能跑的版本,用几次之后根据实际表现迭代。我自己的技能文件基本都改过五六版才稳定。
7.3 团队协作中的技能管理
团队用技能包,最大的问题是版本不一致。解决办法是把技能包纳入 Git 管理,和项目代码放一起。每个人拉代码的时候技能一起更新。技能文件的改动走正常的代码评审流程,谁改了什么一目了然。
另外建议给技能文件加个变更日志,记录每次改了什么、为什么改。新人接手的时候看日志就能理解每个技能的设计意图,不用一个个去猜。
8. 我踩过的坑和几条实在建议
先说最大的一个坑:别一上来就装一大堆技能。我刚开始的时候把能找到的技能全装了,结果助手判断意图的时候经常选错,输出反而不如不装的时候稳。后来精简到五六个核心技能,体验才顺起来。技能这东西,够用就行,多了是负担。
第二个坑是忽略了技能之间的依赖。有些技能依赖另一个技能的输出,单独用会报错。装之前看一眼技能说明里的依赖关系,把相关的技能一起装上。
第三个坑是改了技能文件忘了重启。这个坑我踩了不止一次,改完兴冲冲去测试,发现没生效,以为是改错了,其实是没重启。现在我的习惯是改完技能文件先重启,再测试。
最后分享一个实用技巧:给每个技能写一句“一句话说明”,放在技能文件最开头。这样你列技能列表的时候一眼就能看清每个技能是干什么的,不用打开文件看详情。技能多了之后,这个习惯能省不少时间。
这套东西说到底,核心价值不在于技能本身有多神奇,而在于它逼着你把“怎么做一件事”想清楚、写下来。写技能文件的过程,其实就是梳理自己工作流的过程。我写完几个技能之后发现,受益的不只是助手,我自己对流程的理解也清晰了很多。