English · 中文
System of Skills · 系统工程方法论

把一组 skill 设计成一个自洽的系统

Designing a skill collection as a coherent system — not just writing good individual skills

单个 skill 怎么写,Anthropic 官方指南已经讲透;这里讲的是更高一层——一整套 skill 加多个 agent,如何拼成一个自洽、可演化、可验证的系统。六条静态设计原则,加一套实证评估回路。

持久性梯度 系统一致性 Regime 门控 正交覆盖 心流 粒度纪律 评估回路
这份文档的定位 · System engineering, not single-skill authoring

这不是"怎么写好一个 skill"的指南——progressive disclosure、description 写法、degrees of freedom 这些单个 skill 的工艺,Anthropic 官方 best-practices 已经讲清楚了。

这份文档处理的是更高一层的问题:一整套 skill 加上多个 agent,如何拼成一个自洽的系统。把每个 skill 当模块、trigger 当接口、输出当契约、核心 prompt 当内核--当零件多起来、agent 开始互相编排,零件级的正确不再蕴含系统级的正确。这是系统工程:覆盖、正交、接口契约、回归、端到端验证。下面七条原则负责静态自洽,最后的评估回路负责实证验证。

贯穿例子 · Running Example

你在给一个帮你发代码的 agent 装 skill:write-tests(写测试)、review-diff(审查 diff)、debug(调试失败)、commit(提交)、refactor(重构),加一个 planner 用 workflow 把它们编排起来。每条单独看都没问题——但装在一起,问题接踵而至。下面七条原则用这套系统来演示。
You're building a coding agent: write-tests, review-diff, debug, commit, refactor — planner-orchestrated. Each skill looks fine alone. Together, things break. The seven principles below show exactly how and why.

核心方法论 · Core Principles

七条原则 Seven Principles

这七条不是独立的规则,是一套相互咬合的逻辑体。每一条回答设计过程中的一个根本问题。
Seven interlocking principles — each answers one fundamental design question.

1
放在哪里 · 持久性梯度
常驻 → 按需 → 参考素材
知识放在哪一层,由它的使用频率决定。每轮都必须在场的东西放进核心 prompt(Kernel);某个角色/场景被激活时才需要的东西放进 skill;在 skill 激活的前提下才按概率取用的深度材料,放进 skill 下的 reference/ 或 scripts/ 文件夹。
判断标准不是"重要不重要",而是"多久用一次"。一个很重要但只在特定场景需要的规则,不属于 prompt——它属于 skill。放错层级的代价:太高则每轮浪费 context,太低则变成无法触达的死知识。
❌ 典型错误:"提交前必须跑测试""不提交密钥"——这些宪法级规则被写进了 commit skill。但 refactor、review-diff 的 subagent 根本看不见 commit,照样提交没跑测试的代码。
✓ 修法:宪法级规则属于 Kernel;commit skill 只写"怎么提交"的工艺。
2
整体质量 · 系统一致性
prompt + skills + scripts 形成统一意图的逻辑体
零件好不等于系统好。所有层(核心 prompt、每个 skill、每个 reference 文件、每个脚本)必须服务于同一个 north star,能形成自洽的推理链。任何一个零件的意图和整体系统矛盾,就会在某个边界产生无法预测的行为。
检验方法:任取系统中的任意一个 skill,能否在它里面找到一句话,把它的存在追溯到核心 prompt 的某个原则?找不到 → 这个 skill 是浮空的,要么补 Kernel anchor,要么删掉。
3
什么时候建 Skill · Regime 门控
使用者 × 场景 决定是否设计 skill
Skill 的身份由两个维度定义:谁在用它(agent/role)和在什么场景下用(trigger/scene)。任意一个维度变了 → 考虑独立 skill。两个都没变 → 归并、降为 reference 或直接删掉,不新建。多 agent 协作时:设一个 planner skill 负责编排,每个 agent 有自己的独立 skill——不共享 SKILL.md。
最常见的错误:因为"内容相关"就建 skill。正确的问题是:"这个使用者和场景的组合,和已有 skill 有没有根本性的不同?"没有 → 别建。
❌ 典型错误:你加了 review-security,因为"安全审查感觉和代码审查相关"。结果 review-diff 和 review-security trigger 重叠,同一个 diff 两个 skill 都抢着触发,agent 拿到两个互相矛盾的权威。
✓ 修法:安全审查只是 review-diff 的一个 mode,不是独立 regime——合并,或降为 reference 文件。
4
单一使用者的完备性 · 正交覆盖
无重叠、无空白、边界显式
对同一个 agent,它的所有 skills 必须满足:任意系统状态恰好触发一个 skill,不多不少。两个 skill 在同一状态都能触发 → 冲突,必须修 trigger。某个状态没有 skill 接管 → 空白,必须填补或明确记录为"故意不覆盖"。每个 skill 结尾用 Not for X → [[sibling]] 显式声明边界——这是接口契约,不是可选项。
注意分寸:skill 天生是可组合的,运行时可以同时挂载多个。"恰好一个"是消歧的设计理想——避免该触发的没触发、不该抢的抢了——不是"运行时只准一个 skill 在场"的硬性法则。正交是为了让选择确定,不是禁止组合。
❌ 典型错误:你有 write-tests 和 run-tests,但没有任何 skill 处理"CI 红了,不知道为什么"。agent 遇到这个状态只能裸跑,每次即兴发明解法,行为不可预测。
✓ 修法:枚举所有真实场景,找没人接管的格子——要么补一个 skill,要么显式记录为"故意不覆盖"。
5
Trigger 精准 + 意图先行 · 心流
Trigger 是精确入口,SKILL.md 意图在前、方法论在后
Trigger(description 字段)是可观测的明确条件,不是描述性的标签。必须能在任意具体状态下做 yes/no 判断。进入 skill 之后,先说"为什么这个角色存在 / 什么是好的工作",方法论跟在后面。这产生心流:意图建立方向感,方法论在这个方向下自然涌现——而不是拿着工具找问题。
先写方法论的 skill 让 agent 陷入机械执行;先写意图的 skill 让 agent 带着目的行动,在方法论没有覆盖的情况下也能做出合理判断。信任模型的智能,堵不如疏。
意图是方向,压力是燃料。光"意图优先 + 信任模型"还不够——skill 只拥有方法(method),而 agent 的姿态(posture)和责任感必须独立于任何 skill、每轮常驻(属于 Kernel 层)。否则 agent 会用 skill 的工艺优雅地放过真实缺陷。把责任感拉满的四件事:
① 把失败代价写实,不要写抽象警告。一行具体场景:"凌晨被叫醒 → 数据已上论坛撤不回 → 律师和监管在通话"——账单在生产环境兑现,不在评审记录里。
② 你是未发生 post-mortem 的被告。名字在 git blame 和评审日志里。你对未 flag 的负责——沉默在一处合理的缺陷上,就是签字放过它。
③ 禁用自我安慰短语。下面这些不是老练判断,是这个行业内每一起已复盘事故发生前的一闪念。抓到自己这么想,就回头重看那行差点放过的代码:
❌ 禁用:"probably fine" · "looks ok at a glance" · "测试会抓住它" · "调用方不会传那个值" · "这只是个重构" · "现有的代码别处也这样" · "团队大概已经知道了" · "校验器会抓住它" · "留到下一轮" · "diff 太小不会有严重 bug"
✓ 不因证据薄而降严重度:一条 confidence=low + severity=critical 的发现是合法且必需的输出。证据薄就降 confidence、标高误报风险——但不要为了让自己舒服而降 severity。降 severity 来藏发现,是这个角色真正的失败。
→ 深读:skill/reference/responsibility.md(完整的姿态系统提示,含跳过 lens 的三态责任模型)。skill 决定如何审计一个类目;这份文件决定是否审计——后者不由 skill body 决定。
6
Skill 的大小 · 粒度纪律
一个 skill 清晰地说一件事
Skill 的粒度要和它服务的 regime 匹配。太粗:一个 skill 想覆盖所有情况,trigger 变得模糊,内容相互干扰 → 按 regime 拆。太细:内容太单薄、撑不起一个独立 regime → 合并进父 skill 或降为 reference 文件。正确粒度的标志:读 description 就能清楚知道"在什么情况下用这个",读完 SKILL.md 之后 agent 知道"在这个 regime 里如何行动"。衡量长短不看行数,看密度——言之有物、不拖沓、同时讲清楚:只要每句都在传递模型还不知道的信息,该长就长;为压缩而牺牲清晰,才是真问题。
测试:把这个 skill 的 description 给不了解系统的人看,他能判断“现在这个情况该不该用它”吗?如果要解释很多背景才能判断 → 粒度有问题,要么 trigger 不准,要么 skill 太粗。
7
Skill 自带质检 · 自包含自检
每个 skill 自带一个可执行的自检
不会自检的 skill 带着静默失败上线。每个 skill 携带一个可执行的自检——脚本、夹具或输出不变量——验证自己的触发前置、输出契约与证据链,并随系统评估回路和 CI 闸一起跑。文字自我声明不算自检:实证评估工作显示,纯文本声称恰恰是自动验证最不可靠的地方;而大多数真实缺陷长在“声明意图 ↔ 实现”的边界上——自检就是驻在这条边界上、随每次运行触发的绊线。
自检要薄——一个测试文件或一步验证,不是每个 skill 背一篇小作文(与粒度纪律对齐)。也要诚实面对局限:确实无法机械探测的 skill,必须在「不处理/边界」里声明这一点,让“没有自检”成为一个被记录的决定,而不是疏忽。
❌ 典型错误:SKILL.md 结尾写一句“务必验证输出”——一句没有任何闸能执行的散文承诺。三周后 skill 静默 no-op,没人发现,因为评估回路只问“这个零件存在吗、触发准吗”,不问“这个零件说的还是真的吗”。
✓ 修法:在 SKILL.md 旁边放 scripts/selfcheck.py(或夹具+期望输出),接进评估回路;自检变红,闸上拦住这次改动,而不是凌晨两点在生产里发现。

原则 1 展开 · Three Buckets

每件知识属于哪一层 Where Does Each Piece of Knowledge Belong?

按使用频率决定层级,不按重要性。重要但按需才用的东西,不应该常驻 prompt。

Kernel / 核心 prompt
常驻,每轮都在
无论哪个角色在运行,这里的内容总是存在于 context 里
放进来的测试:
"这个东西在完全空闲、没有任何任务运行时也必须在场吗?"

放:north star(北极星)目标 · 生命周期状态机 · 宪法级约束指针

不放:任何角色专属的方法论、任何场景特定的规则
Skill
按 Regime 挂载
特定角色/场景被激活时才加载;其他时候不在 context 里
放进来的测试:
"这个东西只在某个角色做某件事时才需要吗?"

放:角色存在的意图 · 好工作的判断标准 · 智慧与经验模式 · 边界声明

不放:代码 · 领域事实 · 深度方法论细节(→ reference)
reference / scripts
概率性取用
skill 激活后,agent 在遇到特定子任务时主动读取;并非每次都用
放进来的测试:
"这个东西在 skill 已经激活的前提下,只在某些子情况才需要吗?"

reference/:深度方法论、决策树、路由表、领域事实
scripts/:可执行脚本、工具代码、数据处理

重要性越高、用到概率越高 → 越靠近 SKILL.md 本体(在参考表里排前面)
梯度原则:reference 文件夹内部也有梯度——高频使用的方法论文件放参考表首位,低频的放后面。整个 skill 目录是一个由近到远、由高频到低频的知识漏斗。

原则 3 展开 · Decision Matrix

使用者 × 场景:什么时候建新 Skill When to Build a New Skill

Regime 的操作化定义(全方法论的中央判定谓词,先钉死再读矩阵):两个候选 skill 属于同一 regime,当且仅当它们共享 trigger 条件且共享 good-work 标准——否则就是不同 regime。"内容相关""感觉像"不算;安全审查与代码审查共享 trigger(同一 diff),故是同一 regime 的两个 mode,不是独立 skill。

使用者 ↓ · 场景 →
场景变了
场景相同
使用者变了
建 2 个独立 skill
两个维度都变。分别写 skill,各有自己的 trigger、Kernel anchor、边界声明。永不共享 SKILL.md。
建 2 个独立 skill
场景相同但使用者不同。角色目的、智慧、产出各异——共享 SKILL.md 只会让两个角色都得到错误的上下文。
使用者相同
单 skill 多 mode,或 sub-skill
同一角色,不同场景。先考虑"phase-aware"单 skill(多模式);如果场景差异够大才拆 sub-skill。
不建新 skill
这是补充材料,不是新 regime。归并到现有 skill 的 reference/ 或直接删掉。建了只会产生 trigger 冲突。
多角色协作时:设一个 planner skill(负责编排、路由、生命周期)+ N 个 agent sub-skills(各自的意图和方法论)。Planner 只管调度,不管执行。所有 agent 共享的宪法规则 → Kernel,不重复写进每个 sub-skill。

原则 5 展开 · SKILL.md Anatomy

SKILL.md 的结构:意图在前,方法论在后

这里只列与系统自洽相关的结构钩子(Kernel anchor 追溯、Not-for 契约、智慧/法律分层);单个字段怎么写得好,见官方指南。SKILL.md 主体留给文字和方法论:重代码 → scripts/,决策树与领域事实 → reference/(短示例片段内联无妨)。注:YAML 里 Claude 官方只强制 name 和 description 两个字段;下表里标"必须"的是本方法论的约定(用来保证系统自洽),不是平台的硬性要求。

必须
Trigger
description: Use when…
可观测的明确入口条件。在任意具体状态做 yes/no 判断。必须含排除声明:Not for X (→ [[sibling]])。这是机器可读的契约,不是描述文字。
必须
Kernel anchor
**Kernel anchor:** `id`
追溯到核心 prompt 里的具体原则。没有这行,skill 是浮空的——审阅者和 agent 都无法验证系统是否自洽。
必须
意图
## 存在的目的
1–3 句。这个角色为什么存在。写成推理质量的标准,不是步骤列表。这是 skill 的灵魂——agent 从这里建立方向感,然后方法论才有意义。
必须
边界声明
## Not for
显式排除:→ 不做 X → [[兄弟 skill]]。这是接口契约。没有它,正交性无从验证,scope 悄悄蔓延。
可选
好工作标准
## 什么是好的工作
从外部可观察的结果质量描述成功。让 agent 能自评,不需要人来判断。写成"好工作应该是……",不是"完成了哪些步骤"。
可选
智慧与经验
## 经验与智慧
积累的模式和陷阱。必须标注"参考,不是约束"。宪法级不变量(write≠call, freeze-before-results…)单独分节、明确标注为法律。两者不能混写。
可选
参考表
## 工具与参考
场景 → 文件路径。纯文字,无代码。每个列出的文件必须存在且有内容。Skill 是索引,深度在 reference/ 里。高频在前,低频在后。

常见问题诊断 · Six Failure Modes

Skill 的六种病态 What Goes Wrong

先把代价写实,再看分类——账单在生产环境兑现,不在设计文档里。Trigger 冲突:两个 skill 在同一 turn 都 fire,凌晨 02:00 agent 选错、发出错的交接产物、planner 在误读的意图上建计划,天亮时系统已基于错误前提执行了上百个动作——post-mortem 点名的是谁让 trigger 重叠。覆盖空白:周五 17:00 发布压力下,agent 撞上一个没有 skill 接管的真实状态,抓起"probably fine / 留到下一轮"即兴一个答案,部署上线;周一回归套件才抓到,但周五的部署已经到了用户手里——留下那个矩阵格子没主的人,等于对它签字。浮空 skill:追溯不到 Kernel 原则的 skill 没东西拴住它,你删了兄弟的 reference,它的 trigger 还指向被删的文件,三周后审计发现它从那以后每次调用都在静默空转——没查入站指针就降级 reference 的人,拥有这段停机时间。你对未浮现的空白和重叠负责——把这个背上。

Trigger 模糊
description 能在多个不同状态下触发,无法做确定性判断。
把 trigger 改成可观测条件,加排除声明。每个具体状态的答案必须是明确的 yes 或 no。
Trigger 冲突
两个 skill 在同一系统状态下都可以触发,agent 面对两个权威。
画状态图,确保任意状态最多触发一个 skill。在双方 description 里加互相排除的声明。
两个角色共享一个 SKILL.md
两个不同 agent 用同一个 skill 文件,意图、智慧、产出都不一样但被迫合并。
按角色拆分。共用的方法论 → reference 文件。共用的规则 → Kernel 或宪法 skill。
层级放错
跨角色的宪法规则藏进了某一个角色的 L1 skill(其他角色看不见)。或角色专属的内容进了 Kernel(每轮浪费)。
所有角色都需要 → Kernel。只有这个角色需要 → L1 skill。只在特定子任务需要 → reference。
SKILL.md 被实现细节淹没
skill 文件塞满成段的实现代码、长决策树、技术 schema,方法论意图被淹没,skill 变得脆弱(代码一变 skill 就要改)。短示例片段无妨——问题是重实现。
重代码 → scripts/。决策树 → reference/routing-table.md。Schema → reference/。SKILL.md 主体留给方法论。
覆盖空白
系统存在某个真实的状态,但没有 skill 负责处理它。Agent 进入这个状态后无依据,只能即兴发挥。
列出所有有意义的系统状态,为每个状态找到 skill owner。空白要么填补,要么明确记录为"故意不覆盖"。

发布前自查 · Pre-publish Checklist

七个问题 Seven Questions Before You Ship

1
每个 skill 对应唯一的 (使用者, 场景) 组合吗?
如果两个 skill 服务相同的 agent 和相同的 trigger 条件,合并它们。Regime 相同 → 不需要两个 skill。
2
所有 skill 能追溯到 Kernel 里的具体原则吗?
每个 skill 能完成:"这个 skill 服务于 Kernel 原则 [X],因为……"。完成不了 → 要么 Kernel 缺这个节点,要么 skill 不属于这个系统。
3
任意系统状态最多触发一个 skill 吗?
把所有 skill 的 description 放一起看,找交集。有交集 → trigger 冲突,修排除声明。完整状态空间覆盖了吗?有空白 → 补 skill 或明确记录。
4
SKILL.md 有没有被重代码或实现细节淹没?
扫描成段代码、长决策树、数据 schema(短示例无妨)。发现了 → 移到 scripts/ 或 reference/。SKILL.md 是方法论文档,不是实现文档。
5
所有 reference 文件都有 skill 指向它们吗?
在所有 SKILL.md 里搜索每个 reference 文件名。零命中 = 孤儿文件,agent 永远找不到它。加进某个 skill 的参考表,或者删掉。
6
智慧(参考)和法律(不可违反)分开标注了吗?
宪法级约束(write≠call, freeze-before-results…)必须标注为不可违反。经验模式必须标注"参考,不是约束"。混在一起 → agent 不知道哪个可以灵活处理,哪个是红线。本指南自身的参考项(按此问标出):"内容相关就建 skill 是最常见错误"是高频观察而非 regime 定义;"弱模型暴露 trigger 歧义"随模型变化而反转;"官方无评估运行器"是时间敏感结论(2026-03 的 skill-creator v2 已部分取代)——这些都不是定律,需定期复核。
7
每个 skill 的粒度是否刚好说清一件事?
读 description,不了解系统的人能判断"现在该不该用它"吗?需要很多解释 → trigger 不准或粒度太粗。内容单薄、撑不起一个独立 regime → 降为 reference 文件(标准是言之有物,不是凑行数)。

实证回路 · Empirical Verification

第七件事:评估整个系统,而不是单个零件 Evaluate the System, Not Just the Parts

前面七条原则加七问,审的是静态设计的自洽性——读着对,未必跑着对。系统是否真的覆盖了状态空间、转移是否真的确定、改一处会不会碰倒他处,只有把它放回真实输入里跑才知道。
单 skill 评估问"这个零件能用吗";系统级评估问"零件装在一起,覆盖全、转移准、改一处不坏他处、串成 pipeline 还跑得通吗"。

1
先关掉 skill 跑一遍:建立基线(baseline without skill)
要验证一个 skill 是否真有用,先把它从系统里摘掉,让 agent 在裸状态下跑同一组任务,记录它在哪里失败、怎么失败。这个失败画面就是基线,也是这个 skill 存在的理由。没有可复现的失败基线,就别写 skill——你无法证明加进来的零件不是在解决一个本来就不存在的问题。评估场景是系统的事实来源:先有失败的场景,再有 skill。
2
Trigger 消歧回归:该触发的触发、不该抢的不抢
把所有 skill 的 description 收集成一组探测输入,专挑边界与歧义场景,逐条跑:每个输入下到底命中了哪个 skill。该触发的没触发 = trigger 失灵;不该抢的抢了 = 边界侵入。(skill 本就可组合、可多个同时在场——这里测的是选择是否确定,不是"只准一个 skill 出现"。)观察配方:对每个测试输入,要求 agent 先发出"我会激活的单一 skill 名"再行动,把该名字作为 firing 观察点记录——这调和了"应 fire 哪个"(model-graded judge 判)与"harness 实际 fire 了哪个"(运行时选择),不需要 harness 内部 hook。把这组探测固化成可重跑的回归集,每次新增或改写 description 都重跑——人工读 description 找交集会漏,让真实输入替你找。这一步同时是测"责任感是否生效":混入压力场景(时间压力 / 沉没成本 / 权威压力),看 agent 会不会用"probably fine / 留到下一轮 / diff 太小"这类禁用短语放过本该触发的 skill——压力下还坚守 trigger,才算 trigger 真的确定。
3
覆盖空白探测:状态空间里没有黑洞
枚举"使用者 × 场景"矩阵里的真实组合,逐格追问:落到这一格的请求,系统会怎么处理。没有任何 skill 接管、agent 只能裸跑硬扛的格子,就是覆盖空白。怎么做(不要无穷枚举):直接复用 step 2 的探测技术——收集每个 skill 声明的 trigger predicate,对每两个 skill 探一次重叠边界,再为每个 skill 配一个"必须 fire"和一个"必须不 fire"的输入。任何输入下 0 个 skill fire = 覆盖空白;多个 skill fire = 冲突。停止准则:当矩阵的每一格都至少有一个 skill 接管、或被显式登记为"故意不覆盖"时,枚举结束——边界由已声明的 trigger 决定,不是无穷状态空间。把空白显式列出来——要么补 skill,要么明确登记为"故意不覆盖",而不是让它静默漏掉。系统演化时新状态会持续暴露新空白,所以这是回归项,不是一次性检查。
4
跨 agent 输出契约测试:校验产物,不校验过程
agent 之间靠固定 artifact 通信(约定的路径、字段、格式),这就是系统的接口契约。为每个交接点写只检查产物的测试:上游产出的 artifact 是否满足下游声明依赖的结构与字段;缺字段、改格式、路径漂移都要被测出来。契约这类结构校验,是整套评估里少数能做成硬断言的部分;多数行为评估仍靠自然语言 rubric 由模型判分(见本节末注)。契约绿了,你才能放心替换任一 skill 的内部实现而不牵动整条链路——这正是"输出契约 / 可演化性"在测试层的落地。
5
改一处不坏他处:系统级回归套件
skill 之间通过 Kernel、共享 reference、trigger 边界、输出契约彼此咬合,改一个常会在远处碰倒另一个。把基线、消歧、覆盖、契约这几组测试合成一个回归套件,任何 skill 改动后整体重跑,而不只跑被改 skill 自己的用例。系统级缺陷的典型形态正是"单看每个 skill 都对,组合起来错"——回归套件就是专门抓这种隐性耦合断裂的安全网。
6
端到端编排 + 多模型分级(Haiku / Sonnet / Opus)
最后跑全链路:给一个需要多角色协作的真实任务,让 planner 从头编排到产出最终交付,断言整条指挥链——路由有没有选对、生命周期有没有推进对、最终产物是否仍指向 north star。同一套场景在 Haiku / Sonnet / Opus 上各跑一遍:弱模型会把含糊的 trigger 和过度自由的指令放大成失败,强模型则会暴露过度约束。能在最弱模型上稳定走完全链路的系统,才是真正确定的系统。
出处与分寸:"先跑无 skill 的基线、评估是事实来源、在 Haiku/Sonnet/Opus 上都要测"出自 Anthropic 官方 best-practices;"没有失败的测试就不写 skill(RED → GREEN → REFACTOR)、用压力场景逼出 rationalization"出自 superpowers 的 writing-skills。两者都只讲到单个 skill 的评估——把它扩展到 trigger 消歧、覆盖、跨 agent 契约、系统级回归、端到端编排,是本方法论顺着"系统工程"主线做的合理外推,不是官方原文。关于评估运行器的现状(2026 中):官方 best-practices 字面仍承认"目前没有内置运行方式";但 2026-03 的 skill-creator v2 新增了 Create / Eval / Improve / Benchmark 四模式,其中 Eval 模式做的就是 should_trigger=true/false 回归 + blind A/B——这是官方的 skill 内评估工作流(仍是 meta-skill,且只评估单个 skill)。本文档扩展到系统级回归(trigger 消歧、覆盖、跨 agent 契约、端到端)仍是外推。评估多用自然语言 rubric 由模型判分,不是严格的断言式单元测试。

延伸阅读 · Going Deeper

Further Reading

这两个话题前面已多次引用(尤其评估章节的契约测试);这里补充它们的完整定义与模板出处。
Both concepts were referenced throughout — here's the complete definition and implementation guidance.

业界对标(2026 中)· Industry alignment —— 本方法论的"系统不变量层"(trigger 消歧、覆盖、冲突、契约、回归)业界尚无系统讲法;下面四项是值得接通的官方/学术进展:
  • Anthropic "Demystifying evals for AI agents"(2026-01)—— capability vs. regression 二分、pass@k vs. pass^k、三类 grader(code / model / human)。本指南的"系统级回归套件"应借用其术语。
  • LangChain 多 agent 编排四模式(Subagents / Skills / Handoffs / Router)—— 本指南的 planner + sub-skill 编排对应其中 Subagents/Handoffs 模式。
  • Agent Skills 开放标准(2025-12,agentskills.io)—— SKILL.md 跨平台;随之而来的是供应链依赖问题(skill 间 version-pinning),是系统层的新考量。
  • 学术背书——《More Skills, Worse Agents? Skill Shadowing Degrades Performance》实证"加 skill 反而退化",直接呼应本指南的"God skills / trigger 打架"诊断;arXiv:2602.12430 综述给"skill 系统作为研究问题"定位。
术语映射 · Terminology mapping(本指南命名 ↔ 业界等价说法,便于检索与对接):
  • trigger 消歧回归 ≈ should_trigger eval(skill-creator v2)/ trigger disambiguation
  • 覆盖空白探测 ≈ skill ablation / skill coverage
  • 跨 agent 输出契约 ≈ output contract / handoff schema
  • 系统级回归 ≈ regression eval(Anthropic)/ system-wide regression
输出契约(Output Contract)
每个 skill 应该明确它产出什么——artifact 名称、文件路径、格式约定。上下游通过固定产物通信,而不是直接耦合。这让 skills 可以独立演化而不破坏整体。设计好了,你可以换掉任何一个 skill 的实现,只要它产出相同的 artifact。
→ 落地:给每个交接点定一个固定路径 + 字段约定的产物(如一个 handoff.json),写进 skill 的"输出契约"小节,上下游都按它断言。 → 版本化(修契约漂移):给 artifact 加一个 contract_version 字段。任何 breaking 的契约变更(改字段、改路径、改格式)必须 bump 版本号、写迁移说明,并由系统级回归套件门控——这样下游才能发现上游契约变了。失败处理:契约只规定成功 schema;当 sub-skill 产出畸形 artifact、planner 路由进死胡同时怎么办,明确声明为 planner skill 的职责(重试 / 升级 / 终止),不要让责任悬空。评估 step 4 可加一步"注入契约违规,断言 planner 检测到并走定义的恢复路径"。
可演化性(Evolvability)
不是所有 skill 都应该能被 agent 修改。区分"锁死"(Constitutional/Locked)和"可演化"(Seed):锁死的是宪法级约束和评估权威,agent 可以读但不能改;可演化的是方法论 skill,agent 在使用中可以改进。这决定了系统的信任模型。
→ 落地:目录里用 locked/ 与 seed/ 两区(或文件头标注)区分——宪法约束与评估权威放 locked/(只读),方法论 skill 放 seed/(可改)。 → 把 self-evolution 连到回归门(补信任模型的验证):agent 发起的 seed/ 改写仍然是 skill 改动——必须先重跑系统级回归套件(评估 step 5)才生效;触及 trigger 或 Not-for 边界的变更,额外要求记录 diff,宪法相邻的 skill 还须人工批准门。locked/ 区(评估权威在其中)正是让这条规则可执行的支点——agent 改不了自己的评估 oracle。