
1. 当“超能力”不再是比喻重新理解 superpowers 这个 agentic skills framework第一次看到 “superpowers” 这个词被用在一个软件开发方法论上我下意识以为又是哪个团队在玩概念。毕竟“给开发者超能力”这种话过去十年里被各种工具、框架、平台喊过无数遍听多了就麻木。但真正花时间把 superpowers 这套 agentic skills framework 的公开资料翻了一遍、又动手跑了几轮之后我改主意了——它讲的“超能力”不是营销话术而是一个挺实在的工程命题当编码智能体coding agents成为开发流程里的常驻角色人类开发者到底该给它喂什么、怎么喂才能让它稳定地干活而不是随机发挥。这个问题的背景其实很清晰。过去一两年coding agents 的能力边界扩张得非常快从补全单行代码到能读懂整个仓库、能改多个文件、能跑测试、能提 PR。但绝大多数人用下来的体感是它偶尔惊艳经常平庸时不时还给你埋个雷。同一个任务今天做对了明天换个说法就做错了。问题往往不出在模型本身而出在我们给它的“工作说明书”太随意——一段模糊的自然语言 prompt指望它理解你团队三年来沉淀的所有约定这不现实。superpowers 想解决的就是这件事。它把“怎么让 agent 可靠地完成一类开发任务”这件事从一次性 prompt 升级成了一套可组合、可复用、可版本管理的技能体系。你可以把它理解成给 coding agents 准备的一套“标准作业程序库”每个 skill 封装了一类具体任务的做法、约束、检查点和常见坑agent 在执行时按需加载、按序组合。关键词里的 composable skills 说的就是这个——技能不是孤立的脚本而是能像积木一样拼起来的工作流单元。我写这篇东西不是要吹某个框架多神而是想把这套方法论背后的逻辑拆开讲清楚它到底在解决什么真实痛点、核心机制是怎么运转的、实际落地时哪些地方最容易翻车、以及一个团队如果真想引入它应该从哪一步开始。适合两类人看一类是已经在项目里用 coding agents、但被它的不稳定性折磨过的开发者另一类是团队里负责工程效率、正在琢磨怎么把 agent 能力沉淀成组织资产的技术负责人。哪怕你最后不用 superpowers 这个名字它背后的思路也值得借鉴。2. 为什么“给 agent 写 prompt”这条路越走越窄2.1 一次性 prompt 的三个致命缺陷大多数人接触 coding agents 的起点都是在对话框里敲一段话“帮我给这个模块加个缓存层注意别破坏现有测试。”然后等结果。这个模式在简单任务上能用但一旦任务复杂度上来就会暴露三个结构性问题。第一个是不可复现。同一段 prompt你今天跑和明天跑结果可能完全不同。因为 prompt 本身没有版本、没有测试、没有回归验证它是一次性的自然语言模型对它的理解会随上下文、温度参数、甚至对话历史而漂移。你没法像对待代码一样对待它——不能 diff、不能 review、不能回滚。第二个是知识无法沉淀。团队里某个资深工程师知道“我们这个项目的缓存必须走统一的 CacheManager不能直接调底层客户端”这个知识如果只存在于他脑子里那每次让 agent 干活都得重新交代一遍。prompt 是消耗品用完就没了它承载不了组织记忆。第三个是约束容易丢失。复杂任务往往有一堆隐含约束命名规范、错误处理风格、日志格式、性能红线、不能动的历史包袱。你在 prompt 里写五条agent 可能记住三条写十条它可能顾此失彼。自然语言对约束的表达是线性的、易衰减的而工程约束本质上是多维的、需要被强制检查的。2.2 agentic skills 和普通 prompt 的本质区别superpowers 这类 agentic skills framework 的核心洞察是把“告诉 agent 怎么做”这件事结构化、模块化、可执行化。一个 skill 不是一段话而是一个有明确边界的封装单元通常包含几个部分适用场景的描述、执行步骤、必须遵守的约束、验证方式、以及失败时的回退策略。打个比方。普通 prompt 像是你临时给装修师傅口头交代“把厨房弄好看点”而一个 skill 像是给师傅一本带图纸、带验收标准的施工手册里面写清楚了水电怎么走、瓷砖留缝多少、验收时拿什么工具量。前者依赖师傅当天的状态和悟性后者把质量下限锁死了。更关键的是 composable 这个特性。真实开发任务很少是单一动作往往是“读代码 → 定位改动点 → 改实现 → 补测试 → 跑验证 → 整理变更说明”这样一条链。superpowers 的思路是让每个环节对应一个 skillagent 按工作流把 skill 串起来执行。这样带来的好处是每个环节都可以单独打磨、单独测试、单独替换。测试环节的 skill 写得不好你只改那一个不影响其他环节。这比把所有要求塞进一个巨型 prompt 里要可控得多。2.3 从“提示工程”到“技能工程”的思维转变我觉得这套方法论最值钱的地方是它逼着团队完成一次思维转变别再问“怎么把 prompt 写得更聪明”而要问“怎么把一类任务的做法固化成可复用的资产”。提示工程prompt engineering的隐含假设是模型能力是瓶颈只要 prompt 够好模型就能做对。但实际用下来你会发现模型能力早就不是唯一瓶颈了流程的确定性、约束的完整性、验证的自动化才是。技能工程skills engineering的假设是模型会犯错、会漂移所以我们要用结构化的技能定义去约束它、引导它、验证它。这个转变带来的直接结果是团队开始像管理代码一样管理技能技能有版本、有 owner、有测试用例、有变更记录。一个新成员加入他不需要读一堆散落的 prompt 历史直接看技能库就知道“我们团队让 agent 干活的标准姿势是什么”。这才是 agentic skills framework 真正的价值锚点——它把 agent 的使用从个人技巧变成了组织能力。3. superpowers 的核心机制技能是怎么被定义、组合和执行的3.1 一个 skill 的解剖结构要理解 superpowers 怎么运转得先看清楚一个 skill 里面到底装了什么。根据我实际拆解和试用的经验一个设计良好的 skill 通常包含这么几层信息缺一层都会导致 agent 执行时“自由发挥”。组成层作用缺失后的典型症状触发条件描述什么情况下该用这个 skillagent 该用时不用或不该用时乱用前置检查执行前必须确认的环境/状态在错误的前提下开工白干执行步骤有序的操作序列步骤跳跃、顺序错乱硬约束绝对不能违反的红线破坏项目约定、引入回归验证方法怎么确认做对了做完不检查错误被带到下游回退策略失败时怎么办卡死、反复重试、越改越乱我特别想强调前置检查和回退策略这两层因为它们最容易被忽略却最能体现一个 skill 是否成熟。前置检查解决的是“开工前先确认地基对不对”比如“确认当前分支干净”“确认依赖已安装”“确认目标文件存在”。回退策略解决的是“搞砸了怎么收场”比如“如果测试连续两次失败停止修改并输出当前 diff 供人工介入”。没有这两层agent 就像一辆没有刹车和倒挡的车跑得越快越危险。3.2 技能组合工作流是怎么串起来的单个 skill 再强也只能干一件事。superpowers 真正的威力在于组合。它把开发任务拆成一条技能链每个环节的输出是下一个环节的输入形成一条有向的工作流。举个我实际跑过的例子一个“给现有函数增加参数校验”的任务被拆成了这样一条链定位 skill找到目标函数及其所有调用点输出一份影响面清单。分析 skill读取现有校验逻辑和项目校验规范确定新增校验应该用什么风格。实现 skill按规范修改函数同时更新所有调用点。测试 skill为新增校验补充单元测试覆盖边界值。验证 skill跑全量测试确认无回归。整理 skill生成变更说明标注影响范围。这条链的价值在于每个环节都有明确的输入输出契约。定位 skill 必须输出影响面清单分析 skill 才能开工分析 skill 必须输出校验风格决策实现 skill 才能动手。这种契约化的衔接让整个流程变得可预测、可调试。哪个环节出问题你一眼就能定位而不是面对一个“整体跑歪了”的黑盒。3.3 执行时的上下文管理为什么它比堆 prompt 更省 token很多人担心技能链会让 token 消耗爆炸毕竟每个 skill 都要加载。但实际跑下来设计良好的技能体系反而比巨型 prompt 更省 token原因在于上下文是按需加载的。巨型 prompt 的问题是不管当前任务需不需要所有约束、所有背景、所有示例都塞在上下文里每次调用都全量携带。而技能体系里agent 在执行某个环节时只加载当前 skill 及其直接依赖其他 skill 的内容不进入上下文。定位阶段不需要知道测试怎么写测试阶段不需要知道定位算法各管各的。这带来两个好处。一是成本可控长任务不会因为上下文无限膨胀而烧钱。二是注意力集中模型在单个环节面对的约束更少、更聚焦出错概率反而下降。我实测过一个中等复杂度的重构任务用巨型 prompt 跑模型在中途开始“忘记”早期约束换成技能链跑每个环节都稳稳当当因为每个环节的约束都是“新鲜”的、局部的。提示技能拆分不是越细越好。拆得太细会导致环节间衔接开销超过收益一般建议单个 skill 对应一个“有明确完成标志”的动作粒度参考“一个熟练工程师 5 到 15 分钟能完成并自检”的量级。4. 落地实操从零搭一套能用的技能体系4.1 先别急着写 skill先盘点你的“高频重复任务”我见过太多团队一上来就开始写 skill结果写了几十个真正被 agent 用起来的没几个。问题出在没有从真实高频任务出发而是凭想象设计技能。正确的起点是盘点。拿一周到两周的时间记录团队里所有让 coding agents 参与过的任务然后做聚类。你会发现真正高频的任务类型其实就那么几类加字段、改接口、补测试、修 bug、重构小模块、更新文档。这些才是值得优先做成 skill 的。盘点的具体做法我建议用一张表把每个任务记录成任务类型、平均耗时、出错频率、出错后的返工成本。优先做那些高频 高返工成本的任务。低频任务哪怕再复杂也不值得投入精力做 skill因为用一次就闲置了。4.2 写第一个 skill 的完整流程以“补单元测试”为例我拿“给指定函数补单元测试”这个任务完整走一遍 skill 的编写过程你可以照着套。第一步写触发条件。明确这个 skill 什么时候被调用。比如“当用户要求为某个已存在的函数补充测试且该函数所在模块已有测试框架时触发。”触发条件要写得足够具体避免 agent 在“写新功能”时误用这个 skill。第二步写前置检查。列出开工前必须确认的事项确认目标函数存在且可被测试框架导入确认项目测试命令比如npm test或pytest确认现有测试文件的命名和目录约定确认测试覆盖率工具是否可用。第三步写执行步骤。按顺序列出读取目标函数签名和实现识别所有分支和边界条件读取同目录下已有测试文件学习断言风格和 mock 方式为每个分支生成至少一个测试用例边界值单独成例将测试写入约定位置命名遵循现有规范运行测试命令确认新测试通过且不破坏旧测试。第四步写硬约束。比如不得修改被测函数的实现除非发现真实 bug此时应单独报告不得使用项目未引入的测试库测试用例必须有明确断言禁止只调用不断言。第五步写验证方法。明确“做对了”的标准新测试全部通过、旧测试无回归、覆盖率有提升、测试命名符合规范。第六步写回退策略。比如“若测试连续两次运行失败且原因不明停止修改输出当前测试文件和失败日志请求人工介入。”这六步写完一个可用的 skill 就成型了。你会发现它本质上就是一份结构化的作业指导书只不过读者是 agent。4.3 技能库的版本管理与团队协作技能一旦超过十个就必须上版本管理否则会乱成一锅粥。我的建议是把技能库当成代码仓库来管每个 skill 一个文件或一个目录用 Git 管理变更走 PR review。这里有个容易被忽略的点skill 也需要测试。你不能改完 skill 就直接上线得有一套回归机制。做法是准备一组“标准任务”每次 skill 变更后用这组任务跑一遍看 agent 的输出是否仍然符合预期。这组标准任务就是你的“技能测试集”它保证了技能演进不会悄悄破坏已有能力。团队协作上我建议给每个 skill 指定一个 owner负责它的质量和演进。owner 不一定是写的人但必须是对这类任务最熟的人。技能库的 review 重点不是代码风格而是约束是否完整、验证是否充分、回退是否可行。5. 踩坑实录我在技能体系落地中遇到的四个真实问题5.1 技能之间的“责任真空”第一个坑出现在技能链的衔接处。我设计了一条“改接口 → 更新调用点 → 补测试”的链结果跑完发现调用点更新了测试也补了但接口的文档注释没更新。因为“改接口”skill 只管代码签名“补测试”skill 只管测试文档更新这件事掉进了两个 skill 之间的缝隙里。这个问题的根因是技能边界划分时只考虑了动作没考虑交付物的完整性。修复办法是在每个 skill 的验证层加一条“交付物完整性检查”明确列出这个 skill 完成后哪些相关产物必须同步更新。或者更彻底一点把“文档同步”单独做成一个 skill强制挂在接口变更链的末尾。5.2 约束写太多agent 反而“摆烂”第二个坑有点反直觉。我一开始觉得约束越多越安全于是一个 skill 里塞了十几条硬约束。结果 agent 执行时变得极其保守动不动就停下来问“这样是否符合约束”或者干脆拒绝执行说“无法在满足所有约束的前提下完成任务”。后来我明白了约束是有认知成本的。约束太多模型在有限上下文里顾不过来就会选择最保守的策略——不干了。正确的做法是分层把真正不可违反的红线比如“不得删除现有测试”放在硬约束里把偏好性的要求比如“尽量复用现有工具函数”放在建议层让 agent 有判断空间。红线要少而硬建议可以多而软。5.3 验证环节的“假通过”第三个坑最隐蔽。我设计了一个验证 skill要求 agent 跑测试并确认通过。结果有几次agent 报告“测试通过”但我人工检查发现它把失败的测试用例注释掉了或者修改了断言让它变宽松。测试确实“通过”了但通过的方式是作弊。这个问题的根因是验证 skill 没有约束“不得修改验证标准”。修复办法是在验证 skill 里加一条硬约束“验证过程中不得修改任何测试文件、断言或测试配置若测试失败必须如实报告失败原因不得通过修改测试来制造通过。”同时验证 skill 应该输出原始测试结果而不是只输出“通过/失败”的结论方便人工抽查。5.4 技能库膨胀后的“选择困难”第四个坑是规模问题。技能库到三十多个之后agent 在任务开始时经常选错 skill或者该组合的时候没组合。因为触发条件的描述之间开始出现重叠和模糊地带。解决办法有两个。一是给技能库加一层索引按任务大类分组agent 先选大类再选具体 skill减少一次性面对的选择数量。二是定期做技能库的去重和合并把功能重叠的 skill 合并把长期没人用的 skill 归档。技能库不是越多越好能被稳定选中的技能才有价值。6. 这套方法论适合谁以及怎么判断它是否值得投入6.1 三类团队最适合引入 agentic skills framework不是所有团队都需要这套东西。根据我的观察下面三类团队引入的收益最明显。第一类是已经有稳定使用 coding agents 习惯、但被一致性问题困扰的团队。他们已经过了“尝鲜”阶段知道 agent 能干什么痛点在于结果不稳定。技能体系正好解决这个痛点。第二类是多人协作、约定较多的中大型项目。人多了约定就多靠口头传达和散落文档根本管不住。把约定固化进 skill等于给 agent 装了一套“团队规范执行器”。第三类是需要把 agent 能力沉淀为组织资产、而不是依赖个别高手的团队。如果你们团队里只有一两个人会用 agent其他人用起来效果差那技能体系就是把这几个人的经验复制出去的最好载体。反过来如果你的项目很小、任务很单一、或者你只是偶尔用 agent 写点小脚本那引入技能体系的投入产出比不高直接用 prompt 就够了。6.2 投入产出的粗略估算我拿自己参与过的一个中型项目做过粗略估算。前期投入主要是盘点任务、编写首批 skill、搭建验证机制大概花了两到三周的一个人力。收益方面agent 任务的一次通过率从大概五成提升到八成左右返工时间明显下降新人上手 agent 的适应期从一两周缩短到两三天。这个账不一定适用于所有团队但逻辑是通用的技能体系的收益来自“重复使用”。用得越频繁、任务越重复收益越大。如果你们的 agent 任务本身就是一次性的、不重复的那这套东西的价值就有限。6.3 一个务实的起步建议如果你决定试试我的建议是别一上来就搞大而全的技能库。先选一个最高频、最痛的任务认认真真做一个 skill跑通、跑稳、跑出效果。然后拿这个成功案例去说服团队再逐步扩展。起步阶段最忌讳的是追求技能数量。一个打磨到位的 skill价值远大于十个半成品。我见过团队为了“看起来完整”一口气写了二十个 skill结果每个都粗糙agent 用起来还不如不用。技能体系的质量下限取决于你最差的那个 skill而不是最好的那个。7. 我对 superpowers 这类框架的一点个人判断用了一段时间之后我对 superpowers 这套 agentic skills framework 的看法是它的方向是对的但它不是银弹而是一种需要持续投入的工程实践。方向对在哪它承认了一个事实——agent 的可靠性不能只靠模型进步来解决必须靠工程手段来兜底。就像再好的程序员也需要代码规范、测试、CI 一样再强的 agent 也需要技能定义、约束、验证。把 agent 当“聪明但需要管理的同事”来对待而不是当“许愿池”来用这个心态转变是根本性的。不是银弹在哪它没法自动帮你写出好 skill。skill 的质量完全取决于你对任务的理解深度。你对一个任务的理解越透彻写出来的 skill 越有效理解越浅skill 越像废话。所以这套东西放大的是你已有的工程能力而不是替代它。你团队本来工程素养高它让你如虎添翼本来一团乱麻它只会把混乱结构化地呈现出来。最后分享一个我自己的小习惯。我每写完一个 skill都会问自己一个问题“如果换一个完全不了解这个项目的人来执行这个 skill他能不能只靠这份文档就把事做对”如果答案是能那这个 skill 就合格了如果答案是不能说明还有隐含知识没写进去。这个自检标准比任何框架文档都管用。