dsh-mathmatic-symbol — 公式与数学图形 → 图片

一个 DeepSeek Harness 插件,给 agent 四个工具:把 LaTeX 排成图片用声明式规格画数学图形把公式或 SVG 转成可直接放进文档的图片,以及把公式与图形都插好地生成一份文档。 产物一律是自带字形轮廓的 SVG(每个字形都是 ,不依赖字体)加一个可选的 PNG,并附带 Markdown / HTML / LaTeX 片段。

npm 包@jaxzhou/dsh-mathmatic-symbol
版本 / 许可v0.1.2 · MIT
源码github.com/jaxzhou/dsh-mathmatic-symbol
环境要求Node.js ≥ 22.19;依赖 mathjax-full@resvg/resvg-js
$ dsh plugin --profile web add @jaxzhou/dsh-mathmatic-symbol
$ dsh --profile web

产出示例

下面是插件产出的静态示例 —— 不依赖字体,也不依赖任何外部工具。

单位圆上的正弦与余弦:网格坐标轴、半径箭头、虚线投影、角度弧,以及由 LaTeX 排版的标题
math_figure 配合 examples/unit-circle.json 生成:单位圆、sin/cos 投影、角度弧与 LaTeX 标题,图里没有任何一处依赖已安装的字体。

四个工具

工具作用
math_formula把一段 LaTeX 排成图片;$…$$$…$$\[…\]\(…\)\begin{equation}…\end{equation} 会被自动剥掉
math_figure用声明式 JSON 规格画几何与函数图形:坐标轴与网格、圆/弧、线段与箭头、虚线投影、多边形、函数曲线、文字与 LaTeX 标题
math_convert把公式或已有 SVG 转成可直接嵌入的图片
math_document把公式与图形都插好地生成一份文档
每次调用都返回 embed.markdown_svgembed.html_pngembed.latex_png,以及按需的 base64 data URI。

为什么是图片,而不是文字

  • 1
    不依赖字体每个字形都是轮廓路径;在浏览器、Word、\includegraphics 流程,以及没装数学字体的构建机上,渲染结果完全一致。
  • 2
    栅格化结果确定PNG 由 resvg 生成并关闭系统字体加载 —— 每台机器得到同样的字节。
  • 3
    内容寻址的文件名同样输入永远写同一个文件名,重复调用只覆盖不堆积。
  • 4
    面向文档的返回值Markdown / HTML / LaTeX 嵌入片段随结果一起返回,直接可粘贴。
代价也是刻意取舍的:文字被转成轮廓,因此图片里的标签不可选中、不可搜索。

演示

14 秒真实会话录屏:模型在会话中调用插件生成公式与图形。

常见问题

为什么生成的图片里文字不能选中、不能搜索?

为了不依赖字体:MathJax 以 fontCache: 'none' 运行,每个字形都变成轮廓 ,SVG 里没有 font-family<defs><use>,在任何机器与 Word / LaTeX 流程里渲染一致。代价就是文字变成图形。

需要安装 LaTeX 或数学字体吗?

都不需要。公式排版由 MathJax 完成,PNG 栅格化由 @resvg/resvg-js 完成并关闭系统字体加载,因此同样的输入在任何机器上得到同样的字节。

生成的文件写到哪里?会越积越多吗?

写入当前会话的工作区,文件名是内容寻址的:同样的输入永远写同一个文件名,重复调用只会覆盖,不会堆垃圾。返回值同时给出 Markdown / HTML / LaTeX 嵌入片段。

什么时候模型会自动用这个插件?

插件注册了一段提示词指引:当交付物是一张图片或一份文档文件,或用户明确要求时使用,并避免自己手写 SVG、LaTeX 渲染或绘图代码。装上后,生成公式图或几何图形是一次工具调用,而不是一次编程。

环境要求是什么?

Node.js ≥ 22.19;在 DeepSeek Harness 会话中安装插件后,模型即获得四个工具与提示词指引。