Skip to content

API 参考:数据类型 ​

本页的类型全部来自核心包 manim-live(EnvironmentStatus、Surface、RunResult 等)——本插件自己不定义对外类型。本页给出每个类型的完整字段与取值语义;更细的行为说明在核心包的文档里。

类型定义方用途详解
EnvironmentStatus核心包环境状态快照本页
EnvironmentCapabilities核心包快照里的浏览器能力本页
RuntimePhase / KatexPhase核心包两个生命周期阶段本页
CheckResult核心包一次预检的结论本页
Surface核心包一块画布核心包画布
RunResult核心包一次渲染的结论核心包画布

类型从哪来 ​

类型由核心包导出,照常写值导入即可——核心包是本插件唯一的运行时依赖:

ts
import { environmentStatus, type EnvironmentStatus, type Surface } from 'manim-live'

本插件自己的代码就是这么读它的(见 src/client/runtime-status.ts):环境状态的快照与订阅都直接来自这个包。

EnvironmentStatus ​

环境状态快照,environmentStatus() 的返回,也是订阅回调收到的值。四个条件分量加一份建议列表:

ts
interface EnvironmentStatus {
  capabilities: EnvironmentCapabilities
  runtime: { phase: RuntimePhase; error?: string; indexURL: string | null }
  katex: { baseURL: string | null; phase: KatexPhase; error?: string }
  packages: { fetching: string[]; lastError?: string }
  hints: string[]
}

capabilities ​

浏览器能力的一次性探测结果,进程内缓存。它不随页面状态变化,只随浏览器环境变化(换机、换浏览器才会变)。

ts
interface EnvironmentCapabilities {
  wasm: boolean
  webgl: boolean
  videoExport: boolean
}
字段缺失的后果
wasmPython 解释器起不来,所有渲染不可用
webglmanim-web 出不了画面,所有渲染不可用

runtime ​

Pyodide 运行时的生命周期。

字段含义
phase见下表
errorphase 为 error 时的失败原文
indexURL当前登记的取数根。本插件始终用随包资源,指同源的插件路由;从未安装加载器时为 null
phase含义可做什么
idle未加载。首次渲染前的正常初始状态等
loading正在加载显示进度提示
ready就绪,可渲染正常调用
error加载失败看 error;hints 里已有对应建议

idle 不是错误。 它表示「还没有」而不是「出问题了」,据此出警示会误报。

katex ​

MathTex / Tex 排出的公式所用的样式表状态。

字段含义
baseURL样式与字体所在目录;未配置时为 null
phase见下表
errorphase 为 error 时的失败原文
phase含义
unconfigured创建渲染器时未给 katexBaseURL,本插件不注入样式。公式仍会渲染,但是无样式的裸排版
loading样式表正在注入
loaded已加载
error样式表加载失败(hints 里会提示检查目录下有没有 katex.min.css 与字体文件)

本插件始终配置 katexBaseURL,所以在宿主内这一项只会是 loading / loaded / error,不会出现 unconfigured。

packages ​

按需取第三方 Python 包的进展(import pandas 这类随包没有、需要联网取一次的包)。

字段含义
fetching正在取的包名;不在取包时是空数组
lastError最近一次取包失败的人话原因(含分档诊断的结论),成功一次后不再出现

hints ​

每个未满足项一句可执行的话,全满足时是空数组。它只覆盖硬性未满足项:

  • 缺 WASM / WebGL / MediaRecorder;
  • 运行时启动失败;
  • 公式样式加载失败;
  • 取包失败。

「公式样式未配置」不在其中——那是配置选择而非故障,只在 check() 的 warnings 里出声。hints 里的句子可以直接展示给用户,本插件的设置面板用的就是这几句。

ts
const status = environmentStatus()
if (status.hints.length > 0) showBanner(status.hints)

CheckResult ​

渲染器 check() 的返回:一次预检的结论。

ts
interface CheckResult {
  ok: boolean
  error?: string
  /** 不阻断渲染的提醒(如「代码含公式但 KaTeX 未配置」);没有提醒时缺席 */
  warnings?: string[]
}

本插件不消费这个类型:工具那侧的预检走的是 runPython(python, createDryRunBridge()),只把 ok 与 error 交给模型,warnings 既不经工具转交也不在界面上显示(见宿主工具)。它列在这里是因为形状容易与本插件那条预检路径混起来。

Surface 与 RunResult ​

这两个类型属于核心包,本插件只做转交,字段与行为契约以核心包文档为准:

  • Surface:一块画布,五个成员 run / replay / canvas / isRendered / dispose,都由 createSurface() 返回的实例上取。见核心包:画布。
  • RunResult:一次渲染的结论 { ok, error?, cancelled? }。注意 cancelled 为 true 表示画布已被销毁、这段代码没跑,不是错误,不应向用户显示任何内容。
ts
const result = await surface.run(python)
if (result.cancelled === true) return
if (!result.ok) showError(result.error)

DeepSeek Harness 插件系列 · 运行时与渲染引擎见核心包 manim-live