dsh-toolboxes:用 MCP 把 ffmpeg、ripgrep、jq 等 CLI 接进 DSH

前言

在 DeepSeek Harness(DSH)里做客户端能力时,常见做法是:要么让智能体只能动沙箱内的文件,要么在每台机器上手工装好 ffmpeg、ripgrep、fd、jq、yt-dlp,再写一层专用桥接。前者对音视频、全文搜索、JSON 处理力不从心;后者每换一家宿主(DSH、opencode、Claude Code)就要重复造轮子。

dsh-toolboxes(GitHub:haikuotianko/dsh-toolboxes)走另一条路:做一个可移植的 MCP 工具箱,按当前系统下载并登记命令行工具,AI 通过 MCP 直接调用;同时在 DSH 里提供 Web 客户端插件,用同一套管理页查看安装状态、实时控制台和脚本归档。维护者为 haikuotianko,许可证 MIT;npm 包名 dsh-toolboxes(与磁盘目录 ~/.dsh/dsh-toolbox 等历史命名并存,老数据不会丢)。

这是什么

一句话:把常用 CLI 装成 MCP 可调用工具,并带实时控制台的管理页。

架构上,AI 经 MCP 连到 toolbox 服务,由服务负责下载、安装、运行 CLI;运行日志落在 <root>/runs/*.log,管理页(含 DSH 插件页)读同一份状态:

AI ──MCP──▶ toolbox ──▶ 下载/安装/运行 CLI 工具
                 │
                 └─<root>/runs/*.log ──▶ 管理页(实时控制台、进度、速度、取消)

选用 MCP 的原因在 README 里写得很直白:同一份服务可以同时服务 DeepSeek Harness、opencode、Claude Code、Codex,不必为每个宿主单独实现工具层。DSH 侧则以 客户端(web profile) 插件形式注入管理界面(依赖 @deepseek-ai/dsh-client-ui-renderer 等),package.json 要求 Node ≥ 20、DSH ≥ 0.2.1-rc.2。

核心功能

工具生命周期

管理页与独立 toolbox -ui 功能一致,主要包括:

  • 工具:已安装列表、可安装目录、多下载源与测速、启用/停用/卸载、导入本机已有程序。
  • 命令运行:展示所有正在跑的命令(含 AI 通过 MCP 发起的),带工具名、参数、耗时和实时控制台;\r 进度行按终端语义刷新,yt-dlp、ffmpeg 等的百分比与 ETA 可直接读;「取消」会结束子进程。
  • 脚本:经 toolbox_save_script 归档的通用脚本,可在页面填参数运行。
  • 语言版本:写脚本前报告本机真实语言与版本(如 PowerShell 5.1 与 7 的差异),结果缓存在 <root>/runtimes.json(默认 12 小时);可选精确模式对每个语言跑 --version。

内置 MCP 工具(节选):

MCP 工具 作用
toolbox_list 已装工具 + 当前系统可装条目及下载源
toolbox_install 按目录安装,多源失败自动切换
toolbox_run 运行已装工具(默认 120s 超时,上限 600s)
toolbox_remove 卸载
toolbox_runtimes 本机语言/编译器版本
toolbox_save_script 归档脚本供后续 toolbox_run 调用

内置目录覆盖 ffmpeg、ripgrep、fd、jq、yt-dlp 等;用户可在 <root>/catalog.json 覆盖或追加条目(含多平台 sources、sha256 校验等)。

DSH 插件侧

插件首次使用会从 GitHub Releases 拉取匹配平台的二进制,校验 SHA256SUMS 后缓存在 <toolbox root>/bin/。自定义构建可设环境变量 TOOLBOX_BIN。官网文档:https://haikuotianko.github.io/dsh-toolboxes/(国内可用 jsDelivr 上的 docs/index.html 镜像)。

DeepSeek Harness 管理页顶部有「接入 AI」一节,会按本机路径生成可粘贴的 MCP 配置;也可用 toolbox -setup -patch 配合 cordis.patch.yml 一次性写入(npm 装时包名为 dsh-toolboxes)。

安装与启用

作为 DSH 插件(推荐,带管理页)

在已有 DSH 且使用 web profile 的前提下:

dsh plugin --profile web add dsh-toolboxes

不走 npm、直接从仓库安装时,README 给出的命令为:

# dsh plugin --profile web add github:haikuotianko/dsh-toolboxes

当前 npm 版本在资料中为 0.3.0。

仅用二进制或 Go 安装(可不装 DSH 插件)

  • Releases 下载对应平台压缩包,将 toolbox(Windows 为 toolbox.exe)放入 PATH。
  • 或 Go ≥ 1.25:go install github.com/haikuotianko/dsh-toolboxes@latest(产物名为 dsh-toolboxes,可自行重命名为 toolbox)。

接到 AI 客户端

toolbox -mcp                          # stdio MCP
toolbox -http 127.0.0.1:8770          # MCP(streamable HTTP) + JSON API + 管理页
toolbox -ui                           # 仅管理页

数据目录默认为 $TOOLBOX_ROOT,未设置时为 ~/.toolbox(插件场景下与 ~/.dsh/dsh-toolbox 等历史路径并存,以实际配置为准)。

典型用法

在 DSH 里打开管理页

安装 web 插件后,按 DSH 客户端入口进入工具箱页面,可安装 jq、ripgrep 等条目,并在「命令运行」里查看 AI 触发的任务输出。

让 AI 安装并调用 jq(概念示例)

MCP 侧安装与运行形态在 README 中约定为 JSON 参数,例如安装后执行:

toolbox_run { tool: "jq", args: [".name", "data.json"] }

(具体 args 以工具目录里 tools/<id>/README.md 与 usage 字段为准。)

自定义 catalog 追加工具

在 <root>/catalog.json 写入新 id 或覆盖同名内置项,字段含 binaries、sources(os/arch、URL、archive、sha256 等)。同一系统内 sources 顺序即重试顺序;不支持 tar.xz(Linux 部分 ffmpeg 官方包需注意换源)。

HTTP JSON API(-http / -ui)

管理页调用同一组 API,例如 GET /api/state、GET /api/runs、POST /api/run、POST /api/install;MCP streamable HTTP 在同端口 /mcp。

适用场景与注意

适合谁:需要在智能体工作流里稳定使用 ffmpeg、ripgrep、fd、jq、yt-dlp 等 CLI,又希望一处安装、多宿主复用(MCP),并在 DSH Web 里目视确认长任务进度的开发者。

安全模型(必读):

  • 工具箱会下载并执行程序,且不经过 DSH 文件沙箱——行为等价于你在本机终端用当前用户跑同名命令。
  • 目录未写 sha256 时,下载默认不校验完整性,信任建立在 URL 上;企业环境建议自建镜像或补校验。
  • 内置源中部分使用第三方 GitHub 镜像(如 gh-proxy),介意可在 catalog.json 改官方地址。
  • 管理页仅监听回环地址,不要暴露到公网。

已知限制(来自 README):tar.xz 不支持;下载走系统代理;Windows 未签名二进制可能触发 SmartScreen;管理页文案目前以中文为主。

装插件前请自行查看 GitHub 仓库 源码与 MIT 许可证;DSH 插件目录(如 SkillHub 条目)为社区收录,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-toolboxes 把「装 CLI → 登记成 MCP 工具 → 看实时控制台」收进一个工具箱:DSH 用户用 dsh plugin --profile web add dsh-toolboxes 即可带上 Web 管理页;其他 MCP 客户端也可单独跑 toolbox -mcp。

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

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

Xiaoye