开发者指南
Cordis、MCP 与 Skills
三个概念的定位对比,以及 DeepSeek Harness 对 MCP、Skills 与 Plugins 的支持矩阵
经常有人把 Cordis、MCP 与 Skills 放在一起比较。它们其实是三个不同层次的概念,在 DeepSeek Harness 中各有明确的角色。本页先对比概念,再给出 DSH 的支持矩阵。
一句话定位
| 概念 | 是什么 | 解决什么问题 |
|---|---|---|
| Cordis | 插件框架(元框架) | 如何把软件拆成可组合、可替换的插件,并管理生命周期 |
| MCP | 开放协议标准(Model Context Protocol) | 模型应用如何以统一协议对接外部工具/数据源 |
| Skills | 可复用的指令与能力包 | 如何把领域最佳实践封装成按需加载的「技能」 |
打个比方
Cordis 是「插座与电路标准」——决定每个部件怎么装上、怎么拆下;MCP 是「USB 协议」——规定外设用什么接口通信;Skills 是「工具包」——把一套做法打包好,需要时取用。三者不互斥:Skills 与 MCP 桥接都以插件(Cordis)的形式装进 DSH。
详细对比
| 维度 | Cordis | MCP | Skills |
|---|---|---|---|
| 本质 | 组合模型 + 运行时 | 通信协议规范 | 指令/能力包 |
| 粒度 | 插件、服务、事件 | 服务器、工具、资源 | 单个技能(SKILL.md + 资源) |
| 谁实现 | DSH 内置(vendored) | 各厂商的 server/client | 社区与官方维护 |
| 语言相关 | TypeScript 生态 | 语言无关(JSON-RPC) | 与 agent 运行时相关 |
| 在 DSH 中的角色 | 承载一切能力的底座 | 通过桥接插件接入外部工具 | 内置注册表 + 按需加载 |
DSH 支持矩阵
Cordis:原生内置
DSH 以 vendored 形式内置 Cordis,模型适配器、工具注册表、会话日志、agent loop(智能体循环)都是插件。见 Cordis 入门。
MCP:支持(客户端桥接)
DSH 通过 @deepseek-ai/dsh-mcp-client 桥接插件接入外部 MCP 服务器:连接服务器并把其工具注册到 ctx.tools,模型以 mcp__<serverName>__<rawName> 形式调用——与 Claude Code、Codex 相同的服务器限定命名。
支持范围
- 传输:
stdio(本地子进程)与streamable-http(远程 URL)两种; - 每个 MCP 服务器对应一个插件实例,在
cordis.yml中配置; - 支持 HMR 热切换、断线自动重连(指数退避);
- 当前文档化的桥接是 MCP client 角色(把外部服务器的工具接进来);把 DSH 自身作为 MCP server 暴露的能力未在上游文档中出现。
配置示例:
- id: mcp-github
name: '@deepseek-ai/dsh-mcp-client'
config:
serverName: github
transport: stdio
command: npx
args: ['-y', '@modelcontextprotocol/server-github']
env:
GITHUB_TOKEN: !!js process.env.GITHUB_TOKENSkills:原生支持
DSH 内置 skill(技能)注册表与加载器,agent 可按需加载专项技能(如 code-review、astro),技能以 SKILL.md + 资源目录的形式组织。见技能与目标。
Plugins:原生支持
三者关系图
怎么选
- 想扩展 agent 的能力:优先写 Skills(封装做法)或插件(封装能力);
- 想接入已有的 MCP 生态工具:用
dsh-mcp-client桥接,不必重写; - 想理解/改造 DSH 本身:从 Cordis 组合模型入手。