📖 插件开发指南 (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) |
| LaTeX | Symja.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 文件来添加插件