Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

模型: openai/gpt-5.4
生成日期: 2026-04-01
书名: Claude Code VS OpenCode:架构、设计与未来
章节: 第10章 — Oh-My-OpenCode的创新
Token用量: 约 3,900 input + 1,020 output

10.7 技能嵌入式MCP

OMO 在扩展性上的一个很有代表性的创新,是技能嵌入式 MCP。相关实现主要位于 src/features/skill-mcp-manager/,并通过 skill_mcp 等工具对外暴露。它的核心思想是:一个 skill 不只是提示词知识包,还可以把自己需要的 MCP 服务一起带过来。

要理解这一点的重要性,先要回顾 MCP 的角色。MCP(Model Context Protocol)本质上是让 agent 以统一协议访问外部工具、资源和 prompt 的方式。通常情况下,MCP server 是全局配置的,或者项目级配置的;而 skill 则只是 instructions、文档和 workflow 提示。OMO 把这两者打通了:skill 可以内嵌自己的 MCP server 定义。

这意味着,一个技能不仅能“告诉 agent 怎么做”,还可以“携带 agent 做这件事所需的外部能力”。

OMO 的 MCP 结构可以看成三层。

第一层是 OMO 自带的 built-in MCPs,例如 Context7、websearch/exa、grep.app 这类远程服务。第二层是 Claude Code 兼容层,它能从 .mcp.json 之类的配置导入 MCP 定义。第三层就是最有特色的一层:skill-embedded MCPs。正是这一层,让 OMO 在扩展体系上明显区别于一般系统。

SkillMcpManager 展示了这套系统的核心职责。它负责连接池、pending connection 跟踪、重连与重试、step-up auth、空闲清理,以及按 session/skill/server 维度管理 client 身份。它同时支持 stdioHTTP 两种传输。

这里的 stdio 也需要解释一下,因为这不是所有读者都熟悉的标准教材术语。stdio 指 standard input / standard output,也就是通过本地进程的输入输出流进行通信。HTTP 则是通过网络服务通信。OMO 让 skill 内嵌的 MCP server 同时支持这两种模式,意味着 skill 既可以带一个本地工具进程,也可以带一个远程服务接口。

这不是一个小便利功能,而是在解决一个打包问题。假设有一个 skill 教 agent 完成某类工作。在弱系统里,用户还得另外安装配置配套工具,再自己保证 prompt 和工具接口对得上。OMO 则允许 skill 把这部分 MCP 声明直接打包带上,从而减少“文档写得很好,但能力没接上”的错位。

换句话说,skill 在 OMO 里不再只是知识片段,而更像一个可执行知识包

这直接带来可移植性提升。团队共享一个 skill 时,不仅共享它的做事说明,也共享它的能力面。这个方向很像现代软件工程里的依赖打包,而不再只是“分享一段 prompt”。它让扩展从静态文案进化成半可执行组件。

从实现上看,SkillMcpManager 也不是浅尝辄止。它用 sessionID、skillName、serverName 组合出 client key;在操作层提供 listTools、listResources、listPrompts、callTool、readResource、getPrompt 等方法;遇到 not connected 之类问题时会主动 forceReconnect;还有 step-up auth 处理。这说明 OMO 并不是把 MCP 配置随便塞进 skill 文件里,而是真的建立了一套足够稳定的生命周期管理能力。

更深一层地说,这体现了 OMO 对扩展形态的理解:扩展不该只是“平台全局安装能力”,也可以是“内容自身携带能力”。也就是说,能力不一定都挂在平台层级,也可以随着具体技能走。这种思路和现代软件世界中“代码、配置、元数据一起交付”的趋势非常一致。

相比 Claude Code 和普通 OpenCode 配置,这一点尤其特别。它们当然也支持 MCP,各自也有 MCP 配置机制;但把 MCP 与可重用 skill 深度绑定,让 skill 成为“说明 + 能力”的统一包,OMO 走得更远。

这套设计当然也会带来复杂度和安全面的问题。如果 skill 可以带可执行能力,那么 skill 的加载、审核、清理,就都变得更敏感。这意味着系统更强大,也意味着供应链风险更高。所以 skill-embedded MCP 的威力,与安全治理必须是同时增长的。

即便如此,这条路线仍然非常值得重视。Skill 若只能“说”,价值有限;MCP 若没有上下文说明,也难用。OMO 的技能嵌入式 MCP 正是在把这两者合并:让技能不只是知识,也带着工具;让工具不只是接口,也带着用法。

对未来 coding agent 而言,这很可能会成为一个重要模式:把 skill 从静态 prompt 文件,升级为包含 instructions、约定和能力面的“能力胶囊”。而 OMO,正是较早把这个方向真正做进系统里的项目之一。