跳转到内容

Skill-Embedded MCP 按需加载

Skill-Embedded MCP 按需加载

学习目标

  • 理解 Skill-Embedded MCP 与传统常驻 MCP 的对比
  • 掌握 MCP 生命周期管理机制
  • 识别 MCP 启动失败的降级策略

前置知识

本章涉及 MCP 协议和 Skill 设计的通用原理,建议先阅读:

下文假设你已理解 MCP 协议和 Skill 概念,直接聚焦 Oh-My-OpenAgent 的具体实现。

项目实践

三层 MCP 系统

Oh-My-OpenAgent 的 MCP 系统分为三层:

层级来源生命周期示例
内置远程 MCP插件注入常驻websearch (Exa)、context7 (官方文档)、grep_app (GitHub 搜索)
.mcp.json 加载用户配置常驻Playwright、自定义工具
Skill-Embedded MCPSKILL.md frontmatter按需git-master 的 commit 分析、playwright 的浏览器控制

Skill-Embedded MCP 的工作流程

  1. 声明:Skill 的 SKILL.md frontmatter 中声明所需 MCP 服务器
  2. 解析:Skill MCP Manager 在 Skill 激活时解析 MCP 声明
  3. 启动:按需启动 MCP 服务器进程
  4. 注入:将工具注入当前 session 的工具集
  5. 执行:Agent 使用 Skill 工具完成工作
  6. 关闭:任务完成后关闭 MCP 服务器,从工具集移除

关键组件

  • src/features/skill-mcp-manager/:生命周期管理
  • src/tools/skill-mcp/:Skill MCP 工具定义

上下文预算节省

传统常驻 MCP 的问题:每个 MCP 服务器的工具描述(名称 + 描述 + 参数 schema)都注入到系统提示中。10 个 MCP 服务器可能增加数千 token 的开销。

Skill-Embedded MCP 的优势:仅激活 Skill 时,对应 MCP 的工具描述出现。非激活 Skill 的工具描述为零开销。

内置 Skill 及其 MCP

SkillMCP 服务器触发场景
git-master内置 git 工具commit、rebase、squash、历史查询
playwrightPlaywright MCP浏览器自动化、截图、测试
agent-browseragent-browser CLI导航、快照、网络检查
frontend-ui-ux无(纯 prompt 注入)UI/UX 设计任务
review-work后台 Agent 编排实施后审查

问题与规避

MCP 启动延迟

问题:首次激活 Skill 时需要启动 MCP 服务器,增加响应延迟。

规避

  • MCP 服务器启动超时设置(默认 30 秒)
  • 启动失败时降级为 Skill 可用但 MCP 工具不可用

进程泄漏

问题:任务完成后 MCP 服务器进程未被正确关闭,持续占用资源。

规避

  • Skill MCP Manager 跟踪所有活跃的 MCP 进程
  • 定时清理超时的进程
  • session 结束时关闭所有 MCP 服务器

设计取舍

按需启动 vs 预热启动

方案优势代价
按需启动零闲置资源、上下文干净首次激活有延迟
预热启动响应快闲置资源、上下文膨胀

Oh-My-OpenAgent 的选择:按需启动,因为 Skill 的使用频率通常较低,预热的收益有限。

参考来源