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
羽毛球分组比赛记分
小程序二维码

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

小夜