前言¶
在 DeepSeek Harness(DSH)裏講常微分方程或混沌系統時,常見做法是另開 Jupyter、Desmos 或本地腳本:方程在聊天裏,圖在另一個窗口,模型也讀不到你此刻在算什麼。社區插件 dsh-odestudyplug(倉庫內包名 dsh-ode-lab,側欄顯示「微分方程演化」)把輸入、數值積分和繪圖放進客戶端側欄,並可與聊天同屏;Host 側註冊三個 agent 工具,讓模型讀取或修改面板狀態。下面介紹它做什麼、怎麼裝、怎麼用,以及實現與限制裏值得注意的點。
這是什麼¶
- 維護者:DNZJSJ
- 分類:客戶端(
package.json中dsh.client.platform爲web) - 許可證:MIT
- 目錄頁:https://www.skillhub.cn/plugins/DNZJSJ/dsh-odestudyplug
- 源碼:https://github.com/DNZJSJ/dsh-odestudyplug
一句話:在側欄輸入常微分方程組,實時得到二維相圖或可拖拽旋轉的三維軌跡;面板與聊天可並排,模型通過 ode_lab_snapshot、ode_lab_set、ode_lab_presets 與面板聯動。
核心功能¶
方程輸入與演化¶
- 一行一個方程,支持
dx/dt、dy/dx、y'等寫法;同一方程組裏只能有一個自變量。 - 參數寫在方程上方,可被後續表達式引用。
- 改初始狀態、時間跨度、採樣點或投影軸會即時重算;換方程組時初始狀態會自動對齊變量表(多餘刪除、缺失補 0)。
可視化¶
- 二維相圖 / 三維相空間:三維軌跡可拖拽旋轉、滾輪縮放、雙擊重置視角;換投影軸只重繪、不重積分。
- 六個內置預設:洛倫茲、羅斯勒、洛特卡–沃爾泰拉、阻尼擺、諧振子、範德波爾(可通過
ode_lab_presets列出)。 - 發散處理:解非有限或過大時提前截斷,在斷點處標註(例如「解已發散 · x ≈ 1.723」),而不是畫成噪聲。
- 同屏教學:右下角可將方程面板停靠在會話右側,聊天讓出寬度。
- 主題:顏色取自 DSH 主題變量;面板內不使用
eval,輸入不會執行任意代碼。
與會話聯動¶
面板與 Host 通過本機迴環上的同源 HTTP 橋(/ode-lab/*)通信:
| 工具 | 作用 |
|---|---|
ode_lab_snapshot |
讀取當前方程組、初始狀態、自變量、積分跨度、視圖模式、數值範圍、是否發散;面板未打開時讀最近一次快照並註明「N 秒前的樣子」。 |
ode_lab_set |
修改方程組、初始狀態、跨度、採樣點、二維/三維、投影軸;面板在前臺約 1.5 秒內生效;未打開時命令保留 5 分鐘,打開後立刻應用。 |
ode_lab_presets |
列出內置預設及其方程。 |
面板右上角「問 AI」會把現成提問複製到剪貼板,粘貼進聊天即可。示例問法(來自 README):「看看側欄面板裏現在是什麼系統,講講它爲什麼這樣演化」「把參數 c 改成 12,切到二維相圖」「這個解會不會發散?面板現在顯示到哪一步了」。
實現要點(便於評估與二次開發)¶
- 表達式:自寫詞法與遞歸下降分析,編譯爲閉包,不用
eval/new Function。 - 積分:定步長 RK4,
採樣點 × 8子步;發散判據爲非有限或 |y| > 1e9。 - 繪圖:Canvas 2D;三維爲 yaw/pitch 正交投影;數據用
Float64Array按列存儲。 - 客戶端約 1.5 秒輪詢命令、3 秒心跳;Host 用 8 秒新鮮度判斷面板是否在前臺。
安裝與啓用¶
插件以 bundle 形式裝入 DSH profile。README 給出的安裝方式如下(開發期常用 link;路徑換成你本機 clone 或解壓後的目錄):
# 用 DSH 自帶的 CLI(profile 名換成你自己的)
dsh plugin add "link:/path/to/dsh-odestudyplug"
README 中的示例路徑爲 link:/path/to/dsh-ode-lab,與倉庫目錄名可能不一致,以你本地實際路徑爲準。也可在 Harness 裏通過 plugin_manager 的 install_bundle 指向插件目錄。裝好後側欄會出現「微分方程演化」圖標。
注意:改動 client.js / index.js 後需重啓 DSH 桌面端纔會重新加載。插件在 DSH 進程權限下運行,安裝前請自行審閱源碼與 MIT 許可證。
典型用法¶
- 側欄點擊「微分方程演化」打開面板,或點右下角「打開方程面板」進入同屏模式。
- 在「方程組」中寫方程,參數寫在上方;調整初始狀態、時間跨度、採樣點、投影后即時重算。
萊布尼茨寫法(x 爲自變量,x–y 圖爲解曲線):
dy/dx = x^2 + y^2
牛頓寫法與參數示例(洛倫茲):
s = 10
r = 28
b = 8/3
dx/dt = s*(y - x)
dy/dt = x*(r - z) - y
dz/dt = x*y - b*z
支持的運算符與函數見 README(如 + - * / ^、三角與雙曲函數、exp/log/sqrt、pi/e 等常量)。
適用場景與限制¶
適合:在 DSH 裏自學或講解 ODE、相圖與經典混沌系統;希望模型能「看見」當前方程與數值狀態並代改參數、切換視圖的教學或調試場景。
限制(README 明確列出):
- 僅支持
web平臺客戶端;Host 依賴webServer服務。 - 同屏展開後,寬度不足時 DSH 可能把左側導航收成圖標條,收起面板即恢復。
- 所有 Host/客戶端註冊包在 try/catch 中,避免單個 manifest 條目拖垮界面,但功能仍依賴 DSH 版本與
@deepseek-ai/dsh-tools等 peer 依賴。
倉庫內自測:
node tests/test-core.mjs
node tests/test-client.mjs
node tests/test-host.mjs
結尾¶
dsh-odestudyplug 把 ODE 輸入、RK4 積分與 2D/3D 可視化收進 DSH 客戶端側欄,並用三個 agent 工具把面板狀態接進對話,適合「邊問邊看、邊改邊講」的微分方程學習路徑。DSH 社區插件目錄獨立於 DeepSeek / 幻方,並非官方應用商店;詳情與安裝說明以倉庫 README 爲準。
- 目錄頁:https://www.skillhub.cn/plugins/DNZJSJ/dsh-odestudyplug
- GitHub:https://github.com/DNZJSJ/dsh-odestudyplug