dsh-babel:在 DSH 里复用其他 AI 编码工具生态的 MCP 与斜杠命令

前言

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 专有键等)降成一套中间表示,便于后续预检与注册。

预检与兼容性报告

预检分四类,把「静默失败」变成「明确原因」:

  1. 依赖命令是否在 PATH 上。
  2. 守护进程是否在跑(例如 Docker socket)。
  3. 密钥是否可用。
  4. 版本是否未固定。

每个 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 / 幻方无官方从属关系。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye