找回密码
 立即注册
首页 业界区 安全 Skills进阶

Skills进阶

坪钗 2026-3-23 17:45:05
Skills、Tools、MCP 与 Subagents 完全指南

目录


  • 核心概念

    • MCP(Model Context Protocol)
    • Tools(工具)
    • Skills(技能)
    • Subagents(子代理)

  • 协作流程
  • skill-creator 深度解析

    • 项目结构
    • 核心文件详解
    • 完整工作流程
    • 三个专用子代理

  • 实践:创建自定义技能
  • 参考资源
核心概念

MCP

全称:Model Context Protocol(模型上下文协议)
定义:AI "插件化"的标准协议,定义统一的请求/响应格式,让 AI 能够链接各种按照此协议开发的接口(数据库、API、文件系统等)。
大白话:MCP 是 AI 和外部世界对话的"通用语言"——就像 USB 接口标准,任何设备插上就能用。
Tools

定义:可以调用的具体功能函数,就像工具箱里的锤子、螺丝刀。
特点

  • 有明确的名字和参数
  • 执行一个具体动作(查数据、发消息、截图)
  • 有输入和输出
示例
  1. feishu_doc read doc_token="xxx"
  2. wecom_mcp call contact getContact '{}'
  3. agent-browser click selector="#submit"
复制代码
Skills

定义:能力模块,提供一组相关的 Tools 集合。
特点

  • 描述什么时候触发(trigger condition)
  • 包含具体的操作指南(Markdown)
  • 可以引用外部资源(scripts/、references/、assets/)
示例技能

  • feishu-doc:读写飞书文档
  • agent-browser:浏览器自动化
  • skill-creator:创建和优化技能
Subagents

定义:主 AI 派出去的"小助手团队",独立干活,干完回来汇报。
为什么需要

  • 任务复杂,主 AI 一个人忙不过来
  • 需要并行处理,加快速度
  • 某些任务需要专门技能
关键点

  • Subagent 是独立运行的 AI,有自己的思考能力
  • Subagent 也有自己的 Skills/Tools/MCP 能力(可以不同)
  • 主 AI 只负责分派和汇总,不干涉具体执行
协作流程
  1. 用户任务
  2.    ↓
  3. 主agent接收任务
  4.    ↓
  5. 主agent分析:是否需要分派Subagents?
  6.    ├─ 否 → 主agent直接使用自己的Skills/Tools/MCP完成
  7.    └─ 是 → spawn Subagent(s),分配子任务
  8.             ↓
  9.          Subagent接收子任务
  10.             ↓
  11.          Subagent规划执行步骤(思考需要哪些数据、工具)
  12.             ↓
  13.          是否需要外部数据?
  14.             ├─ 是 → 调用MCP工具获取
  15.             └─ 否 → 继续
  16.             ↓
  17.          调用Skills中的Tools处理数据
  18.             ↓
  19.          完成任务,返回结果给主agent
  20.             ↓
  21. 主agent汇总所有Subagent结果
  22.    ↓
  23. 主agent整合、格式化最终结果
  24.    ↓
  25. 输出给用户
复制代码
核心要点总结

概念是什么类比Skills能力模块(提供Tools集合)手机AppTools具体可调用的函数App里的按钮MCP通信协议(Tools底层)通用语言/电话Subagents并行执行的小智能体外包团队主agent协调者+最终整合者项目经理关键区别

  • Skills 是静态能力包,Tools 是 Skills 里的具体动作
  • MCP 是某些 Tools 的底层通信方式
  • Subagents 是并行执行的任务分派单元
skill-creator 深度解析

项目结构
  1. skill-creator/
  2. ├── SKILL.md                    # 技能主文档(33KB)
  3. ├── agents/                     # 子代理指令集
  4. │   ├── analyzer.md            # 分析代理:分析基准测试结果
  5. │   ├── comparator.md          # 比较代理:盲测比较两个输出
  6. │   └── grader.md              # 评分代理:评估断言通过情况
  7. ├── references/
  8. │   └── schemas.md             # JSON 数据结构定义
  9. ├── scripts/                   # 可执行脚本
  10. │   ├── aggregate_benchmark.py # 聚合基准数据
  11. │   └── generate_report.py     # 生成HTML评估报告
  12. └── assets/                    # 静态资源(模板等)
复制代码
核心文件详解

1. SKILL.md(灵魂文件)

作用:定义 skill-creator 这个技能的完整行为规范
结构
  1. ---
  2. name: skill-creator
  3. description: Create new skills, modify and improve existing skills...
  4. ---
复制代码
工作流程(Markdown 正文):
  1. 1. 捕获意图(问清楚技能要干吗)
  2. 2. 采访研究(了解边界、依赖、工具)
  3. 3. 编写 SKILL.md(按规范写)
  4. 4. 创建测试用例(evals.json)
  5. 5. 运行测试(并行spawn子代理)
  6. 6. 评估结果(评分+benchmark)
  7. 7. 改进技能(根据反馈修改)
  8. 8. 重复直到满意
  9. 9. 优化触发描述(可选)
复制代码
关键概念
概念说明渐进式披露技能内容分层加载(元数据→SKILL.md正文→引用文件),避免一次性加载太多无惊喜原则技能不能包含恶意代码,必须与描述一致迭代循环draft → test → review → improve(闭环)客观评估用断言(assertions)和基准测试(benchmark)量化技能效果2. agents/*.md(三个专用子代理)

这些文件是给子代理看的指令,当主技能 spawn 这些代理时,会把对应的 .md 内容发给他们作为"工作手册"。
(1) comparator.md(盲测比较员)

角色:像评委,给两个输出打分,但不知道哪个是哪个(盲测)
工作流程
  1. 收到:输出A、输出B、任务描述
  2.    ↓
  3. 理解任务要求(要产出什么?质量标准?)
  4.    ↓
  5. 制定评分标准(内容分+结构分,每项1-5分)
  6.    ↓
  7. 给A和B分别打分
  8.    ↓
  9. 决定谁赢了(根据总分,次要看断言通过率)
  10.    ↓
  11. 输出 JSON 结果(winner, reasoning, rubric)
复制代码
输出示例
  1. {
  2.   "winner": "A",
  3.   "reasoning": "Output A provides a complete solution...",
  4.   "rubric": {
  5.     "A": {
  6.       "content_score": 4.7,
  7.       "structure_score": 4.3,
  8.       "overall_score": 9.0
  9.     },
  10.     "B": {
  11.       "overall_score": 5.4
  12.     }
  13.   }
  14. }
复制代码
(2) analyzer.md(赛后分析师)

角色:比赛完后,分析为什么赢家赢了,输家输了,给出改进建议
工作流程
  1. 收到:winner/loser的技能路径、执行记录、比较结果
  2.    ↓
  3. 读输家的技能 → 读赢家的技能 → 找差异
  4.    ↓
  5. 读输家的执行记录 → 读赢家的执行记录 → 找行为差异
  6.    ↓
  7. 总结:
  8.   • 赢家强在哪里?
  9.   • 输家弱在哪里?
  10.    ↓
  11. 输出改进建议(priority + category + suggestion)
复制代码
输出示例
  1. {
  2.   "winner_strengths": ["Clear step-by-step instructions", "Included validation script"],
  3.   "loser_weaknesses": ["Vague instruction", "No script for validation"],
  4.   "improvement_suggestions": [
  5.     {
  6.       "priority": "high",
  7.       "category": "instructions",
  8.       "suggestion": "Replace 'process appropriately' with explicit steps",
  9.       "expected_impact": "Would eliminate ambiguity"
  10.     }
  11.   ]
  12. }
复制代码
(3) grader.md(断言评分员)

角色:检查输出是否满足预设的"断言"(expectations),并评估测试用例本身的质量
工作流程
  1. 收到:断言列表、执行记录、输出文件路径
  2.    ↓
  3. 读执行记录 + 检查输出文件
  4.    ↓
  5. 对每条断言:
  6.    • 找证据(transcript 或输出文件里有没有?)
  7.    • 判断 PASS/FAIL(要有明确证据,不能是巧合)
  8.    ↓
  9. 额外工作:
  10.   • 提取输出中的隐含声明(claims)并验证
  11.   • 读用户笔记(如果有)
  12.   • 评估断言质量(是否太松?是否遗漏重要检查?)
  13.    ↓
  14. 输出 grading.json
复制代码
评分标准

  • PASS:有明确证据,且反映实质性完成
  • FAIL:无证据、有反证、或只是表面满足
  • burden of proof:默认 FAIL,除非证据确凿
输出示例
  1. {
  2.   "expectations": [
  3.     {"text": "The output includes the name", "passed": true, "evidence": "Found in transcript..."},
  4.     {"text": "The spreadsheet has SUM formula", "passed": false, "evidence": "No spreadsheet was created"}
  5.   ],
  6.   "summary": {"passed": 1, "failed": 1, "pass_rate": 0.5},
  7.   "eval_feedback": {
  8.     "suggestions": ["Assertion too loose, consider adding content verification"]
  9.   }
  10. }
复制代码
3. references/schemas.md(数据格式字典)

作用:定义所有 JSON 文件的 schema,确保不同组件能互相理解
包含的结构
文件名用途位置evals.json定义测试用例evals/evals.jsongrading.json评分结果/grading.jsonmetrics.json执行指标/outputs/metrics.jsontiming.json时间记录/timing.jsonbenchmark.json基准测试汇总benchmarks//benchmark.jsoncomparison.json盲测比较结果/comparison-N.jsonanalysis.json分析报告/analysis.jsonhistory.json迭代历史工作区根目录4. scripts/*.py(实用工具)

aggregate_benchmark.py

作用:把多个运行(with_skill、without_skill,每个3次重复)的数据聚合成统计摘要
输入:/iteration-N/ 下的多个 grading.json
输出:benchmark.json + benchmark.md
关键计算
  1. # 对每个配置(with_skill, without_skill)计算:
  2. mean = average(所有run的pass_rate)
  3. stddev = 标准差(看波动大不大)
  4. min/max = 最好/最差
  5. # delta = with_skill 均值 - without_skill 均值
  6. delta = {
  7.   "pass_rate": "+0.50",   # 技能提升50%
  8.   "time_seconds": "+13.0", # 慢了13秒
  9.   "tokens": "+1700"        # 多用1700 tokens
  10. }
复制代码
generate_report.py

作用:根据 run_loop.py(描述优化)的输出,生成可视化的HTML报告
输入:run_loop 的 JSON 输出
输出:HTML 文件,表格展示:

  • 行:每个描述版本(iteration 1, 2, 3...)
  • 列:每个测试查询
  • 单元格:✅ 或 ❌(是否触发了技能)
功能

  • 区分 train(训练集)和 test(测试集)的触发率
  • 自动刷新(可选)
  • 显示 train/test 得分,防止过拟合
完整工作流程
  1. 场景:你要做一个"把PDF转Excel"的技能
  2. 第1步:想清楚技能要干吗
  3.    ↓
  4. 第2步:写初版 SKILL.md(说清楚:遇到PDF转Excel就触发,用python写脚本)
  5.    ↓
  6. 第3步:设计测试用例(evals.json)
  7.    - case1: "把这个销售PDF转成Excel"
  8.    - case2: "财报PDF,提取表格"
  9.    ↓
  10. 第4步:并行运行测试
  11.    spawn 3个 with-skill 代理 + 3个 without-skill 代理
  12.    每个代理独立完成任务,保存输出
  13.    ↓
  14. 第5步:评分
  15.    grader 代理检查:输出是不是Excel?数据对不对?
  16.    ↓
  17. 第6步:聚合统计
  18.    aggregate_benchmark.py 算:
  19.      with-skill 平均通过率 85%,标准差 5%
  20.      without-skill 平均通过率 35%,标准差 8%
  21.    ↓
  22. 第7步:看报告
  23.    generate_report.py 生成HTML,打开浏览器看:
  24.    - 哪些case过了?哪些挂了?
  25.    - 输出文件长什么样?
  26.    ↓
  27. 第8步:改进技能
  28.    发现:技能里没说"遇到扫描件要用OCR"
  29.    修改 SKILL.md,加上OCR步骤
  30.    ↓
  31. 第9步:重复4-8步,直到用户满意
  32.    ↓
  33. 第10步:优化触发描述(可选)
  34.    run_loop.py 自动测试20个query,调整description
  35.    ↓
  36. 第11步:打包成 .skill 文件给用户
复制代码
三个专用子代理对比

代理角色输入输出用途grader断言评分员断言 + transcript + outputsgrading.json客观评分每条断言comparator盲测比较员输出A + 输出B + 任务comparison.jsonA/B测试,决定哪个更好analyzer赛后分析师winner/loser的skill + transcriptanalysis.json分析胜负原因,给出改进建议实践:创建自定义技能

步骤1:使用 skill-creator
  1. # 如果你在 Claude Code 中,直接说:
  2. "我想创建一个技能,用来..."
  3. # skill-creator 会引导你:
  4. # 1. 捕获意图(问清楚用途、触发条件、输出格式)
  5. # 2. 采访研究(边缘案例、依赖、示例)
  6. # 3. 编写 SKILL.md
复制代码
步骤2:设计测试用例

创建 evals/evals.json:
  1. {
  2.   "skill_name": "my-skill",
  3.   "evals": [
  4.     {
  5.       "id": 1,
  6.       "prompt": "User's task prompt",
  7.       "expected_output": "Description of expected result",
  8.       "files": ["evals/files/sample1.pdf"],
  9.       "expectations": [
  10.         "The output includes X",
  11.         "The skill used script Y"
  12.       ]
  13.     }
  14.   ]
  15. }
复制代码
步骤3:运行评估
  1. # skill-creator 会:
  2. # 1. spawn with_skill ×3(并行)
  3. # 2. spawn without_skill ×3(基线)
  4. # 3. 保存结果到 workspace/iteration-1/
复制代码
步骤4:查看报告
  1. # 生成 HTML 报告
  2. python -m scripts.generate_report <workspace>/iteration-1 \
  3.   --skill-name "my-skill" \
  4.   --benchmark <workspace>/iteration-1/benchmark.json
复制代码
步骤5:迭代改进

根据 feedback.json 和 analysis.json 修改 SKILL.md,重复步骤3-4。
步骤6:描述优化(可选)

提升触发准确率:
  1. python -m scripts.run_loop \
  2.   --eval-set trigger_evals.json \
  3.   --skill-path ./my-skill \
  4.   --model <current-model> \
  5.   --max-iterations 5
复制代码
步骤7:打包
  1. python -m scripts.package_skill ./my-skill
  2. # 输出:my-skill.skill
复制代码
参考资源

官方仓库


  • anthropics/skills:https://github.com/anthropics/skills
官方预设 Skills

技能用途链接docxWord 文档处理查看xlsxExcel 表格处理查看pptxPowerPoint 处理查看pdfPDF 处理查看教程

<ul>
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

3 天前

举报

很好很强大  我过来先占个楼 待编辑
您需要登录后才可以回帖 登录 | 立即注册