Skill 系列(06):Skill 工程化与治理——路由准确率 38%、压缩节省 76%

从个人用到团队共享

Skill 数量少时不需要治理。3 个 Skill 靠记忆就够了。当企业里有 30-50 个 Skill 时,三个问题会同时出现:

  1. 发现问题:给定用户输入,调哪个 Skill?
  2. 成本问题:哪些 Skill 最贵,钱花在哪里?
  3. 质量漂移:某个 Skill 改了 Prompt,怎么保证没有退化?

本文用真实测量回答这三个问题。


Demo 设计

6 个 Skill 的注册表:

Skill ID 用途 领域
rnd-technical-writer 技术博客写作 content
competitor-analyzer 竞品分析 strategy
bug-root-cause Bug 诊断与根因分析 engineering
meeting-summarizer 会议纪要 + 行动项 productivity
sql-query-builder 自然语言转 SQL engineering
marketing-copywriter 营销文案 marketing

三个实验:

  1. Embedding 路由:用描述向量做 cosine 相似度,测 8 条查询的路由准确率
  2. Prompt 压缩:冗长版(418 tokens)vs 精简版(99 tokens),LLM-as-Judge 打分
  3. 成本报告:4 个 Skill 真实调用,计算 cost/call 和月度投影

运行结果

Part 1:Embedding 路由

sql 复制代码
  Query                                     Routed to              Score  OK?
  ───────────────────────────────────────── ─────────────────────  ─────  ───
  Write a deep-dive article about Kubern..  rnd-technical-writer   0.448  ✓
  我们的主要竞争对手 Notion 最近有什么动态             competitor-analyzer    0.311  ✓
  Traceback: AttributeError: 'NoneType'..  sql-query-builder      0.473  ✗
  帮我整理一下今天产品评审会的要点和后续任务                meeting-summarizer     0.463  ✓
  Get all orders placed in the last 7 d..  meeting-summarizer     0.586  ✗
  Write a product description for our ..   rnd-technical-writer   0.610  ✗
  分析一下 Python 3.12 的性能改进                   sql-query-builder      0.401  ✗
  List all users who haven't logged in ..  bug-root-cause         0.493  ✗

  Routing accuracy: 3/8 = 38%

Part 2:Prompt 压缩

yaml 复制代码
  Verbose: ~418 tokens  |  Compressed: ~99 tokens  |  Reduction: 76%

  Task: Python context managers...
    Verbose    → 4.00/5  |  Compressed → 4.00/5  |  Delta: +0.00
  Task: Redis pub/sub messaging...
    Verbose    → 4.00/5  |  Compressed → 3.00/5  |  Delta: -1.00

  Avg quality delta: -0.50

Part 3:成本报告

bash 复制代码
  Skill                     avg_in   avg_out   $/100calls  p50
  ──────────────────────── ──────── ──────── ──────────── ─────
  rnd-technical-writer       116t    1248t     $0.1365      48.8s
  competitor-analyzer         37t     586t     $0.0623      27.9s
  sql-query-builder           46t     589t     $0.0635      32.6s
  meeting-summarizer          53t      99t     $0.0152       5.1s

  Monthly projection (rnd×200 + analyzer×50 + meeting×300 + sql×500):
    rnd-technical-writer   200 calls  →  $0.27
    competitor-analyzer     50 calls  →  $0.03
    meeting-summarizer     300 calls  →  $0.05
    sql-query-builder      500 calls  →  $0.32
    ─────────────────────────────────────────
    Total                             →  $0.67/mo

三个发现

发现 1:Embedding 路由准确率 38%,Skill 描述太相似

5 条路由出错,其中最典型的两个:

错误 1"Get all orders placed in the last 7 days"meeting-summarizer(应该是 sql-query-builder)

meeting-summarizer 的描述是"Summarize meeting transcripts and extract action items",sql-query-builder 的描述是"Generate SQL queries from natural language descriptions"。这两段描述在 embedding 空间里碰巧离"订单查询"的距离相近------meeting-summarizer 的置信度 0.586,比 sql-query-builder 更高。

错误 2"Write a product description"rnd-technical-writer(应该是 marketing-copywriter)

两者都是"写作" Skill,描述里都有"write",embedding 相似度差距极小。

相同领域的 Skill 在描述层面语义接近,embedding 区分不了。修复方向:

  1. 描述里加负面示例 (已在设计范式篇提过):

    arduino 复制代码
    marketing-copywriter 描述:
    "Write marketing copy and product descriptions.
    NOT: technical tutorials or factual explainers."
  2. 分层路由:先按 domain 粗分(content/strategy/engineering),再在 domain 内精选

  3. LLM 路由器:embedding 过滤候选,LLM 在候选里精选,多付一次 LLM 调用换准确率

发现 2:Prompt 压缩 76%,但 Redis 文章质量掉了 1 分

Python context managers 任务:4.0 → 4.0,压缩没有影响。

Redis pub/sub 任务:4.0 → 3.0,质量下降 1 分。

两个任务用完全相同的两个版本 Prompt,为什么结果不同?Redis pub/sub 的主题相对小众,复杂度更高。冗长版 Prompt 里有大量关于深度、实用性的引导("explain not just HOW but also WHY"),精简版只保留了结构要求,没有这些质量引导。

对于复杂主题,冗长版里的描述性指导("不只讲 HOW,还要讲 WHY")比格式要求更重要。精简版删掉了这些,而恰恰是这类引导让 Redis 文章有深度。压缩前用评测集 A/B 测试:

python 复制代码
# 压缩前:A/B 测试,用评测集对比质量
# 只有当 quality_delta > -0.1 时才推广压缩版本
if abs(quality_delta) < 0.1:
    use_compressed()  # 安全
else:
    keep_verbose()    # 等待更好的压缩策略

发现 3:输出 Token 主导成本,不是 Prompt

成本最高的是 rnd-technical-writer( 0.1365/100calls),最低的是meeting−summarizer(0.1365/100 calls),最低的是 meeting-summarizer( 0.1365/100calls),最低的是meeting−summarizer(0.0152/100 calls),相差 9 倍。

两者的 Prompt 长度相近(116t vs 53t),差距来自输出:1248t vs 99t。

Prompt 从 418t 压到 99t,每次调用节省约 0.0011。加一行'Maximumlength:400words'把输出从1248t压到600t,节省约0.0011。加一行 `Maximum length: 400 words` 把输出从 1248t 压到 600t,节省约 0.0011。加一行'Maximumlength:400words'把输出从1248t压到600t,节省约0.06,差距 54 倍。优化输出长度比优化 Prompt 有效得多:

  • 在 Prompt 里明确最大输出字数(Maximum length: 400 words
  • 按需求分级:详细版 / 简要版,用户选择

Skill Registry 设计

路由准确率低的根因是描述设计不够区分。好的 Registry 条目应该包含:

yaml 复制代码
skills:
  - id: sql-query-builder
    description: |
      Generate SQL queries from natural language data retrieval descriptions.
      Trigger keywords: "query", "SQL", "database", "select", "filter", "join".
      NOT for: code debugging, bug analysis, general programming questions.
    domain: engineering
    subdomain: data
    version: "1.0.0"
    status: active
    owner: "@team-data"
    metrics:
      monthly_calls: 500
      avg_quality_score: 4.1
      cost_per_call_usd: 0.000635

关键字段:

  • description 里包含正面触发词 + 负面排除说明
  • domain / subdomain 支持分层路由
  • metrics 持续更新,用于发现 cost 最高、质量最低的 Skill

三级治理路线图

css 复制代码
Level 1 --- 个人阶段(立即可做):
  □ 建 Skill 台账(YAML 文件 or Notion 表格)
  □ 每个 Skill 有版本号
  □ 有基本的评测记录(第 01 篇的评测体系)

Level 2 --- 团队共享阶段:
  □ 建 Skill Registry,包含 domain + 负面示例
  □ 访问控制:公共 / 部门 / 个人
  □ 修改 Skill 需走 Review 流程(跑评测集,对比 Delta)
  □ 质量监控看板(第 04 篇的 L2/L3 指标)

Level 3 --- 企业治理阶段:
  □ 分层路由(domain 粗分 + embedding 精选)
  □ Prompt 压缩前跑 A/B 质量测试
  □ 按 Skill 分摊成本(月度报告)
  □ 审计日志 + 合规 Checklist

设计 Checklist

Skill Registry

  • 描述里包含触发关键词
  • 描述里有 NOT 排除声明(防止 embedding 混淆)
  • 有 domain 字段支持分层路由

Prompt 压缩

  • 压缩前用评测集 A/B 对比(不是直接替换)
  • 质量 delta < 0.1 才推广压缩版本

成本监控

  • 分别记录输入/输出 Token(不要合并)
  • 先优化输出长度,再优化 Prompt 长度
  • 高输出量 Skill 设置最大输出字数限制

总结

  1. Embedding 路由准确率 38%,相同领域的 Skill 在 embedding 空间里区分不了;修复是描述里加负面排除示例 + 分层路由,不是换更好的 embedding 模型
  2. Prompt 压缩不是无损的:76% 的 Token 节省让简单主题质量不变,但复杂主题质量下降 1 分;压缩前必须跑 A/B 测试
  3. 输出 Token 主导成本:rnd-technical-writer 比 meeting-summarizer 贵 9 倍,原因是输出长度(1248t vs 99t),缩短 Prompt 对成本的影响微乎其微

参考资料


欢迎访问 PrimeSkills ------ 一个精心策划的 AI Agent 与技能市场,所有内容均经过真实企业级工作流验证。没有噱头,只有真正有效的东西。

更多实用知识和有趣产品,欢迎访问我的个人主页

相关推荐
IT_陈寒3 小时前
Vue这个坑我跳了两次,原来问题出在这
前端·人工智能·后端
新新技术迷4 小时前
Node给AI接口做SSE代理与鉴权
人工智能
redreamSo4 小时前
大模型是不是到顶了?瓶颈到底在哪
人工智能·openai
Oo9205 小时前
Tool Use 背后的技术逻辑
人工智能
姗姗来迟了5 小时前
Vue3封装AI流式对话组件踩坑实录
人工智能
码上天下5 小时前
用Pinia管理AI多会话状态
人工智能
想要成为糕糕手6 小时前
深入理解AI Agent工具调用:从原理到代码实现
llm·agent
用户054324329706 小时前
Next.js接大模型流式SSE实操踩坑
人工智能
Sokach10156 小时前
Windows使用hermes桌面端个人出现的问题
agent