DAY 36 / PHASE 4 · SKILLS GOVERNANCE

大型组织的 Skills Library 治理

准入契约 · 去重 · 安全门 · 度量淘汰

2026-06-15 · BigCat

一个共享 skill 库最大的成本不是存储,是每多一个重叠 skill,agent 选错的概率就上升一点。

// WHY THIS MATTERS

当 agent 从「一个人玩」走到「全组织用」,每个团队都在往一个共享 library 里塞 skill(可复用的能力模块:一段封装好的 prompt + 工具 + 流程)。半年后你会得到一个典型的失败态:300 个 skill,没人知道哪个能用、哪个是僵尸;3 个功能重叠的「发邮件」让 agent 不知道选哪个;某个没人审过的 skill 偷偷能读生产库。这不是「文档太多」,是一个平台治理问题叠加一个AI 特有问题——Day 4 讲过「工具太多 → agent 选择退化」,组织级 skill 库把这个退化放大成系统性成本。Skill 库本质是一个内部的能力包注册中心(像 npm + 服务目录),但它比代码库多两个麻烦:里面的东西可执行、能触达数据(是攻击面),而且消费者是 agent 不是人(选择由 description 驱动,不是由人读文档)。本期四件工程:准入契约、去重、质量与安全门、度量驱动淘汰。核心心法:治理的北极星不是「库里有多少 skill」,是「agent 在任一任务上面对的候选集有多小而准」。

// 01

准入与目录:skill 是有契约的产品,不是谁都能往里扔

论断:没有准入门,人人乱塞,半年后是一堆无 owner 的孤儿 skill。每个 skill 进库要有契约:写给 agent 的 description、owner、schema、安全分级、关联 eval。

背景与原理

把 skill 当一个有契约的内部产品,而不是一段随手分享的脚本。进库要过 intake review,核心是一份标准化 manifest:清晰的 description——注意它是写给 agent 看、用来做选择的,不是给人读的文档(回到 Day 4:参数描述 > 名字,描述质量直接决定 agent 选不选对它);明确的 owner(无主即孤儿);输入 / 输出 schema;安全分级;以及一个关联的 eval。整个库有单一事实源(SOT)的目录:每个 skill 一条记录,带状态(experimental / active / deprecated)。这是 Day 35 prompt registry、Day 33 provenance 的思想上移到「能力」这一层。

实战示例

# skill manifest:进库的契约(进 git,可 review / diff / 回滚)
id: send-invoice-email
description: "给客户发带 PDF 发票附件的邮件。用于财务催收场景。"  # 写给 agent 选择
owner: finance-platform
inputs:  { to: email, invoice_id: str }
outputs: { message_id: str }
risk: high                     # 触达外发 + 客户数据
permissions: [email.send, invoice.read]   # 最小权限,见 Day 31
eval_set: invoice-email-golden-30
status: active                 # experimental / active / deprecated
失败模式:(1)无准入,人人往共享库塞——半年后没人敢动、没人敢删。(2)description 写给人看而非给 agent 选——agent 选错 skill 的根源往往在这。(3)无 owner——一旦出问题 / 需升级,找不到人,沦为僵尸。
进阶资源 · Anthropic Agent Skills, anthropic.com/news/agent-skills · 本站 Day 4 Tool Use(description > 名字)· Day 35 Prompt 即代码(registry 同源)
// 02

去重:skill sprawl 会毒化 agent 的工具选择

论断:库越大不是越好,反而越糟。每多一个重叠 skill,agent 面对的候选集变长一点、选错概率高一点。北极星是候选集小而准,不是 skill 总数多。

背景与原理

这是 skill 库最反直觉、也最 AI 特有的成本。Day 4 讲过「工具过多 → 选择退化」:3 个都叫「发邮件」的 skill,agent 不知道用哪个,可能选了不带附件的那个把任务搞砸。所以治理的核心动作不是「鼓励多贡献」,是主动控制重叠:新 skill 进库时用 embedding 算它和现有 skill 的语义相似度,超阈值就告警「疑似重复,请合并或说明差异」;定期扫描全库的能力重叠,合并冗余。更关键的是暴露给 agent 的不是全库——而是按当前任务上下文检索出的一个小候选集(skill 的 RAG / 分层 / 命名空间)。衡量库健康的指标是「平均候选集大小」,不是「skill 数量」。

┌──────── 全库 300 skills ────────┐ 任务 ─▶│ 语义检索 / 命名空间 / 分类过滤 │─▶ 候选集 5–8 个 └──────────────────────────────────┘ (小而准,agent 才选得对) 新 skill 进库 ──▶ embedding 相似度 vs 现有 > 0.9 ? ──▶ 告警「疑似重复」→ 合并 / 说明差异 健康指标 = 平均候选集大小 ↓,不是 skill 总数 ↑
失败模式:(1)以「库里 skill 多」为荣——KPI 设成贡献数量,直接催生 sprawl。(2)把全库一股脑塞给 agent 的 context——候选集爆炸,选择质量崩塌(Day 4)。(3)重叠 skill 从不合并——三个发邮件长期共存,agent 持续抽卡。
进阶资源 · Anthropic Building Effective Agents(工具集设计), anthropic.com/engineering/building-effective-agents · 本站 Day 4 Tool Use(过多 tool 退化)
// 03

质量与安全门:skill 能跑代码、能读数据,库就是攻击面

论断:skill 不是文档,是可执行能力——能调 API、跑代码、读数据。一个坏 skill = 全组织用它的 agent 一起遭殃。这是供应链问题。

背景与原理

共享 skill 库的风险被严重低估:它是个能力供应链,一个 skill 被攻陷 / 写错 / 权限过宽,所有引用它的 agent 都被波及(呼应 Day 24 注入、Day 31 lethal trifecta)。三道门。其一,质量门:进库 / 升级必须过 eval(在金标任务上证明它真能干活)+ 版本化(改动不能悄悄影响所有调用者,见 Day 35)。其二,安全门:manifest 声明所需权限并强制最小权限(Day 31),扫描它触达哪些敏感数据、外发面、注入面;高危 skill(能转账 / 删数据 / 外发客户信息)打 risk: high。其三,权限与可见性:高危 skill 默认不对全员可见,被 agent 调用前需额外审批(接 Day 34 HITL)。再加 provenance:谁发布、哪版,出事能定位 + 召回(Day 33)。

实战示例

def promotion_gate(skill):                 # experimental → active 的晋级门
    assert run_eval(skill) >= skill.baseline      # 质量:金标任务不退步
    assert declared(skill.permissions)            # 安全:权限必须显式声明
    assert minimal(skill.permissions)             # 最小权限,拒绝「万能 skill」
    if skill.risk == "high":
        skill.visibility = "restricted"          # 高危默认限可见 + 调用需审批
    record_provenance(skill.author, skill.version)   # 出事可召回
失败模式:(1)skill 无安全分级随便发——一个过宽权限的 skill 成全组织的后门。(2)无版本,改了悄悄影响所有调用者——一次「优化」让几十个 agent 集体行为漂移。(3)高危 skill 默认全员可见——任何 agent 一句话就能触发转账 / 删库。
进阶资源 · Anthropic Model Context Protocol(工具/能力的协议层), modelcontextprotocol.io · 本站 Day 31 Personal AI Safety(最小权限 / trifecta)· Day 24 Prompt Injection
// 04

生命周期与可发现性:用度量淘汰僵尸,让对的 skill 被找到

论断:库会无限膨胀,必须有淘汰机制。用使用度量驱动废弃,靠数据而非人记得清理——让库只能变健康(Day 33 棘轮思想的延伸)。

背景与原理

没有淘汰,库只增不减,僵尸越堆越多,sprawl 反噬选择质量。度量驱动淘汰:每个 skill 记调用量、成功率、最近使用时间;长期零调用 / 成功率持续低 → 自动标 deprecated → 归档。但废弃要优雅:给 deprecation 周期 + 迁移指引,别硬删(可能还有 agent 在用,硬删=线上故障)。另一面是可发现性——好 skill 没被发现,团队就重复造轮子,又喂回 §2 的 sprawl。所以要有命名规范、标签、语义检索、以及「这个任务该用哪个 skill」的推荐。最后建一个健康度仪表盘:活跃 / 僵尸比、重复率、平均候选集大小、高危 skill 数——让库的健康可被一眼看见、可被治理。

实战示例

def lifecycle_sweep(skill):                # 定期跑,度量驱动淘汰
    if skill.calls_90d == 0 or skill.success_rate < 0.6:
        skill.status = "deprecated"           # 标记,不硬删
        notify(skill.owner, "migrate_within: 30d")   # 给迁移周期

# 可发现性:别让团队因找不到而重复造
suggest = search_skills(task_ctx)            # 语义检索 + 「该用哪个」推荐
dashboard = { "active/zombie": "180/120", "dup_rate": 0.18, "avg_candidates": 6 }
失败模式:(1)只增不减——僵尸堆积,sprawl 反噬,回到 §2 的选择退化。(2)硬删除在用的 skill——破坏线上 agent,引发故障。(3)没有发现机制——团队找不到现成的就自己再造一个,sprawl 的根因之一。
进阶资源 · Spotify Backstage(软件目录 / 所有权治理的范式), backstage.io · 本站 Day 33 Legacy 治理(ratchet / 度量驱动)

// 综合实战 · 给组织的 skill 库装一套治理底盘

把四点串成一个落地清单:哪怕你只是个带几个 agent 的小团队,这套也能防止半年后变成「300 个没人敢动的 skill」。

  1. Manifest 契约:每个 skill 标准化 manifest——写给 agent 的 description / owner / schema / 权限 / risk / eval。
  2. 准入门:新 skill 过 intake——契约完整 + 安全扫描 + 去重检查,三缺一不进库。
  3. 去重哨兵:embedding 扫语义重叠,超阈值告警合并;盯「平均候选集大小」而非 skill 总数。
  4. 质量 / 安全门:晋级过 eval + 强制最小权限 + 版本化 + provenance。
  5. 可见性分级:高危 skill 限可见,被调用前接 HITL 审批(Day 34)。
  6. 度量淘汰:零调用 / 低成功率 → deprecated → 归档,走迁移周期,别硬删。
  7. 健康仪表盘:活跃/僵尸比、重复率、平均候选集、高危数——让库健康可见。

做完这套,你评估任何「我们建了个 agent skill 平台」时会本能地先问:新 skill 怎么准入、重叠怎么防、高危 skill 谁能调、僵尸怎么淘汰——而不是被「我们有 300 个 skill」这种伪指标唬住。skill 库的价值不在大,在于 agent 每次都能从一个小而准的候选集里选对那一个。

// ENGLISH GLOSSARY

Skill Library / Capability Catalog
组织共享的可复用 agent 能力库,本质是内部能力包注册中心。
Intake Review
skill 进库的准入评审,校验契约完整、安全、无重复。
Skill Manifest
skill 的契约:description(写给 agent)、owner、schema、权限、risk、eval。
Skill Sprawl
skill 无序膨胀,重叠与僵尸堆积,毒化 agent 的工具选择。
Semantic Dedup
用 embedding 相似度检测能力重叠,提示合并。
Candidate Set
某任务下暴露给 agent 的 skill 子集——越小越准,选择质量越高。
Promotion Gate
experimental → active 的晋级门,含 eval + 权限 + 安全校验。
Least-privilege Manifest
skill 显式声明并被强制限制在最小权限内。
Usage-driven Deprecation
按调用量 / 成功率自动标记废弃、归档僵尸 skill。
Discoverability
让对的 skill 被找到(命名 / 标签 / 语义检索 / 推荐),防重复造轮子。

// 深入思考

去重要合并重叠 skill,但「3 个发邮件」可能各有细微差异(一个带附件、一个纯文本、一个 HTML)。盲目合并会丢能力。怎么分「冗余」vs「正当变体」?
判据不是「看起来像不像」,是「agent 能不能从 description 可靠地区分该用哪个」。如果三个 skill 的差异能在 description 里讲清、且对应真实不同的任务意图(带附件 vs 纯文本是真实场景差异)——那是正当变体,但应合并成一个带参数的 skillsend_email(format=...)),而不是三个并列项,这样 agent 选「发邮件」这一个、再填参数,候选集不膨胀。如果差异只是实现细节、agent 根本分不清(两个都叫「发邮件」描述雷同)——那是冗余,留一个。原则:用户可感知的能力差异 → 参数;实现差异 → 合并。永远别让 agent 在「语义重叠的并列项」之间抽卡。
准入门会不会扼杀 bottom-up 创新?平台治理的经典张力:管太严没人贡献,管太松就 sprawl。甜点在哪?
分层准入化解,而不是一刀切严或松。设 experimental 区:贡献门槛极低(有 manifest 就能进),但默认不进 agent 的候选集、不对全员可见、不保证维护——让创新自由发生。只有当一个 experimental skill 攒够使用量 / 过了质量+安全门,才晋级 active 进入主候选集。这样底层创新不被卡,而「能被 agent 默认调用」这个特权是挣来的。甜点不是某个严格度数值,是把「贡献」和「晋升为默认能力」解耦:前者宽,后者严。Backstage 这类目录、npm 的 experimental tag 都是这个思路。
使用度量淘汰僵尸——但低频不等于无价值(一年用一次但关键的合规 skill)。纯频率淘汰会误杀,怎么办?
纯频率确实是坏指标,会砍掉「低频高价值」的长尾。修法是给淘汰加价值维度,不只看频率:(1)owner 可给 skill 打 critical: true 豁免自动淘汰(年度合规 skill 显式保留);(2)淘汰是提议而非自动执行——lifecycle_sweep 只标记 + 通知 owner,由人确认(同 Day 34:让回归提议、人决策);(3)区分「零调用」和「低调用」——真正零调用 90 天大概率是僵尸,一年一次的 skill 至少有调用记录、不会触发。核心是:度量驱动的是「引起注意」,不是「自动删除」。删除这种不可逆动作永远留人确认(Day 31 可逆性)。
候选集要小而准给 agent,但你事先不知道下一个任务需要哪个 skill。怎么动态选子集而不漏掉关键 skill?
这本质是个检索问题,和 RAG 同构(Day 10):用任务上下文对 skill 库做语义检索,取 top-k 进候选集。漏召回的风险用几招压:(1)分层——先按命名空间 / 分类粗筛(财务任务不必看到图像 skill),再在域内语义检索,既缩集又降漏召。(2)高价值 skill 加权 / 常驻——核心通用 skill 不靠检索碰运气,固定在候选集里。(3)留升级路径——agent 在小候选集里找不到合适的,可以触发一次「扩大检索」而非直接失败。和 RAG 一样,这是召回 vs 精度的权衡(Day 44 检索质量):候选集太大伤选择质量,太小伤覆盖,要用真实任务流量去调 k 和分层粒度。
这套 skill 治理,和 Day 4 tool use、Day 33/35 治理、Day 18 MCP 是什么关系?是不是就是「内部 package registry」?
它确实是「包注册中心 / 服务目录」范式(npm + Backstage)迁移到 agent 能力上,但有两处 AI 特有、不能照搬。和 Day 4:Day 4 教你设计单个工具(description、schema),本期治理的是一整个库的规模问题——单个工具再好,300 个堆一起也会退化。和 Day 18 MCP:MCP 是 skill / 工具的协议与运行载体,本期是它之上的治理层(谁能进、怎么选、何时淘汰)。和 Day 33/35:同是工件治理,ratchet / provenance / 风险分级 / eval 门全共用——区别只在对象(代码 / prompt / 能力)。两处不能照搬传统 registry 的地方:消费者是 agent(选择由 description + 候选集大小驱动,这是 npm 没有的失败模式),以及条目可执行且触达数据(是供应链攻击面,比普通依赖风险更高)。抓住这两点,你就不会把 skill 库当普通代码仓库管。

// 延伸阅读