前言¶
同时使用多个智能体工具的开发者,通常面对一份分散的配置:MCP servers 和 Skills 散落在 ~/.claude、~/.cursor、~/.codex,cc-switch 则把它们存在 ~/.cc-switch/cc-switch.db 这个 sqlite 文件里。想在 DeepSeek Harness(下文简称 DSH)里复用这些配置,就得按各自的格式逐条手搬。
DSH 的理念是「一切皆插件」。社区开发者 MayBeTheWorld 针对这个搬运问题写了 dsh-inherit:自动检测上面四个来源,先预演再写入,把 MCP servers 与 Skills 一键导入 DSH。下面介绍它的功能、安装与用法。
这是什么¶
dsh-inherit 是一个 DSH 社区插件,当前版本 0.1.0,处于 Developer preview 阶段;MIT 许可,与 DeepSeek 无官方关联。它把 Claude Code / Cursor / Codex / cc-switch 的 MCP servers 与 Skills 一键导入 DSH,入口在 Settings → General → 导入智能体设置。
它是一个「双面插件」,一个包里同时包含两侧:
- 宿主侧:提供
/api/dsh-inherit/sources与/api/dsh-inherit/run两个接口,仅限 loopback 访问; - 浏览器侧:在
settings.general插入一行入口(settings.general.item),点开后是一个居中 Modal。
核心功能¶
来源自动检测与多格式解析¶
插件扫描 ~/.claude、~/.cursor、~/.codex 和 cc-switch(~/.cc-switch/cc-switch.db,经 Node 内置 sqlite 读取),并报告每个来源携带了什么。解析层覆盖三种格式:mcpServers JSON、Codex TOML、cc-switch sqlite。
按来源与分类勾选¶
弹窗里每个 agent 一张卡片,右侧各有一个 toggle,默认全开,不做任何调整也能一键导入全部。展开来源卡片后可按分类勾选:MCP servers 与 Skills 会被导入;instructions、memory、providers 只做检测并如实标注,不由本插件导入;Sessions 不支持。
各来源的支持情况:
| 来源 | MCP | Skills | Instructions | Providers | Memory | Sessions |
|---|---|---|---|---|---|---|
| Claude Code | 可导入 | 可导入 | 仅检测 | — | 仅检测 | 不支持 |
| Cursor | 可导入 | 可导入 | 仅检测 | — | 仅检测 | 不支持 |
| Codex(TOML) | 可导入 | 可导入 | 仅检测 | — | 仅检测 | 不支持 |
| cc-switch(sqlite) | 可导入 | 可导入 | — | 仅检测 | 仅检测 | 不支持 |
标注按能力感知生成:插件会检测当前实际加载的、负责某项能力的插件(例如 dsh-cc-switch)并在报告里说明,因此对 fork 和改名后的插件同样有效。
两步安全:先预演,再写入¶
1、点「导入所选(预演)」:只输出 dry-run 报告,内容分 imported / skipped / notes 三类,不写任何文件;
2、点「确认写入」:确认报告后再执行,真正落盘,写入前自动为目标文件生成 .bak-<timestamp> 备份。
导入是幂等的:同名 server / skill 会被跳过,不会重复写入。
写入位置¶
- MCP servers 写入当前 profile 的
cordis.patch.yml,作为@deepseek-ai/dsh-mcp-client行,走官方组合层;若自动检测到~/.dsh/mcp.json,则将其作为备选写入目标。 - Skills 以 SKILL.md 目录为单位复制到
~/.dsh/skills,幂等,已存在的直接跳过。
安装与启用¶
npm 安装命令(原文注释标注 once published,npm 包是否已发布请以实际为准):
# from npm (once published)
dsh plugin --profile web add dsh-inherit
若 npm 包尚不可用,也可以从本地 checkout 安装:
dsh plugin --profile web add "D:\path\to\dsh-inherit"
装完打开 Settings → General → 导入智能体设置即可。新 bundle 会在短暂延迟后热挂载;如果改动的是宿主模块代码,需要重启 dsh web。
典型用法¶
经过上面的安装步骤,日常导入流程如下:
1、打开 Settings → General → 导入智能体设置;
2、弹窗列出检测到的来源,右侧 toggle 默认全开;
3、展开来源卡片,勾选分类(MCP / Skills …);
4、点「导入所选(预演)」,查看 dry-run 报告(imported / skipped / notes);
5、点「确认写入」,正式应用(写入前先备份)。
只想在本地调试、不落盘时,可以直接用 node --experimental-sqlite 运行 detectSources() 与 runImport(..., { target: 'patch', dryRun: true }):
node --experimental-sqlite -e "
import('./lib/import.js').then(m => {
console.log(JSON.stringify(m.detectSources(), null, 1).slice(0, 2000))
console.log(JSON.stringify(m.runImport([{source:'claude-code',categories:['mcp']}],{target:'patch',dryRun:true}), null, 1).slice(0, 800))
})"
这段命令只做来源扫描和 dry-run 导入,不写入任何文件。
适用场景与注意¶
适合的场景:同时在用 Claude Code / Cursor / Codex / cc-switch,想把已有的 MCP servers 与 Skills 搬进 DSH;希望导入幂等、写前有备份的迁移。
使用前请注意:
1、该插件处于 Developer preview(0.1.0),是社区插件,MIT 许可,与 DeepSeek 无官方关联;
2、插件以当前 dsh 进程的权限运行,安装前应检查源码与许可证;
3、MCP 凭据(env / headers)会以明文写入 cordis.patch.yml 或 ~/.dsh/mcp.json,注意文件权限;${VAR} 引用尚未转换为 !!js process.env.VAR;
4、server 名称须匹配 [A-Za-z0-9_-]{1,32} 且全局唯一;sse / ws 传输的 MCP server 会被跳过并给出警告;
5、暂无 doctor / restore 命令,回滚需手动使用 .bak 文件;
6、暂不迁移 hooks、slash commands、sessions。
小结¶
dsh-inherit 做的事情很聚焦:把散落在四个工具里的 MCP servers 与 Skills 收拢进 DSH,用「预演 + 确认」两步和 .bak 备份把迁移风险压到最低。项目与目录页:
- GitHub:https://github.com/MayBeTheWorld/dsh-inherit
- 社区目录:https://www.skillhub.cn/plugins/MayBeTheWorld/dsh-inherit (独立站点,与 DeepSeek / 幻方无官方从属关系)