dsh-odestudyplug:在 DSH 側欄輸入 ODE,同屏看相圖與三維軌跡

前言

在 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 許可證。

典型用法

  1. 側欄點擊「微分方程演化」打開面板,或點右下角「打開方程面板」進入同屏模式。
  2. 在「方程組」中寫方程,參數寫在上方;調整初始狀態、時間跨度、採樣點、投影后即時重算。

萊布尼茨寫法(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
羽毛球分组比赛记分
小程序二维码

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

小夜