[1]:

🔌 插件管理

📖 插件开发指南 (v1.2)

基本结构

{ "id": "circle_area", "name": "圆面积计算器", "icon": "⭕", "command": "circle", "inputs": [ { "name": "radius", "label": "半径", "defaultValue": "1" } ], "jsCode": "function calculate(inputs, Symja) {\n Symja.print('计算圆面积');\n return `Pi*${inputs.radius}^2`;\n}" }

🎉 v1.2 新功能

  • 🎨 Canvas 绘图 — Symja.plot() 函数图像、Symja.parametricPlot() 参数方程、Symja.listPlot() 散点图
  • 🌐 MCP 服务器 — 支持远程调用插件,结果实时同步到控制台
  • 💾 图片保存 — 绘图结果可保存到相册
  • 📦 14个默认插件 — 统计、概率、几何、数列工具开箱即用

v1.1 特性

  • 输入自动转换 - 用户输入自动转换为 Symja 可运算类型
  • Symja.print() - 输出说明文本,不影响返回值
  • 命令执行 - circle[5] 直接执行插件
  • 列表参数 - cmd[{1,2}, {3,4}] 支持列表作为参数
  • % 引用 - 返回值可用 % 引用
  • 自动补全 - 输入命令时自动提示参数

代码模板

function calculate(inputs, Symja) { // 1. 获取输入(已自动转换) const param = inputs.param; // 2. 验证输入 if (!param) { throw new Error('请输入参数'); } // 3. 输出说明(可选) Symja.print('正在计算...'); // 4. 执行计算 const result = Symja.eval(`Func[${param}]`); // 5. 返回 Symja 表达式 return result; }

常用 API

分类方法
输入输出Symja.print(msg)
基础计算Symja.eval(expr)
微积分Symja.differentiate(expr, var)
Symja.integrate(expr, var)
Symja.limit(expr, var, point)
Symja.series(expr, var, point, order) 泰勒展开
代数Symja.solve(eq, var)
Symja.simplify(expr)
Symja.expand(expr)
Symja.factor(expr)
Symja.apart(expr, var) 部分分式
Symja.together(expr) 通分
矩阵Symja.det(m)
Symja.inverse(m)
Symja.transpose(m)
Symja.eigenvalues(m)
数论Symja.gcd(a, b)
Symja.lcm(a, b)
Symja.isPrime(n)
Symja.factorInteger(n)
Symja.fibonacci(n)
Symja.binomial(n, k)
数值Symja.numeric(expr, prec)
LaTeXSymja.toTeX(expr)
求和/积Symja.sum(expr, var, s, e)
Symja.product(expr, var, s, e)
🎨 绘图Symja.plot(func, var, xMin, xMax)
Symja.parametricPlot(xf, yf, t, tMin, tMax)
Symja.listPlot(points)
三角Symja.trigSimplify(expr)

Symja 函数名首字母大写(Sin, Cos, Log, TeXForm)。更多函数使用 help 命令查看。

示例1: 计算器插件

{ "id": "deriv", "name": "导数计算器", "icon": "📈", "command": "deriv", "inputs": [ {"name": "func", "label": "函数", "defaultValue": "x^2"}, {"name": "var", "label": "变量", "defaultValue": "x"} ], "jsCode": "function calculate(inputs, Symja) {\n Symja.print(`对 ${inputs.func} 求导`);\n return Symja.differentiate(inputs.func, inputs.var);\n}" }

使用:deriv[x^3, x] 或 deriv[{x^2,x^3}, x](列表参数)

示例2: 绘图插件

{ "id": "plot_sin", "name": "正弦曲线绘制器", "icon": "📉", "command": "plotsin", "inputs": [ {"name": "amp", "label": "振幅", "defaultValue": "1"}, {"name": "freq", "label": "频率", "defaultValue": "1"} ], "jsCode": "function calculate(inputs, Symja) {\n Symja.print(`绘制 y=${inputs.amp}sin(${inputs.freq}x)`);\n // plot() 返回绘图JSON,控制台自动渲染为Canvas\n return Symja.plot(inputs.amp+'*Sin('+inputs.freq+'*x)', 'x', '0', '2*Pi');\n}" }

使用:plotsin[2, 3] 绘制 y=2sin(3x)

⚠️ 重要规则

  • 函数签名:function calculate(inputs, Symja) { ... }
  • 必须返回有效的 Symja 表达式(或 Symja.plot/parametricPlot/listPlot 返回的绘图 JSON)
  • 使用 Symja.print() 输出说明文本
  • 使用 throw new Error() 抛出错误
  • 返回值可用 % 引用
  • 列表参数:cmd[{1,2}, {3,4}] 有 2 个参数
  • 画图请返回 Symja.plot() 而非原始表达式

📤 分享插件

选择一个插件生成分享代码

📥 导入插件

粘贴插件分享码或 JSON 代码

🗑️ 管理插件

删除不需要的插件

📁 插件位置

插件文件保存在:

你可以直接在该目录创建 .json 文件来添加插件

⚙️ 设置

某人的计算器 v1.2

Symja 3.1.0 · MCP 2024-11-05