AI Skill 极简手册(二):为什么你的 Skill 换个模型就废?
上一篇结尾预告了三个问题:质量可验证、场景可复用、Token 高效率。这一篇先解决第二个——场景可复用。它的最痛形态,就是换模型就废。
开篇:同一份 Skill,两种表现
在模型 A 上调好的 Skill,运行稳定。换到模型 B 上,效果明显下降。
你开始逐句调整措辞,改一处错一处,最终整段重写。你怀疑是模型 B 的问题,但同一段 Skill 在他人的环境中运行正常。问题不在任何单一模型,而在 Skill 的写法。
这是上一篇开篇列出的第二种挫败——通用性缺失。上一篇做了诊断,这一篇给出治理方法。
先看证据:这不是错觉
三份外部证据表明,这个痛点真实、普遍,且已被认真研究。
第一,社区的现象级讨论。 SegmentFault 上有文章直接给出结论:把旧模型的提示词直接套用到新模型上,效果可能不升反降,原因是过度指定。"过度指定"与上一篇的"步骤写得太死",指向同一个问题。
第二,学术界已将其列为正式研究对象。 arXiv 论文《PromptBridge: Cross-Model Prompt Transfer for Large Language Models》专门研究跨模型提示词迁移。这个日常困扰已进入学术视野。
第三,工程界的结论。 Cursor 团队指出:不同模型有不同的行为方式、提示词格式与工具形态。模型差异是客观事实,无法消除。
三份证据指向同一个结论:正确的问题不是"如何让所有模型表现一致",而是"如何让 Skill 在存在模型差异的条件下可移植"。
病根:模型的习惯被写进了 Skill
模型差异无法消除,那就检查 Skill 一侧的问题。失效的 Skill 拆开来看,通常存在三种绑定。
第一种:关键词绑定。 指令中写死了关键词表,例如"找到所有 error 和 warning"。关键词表是确定的,各模型对它的解读却各不相同。上一篇实验中有现成的证据:细则式 Skill 的这句话,执行模型解读为"全部 13 行都列出"。换一个模型,完全可能解读为"只列 8 行"。同一句话,两种解读,这就是绑定。
第二种:格式绑定。 输出格式依赖某个模型的默认习惯。本次实验的证据:同一个细则式 Skill,glm-5.3-flash 的输出保留了原文的 info:/error: 标签前缀,deepseek-v4.1-flash 的输出将条目按等级重新排序。两种呈现都符合字面指令——指令对呈现方式没有约束,各模型就按各自的默认习惯补齐。
第三种:技巧绑定。 "让我们一步步思考"这类提示技巧,只在特定模型上有增强效果。换用其他模型后,技巧失效,甚至成为干扰。这类技巧绑定的是特定模型的训练习惯,不是任务本身。
三种绑定共同的问题:特定模型的习惯被写进了 Skill,而 Skill 应当描述的是任务本身。
但实验数据对病根做了一个重要修正。本次跨模型实验(下节详解)测出一个结果:细则式 Skill 在三个模型上的失效方式几乎一致——同样的 4 条等级判错、同样的 2 条噪声计入、同样的统计失真。写死的内容,不是换个模型就变化,而是在哪个模型上都是错的。
真正随模型变化的,只有边缘判断。任务式 Skill 在三个模型上的准确性为 10、9、9——判错的各是 1 条,且三家错的不是同一条:glm 错 F8,qwen 错 F7。等级两可的条目,才是模型间分歧的真实来源。
因此,跨模型失效应当拆成两层:
| 失效层 | 病根 | 处置 |
|---|---|---|
| 骨架层 | Skill 自身写死(三种绑定) | 修改 Skill 措辞 |
| 边缘层 | 模型间的判断分歧 | 接受差异,或写入容忍条款 |
两层的处置完全不同。不拆分,就会对着边缘差异大改骨架,或者对着骨架问题归因于模型。这正是分诊法要解决的问题。
基石:先有跨模型度量衡
分诊之前,先要有一件东西:度量衡。
缺少度量衡的跨模型调试是这样的:换模型,运行一次,凭主观感受判断"似乎变差了",然后开始无依据的调整。改到什么程度算好,无法判断。
有度量衡的跨模型调试是这样的:换模型,运行一次,对照成功标准逐项评分。覆盖少了 1 条,等级错了 3 条,统计不正确——差距被量化,调整对象与调整目标都有了依据。
度量衡就是上一篇四要素中的成功标准。它在跨模型场景中的角色升级了:
| 阶段 | 成功标准的角色 |
|---|---|
| 编写 Skill(第一篇) | 迫使作者把"怎样算完成"想清楚 |
| 跨模型(本篇) | 量化差距、支撑归因的度量衡 |
度量衡还有一条性质:度量衡的完整度,决定诊断的上限。 交给 AI 的成功标准清单每缺一个评分维度,诊断报告就多一个盲区。因此成功标准清单应当包含完整的评分维度,这是分诊法的前置条件。
分诊三步法:量、归因、处置
有了度量衡,就可以执行分诊。三步。
第一步:量。 旧模型、新模型各运行一次同一输入,用成功标准分别评分。得到各自的分数与差距。
第二步:归因。 将每个失分点归入三类之一。这一步是分诊法的核心:
| 归因类别 | 判据 | 处置 |
|---|---|---|
| 意图传达失败 | 严格执行字面指令必然得到该结果,换任何模型都同样出错 | 修改 Skill 措辞 |
| 能力边界 | 指令无歧义、信息齐备,模型仍无法完成 | 更换模型,或调整预期 |
| 风格差异 | 指令可实现,模型在呈现方式上各有偏好 | 接受,或写入容忍条款 |
第三步:处置。 按归因执行。第一类只修改被归因命中的措辞,不推翻重写;第二类不动 Skill,调整模型选择;第三类不作修改,记录为已知差异。
这套方法不必人工执行。用上一篇的四要素模板将它写成一个 Skill,AI 即可自行运行:
# 任务:诊断并修复一份跨模型失效的 Skill
## 目标
一份 Skill 在模型 A 上表现较好、在模型 B 上表现较差。找出失分原因,
产出修复版 Skill 和一份可核对的诊断报告。
## 约束
- 每个失分点的归因只能是三类之一:意图传达失败、能力边界、风格差异
- 归因必须引用两份运行记录中的具体证据
- 修复只改被归因命中的措辞,不得推翻重写
- 不得虚构运行记录中没有的失分点
## 成功标准
- 诊断报告逐项含:量化差距(对照成功标准打分)、
失分点归因(三类之一 + 证据)、处置动作
- 修复版 Skill 只动了被归因命中的部分
- 报告末尾一句话结论:这个 Skill 能不能救、下一步做什么
## 可用资源
- 原 Skill 全文
- 模型 A 与模型 B 的两份运行记录
- 成功标准清单(外部评分依据)
- 你的常识与判断,以及对三类归因的界定权
注意这个模板本身就是上一篇方法的产物:目标描述终态,约束禁止虚构与重写,成功标准逐项可核对,可用资源将判断权下放。上一篇教的方法,这一篇直接用于构造新工具。
使用要领:诊断报告产出后,先由人工核对报告中的证据引用与归因逻辑,确认无误后再执行修复。人工核对的对象是证据与推理过程,不是替代 AI 完成诊断。
实验:一次完整的分诊修复
方法讲完,用一个完整实验演示全程。所有材料公开,任何人可复现。
实验设计
控制变量:同一任务、同一输入、同一份评分参考答案,唯一变量是模型。
| 项目 | 设定 |
|---|---|
| 任务 | 把同一份合成扫描输出整理成安全报告(材料复用第一篇) |
| 执行模型 | deepseek-v4.1-flash、glm-5.3-flash、qwen3.8-flash(三个家族的 flash 档) |
| 两组 Skill | 细则式(第一篇的反例)与任务式(第一篇的推荐写法) |
| 评分员 | deepseek-v4-pro,统一评全部运行记录,非执行者 |
评分员统一是关键设计。跨模型的质量波动必须用同一套度量衡测量,否则分数差异中混入评分员差异,归因就会失真。
三个模型,两种失效模式
细则式 Skill 在三个模型上的成绩:
| 指标 | deepseek-v4.1-flash | glm-5.3-flash | qwen3.8-flash |
|---|---|---|---|
| 等级判定正确 | 6/10 | 5/10 | 6/10 |
| 结构达标 | 4/5 | 3/5 | 3/5 |
| 统计正确性 | 否 | 否 | 否 |
| 多余条目 | 3 | 3 | 3 |
三个模型的失效方式几乎一致:等级判错的都是同样的 4 条(F4 默认凭据、F5 反射型 XSS、F7 堆栈泄露、F8 目录列表——全部源于"error 标高、warning 标中"的机械映射);多余条目都是 3 条(2 条噪声行与 1 条重复的 OpenSSL 复核条目);统计全部将噪声与重复计入。
这是骨架层失效的实证:写死的内容,不是换个模型就变化,而是在哪个模型上都是错的。
任务式 Skill 在三个模型上的成绩:
| 指标 | deepseek-v4.1-flash | glm-5.3-flash | qwen3.8-flash |
|---|---|---|---|
| 等级判定正确 | 10/10 | 9/10 | 9/10 |
| 结构达标 | 5/5 | 5/5 | 5/5 |
| 统计正确性 | 是 | 是 | 是 |
| 多余条目 | 0 | 0 | 0 |
任务式最差的模型(9 分)仍比细则式最好的模型(6 分)高 3 分。判错的各是 1 条,且三家错的不是同一条:glm 将 F8 目录列表判为低,qwen 将 F7 堆栈泄露判为中。等级两可条目上的各自判断——这是边缘层分歧的实证:分歧在边缘,不在骨架。
分诊:AI 执行诊断
取细则式的两份运行记录(deepseek 的较好,glm 的较差),连同原 Skill 和成功标准清单,交给分诊 Skill。执行者是两份记录的非当事人 qwen3.8-flash。
分诊报告的质量有三处值得说明。
第一,报告独立得出了"两份都差"的量化结论。 共同失分占大头——骨架层失效是主要矛盾,这与人工分析一致。
第二,报告用反证法完成归因。 判定"机械映射错"属于意图传达失败时,报告先排除了能力边界。反证是:deepseek 将 CSP 行调离了 info 档,glm 对 F2 调整了档位,说明模型有能力偏离标签。是 Skill 那句"把 error 标成高,warning 标成中"将它们固定在标签上。归因给出了证据,也给出了排除过程。
第三,报告严格遵守"只修改被归因命中的部分"。 原 Skill 六句,修复版八句——新增的只有四处被归因命中的口径(噪声排除、初判加影响校正、去重、统计口径),三句一字未动。报告还将"deepseek 重排顺序、glm 保留标签前缀"判定为风格差异:不扣分,不修改措辞。
修复验证:重跑与复评
修复版 Skill 交回表现最差的 glm-5.3-flash,同一输入重跑,同一评分员按同口径复评:
| 指标 | 修复前(原细则式) | 修复后(分诊修复版) |
|---|---|---|
| 覆盖 | 10/10 | 9/10 |
| 等级判定正确 | 5/10 | 9/10 |
| 等级判错 | 5 条 | 0 条 |
| 多余条目 | 3 | 0 |
| 统计正确性 | 否 | 是 |
| 结构达标 | 3/5 | 4/5 |
判定复活的参考标准是"判错收敛到 1 条以内",实际收敛到 0 条。归因还被重跑逐条兑现:诊断报告判定默认凭据(F4)应为高、原版判中是错的,修复版重跑输出的第一条即"高|应用配置文件 app.cfg 中使用默认凭据,可直接接管系统"。
诊断,修复,重跑,复评,闭环完成。
适用边界:分诊法与四要素的成本比较
修复完成后,一笔字符账值得核算:原细则式 Skill 122 字符,分诊修复版 440 字符,任务式 Skill 原文 276 字符。修复的成本高于新写,且修复版的输出结构仍不及任务式完整(4/5 对 5/5)。
分诊法的适用边界由此清晰:它适用于存量 Skill 的修复——手里有大量旧 Skill 时,逐个分诊、恢复可用;编写新 Skill 时,直接使用四要素模板,成本更低,结构更全。
交付物:跨模型迁移自检清单
全文收敛为一份可带走的清单。换模型前,四项检查:
- 成功标准描述的是终态吗——换模型后仍然成立的,才是合格的标准
- 存在模型习惯词吗——特定模型才识别的提示技巧、绑定单一模型的格式,逐项清除
- 输出有可核对的判据吗——度量衡先于迁移;清单的维度数,决定迁移后能看清几层差距
- 在第二个模型上运行过吗——未经实际运行验证,一切判断都只是推测
迁移之后,一步验证:对照成功标准逐项评分,量化差距。差距落在骨架层,进入分诊;落在边缘层,写入容忍条款;差距无法量出,迁移完成。
小结
全文收敛为三句话:
- 跨模型失效分两层:骨架层是 Skill 自身写死(三种绑定),在哪个模型上都错;边缘层才是模型分歧,集中在等级两可的判断。先分层,再处置。
- 度量衡先于分诊。成功标准在跨模型场景中承担度量衡的角色,其完整度决定诊断的上限。
- 分诊法适用于存量修复,不适用于新写。修复旧 Skill 的成本高于用四要素模板新写,新写直接用模板。
分诊 Skill 模板与迁移自检清单均在上文,可直接取用。
浙公网安备 33010602011771号