Skill 3 层加载机制详解SkillAgent Skill采用的是 ‌渐进式披露Progressive Disclosure‌ 架构将技能知识分为三层按需加载避免一次性塞入上下文导致 Token 爆炸。 三层架构总览表格层级名称内容大小加载时机‌L1‌元数据层name descriptionFrontmatter~100 tokens/Skill‌始终加载‌‌L2‌指令层SKILL.md 正文完整 SOP 5000 tokens推荐500行‌匹配成功后加载‌‌L3‌资源层references/、scripts/、assets/无限制‌执行时按需读取‌类比餐厅L1 是菜单菜名简介L2 是做法配料L3 是详细配方卡——不必一进门就拿到所有菜的完整菜谱。 各层详解L1 — 元数据层常驻上下文---name: code-reviewdescription: 当用户提交代码审查请求时触发。执行安全性、性能和可维护性审查。version: 1.0.0 tags: [development, quality, security]---‌作用‌给 Agent 提供「意图匹配索引」判断该调用哪个 Skill‌关键‌description是唯一的命中开关必须写清楚‌触发场景‌用户说了什么/什么情况下激活而非功能清单‌规模‌50 个 Skill 合计约 5000 tokens几乎不占空间L2 — 指令层按需动态披露SKILL.md 正文包含完整分步执行 SOP、工具调用顺序、校验规则、输出格式规范、Gotchas踩坑点‌仅在 L1 匹配成功后才注入上下文‌任务结束后释放推荐 ‌ 500 行‌超过会挤压推理空间L3 — 资源层延迟加载skill-name/├── SKILL.md├── references/ ← 按需加载│ ├── java-review-checklist.md│ ├── security-checklist.md│ └── performance-tips.md├── scripts/ ← 按需加载│ └── code-analyzer.py└── assets/ ← 按需加载└── report-template.md通过工具调用如load_skill_resource临时读入上下文用完即丢生命周期最短可承载几万行参考资料只有被点名的段落才进入上下文⚡ 效能对比表格对比维度全量堆叠渐进式分离上下文消耗~3100 词~4200 tokens~400 词~550 tokens加载策略所有内容常驻内存核心常驻细节按需读取复杂场景节省基准‌2~3 倍 Token 节省‌‌实际案例‌4 个 Skill 全量加载需 ~8000 tokens渐进式加载仅需 ~700 tokens‌节省约 90%‌。 三种加载模式表格模式适用场景特点‌分层式‌工具类 Skill核心在 Body深度细节放 references‌条件分支式‌规则类 SkillBody 只保留索引逻辑具体规则外部化‌完全外部式‌超大型 Skill800行Body 降级为纯导航页所有内容拆分至 references 实施要点‌description 必须精准‌写触发短语而非功能描述✅当用户提交代码审查请求、提到review、代码走读时触发❌这个 Skill 可以查询知识库、创建文档‌SKILL.md 必须包含 Gotchas 节‌列出认证过期处理、不可逆操作、安全红线等‌references 单个文件聚焦一个主题‌文件越小按需加载时消耗越少‌技能库扩展时‌baseline 仅随 L1 元数据线性增长不会随全部内容爆炸 完整协作流程示例生成单元测试1. [常驻] 上下文只有 generate-unit-test 的 L1 元数据2. [披露] Agent 匹配需求 → 加载完整 SKILL.md读文件→建用例→装依赖→跑测试3. [延迟] 执行到修复报错步骤 → 临时读取项目 Jest/Vitest 规范文档 → 用完丢弃这套机制是 Anthropic 2025 年 10 月发布 Agent Skills 时提出的标准设计已被 Cline/Cursor/LangGraph 等主流编码智能体采用。MCPModel Context Protocol解决了什么问题MCP模型上下文协议由 Anthropic 主导推出被比喻为 ‌AI 领域的 USB-C 接口‌核心解决的是 ‌LLM 与外部世界交互的协议不统一问题‌。 三大核心痛点1. 接口碎片化 —— 重复造轮子表格MCP 之前MCP 之后Cursor 读 GitHub → 写一套连接器写一个 GitHub MCP ServerClaude Desktop 读 GitHub → 再重写一遍任何 MCP 客户端直接调用10 个 AI 工具 × 10 个数据源 ‌100 对适配‌1 个 Server N 个 Client ‌N 次复用‌本质是解决经典的 ‌M×N 适配问题‌没有统一标准时每对组合都得单独开发维护成本指数级增长。2. 数据获取笨拙 —— 手工操作不可持续表格传统方式MCP 方式手动复制粘贴数据到 Prompt通过 Resources 自动注入上下文硬编码 API 调用通过 Tools 按需执行动态操作面对海量动态数据束手无策标准化接口按需读取MCP 定义了 ‌三种核心交互方式‌表格类型作用类比‌Resources‌让 AI 读取静态/动态数据给 AI 递参考资料‌Tools‌让 AI 执行操作查天气、跑代码、改文件给 AI 递工具‌Prompts‌提供预定义指令模板给 AI 递操作手册3. 平台绑定与安全隐患 —— 数据不放心上云表格痛点MCP 解决方案AI 能力绑定特定平台换模型要重写代码统一协议‌不依赖特定 LLM‌随时切换敏感数据全量上传云端Server 本地运行‌只暴露最小必要数据‌外部 RPC 调用缺乏管控通过权限/沙箱机制控制访问范围 与 Function Calling 的关键区别表格对比Function CallingMCP标准性各平台 API 差异大‌统一开放协议‌可移植性换模型需重写一次开发多端运行能力范围适合单一明确任务支持复杂多步、资源工具模板生态平台私有开源生态社区共建 技术架构一句话概括textMCP ClientAI 应用/IDE/Agent ↕ 标准协议 MCP Server数据源/工具网关 ├── Tools可执行操作 ├── Resources可读取数据 └── Prompts指令模板‌数据源与 AI 客户端完全解耦‌——你的数据留在你的服务器上只在需要时通过受控协议暴露给模型。⚠️ 当前局限性表格问题说明‌上下文污染‌接入上百个 Server 时Schema 会塞满上下文‌状态管理薄弱‌中间状态监控、错误回溯还比较原始‌网络与安全‌外部 RPC 调用面临网络抖动和隐私挑战 一句话总结‌MCP 把 AI 从只能空谈的大脑变成了拥有标准化插槽的超级工作站——一次开发到处插拔安全可控。Skill 与 MCP 协同使用从能连接到会干活 一句话定位‌Skill 是操作手册MCP 是工具箱接口。Skill 告诉 Agent 怎么想、怎么做MCP 给 Agent 递扳手、开权限。两者拼在一起Agent 才从聊天建议者升级为自主执行者。‌用五金店类比表格组件类比作用‌MCP‌货架通道门禁卡让你能拿到木胶、夹具、铰链‌Skill‌店员的专业技能告诉你该买哪个、先用哪个、怎么修‌Agent‌你自己拿着工具、按手册完成修理 协同的三层逻辑┌─────────────────────────────────────────┐ │ 用户指令帮我分析上季度销售数据 │ └──────────────────┬──────────────────────┘ ▼ ┌─────────────────────────────────────────┐ │ Layer 1: Skill 规划大脑 │ │ → 加载 Sales Analysis Skill渐进式L2 │ │ → 生成计划查数据→分析→写报告→发会议邀请 │ └──────────────────┬──────────────────────┘ ▼ ┌─────────────────────────────────────────┐ │ Layer 2: MCP 执行手脚 │ │ → 调用 Sales DB MCP → query(SQL) │ │ → 调用 Google Calendar MCP → create_event│ │ → 调用 Notion MCP → write_page │ └──────────────────┬──────────────────────┘ ▼ ┌─────────────────────────────────────────┐ │ Layer 3: Skill 收尾质检 │ │ → 解读结果、格式化、合规校验、输出报告 │ └─────────────────────────────────────────┘‌核心原则MCP 管连接Skill 管编排。‌ 四种协同模式表格模式说明典型场景‌① Skill 调用 MCP 工具‌Skill 正文中明确指定用哪个 MCP 工具、何时用数据库查询、发通知‌② 多 MCP 单 Skill 编排‌一个 Skill 协调多个 MCP Server 完成复杂流程会议准备NotionSlackCalendar‌③ 单 MCP 多 Skill 复用‌一个 MCP Server 被不同 Skill 反复使用GitHub MCP 被代码审查、PR、部署等 Skill 共用‌④ 渐进式加载 按需 MCP‌L1 匹配 Skill → L2 加载指令 → 执行时才拉 MCP 资源大 Skill 拆分避免上下文爆炸 实操Skill 中如何引用 MCPSKILL.md 示例数据库查询--- name: database-query description: 当用户提交数据库查询请求时触发 version: 1.0.0 tags: [database, sql, analytics] mcp_dependencies: - postgres-mcp-server - snowflake-mcp-server --- # 数据库查询技能 ## 阶段1理解需求 - 确认数据库类型PostgreSQL / Snowflake / BigQuery - 明确数据范围、分页、过滤条件 - 确认只读还是写操作 ## 阶段2构建 SQL - 根据需求编写 SQL添加 LIMIT/OFFSET - 检查注入风险 ## 阶段3执行查询MCP 调用 - zwnj;**只读查询**zwnj; → 调用 mcp_db_query 工具 - zwnj;**写操作**zwnj; → 调用 mcp_db_execute 工具需二次确认 - 通过 MCP Server 的 tools/list 发现可用工具 ## 阶段4格式化输出 - 表格 / 列表 / 汇总统计 - 出错时分析原因并建议修正关键点mcp_dependencies声明依赖正文明确指定 ‌哪个阶段调用哪个 MCP 工具‌。 三个真实协同案例案例 1财务分析 — 可比公司分析表格步骤谁干活干什么1‌Skill‌识别需查询 SP Capital IQ、Morningstar 等源2‌MCP‌连接三个数据源拉取实时财务指标3‌Skill‌应用估值模型、格式化输出、合规校验案例 2会议准备 — Notion 会议智能表格步骤谁干活干什么1‌Skill‌确定搜索页面项目文档 往期会议 利益相关者2‌MCP‌Notion MCP 搜索、读取、创建页面3‌Skill‌生成内部预读 外部议程两份文档4‌MCP‌保存到 Notion 并建立关联5‌Skill‌确保格式符合团队标准案例 3每日自动化日报表格步骤组件协作取数Agent → MCP数据库→ 精准拉取销售明细分析Agent → Skill数据分析→ 计算同环比 生成图表洞察Agent → LLM → 输出华东区受天气影响等建议发送Agent → Skill邮件→ 抄送相关负责人⚠️ 协同避坑指南表格坑说明解决‌指令冲突‌MCP 说返回 JSONSkill 说格式化 Markdown明确分工MCP 管数据格式Skill 管最终呈现‌Token 膨胀‌Skill L2 MCP Schema 全塞入上下文Skill 用渐进式加载MCP 工具按需 discovery‌权限失控‌Skill 调用了不该写的 MCP 工具在 MCP Server 端设置最小权限 Skill 中标注安全红线‌维护碎片化‌改一个流程要同时改 Skill 和 MCP优先改 Skill业务逻辑MCP 只要接口不变就不用动 落地建议路径text1️⃣ 先跑通一个 MCP Demo官方 modelcontextprotocol.io 2️⃣ 选一个高频场景写一个 Skill如周报生成 3️⃣ 在 Skill 中声明 mcp_dependencies明确调用哪些工具 4️⃣ 用真实 MCP Server 验证端到端流程 5️⃣ 逐步扩展一个 Skill 编排多个 MCP一个 MCP 被多个 Skill 复用‌总结MCP 让 AI 连得上Skill 让 AI 用得对。两者组合才是从 Demo 到生产的关键一步。