模型能力正以数月为尺度快速移动,默认行为的不断演进,决定了任何一条 Skill 都不可能被一次性证明永久有效。 昨天仍能改善行为的规则,今天可能已经成为 No-op;昨天必须明确编排的过程,明天也可能妨碍模型发挥新获得的能力。
因此,Skill 的价值不取决于一条规则是否正确,而取决于它相对于当前模型的默认行为是否仍有行为增量。
"修改代码后运行测试" 是一条正确的工程原则,但如果当前 Agent 已经会稳定地选择相关测试、运行测试,并根据失败结果继续修复,那么把这条原则再写进 Skill 的意义就会丧失。反过来,模型即使已经知道如何全面探索,高风险项目仍然可以通过 Skill 要求它覆盖全部调用方 ------ 这不是补偿模型能力,而是在编码当前环境愿意为确定性支付的成本。
判断行为增量,首先需要知道一条 Skill 究竟为什么存在。problems.md 为此提供 Anchor :它只记录目标 Skill 必须解决的真实可观察问题。problems.md 说明为什么需要 Skill,却不能证明 Skill 仍然有效。低风险 Skill 可以只保留少量复现案例;高频、高风险或包含不可逆操作的 Skill 则需要更正式的评测和确定性校验。无论采用哪种规模,最关键的是比较默认行为与加载 Skill 后的行为:问题是否仍然存在,Skill 是否使它明显减少,以及是否带来了新的副作用。
以本文配套的 write-skill 为例,它的 problems.md 不需要为每个问题填写复杂模板,只需明确记录它要纠正的长期行为:
md
## 问题
1. 编辑 Skill 时缺少问题锚点,说不清 Skill 为什么存在,也没有该改、该删的判断标准。
2. LLM 容易把用户原话或单次 Case 直接写进 Skill,没有将其抽象成长期问题,导致规则过拟合并持续膨胀。
3. LLM 倾向于输出和保留过多内容,容易堆叠 No-op、冲突约束、旧迁移痕迹和低频 Reference。
默认情况下,一两句话说明坏行为就足够。只有当问题依赖特定 Branch、容易与其他失败混淆,或者需要转化为回归测试时,才补充复现条件和可观察证据。问题描述的目标不是形式完整,而是让维护者能够判断:它现在是否仍然存在。
有了 Anchor,修改才从 "感觉这句话有用" 变成一个可以验证的假设:
为了解决这个长期问题,最少需要改变什么?
答案可能是修改现有契约,也可能是删除遮蔽关键行为的内容。只有现有结构确实无法表达新的行为边界时,才增加规则。至于应该修改 Description、Pointer、正文还是底层工具,属于已经讨论过的结构决策,这里不再重复。
验证之后进入 write-skill 的最后一步:Prune。前面已经讨论了 No-op、重复、沉积和单一真相来源;从生命周期角度,只需再增加一条判断:
一条规则即使过去通过了 No-op 测试,也不代表它今天仍能通过。
当模型、工具或运行环境发生明显变化时,应重新思考 problems.md 中的问题,如果部分问题消失,就删除对应规则;如果整条 Skill 已经无法证明行为增量,就将它归档。归档不是失败,而是说明模型、工具或底层工程已经吸收了这副脚手架原本承担的功能。
综上,一条 Skill 的生命周期可以概括为:
- 观察并确认长期问题;
- 用
problems.md锚定 Skill 的存在理由; - 建立解决问题的最小契约;
- 比较默认行为与加载 Skill 后的行为;
- 持续删除失去行为增量的规则;
- 问题消失后,删除规则或归档 Skill。
Skill 不该保存我们对理想 Agent 的全部想象,而应锚定当前 Agent 在缺少约束时会稳定出现的重要问题。
写不出 problems.md 中的第一个长期问题,就不要创建 SKILL.md;无法证明删除某条规则会让行为变差,就应认真考虑删掉它。
开源实现:write-skill
不会被模型内化的部分:私有约定
并非所有 Skill 都会随着模型变强而失去价值。模型能够内化公开知识和通用策略,却无法推断从未进入训练数据或当前上下文的私有约定。这不是能力问题,而是信息问题:没有提供给模型的事实,对这一轮 Agent 就不存在。
例如,一个私人研究笔记库可能规定:根目录保持扁平,文件名统一使用 Title Case,笔记通过 [[wikilinks]] 关联,并由 * Index.md 聚合同类内容。这些约定没有普遍最优解,模型也无法凭推理知道当前库恰好采用这一套组织方式。
缺少相应 Skill 时,Agent 通常只有两种选择:要么沿用自己的默认习惯,建立子目录、采用其他命名格式,结果直接违反约定;要么先遍历现有文件,花费额外的工具调用和 Token 推断局部规律。一条错,一条贵。 一份简洁的 Skill 可以同时避开两者。
这类 Skill 的作用不是教模型 "如何思考",而是提供它无法自行获得的环境证据:输入在哪里、采用什么格式、内容写到哪里,以及哪些约定必须保持。它的寿命不取决于模型能力,而取决于私有约定本身;只要约定仍然存在,行为差值就不会因为模型升级而自然消失。
因此,Skill 的退出条件不是简单的 "模型变强了",而是它所提供的行为增量已经消失。能力补偿型 Skill 可能被后训练吸收;记录私有格式、项目口径和组织契约的 Skill,则会与这些约定保持相同的生命周期。