前言¶
DeepSeek Harness(DSH)走「一切皆插件」的路线,但社区里很多 MCP 服务器、插件和斜杠命令,最初是为 Claude Code、Codex 等宿主写的。作者若要为 DSH 单独维护一份目录,一个多平台插件往往要带六到八个平台专用目录,DSH 对应的格子常常是空的。常见做法是要求作者再移植一遍,成本高,装上去之后还可能静默失败,用户不知道是配置问题还是 DSH 不支持。
下面介绍社区维护的 dsh-babel(维护者 Oliveryfaso,分类:工作流):它读取其他生态里已有的 .mcp.json 和 commands/,在 DSH 侧做发现、归一化、预检和可选注册,并在安装或加载阶段给出「可用 / 需密钥 / 不可用」及具体原因。插件并非 DeepSeek AI 官方产品;目录页见 SkillHub 插件页,源码与说明见 GitHub:Oliveryfaso/dsh-babel。
这是什么¶
dsh-babel 是 DSH 插件(Cordis 宿主插件形式,MIT 许可证,当前 package 版本 1.0.0)。一句话定位:让 DSH 直接使用其他 AI 编码工具生态里的 MCP 服务器、插件与斜杠命令——读它们已有的配置,而不是要求插件作者为 DSH 重新移植;并明确报告哪些能跑、哪些缺密钥、哪些跑不了。
思路是把「每个平台一份目录」的 N×M 移植问题,尽量收成「读一份已有配置」的 N×1:扫描 Claude Code 与 Codex 插件目录下的 .mcp.json,以及 .md / .toml 形式的斜杠命令;根目录可通过配置覆盖,留空时使用默认的 Claude / Codex 插件目录。
核心功能¶
发现与归一化¶
- 发现:遍历文件系统,找到
.mcp.json与斜杠命令声明。 - 归一化:把多种
.mcp.json方言(带mcpServers包装的、裸顶层的、Codex 专有键等)降成一套中间表示,便于后续预检与注册。
预检与兼容性报告¶
预检分四类,把「静默失败」变成「明确原因」:
- 依赖命令是否在
PATH上。 - 守护进程是否在跑(例如 Docker socket)。
- 密钥是否可用。
- 版本是否未固定。
每个 MCP 服务器会归入 可用 / 需密钥 / 不可用,并附带具体原因。首次加载且开启报告时,日志里会出现类似下面的汇总(示例来自 README,机器环境不同数字会变化):
=== dsh-babel 兼容性报告 ===
文件: 28 服务器: 28
方言: {"bare":14,"wrapped":14}
传输: {"stdio":17,"streamable-http":11}
结论: 可用 14 / 需密钥 5 / 不可用 9
✗ 不可用 (9):
laravel-boost [stdio] BLOCKED
- [command] command not on PATH: php
terraform [stdio] BLOCKED
- [daemon] docker installed but not running (no socket / probe failed)
- [secret] missing credential: TFE_TOKEN
codex_app [stdio] BLOCKED
- [env] depends on CODEX_MCP_NODE_PATH (other-harness runtime), not available in DSH
注册与密钥¶
在关闭 dry-run 并打开对应开关后:
- 命令注册:把发现到的斜杠命令注册进 DSH,支持
{{args}}/$ARGUMENTS/$1等参数替换。 - MCP 注册:连接 stdio 或 streamable-http 服务器,通过 DSH 的
createMcpToolDefinition注册工具;仅预检通过(severity: ok)的服务器会被注册。 - 密钥解析:优先
process.env;macOS 上仅对白名单内的 GitHub token 家族走钥匙串,不做无差别翻钥匙串。
配置项由 schemastery schema 声明,设置界面可渲染;另有 locale/ 文案与图标用于卡片展示。
兼容矩阵(诚实版)¶
README 中的覆盖范围如下,便于判断预期:
| 外部形态 | 覆盖 | 说明 |
|---|---|---|
MCP .mcp.json(stdio) |
高 | 免密钥、依赖命令存在的,基本可用 |
MCP .mcp.json(http/sse) |
高 | 依赖 bearer token 的会标「需密钥」 |
| MCP(依赖宿主运行时变量) | 有损 | CODEX_* / CLAUDE_* 等对方宿主注入的变量,DSH 没有,标为不可用 |
| MCP(OAuth) | 无对应 | oauth_resource 等 DSH 无等价物,丢弃并告知 |
技能 skills/*/SKILL.md |
高 | 格式统一(由 skills-manager 等已有实现覆盖) |
斜杠命令 commands/* |
已实现 | 发现 + 归一化 + 报告 + 注册 |
| Hooks | 有损 | DSH 仅 7 个点、仅 command handler |
子代理 agents/* |
降级 | DSH 无注册接口,只能降级为技能 |
| 插件 UI / mods | 不支持 | 须用 DSH client 插件重写,无法移植 |
安装¶
安装命令以仓库 README 为准:
# 从 GitHub
plugin_manager install_bundle github:Oliveryfaso/dsh-babel
# 或本地目录
plugin_manager install_bundle /绝对/路径/dsh-babel
也可以在 DSH Desktop 中:设置 → 插件 → 添加插件,填入仓库地址或本地路径。
安装后默认 dry-run:只在日志里打印兼容性报告,不注册 MCP 与斜杠命令。需要先确认报告再决定是否真注册。
运行环境要求 Node.js >=20(见 package.json)。
配置与启用真注册¶
在 设置 → 插件 → dsh-babel 中可改下列项(默认值如下):
| 配置项 | 默认 | 说明 |
|---|---|---|
roots |
[] |
扫描根目录;字符串路径或 { source, path }。留空时使用默认的 Claude / Codex 插件目录 |
dryRun |
true |
只报告,不注册。要真正注册必须先设为 false |
logReport |
true |
把兼容性报告打印到日志 |
registerCommands |
false |
注册发现到的斜杠命令(需 dryRun: false) |
registerMcp |
false |
注册预检通过(severity: ok)的 MCP 服务器(需 dryRun: false) |
确认报告无误后,开启真注册可参考:
config:
dryRun: false
registerCommands: true
registerMcp: true
典型步骤:先保持 dryRun: true,看日志里的兼容性报告;补齐 PATH、守护进程、环境变量或密钥;再把 dryRun 设为 false,按需打开 registerCommands / registerMcp。
本地不经过完整 DSH 宿主、仅想打一份报告时,可在插件目录执行:
node bin/dsh-babel.mjs
适用场景与注意¶
适合谁:已经在本机安装 Claude Code 或 Codex 侧插件、希望 DSH 复用同一套 .mcp.json 与 commands/ 的开发者;需要先看清「能跑 / 缺密钥 / 跑不了」再决定是否启用注册的场景。
权限与安全:插件以当前 DSH 进程权限运行,会读取磁盘上的第三方插件配置并可能启动子进程连接 MCP。安装前请自行查看 源码仓库 与 MIT 许可证,只启用你信任的来源。
局限:依赖对方宿主注入的环境变量、OAuth 形态 MCP、以及插件 UI / mods 无法通过本插件等价移植;Hooks 与子代理也有损或降级,见上表。
结尾¶
dsh-babel 的价值在于两点:用已有配置减少为 DSH 单独维护一份插件树的工作量;用预检和兼容性报告减少装完才发现跑不起来的情况。社区目录 SkillHub 与 GitHub Oliveryfaso/dsh-babel 可获取安装方式与更新;与 DeepSeek / 幻方无官方从属关系。