dsh-wolfram-nb
DiscoveredMathematica kernel bridge for DeepSeek Harness — call Wolfram Language as a tool and watch formulas render beside the conversation.In DeepSeek Harness, go to "Plugin" - "Add Plugin" - enter "dsh wolfr
Wolfram 笔记本插件(@nashihang777/dsh-wolfram-nb)

DeepSeek Harness 插件:把本地安装的 Mathematica 变成智能体可调用的工具,并把 Wolfram 笔记本实时渲染在对话窗口右侧。 Mathematica kernel bridge and live notebook panel for DeepSeek Harness.
把本地安装的 Mathematica 变成 DeepSeek Harness 的"自己的工具":智能体可以像调用其它工具一样调用 Wolfram Language,结果会实时渲染在对话窗口右侧的笔记本面板中。
独立项目声明:本插件与 Wolfram Research 无隶属关系,也未获其背书。 Mathematica 与 Wolfram Language 是 Wolfram Research, Inc. 的商标。 插件不包含、不重新分发任何 Wolfram 软件或资源;使用时需要用户自行安装并授权 Mathematica。
安装与分发
从 npm 安装(推荐):
plugin_manager install_bundle target=@nashihang777/dsh-wolfram-nb@1.2.0
版本号可省略(默认 latest),或用 @1.2.0 固定版本。
从 GitHub 安装:克隆仓库后,把仓库根目录作为 bundle 安装:
git clone https://github.com/nashihang777/dsh-wolfram-nb.git
plugin_manager install_bundle target=<克隆目录的绝对路径>
从 tgz 安装:npm pack 生成 nashihang777-dsh-wolfram-nb-<version>.tgz,解压后把目录作为 bundle 安装。
分发包只含插件代码(约 25 KB),不包含任何 Wolfram 组件。
目标机器需要 Windows + 可交互的 math.exe(Mathematica 或含 math.exe 的 Wolfram Engine)。
维护者发布流程(标签触发 GitHub Actions 自动发 npm)见 RELEASING.md。
能力
| 能力 | 说明 |
|---|---|
wolfram_eval | 在常驻的本地内核里执行任意 Wolfram Language 代码(一个或多个单元),支持符号计算、微积分、方程求解、矩阵、单位、数据处理、文件导入导出等 |
wolfram_notebook | open 渲染已有的 .nb 文件;reset 重启内核;status 查看内核状态 |
| 面板内选择笔记本 | 面板顶部「打开…」列出工作区(根目录、wolfram-notebooks/、当前笔记本目录)里的 .nb,点选即渲染;也可直接输入路径 |
/wolfram-open 命令 | 在输入框执行 /wolfram-open <路径>,不产生模型消息,直接切换面板内容 |
| 右侧笔记本面板 | 在对话旁实时渲染标题、正文、输入单元、MathML 公式、图形(PNG)、消息 |
| 持久内核 | 每个会话一个常驻 math.exe,变量与函数定义跨调用保留 |
.nb 导出 | 每次计算自动生成真正的 Mathematica 笔记本文件(wolfram-notebooks/) |
架构
Host 插件 (index.js)
├─ 每个会话一个 math.exe -noprompt 进程
├─ bridge.wl:文件式 JSON 协议(请求/响应各一个文件,stdout 只走标记行)
├─ 把结果写成 .dsh-wolfram/latest.json(含 publishedAt、MathML、base64 PNG)
└─ 注册 wolfram_eval / wolfram_notebook 两个工具
Client 插件 (client.js)
├─ 注册右侧栏 Tab 类型 wolfram-notebook(同时注册引导页入口)
├─ 面板轮询 latest.json,按 publishedAt 增量刷新
└─ 自动打开:检测到新的 publishedAt 时调用 ctx.sidebarRight.openTab
选择 CLI/内核桥接而不是 MCP 的原因:MCP 服务器需要额外的 paclet 与进程,工具集合固定;直接驱动内核对 Mathematica 版本、输出格式(MathML/PNG/TeX)、会话状态和渲染数据都有完全控制,而且没有额外依赖。内核仍然是一个完整、可交互的 Wolfram 会话,能力上等价于 math.exe 命令行。
使用
智能体侧直接调用工具即可:
wolfram_eval title="巴塞尔问题"
cells=[
{"type":"title","text":"巴塞尔问题"},
{"type":"input","code":"Sum[1/n^2, {n, 1, Infinity}]"},
{"type":"input","code":"Plot[Sin[x]/x, {x, -10, 10}]"}
]
面板会自动打开并显示公式与图形;同时生成
wolfram-notebooks/<标题>-<时间>.nb,可以直接用 Mathematica 打开继续编辑。
渲染已有笔记本:
wolfram_notebook action="open" path="wolfram-notebooks/xxx.nb"
面板里也可以直接切换:点顶部「打开…」→ 从列表选一个 .nb(或输入路径)→ 面板立即渲染,
同时把该文件设为面板的当前文档。/wolfram-open <路径> 是同一能力的命令形式,
可以直接在输入框执行,不会产生模型消息。
手动打开面板:右侧栏的"+"→ Wolfram 笔记本(面板注册了引导页入口)。
配置
在 profile 的 cordis.patch.yml 中覆盖本行的 config:
- id: wolfram-notebook
name: '@nashihang777/dsh-wolfram-nb'
config:
kernel: 'C:\Program Files\Wolfram Research\Wolfram\15.0\math.exe'
timeoutMs: 180000
idleMs: 1800000
| 字段 | 默认 | 说明 |
|---|---|---|
kernel | 自动探测 | math.exe 路径、内核所在目录,或包含版本子目录的产品目录 |
timeoutMs | 180000 | 单次请求超时,超时会杀掉内核 |
idleMs | 1800000 | 空闲内核回收时间 |
内核探测顺序(适配不同安装位置)
kernel-discovery.js 按以下顺序查找可用的 REPL 内核,命中即止:
- 插件配置
config.kernel(可为 exe、内核目录或产品目录;指定后必须有效,否则报错并提示) - 环境变量
WOLFRAM_KERNEL/MATHEMATICA_KERNEL - Wolfram 安装器写入的注册表记录:
HKLM/HKCU\SOFTWARE\Wolfram Research\Installations\*, 读取ExecutablePath/InstallationDirectory/ProductVersion, 按版本从高到低取同目录下的math.exe - 标准安装布局:
%ProgramFiles%、%ProgramW6432%、%ProgramFiles(x86)%下的Wolfram Research\{Wolfram, Mathematica, Wolfram Engine, Wolfram Player}\<版本> PATH中的math.exe(Wolfram Engine 常见)
因此客户把 Mathematica 装在 D:\Apps\Wolfram\15.1、同时装了多个版本、或装的是
Wolfram Engine,都能自动找到;只有"没有注册表记录且不在标准目录"的绿色/手工拷贝安装
才需要显式配置:
config:
kernel: 'D:\Apps\Wolfram\15.1'
内核宿主要求是可交互的
math.exe/MathKernel.exe(从 stdin 读表达式)。WolframNB.exe、wolfram.exe、WolframKernel.exe只用于定位安装目录,不会被直接启动 (实测WolframKernel.exe -noprompt不响应 stdin REPL)。 注册表探测仅适用于 Windows;macOS/Linux 请用config.kernel或WOLFRAM_KERNEL指向math。
wolfram_notebook action="status" 会返回实际使用的内核路径和发现方式,便于排障。
数据位置
.dsh-wolfram/latest.json:面板渲染的文档(会话内、工作区内).dsh-wolfram/tmp/:内核请求/响应的临时文件wolfram-notebooks/*.nb:导出的 Mathematica 笔记本
已知限制
- 交互式前端对象(
Manipulate、Dynamic、笔记本界面本身)无法在网页里交互;表达式会以静态公式或普通文本显示。 - 少数表达式(如
Quantity)没有 MathML 导出,面板回退为InputForm文本;内核仍返回正确的 TeX。 - 图形需要前端进程做光栅化;首次绘图会慢 1–3 秒。
- 同一工作区的多个会话共享
latest.json(内核仍按会话隔离)。 - 页面刷新后,第一次自动展开右侧栏需要一次用户手势(或点右侧栏的"+"选择 Wolfram 笔记本); 之后每次新的计算都会自动展开并聚焦面板。
- 旧版本导出的
.nb不可恢复:早期实现用MakeBoxes在Module内装箱,输出单元被写成了value$…占位符($是变量名的一部分,无法反推原值)。请重新计算生成新的笔记本; 当前版本已改用ToBoxes,新文件正常。
修复记录
- 输出单元写成
value$…:MakeBoxes的HoldAllComplete让Module局部符号被原样装箱。 导出改用ToBoxes[value, StandardForm](先求值再装箱)。 - 重新打开
.nb时图形不渲染:GraphicsBox里存的是盒式基元,直接转 MathML/文本会得到乱码。 导入改为MakeExpression还原Graphics/Graphics3D/Legended表达式后用前端重新光栅化为 PNG; 文本/公式单元仍走 MathML。
开发说明
bridge.wl 的协议:
stdin: WolframBridge`EvalFile["<请求 JSON 文件路径>"];
stdout: @@WB_READY@@<version>
@@WB_BEGIN@@<id>
<计算过程中 Print/消息产生的行>
@@WB_DOC@@<id>@@<响应文件路径或 base64>
请求 JSON 使用纯 ASCII(非 ASCII 字符以 \uXXXX 转义写入),响应为 base64 编码的 JSON,
避免 Windows 控制台编码差异。修改 bridge.wl 后执行一次 wolfram_notebook(..., action="reset")
或重启内核即可生效;修改 client.js 后需要重新加载插件(本仓库通过 plugin_manager 切换启用状态完成)。
许可证与商标
- 本插件采用 MIT 许可证。 版本与修复记录见 CHANGELOG.md。
- 与 Wolfram Research 无隶属关系,未获其背书;Mathematica、Wolfram Language 是其注册商标, 本文仅作描述性使用。
- 插件不包含、不重新分发任何 Wolfram 软件、paclet、文档或品牌资源;运行时调用用户本地已授权的 Mathematica。把插件部署为对外多租户计算服务可能不符合 Wolfram 的许可条款,请部署者自行确认。
Comments
Loading…
Similar plugins
by beijingwahw
DeepSeek Companion — DeepSeek Harness 官方伴侣插件:对话导出/交接摘要/成本优化/全局检索 + 执行轨迹分析、Prompt 工程工作台、多模型竞技场、任务编排、安全与审计(E–J 九大模块,Cordis 插件化)。
★ 6
↓ 977/wk
MIT
TypeScript
Sep 19, 2026
dsh plugin --profile web add dsh-companionby 1035041186
dsh-llm-ollama 是一个为 DeepSeek Harness(dsh)开发的社区插件,让 Harness 通过 Ollama 原生协议(/api/chat) 接入本地 Ollama 服务。即插即用:不改动 dsh 官方任何文件,安装后自动在「设置」中多出一个 Ollama 页面,并在会话模型选择器中提供该提供方的模型。
★ 5
MIT
JavaScript
Sep 10, 2026
dsh plugin --profile web add @zhangyi/dsh-llm-ollamaby tonyzdev
DeepSeek Harness plugin: per-model working languages, with DeepSeek translating prompts and replies
★ 31
MIT
JavaScript
Nov 4, 2026
dsh plugin --profile web add dsh-language-bridgeby JoukoPuro
一个 DeepSeek Harness(DSH)插件: 在 Web 输入框的工具行中添加一个 ✨ 图标按钮。点击后选择打磨风格,已接入的大模型 会把你草稿中的提示词改写得更专业、更易被 AI 理解 。A DeepSeek Harness plugin: icon-only composer button that rewrites your prompt via the connected LLM
★ 8
↓ 121/wk
MIT
JavaScript
Oct 17, 2026
dsh plugin --profile web add dsh-prompt-polishby lijma
帮助寻找DSH插件,引导安装,并持续在DeepSeek Harness内收集插件评分、FAQ、踩坑记录并分享到社区
★ 0
MIT
JavaScript
Aug 15, 2026
dsh plugin --profile web add @dshindex/dsh-plugin-marketplaceby Amouren7
DeepSeek Harness 插件管家:在「设置 → 插件」新增标签页,用人话说明每个插件是做什么的,提供一键停用/启用(热生效)与安全卸载;同一页的「技能」分段盘点所有技能、标明唯一可用的触发方式,并给出两个真开关(模型自动加载 / 斜杠命令)。Plugin and skill manager for DeepSeek Harness: plain-language catalogs, one-click hot enable/disable, rollback-guarded uninstall, and per-skill invocation switches.
★ 0
MIT
JavaScript
Sep 11, 2026
dsh plugin --profile web add dsh-plugin-desk