dsh-wolfram:DeepSeek Harness 下的 Wolfram/AgentTools 集成

前言

DeepSeek Harness (DSH) 采用“一切皆插件”的理念,允许开发者将各种模型和工具能力挂载到工作流中。Wolfram 官方提供的 Wolfram/AgentTools MCP Server 是一个功能完备的数学与计算工具集,但在 DSH 环境下直接集成需要解决内核发现、进程生命周期管理以及权限审批等中间问题。

dsh-wolfram 是一个集成 bundle,旨在填补这些缺口。它不重写任何一方:底层协议由 DSH 通用客户端处理,Wolfram 工具由官方 Paclet 提供。本插件主要处理三件事:自动发现内核、管理 Wolfram 进程树(仅管理自身启动的进程)、以及对接 DSH 的原生权限策略。

核心功能

本插件提供以下能力:

  • 内核发现:自动探测本机 Wolfram 可执行文件(支持注册表、标准目录、wolframscript),也支持显式覆盖。
  • Windows 透明 stdio supervisor:启动并管理 Wolfram 进程。插件关闭或重载时,只会终止自己启动的进程树,不会影响已打开的 Mathematica 前端或其他客户端的内核。
  • DSH 原生权限策略:将工具调用纳入 DSH 的审批链。未知工具默认为 ask,已知工具根据配置决定是否需要审批。
  • WSL 复用支持:支持在 WSL 中复用 Windows 侧的 Mathematica,配置 POSIX 路径以避免冲突。
  • 图像块转发:支持 DSH 0.1.1-rc.2+ 版本的图像块转发机制,原始 MCP 值会被保留。
  • 离线依赖构建:支持基于 docs/offline-dependencies.json 的离线安装。

前置条件

在使用前,请确保满足以下环境要求:

  • DeepSeek Harness:版本需在 0.1.1-rc.2 或 0.1.0-rc.5 以上。
  • Node.js:版本要求 ^22.19 || >=24。
  • Wolfram 环境:需安装 Wolfram 桌面产品或 Wolfram Engine,并安装 Wolfram/AgentTools Paclet。
    PacletInstall["Wolfram/AgentTools"]

安装

通过 DSH 的插件命令安装此 bundle:

dsh plugin --profile <你的 profile> add D:\dsh-dev\dsh-wolfram

安装完成后,dsh plugin 会在 profile 目录初始化依赖,并将插件追加到 dsh.profile.bundles 列表中。确认配置生效:

dsh --profile <你的 profile> --dump-config

输出中应出现 id: wolfram 与 id: wolfram-permission。

使用说明与默认行为

安装后,DSH 会默认连接内置的 WolframLanguage server。模型会看到 7 个工具,命名空间统一为 mcp__wolfram__ 前缀。

所有工具默认需审批 (ask),因为这些操作具有副作用(如读写文件、执行代码)。未列出的新工具默认也是 ask。只有 WolframLanguageContext 和 SymbolDefinition(只读元数据)被设为 delegate,直接交给后续策略处理。

注意:Wolfram 工具不在沙箱中,可执行任意代码、读写文件。在部署时应谨慎配置权限策略。

配置项

配置文件位于 $DSH_HOME/profiles/<profile>/cordis.patch.yml。主要有两行配置:id: wolfram 和 id: wolfram-permission。

1. id: wolfram 行

控制内核的发现与启动。

字段 默认值 说明
serverName wolfram 工具名命名空间
mcpServerName WolframLanguage 启动的内置 Server 名称
command 自动发现 显式指定可执行文件路径
graceMs 1000 关闭 stdin 后等待进程退出的时间
recordDirectory $DSH_HOME/.dsh-wolfram Supervisor 记录子进程的位置
reclaimOrphans true 装载时回收残留的进程树
probeWolframScript true 是否启用 wolframscript 探测(较慢)

2. id: wolfram-permission 行

控制审批策略。

字段 默认值 说明
unknown ask 未知工具的决策
delegate [WolframLanguageContext, WolframAlphaContext, SymbolDefinition] 交给后续策略的只读工具

配置示例:指定内核路径并关闭未知审批

- id: wolfram
  config:
    serverName: wolfram
    mcpServerName: WolframLanguage
    command: 'D:\mathematica\Mathematica 15.0\wolfram.exe'
    graceMs: 1000
    reclaimOrphans: true

- id: wolfram-permission
  config:
    serverName: wolfram
    unknown: deny
    delegate: []

WSL 环境复用

如果在 WSL 中使用,需要显式指定路径并关闭自动探测,以避免启动错误的默认 server。

- id: wolfram
  config:
    serverName: wolfram
    mcpServerName: WolframLanguage
    command: /mnt/d/mathematica/Mathematica 15.0/wolfram.exe
    probeWolframScript: false
    recordDirectory: /home/<user>/.local/state/dsh-wolfram
    reclaimOrphans: true

排障

找不到内核

启动时报错 no Wolfram kernel found。检查顺序:
1. 确认 Wolfram 已安装:wolframscript -code '$InstallationDirectory'。
2. 在配置中显式指定 installationDirectory 或 command。
3. 环境变量 DSH_WOLFRAM_COMMAND 也可临时覆盖。

工具为空

检查 Wolfram/AgentTools Paclet 是否安装及版本。可以手动运行 supervisor 测试:

node D:\dsh-dev\dsh-wolfram\src\supervisor-main.js --command 'D:\mathematica\Mathematica 15.0\wolfram.exe' --arg -run --arg 'PacletSymbol["Wolfram/AgentTools","Wolfram`AgentTools`StartMCPServer"][]' --arg -noinit --arg -noprompt

或运行仓库内置的测试:

npm run test:live

进程残留

插件仅管理通过 supervisor 启动的进程。检查时不要按进程名批量杀戮,应对比父进程 ID。正常的 Wolfram 进程其父进程应为 node.exe(运行 supervisor-main.js 的进程)。

总结

dsh-wolfram 插件为 DeepSeek Harness 提供了与 Wolfram 官方工具集的标准化集成路径。它解决了进程隔离、权限控制和环境配置的繁琐细节,让开发者可以直接在 DSH 生态中使用 Wolfram 的计算能力。

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

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

小夜