开头
最近身边聊 Skill 的人明显多了,从 Codex 的论文辅助 Skill,到 GIS 空间分析 Skill,再到各种 AI 短剧制作 Skill,几乎每隔几天就能看到一个新的“神级 Skill”刷屏。但我的感受是:装 Skill 越来越便宜,判断 Skill 好坏却越来越贵。很多项目把下载量、演示截图、社区口碑当成质量证明,可真到自己手里一跑,十有八九是“演示五分钟,调参两小时”。问题不是 Skill 太少,而是我们缺乏一套判断 Skill 真实价值的方法。这篇文章就是把我在实际项目中反复打磨的一套评估框架整理出来,核心就三个词:对照、重复、证据。它不依赖任何特定平台,也不管你用的是 Codex、豆包还是其他支持 Skill 机制的工具,方法通用。适合正在选型 Skill 的开发者、做 Agent 应用落地的人,以及所有不想再被“觉得好用”这种模糊感觉牵着走的从业者。
1. 评估前先想清楚:Skill 的本质与“价值”为何因人而异
1.1 Skill 到底是什么:它和提示词、插件、工作流的边界
现在市面上的 Skill 定义特别混乱,有人管一段优化过的提示词叫 Skill,有人管一个封装好的 Python 工具叫 Skill,还有人把整套多步骤工作流也叫 Skill。我不打算重新发明定义,只说我在评估时的理解:Skill 是附着在模型之上的、可复用的能力单元,它改变了模型处理特定任务时的行为,而不是改变模型本身的参数。
用吃饭来类比:基础模型像一把刀,普通提示词是告诉你“切菜”,而 Skill 是一套完整的切配方案——包括怎么握刀、按什么顺序切、切完怎么摆放、哪些情况要换刀。它输出的不仅仅是“切菜”这个指令,还附带了一系列约束、流程、校验和回退策略。
这个定义区分了三层东西:提示词只是 Skill 的组成部分,插件是 Skill 可能要调用的工具,工作流是 Skill 运行时的编排方式。评估时如果分不清这些,就容易把“提示词写得好”当成“Skill 很厉害”,或者把“插件能力强”归功给 Skill,导致判断偏差。我在给团队做选型时,第一件事就是给候选 Skill 做“拆件”:拆出里面哪些是纯文本约束,哪些是外部工具调用,哪些是模型能力本身的功劳。拆完再评估,心里才有底。
1.2 同一个 Skill,为什么在不同人手里效果天差地别
这是我踩过最深的坑,也最值得反复讲。三年前我在内部工具站看到一个数据清洗 Skill,社区评分极高,演示截图非常漂亮,能把脏乱差的表格修得整整齐齐。结果我拿过去跑真实数据,输出的质量远不如预期。排查了很久才发现问题不在 Skill 本身,而在三个外部条件:
- 模型版本不同:那个 Skill 在演示时跑的是当时最新模型,而我用的是内部环境的旧版本,对同一条约束指令的遵循能力差了一个量级。
- 上下文窗口不同:我的真实数据量大,上下文被塞得接近上限,Skill 里的许多规则在后半段悄悄失效,而演示数据只有几行。
- 输入格式不同:演示用的表格是规整的 CSV,我手里的是带合并单元格、跨页表头的报表,Skill 里预设的解析逻辑直接失灵。
评估 Skill 时,必须意识到“能判断价值的人,一定是在特定条件下判断的”。脱离环境谈 Skill 好坏没有意义。所以我在评估第一步会先写清楚“评估环境快照”:模型、温度参数、上下文窗口、运行平台、输入样本量、甚至当天模型服务是否有降级。没有这个快照,后面的对照实验和证据记录都会失去锚点。
1.3 评估前必须回答的三个前置问题
动手做测试之前,我的习惯是先问三个问题,答案会直接决定评估方案怎么设计:
问题一:你评估这个 Skill 是为了选型、调优、还是复盘?选型偏重横向对比,调优偏重单点深挖,复盘偏重回顾长期表现。目的不同,测试任务集和样本量的设计都不一样。
问题二:你关心的“有效”到底是什么维度的有效?是输出正确率、执行效率、成本消耗、用户体验,还是可维护性?我见过一个团队评估文案 Skill,只看文案生成的惊艳程度,忽略了它经常需要人工抢救格式问题,结果上线后运维成本远高于手写。
问题三:谁在使用这个 Skill?他的水平决定了评估标准。同一个 Skill 给资深工程师和新手使用,稳定性要求完全不同。新手遇到失败时没有排查能力,所以对失败率的要求应当更苛刻。
想清楚这三件事,再进入具体评估环节,能避免大量无效劳动。很多人一上来就开跑,跑了二十轮任务,最后发现这二十轮根本回答不了自己真正关心的问题。
2. 对照实验:给 Skill 找一个“素颜”参照物
2.1 基线怎么设:没有基线就没有结论
评估一个 Skill 有没有用,最忌讳的做法是“只用带 Skill 的状态跑一遍,然后得出结论”。人脑天然倾向确认偏差:你已经花时间装了它、读了它的文档、设想过它能做什么,再看它的输出时,内部预期已经抬高了。只有对照才能把这个偏差暴露出来。
我的标准做法是设置三种条件:
- 裸模型条件(Baseline):直接用基础模型,不挂任何 Skill,只给最原始的任务描述。
- 提示词条件(Prompt-only):把 Skill 里的核心规则提取成一段提示词,但不启用完整 Skill 机制。这一步能识别出“Skill 价值中有多少只是提示词本身的功劳”。
- 完整 Skill 条件(Full-Skill):以正常方式挂载 Skill 并运行全部流程。
三组跑同一批测试任务,横向对比输出质量、成功率、耗时和人工修正量。这个设计最大的价值是能看出 Skill 相对纯提示词到底增加了多少“机制性收益”,还是仅仅靠一段写得不错的提示词撑着门面。我在实际评估中见过不少 Skill,Full-Skill 和 Prompt-only 的结果几乎没差别,这种 Skill 严格来说属于“包装型 Skill”,价值有限。
2.2 任务集设计:高频、边缘、对抗三类缺一不可
对照实验要有效,任务集不能自己骗自己。只挑 Skill 文档里展示过的任务来测,等于开卷考试。我的做法是把测试任务分成三类,比例大概控制在 6:3:1:
- 高频常规任务(60%):日常使用中最常遇到的典型场景,比如一个周报 Skill 就是“把本周工作要点输出为分条周报”。
- 边缘变体任务(30%):在常规任务基础上加入变化,比如输入长度超出预期、内容含混淆信息、用户意图不明确。这一类最能暴露 Skill 的脆弱点。
- 对抗干扰任务(10%):故意给 Skill 设置陷阱,比如要求它处理超出能力边界的事、用诱导性描述让它绕过约束、提供冲突的多条指示。这类任务不要求全部通过,但能让你看清它的边界在哪里。
我在评估一个“AI 短剧剧本 Skill”时,高频任务测的是给定剧情梗概输出分镜脚本;边缘变体是让它处理无明确主角的群像素材;对抗任务则是故意给它一段涉及时序矛盾的剧情要求它修正。结果高频任务表现很好,边缘变体勉强及格,对抗任务几乎全部失败。这个结论帮助团队定位清楚了该 Skill 的真实可用边界,而不是被演示视频里的完美表现带偏。
2.3 控制变量:唯一变量原则与盲评的必要性
对照实验最怕的是变量不受控。我在早期评估中犯过一个经典错误:同时改了模型版本、温度参数和 Skill 状态,跑完发现结果有差异,却根本说不清差异是哪个变量引起的。后来我给自己定了铁律:一次只改一个变量。这轮测模型切换,就把 Skill 状态固定;下轮测 Skill 影响,就把模型版本固定。
还有一个容易忽略的点是盲评。如果评估者知道哪份输出来自带 Skill 条件,很容易在潜意识里给它加分。我现在的做法是:所有输出先匿名编号,交给评估者排序打分,全部打完之后再揭晓条件归属。这个方法简单粗暴,但极其有效。第一次尝试时我发现,一份被我预期“应该更好”的 Full-Skill 输出,在盲评中的得分其实低于裸模型的输出——不是因为 Skill 没用,而是因为那个任务本身太简单,Skill 反而引入了多余的格式化步骤。
2.4 一个可复用的评估台账模板
为了不靠记忆做判断,我维护了一份简易台账,字段如下:
| 字段 | 说明 | 示例 |
|---|---|---|
| 任务编号 | 唯一标识 | T-HF-012 |
| 任务类别 | 高频/边缘/对抗 | 高频 |
| 输入摘要 | 不写全文,记录特征 | 800字会议纪要,含3项决议 |
| 条件 | Baseline / Prompt-only / Full-Skill | Full-Skill |
| 模型 | 版本号全写 | Gemini 2.0 Flash(某日某版本) |
| 温度 | 参数记录 | 0.3 |
| 关键指标 | 正确率/完整率/失败原因 | 完整率95%,格式漏一项 |
| 输出摘要 | 存链接或路径 | ./evidence/T-HF-012_full.md |
| 我的评价备注 | 只写事实,不写感受 | 时间线顺序正确,但缺少截止日期 |
这个台账看着简陋,但坚持用下来之后,选型会议上最有说服力的不是任何一句“我觉得”,而是这张表。它能让你在一个 Skill 跑了三十多个任务之后,快速统计出通过率、失败模式分布、哪类输入最容易翻车。
3. 稳定性测试:别被一次超常发挥骗了
3.1 多轮重复:同一任务跑五遍,看的是分布而不是单点
Skill 输出有随机性,这是模型采样机制决定的。很多人评估时只跑一次,看到结果不错就直接下结论“此 Skill 可用”,这是我在实际中见过的最危险的误判。因为模型带温度采样时,同一个任务跑五次,可能三次优秀、两次崩盘。如果你只跑了那一次优秀的,就等于中了彩票却以为自己有稳定盈利能力。
我的标准是:关键任务至少重复五轮,观察全分布。五轮里如果五轮全部成功,算是“高稳定”;四成一败,属于“可接受但有瑕疵”,要记录失败轮次的失败模式;三成两败,基本可以断定稳定性不足,需要排查是任务本身问题还是 Skill 逻辑问题。
具体执行时,我会在同等配置下连续跑五轮相同的任务,提取完整的输出记录而不是只留一个汇总摘要。有些失败只体现在输出细节里,比如格式对了但数字算错了,这种失败只看最终评分是抓不出来的。
3.2 参数扰动与上下文变化:把 Skill 扔进真实噪声里
稳定性的另一个维度是敏感度。很多 Skill 在“干净环境”下表现不错,一旦输入里混入无关信息、用户中途改了需求、或者上下文顺序变了,输出质量就剧烈波动。这叫做上下文漂移,在评估里特别值得重视。
我的测试方式是做三种扰动:
- 无关信息扰动:在任务输入里插入两段与任务无关的段落,看 Skill 能不能正确忽略。
- 信息顺序扰动:把同一段输入的关键信息从前部移到后部,看 Skill 的顺序敏感性。
- 角色与语气扰动:把用户请求从“请帮我”改成“快点弄完”,看 Skill 是否会被语气影响导致约束松弛。
这三种扰动不需要跑很多轮,每类两到三轮就足够暴露问题。我测过一个“论文辅助 Skill”,它在干净输入下能把摘要压缩得很好,但只要用户在提问末尾加一句“简单点说就行”,它就把摘要压缩得不成样子,丢掉了所有关键数据。这类稳定性问题如果不上线试跑,光看演示永远发现不了。
3.3 回归测试任务卡:给 Skill 建一份长期体检表
Skill 不是静态的,模型会升级、平台会改版、Skill 本身也会迭代。今天测过没问题的 Skill,三个月后可能因为底层模型能力变化而表现异常。所以我为每个正式纳入使用的 Skill 建了一张“回归测试任务卡”。
卡片内容很简单:挑五个高价值核心任务,外加两个边缘任务。每次 Skill 版本更新、模型版本切换、或者平台大改之后,拿这七张卡跑一遍对照。跑完对比台账里上一轮的结果,就能快速发现是变好了、变差了、还是没变化。
这个习惯帮我避免过两次线上事故。一次是模型版本升级后,某个 Skill 的中文指令遵循能力下降,输出里开始夹杂英文标签;另一次是平台更新了上下文截断策略,Skill 的长文本处理流程被截断导致信息丢失。如果没有回归任务卡,这些问题要等用户反馈才会暴露,那代价就大了。
3.4 量化稳定性的两个小指标:通过率与输出漂移
用文字描述稳定性容易含糊,我给自己定了两个量化指标。第一个是通过率:在标准和扰动条件下,输出达到可接受标准的任务比例。计算公式很直接:通过轮次除以总轮次,乘以百分百。
第二个是输出漂移指数:同一任务多轮运行下,输出在非内容层面的变化程度。关注点包括格式差异率、结构差异率、关键字段漏失率。打个比方,一个 Skill 跑五轮同一个任务,如果每轮标题层级和编号规则都不一样,就算内容都对,它也算“不稳定”。我用漂移指数的方式是:每次跑完记录一次格式异常项,累积五轮后统计异常项占比。
实践下来,稳定性差的 Skill 几乎都在这两个指标上暴露明显短板。通过率低于 70% 的建议直接不选,输出漂移偏高的则要追问是 Skill 约束写得不严格,还是底层模型本身就不稳定。知道问题在哪一层,你才知道能不能通过调优救回来。
4. 证据链:让每次评估都可追溯、可复现、能说话
4.1 证据要留什么:原始输出、配置快照、运行日志缺一不可
评估 Skill 最大的敌人是“记忆美化”。三天前你觉得某个 Skill 表现不错,六天后要写结论时,记忆里只剩“还行”和“好像有点问题”这种模糊感觉。所以我坚持的一个原则叫:评估不落地证据等于没评估。
具体要留三类证据。第一是原始输出,包括每一轮的完整输出文本、生成的中间步骤、调用工具的返回结果。第二是配置快照,记录当时的模型版本、温度参数、上下文长度限制、Skill 的版本号、所在平台等。第三是运行日志,包括耗时、失败堆栈、人工干预点位。这三类证据合在一起,才能让一次评估结论在三个月后依然能被重新验证。
我见过不少团队评估完 Skill 只留下一行 Excel 汇总“效果好”,没有原始输出,没有配置信息。后来报告被质疑时,谁也说不清楚当时的“好”到底是什么意思。对于需要走选型评审的 Skill,证据链不完整,那一票我是不会投的。
4.2 证据怎么组织:按“任务-版本-日期”三层目录归档
一开始我的证据管理也很乱:输出文件丢在下载目录,日志散落在聊天记录里,评估结论写在某一个在线文档里。要用的时候全都在翻聊天记录,效率极低。后来我固定为一套目录结构:
skills-eval/ 2025-06-weekly-report/ # 按 Skill 名建目录 v1.2/ # 按版本号归档 2025-06-10/ # 按测试日期分目录 T-HF-012_full.json # 原始输出 config_snapshot.json # 配置快照 run_log.txt # 运行日志 eval_notes.md # 当天的评估备注这套结构的价值在于可追溯:任何一个输出文件,都能通过路径往回找到对应的配置和时间。后来团队成员问我某天某个测试是怎么跑的,我直接把路径丢给他,他自己可以重新跑一遍对照。复现能力是评估的公信力来源。
4.3 怎么用证据反驳“我总觉得它有用/没用”
在实际项目里,每个人都有倾向性。有人花了三天时间把一个 Skill 调通,天然觉得它好;有人刚上手时遇到一次失败,就到处说它垃圾。没有证据链时,这类争论只能靠嗓门大小决定胜负。有证据链时,就可以直接翻开台账逐条过。
处理过一个真实案例:团队有一款“简历筛选 Skill”的选型争议。支持方觉得它能批量输出匹配度评分,省了大量人工;反对方指出它经常漏掉关键工作经验。两边吵了两轮没有结论。后来我们把证据链摊开,发现那款 Skill 在“结构化简历输入”下的通过率高达 90%,但在“自由文本版简历”输入下只有 55%。结论清晰了:该 Skill 适合特定输入格式,不适合泛化场景。证据不解决所有问题,但能让大家在事实基础上讨论,而不是停留在观感和印象里。
4.4 评估周期与迭代节奏建议
证据不是一次性收集完就结束的。Skill 本体、底层模型和运行平台都在变,最稳妥的做法是:初次选型时做一轮完整评估,纳入使用后按固定周期做轻量回归。我的参考节奏是:初次评估跑至少 30 个任务,覆盖三类任务;纳入使用后每两周跑一次七卡回归;每次模型升级或 Skill 版本更新时,追加一轮完整评估。
这套节奏看着繁琐,但累积起来工作量并不大。每次七卡回归跑下来大概半小时到一小时。用这点成本换取线上问题早发现,划算得很。
5. 高频踩坑与判断检查清单
5.1 把“演示成功”当成“真实有效”
这是我对新品使用者的最大提醒。Skill 的演示展示通常是作者精心挑选的最优结果,模块作者不会在页面里放翻车的记录。我的经验是:演示视频看三遍,一遍看流程,一遍看细节,第三遍专门挑毛病——寻找可以被特殊构造掩盖的漏洞。看演示时多问一句“这个输入是不是被精心设计过的”。
5.2 只测喜欢的任务,选择性采样
评估中最难克服的是心理惯性。人倾向于测自己有把握、预期容易成功的任务。一旦任务集偏向“简单任务”,通过的样本多是高质量的,真实能力就被高估了。对抗这种情况的办法很简单:任务集在设计好后,找不了解该项目的人审核一遍,不认识的评估者很难刻意放水。
5.3 忽略模型版本漂移和上下文污染
两次评估之间如果模型版本变了,评估结果的差异就不能完全归因于 Skill。我在一次评估里拿同一个 Skill 换了两个模型版本跑,输出风格几乎变了一个人写的,差点冤枉了 Skill 本身。所以任何对比评估,必须在配置快照里写明模型版本。上下文污染则是另一个隐患:当聊天历史中夹带了之前无关任务的输出,Skill 可能会被“带跑偏”。这种问题最隐蔽,因为它不是每次都会发生,而是概率性出现。
5.4 我的五条快速判断清单
回到最初的问题:拿到一个新 Skill 时,如何在最短时间内判断它值不值得继续投入?我总结了一份极简清单,五条过完基本心里有数:
- 拆开看它的规则约束是硬性校验还是软性建议。硬校验带条件分支和格式检查,软性建议只是一段话,稳定性差异很大。
- 至少跑五遍核心任务。任何一遍失败都要记录失败模式,而不是默默重试直到它成功。
- 有没有无 Skill 对照?没有对照的话,无论结果多好,都说不清是不是 Skill 的贡献。
- 换一个输入格式试试。如果换个格式就崩盘,说明 Skill 的应用边界很窄。
- 证据能不能被重新跑出来?如果留不下原始输出和配置信息,以后出问题就找不到根因。
我在实际项目中的体会是,评估 Skill 和评估人很像:偶尔的超常发挥不能说明实力,稳定的输出才是可信赖的基础。花半天时间做对照、跑重复、留证据,远远好过花一周时间反复试错。你现在手里的 Skill 无论被吹得多厉害,先把它扔进这套框架里测一遍,再决定要不要信它。