前言¶
在 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。