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