如何定义 Skill Quality:建立 SQEM 质量模型

“这个 Prompt 写得不错”不是一个质量模型。

这只说明读者觉得文字顺、结构清楚、意图大概能理解。Agent Skill 还要面对触发、行为、基线、兼容性、回归和证据追踪。把这些问题压缩成一个 0 到 100 的数字,看起来简单,实际会把最重要的差异抹掉。

SQEM(Skill Quality Evaluation Model)把重点放在四个问题上:评估什么、评估到什么深度、保留什么证据,以及这些证据支持什么声明。

先把质量声明说清楚

一个 Skill 的质量不是脱离上下文的永久属性。更准确的表达是:

Skill Quality at Version V under Evidence Set E

同一个 Skill 在版本变化、模型变化、工具变化或环境变化后,质量结论都可能需要重新检查。对于 functional-testing,一次文档结构检查可以证明包合法;它不能直接证明“已经兼容所有模型”或“比不用 Skill 更有效”。

SQEM 最核心的规则只有一句:

Quality Claim <= Available Evidence

如果证据只到 E1(静态),就不要写成 E3(运行时)或 E4(真实项目)的结论。这个边界有点烦——但它比漂亮的过度承诺可靠。

八条核心原则

SQEM 用八条原则约束评测方式:

原则具体含义
证据优先于直觉证据优先于“我刚才试了一下,感觉可以”
行为优先于措辞看可观察行为,不要求固定措辞
按风险选择而非穷举按风险选择深度,不做无意义的全排列
先确定性后概率性先用最低成本、最稳定的判断方式
从真实失败沉淀回归把真实失败沉淀成回归用例
先有基线再声明有效性先有 Baseline,再声称增量价值
兼容性必须通过验证兼容性需要真实运行证据
声明不能超过证据质量声明不能超过证据边界

这些原则也解释了为什么 SQEM 不鼓励一上来就用 LLM 评判器。文件是否存在、JSON 是否合法、必需字段是否齐全,先用确定性检查解决。需要语义判断时,再增加规则评估、领域脚本、Agent 评判器或人工复核。

七个质量域

质量域核心问题典型证据
Q1 规范质量规范、元数据、目录和引用是否合法?Schema、Lint、静态验证
Q2 设计质量目的、边界、输入输出和相邻能力是否清楚?匹配评审、设计评审
Q3 包质量包是否完整、独立、可渐进加载、双语一致?完整性、依赖、双语一致性检查
Q4 行为质量Agent 能否正确发现、选择、执行并处理失败?正向、异常、边界和行为评测
Q5 有效性质量相比合理 Baseline,Skill 是否带来改善?有 Skill / 无 Skill 对照 Benchmark
Q6 兼容性质量声明兼容的 Agent、模型、工具和环境是否真实验证?运行时矩阵、兼容性抽样
Q7 证据与演进质量质量证据、版本变化和回归是否可追溯?质量画像、回归、证据报告

七个域不是七个必须打满的分数。它们是七个避免漏项的观察角度。

为什么不做统一的 0–100 分

一个 Skill 可能在 Q1、Q2、Q3、Q4 上有充分证据,但 Q5 尚未做 Benchmark,Q6 只在一个 Agent 上运行过,Q7 的历史回归也还不完整。此时给出“86 分”并不能告诉使用者该相信什么。

质量画像更有用:

Skill Quality Profile
────────────────────────────────────

Skill: functional-testing
Target Test Level: L3 Evaluated
Current Test Level: L2 Verified

Q1 Specification       PASS
Q2 Design              PASS
Q3 Package             PASS
Q4 Behavior            PASS
Q5 Effectiveness       NOT_RUN
Q6 Compatibility       PARTIAL
Q7 Evidence/Evolution  PASS

Evidence Level: E2 Eval

Known Gaps:
- 尚未执行 with/without Skill Benchmark
- Cross-model 证据不完整
- Real-project Evidence 有限

Next Validation:
- 执行受控 Benchmark
- 增加代表性 Runtime Compatibility

这里的状态是一个示例结构,不是对当前仓库执行结果的宣称。真正的质量画像必须来自实际证据。

质量画像怎么进入团队流程

可以把质量域用在三个决策点:

新增 Skill 前

先做匹配评审:现有能力能否覆盖?是应该 MATCH、MERGE、ENHANCE,还是确实需要 NEW?这一步能减少能力重叠。

合并变更前

至少检查规范、静态验证、变更相关评测和已有回归。description 变更重点看发现 / 触发,工作流指令变更重点看行为 / 输出。

发布或做质量声明前

检查关键回归、证据是否更新、已知缺口是否公开。想说“支持 Codex”,需要 Codex 运行时证据;想说“改善测试设计质量”,需要比较性 Benchmark 证据。

一个受限输入的例子

假设你要评估一个 Skill,只拿到入口文件和一次人工输出。此时可以记录:

项目当前结论
Q1如果静态检查通过,可以记为 PASS
Q2需要阅读目的、边界和相邻 Skill 后再判断
Q4一次输出最多是单个用例的观察结果
Q5NOT_RUN,没有 Baseline 对比
Q6INSUFFICIENT_EVIDENCE,没有运行矩阵
Q7只能记录当前版本和当前证据集

这比把所有项目填成 PASS 更诚实,也更方便下一轮补验证。

把质量画像变成一个决定

质量画像要能决定团队下一步做什么。假设一个新 Skill 已经通过规范和包检查,行为质量是 PARTIAL,有效性还是 NOT_RUN,兼容性则是 INSUFFICIENT_EVIDENCE。此时安排一个范围明确的 Pilot,并补做运行时检查;不要直接写成“这个 Skill 已经适用于所有 Agent”。

小范围变更也按同一规则处理。只改 description 时,做一次聚焦的触发评测和一轮短回归;改了工作流或参考资料,就扩大证据范围。质量画像是一张验证投入的路由表——它告诉团队下一小时应该花在哪里。

每个尚未完成的质量域都要有下一步动作、负责人和关闭缺口的条件。“兼容性:PARTIAL”只是状态;“运行 Codex 和 Claude Code 的代表性用例,附上追踪记录,再评审差异”才是计划。计划会推动 Skill 继续向前。

安装与调用

SQEM 是评测框架,不替代具体任务 Skill。可以先安装一个被评估的 QA Skill:

npx skills add https://github.com/naodeng/awesome-qa-skills/tree/main/skills/en --skill functional-testing

再用明确的任务和质量要求调用:

请使用 functional-testing Skill。
请输出:
1. 任务范围与已确认事实;
2. 当前假设与信息缺口;
3. 正向、异常、边界、角色、数据和集成场景;
4. 每项场景的风险优先级和可验证证据。
不要将未运行的测试标为 PASS。

两个实际问题

质量画像能不能替代最终质量决定?

不能。它整理证据、状态、已知缺口和下一步验证;范围取舍、风险接受和发布决定仍然需要对应负责人确认。

七个质量域是不是每次都要全部做完?

不一定每次都执行同样深度,但每个维护中的 Skill 都应该知道自己在哪些域有证据、哪些域没有。风险越高,缺口越不能隐藏。

参考

分享