前言¶
在 DeepSeek Harness 里做数值计算或脚本调试时,常见做法是依赖 MCP 类 MATLAB 插件,把执行交给智能体工具;或者自己在终端里开 matlab -batch,和侧栏、工作区变量脱节。沙箱下的 shell 还可能在 MathWorks 配置目录无法写入时让 MATLAB 直接退出,控制台为空。
dsh-matlab-runner 走的是另一条路:在右侧边栏提供接近 VS Code 的 .m 编辑与运行面板,由宿主进程以系统用户权限拉起常驻 MATLAB 会话,图形窗口可在桌面打开,工作区变量可查看和写回;智能体侧另有 matlab_run 工具,与面板共用同一会话。下面介绍它是什么、能做什么,以及如何安装与打开。
这是什么¶
dsh-matlab-runner 是社区维护的 DSH 客户端(UI)插件,维护者为 seally-web,npm 包名 dsh-matlab-runner,当前版本 0.2.2,许可证 MIT(以 package.json 为准)。它不是一个「只包一层 MCP」的代理:面板本身是产品,宿主负责持久会话与 /matlab/api/*,浏览器端负责编辑器、控制台、变量与图形预览。
一个包内分成两半:
| 部分 | 入口 | 职责 |
|---|---|---|
| Host | lib/index.js、lib/runner.js |
持久 MATLAB 会话、运行注册表、API、注册 matlab_run 工具 |
| Browser | lib/client.js |
侧栏页:编辑器、脚本选择、Run/Stop/Save、控制台、图形缩略图、设置与引导卡片 |
与基于 MCP 的 MATLAB 插件相比,侧栏编辑与运行是主路径;智能体仍可通过 matlab_run 在同一工作区执行代码。
核心功能¶
两种运行模式¶
session(默认) — 长期运行的matlab -nodesktop -nosplash,经 stdin 喂命令。首次启动约 6–9 秒,之后单次运行约 10–30 ms,变量在多次运行间保留;figure会在桌面打开,面板同时展示导出的 PNG。输出在脚本运行过程中流式写入控制台。batch— 每次matlab -batch,无界面,脚本结束进程退出(单次约 15–20 秒)。适合偏 CI、跑完不留状态的场景。
侧栏与 matlab_run 共用同一会话,模型执行的代码与你手动运行的代码落在同一 MATLAB 工作区。
为何能在智能体沙箱外跑通 MATLAB¶
MATLAB 启动前需要向用户目录下的 MathWorks 支持路径写入配置。在 workspace-write 沙箱里,matlab -batch 可能以退出码 1 结束且控制台为空;智能体拥有的 PTY 同样受沙箱约束。本插件的 Host 通过 node:child_process 从宿主进程拉起 MATLAB,使用系统用户权限,不依赖把整段会话改成 Full access,侧栏即可正常运行。
面板能力(README 已列项)¶
- 文件树 — 从面板
workdir浏览,懒加载子目录;可挂载多个绝对路径根目录(类似 MATLAB 的 add to path),持久化在matlab-runner.json的extraRoots。 - 编辑器 — 行号、MATLAB 语法高亮,
Tab为两空格;Run(⌘/Ctrl+Enter)将缓冲区写到<workdir>/.dsh-matlab-runner/<stem>.m并在会话中执行。 - 脚本选择器 —
scriptDir下所有.m与未保存草稿;切换文件或标签页会记住各缓冲区内容。 - 变量 — 展示 base 工作区名称、类型、尺寸;双击可编辑字面量并通过
evalin('base', ...)写回;每次运行后自动刷新(经whos写入 JSON,避免被控制台截断)。 - 图形 — 运行产生的
.png/.jpg/.svg/.gif/.webp在控制台下方以缩略图显示;session模式下桌面也会弹出 figure 窗口。 .mlx预览 — 本地解析(ZIP + OOXML,lib/livemd.js),只读预览标题、代码块与输出;预览时 Run/Save 禁用。- Stop — 中止当前脚本;
session模式下会重启 MATLAB 会话。 - Save / 自动保存 — 可写到
scriptDir;成功运行后可自动落盘,可通过autoSave或设置关闭。 - 设置 — 运行模式、图形预热、路径、超时、配置文件位置,以及 Restart session。
运行环境要求 Node >= 20(见 package.json engines)。
安装与启用¶
Web 侧(README 给出的 npm 安装方式):
dsh plugin --profile web add dsh-matlab-runner
桌面版 DSH 的 profile 由 Electron 应用管理,需用仓库内脚本把包复制进 profile、写入依赖与 dsh.profile.bundles、种子配置并重新 compose。在插件目录或仓库根执行:
node bin/install-local.sh
等价路径:plugins/dsh-matlab-runner/bin/install-local.sh。脚本会把内容放到 ~/.dsh/profiles/desktop/node_modules/dsh-matlab-runner 等位置。
开发时若只改了 Host 侧文件,可通过改动 ~/.dsh/profiles/desktop/package.json 中的 bundle 行触发重载(无需重启应用)。也可执行:
plugins/dsh-matlab-runner/bin/reload-host.sh
然后 ⌘/Ctrl+R 刷新页面以更新浏览器端;若侧栏仍是旧 UI,再考虑重启应用。
典型用法¶
- 安装并加载插件后,打开右侧边栏的 +,选择 MATLAB 运行器 / MATLAB runner 卡片;首次访问后标签会固定在侧栏条上。
- 全局快捷键:⌘/Ctrl+Shift+M 打开面板(Web 构建为 ⌘/Ctrl+Shift+Alt+M)。
- 在文件树中打开或新建
.m,编辑后 ⌘/Ctrl+Enter 运行,在下方控制台查看输出与耗时;若有绘图,查看缩略图或桌面 figure。 - 在 Σ 变量 中检查工作区;需要时用写回功能改变量后继续迭代。
- 若希望智能体与面板共享状态,在对话中依赖插件注册的
matlab_run工具(与会话模式下的 workspace 一致)。
路径、超时、scriptDir、workdir 等可在面板 Settings 中调整;具体字段以插件配置文档与 matlab-runner.json 为准。
适用场景与注意¶
适合:已在本地安装 MATLAB、希望在 DSH 内用侧栏完成 .m 编辑/运行/看图/查变量,并偶尔让智能体在同一会话里跑短脚本的用户;需要桌面 figure 时应使用默认 session 模式。
注意:
- 插件 Host 以当前 DSH 宿主进程对应的系统用户权限启动 MATLAB,安装前请阅读 GitHub 仓库 源码与 MIT 许可证,确认符合你的安全与合规要求。
- 社区目录 skillhub.cn 插件页 与 DeepSeek / 幻方无官方从属关系;DSH 生态是「一切皆插件」,本文事实以仓库 README 与 package.json 为准。
batch模式较慢且无图形窗口;Stop 在 session 模式下会重启会话,长时间运算需自行权衡。- 仅文本扩展名可在编辑器中打开;二进制文件会提示
binary。
结尾¶
dsh-matlab-runner 把 MATLAB 编辑、常驻会话、工作区变量、图形与 .mlx 预览收进 DSH 右侧栏,并用宿主权限规避沙箱下 MATLAB 无法写配置目录的问题;智能体通过 matlab_run 与面板共享工作区。进一步了解与 issue 见: