lingshu-solver 1.0.11 → 1.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/http-mcp-server.js +1 -1
- package/index.html +26 -3
- package/mcp-server.js +1 -1
- package/package.json +1 -1
package/http-mcp-server.js
CHANGED
|
@@ -47,7 +47,7 @@ const solverCore = require('./solver-core');
|
|
|
47
47
|
const { solve } = solverCore;
|
|
48
48
|
|
|
49
49
|
const SERVER_NAME = 'lingshu-solver';
|
|
50
|
-
const SERVER_VERSION = '1.0.
|
|
50
|
+
const SERVER_VERSION = '1.0.12';
|
|
51
51
|
const PORT = parseInt(process.env.PORT || '3000', 10);
|
|
52
52
|
|
|
53
53
|
// ---- 护栏常量(防畸形/恶意输入耗尽资源,与 stdio 版一致)----
|
package/index.html
CHANGED
|
@@ -11192,7 +11192,7 @@ function _runTail(state) {
|
|
|
11192
11192
|
|
|
11193
11193
|
// —— 可审计结构化溯源(切片A):每个结果附带完整证据链元数据 ——
|
|
11194
11194
|
// 设计目标:Agent / 上层系统拿到的不只是裸数字,而是"为什么是这个解"的可读证据链。
|
|
11195
|
-
var SOLVER_VERSION = "lingshu-solver/1.0.
|
|
11195
|
+
var SOLVER_VERSION = "lingshu-solver/1.0.12-auditable";
|
|
11196
11196
|
|
|
11197
11197
|
// Movability 完整读取(切片B):每变量携带 status + width,供 Agent 读懂"为何是这个解"
|
|
11198
11198
|
function _movabilityFull(state) {
|
|
@@ -11485,8 +11485,31 @@ function _certifySolutions(state) {
|
|
|
11485
11485
|
var sol = state.result.solutions[i];
|
|
11486
11486
|
if (!sol.values || sol.values.length !== vns.length) { sol.certified = false; continue; }
|
|
11487
11487
|
var res = krawczykCertify(eqs, vns, sol.values.slice());
|
|
11488
|
-
sol.certified =
|
|
11489
|
-
|
|
11488
|
+
if (!res.certified) { sol.certified = false; continue; }
|
|
11489
|
+
// Krawczyk 仅证"盒[xhat±r]内存在唯一零点",sol.values 是 solver 原始近似,未必是真根。
|
|
11490
|
+
// 快振荡方程(如 sin(1/x)=0)局部导数|1/x²|巨大,原始近似离真根可达 1e-2,
|
|
11491
|
+
// 若直接标 certified+半径1e-6 即失真认证(承诺误差≤半径,实际可达 1e-2)。
|
|
11492
|
+
// 强制盒内牛顿精化到真零点:精化成功才标 proven,并把 certifiedRadius 改为"精化后实际残差保守上界";
|
|
11493
|
+
// 精化在盒内不收敛(原始近似不在真根吸引盆/盒内多根)→ 降级 candidate,绝不假证 proven。
|
|
11494
|
+
var xhat = sol.values.slice();
|
|
11495
|
+
var box = {};
|
|
11496
|
+
for (var _bi = 0; _bi < vns.length; _bi++) box[vns[_bi]] = { min: xhat[_bi] - res.radius, max: xhat[_bi] + res.radius };
|
|
11497
|
+
var refined = _newtonRefine(eqs, vns, xhat, box);
|
|
11498
|
+
if (refined) {
|
|
11499
|
+
sol.values = refined; // 替换为精化后的真根近似
|
|
11500
|
+
// 精化后实际残差(牛顿已收敛至 rms<1e-11,残差≈误差,作为该解精度指示);
|
|
11501
|
+
// Krawczyk 盒半径 res.radius 仍提供 sound 误差上界(≤radius),残差通常更紧。
|
|
11502
|
+
var vmap = {}; for (var _ri = 0; _ri < vns.length; _ri++) vmap[vns[_ri]] = refined[_ri];
|
|
11503
|
+
var maxRes = 0;
|
|
11504
|
+
for (var _ei = 0; _ei < eqs.length; _ei++) {
|
|
11505
|
+
var fe = evalAST(eqs[_ei], vmap);
|
|
11506
|
+
if (isFinite(fe)) maxRes = Math.max(maxRes, Math.abs(fe));
|
|
11507
|
+
}
|
|
11508
|
+
sol.certified = true;
|
|
11509
|
+
sol.certifiedRadius = (maxRes > 0) ? maxRes : 0; // 实际残差保守上界,非盒半径
|
|
11510
|
+
} else {
|
|
11511
|
+
sol.certified = false; // 降级 candidate,不假证 proven
|
|
11512
|
+
}
|
|
11490
11513
|
}
|
|
11491
11514
|
}
|
|
11492
11515
|
|
package/mcp-server.js
CHANGED
|
@@ -19,7 +19,7 @@ const path = require('path');
|
|
|
19
19
|
const { solve } = require('./solver-core');
|
|
20
20
|
|
|
21
21
|
const SERVER_NAME = 'lingshu-solver';
|
|
22
|
-
const SERVER_VERSION = '1.0.
|
|
22
|
+
const SERVER_VERSION = '1.0.12';
|
|
23
23
|
|
|
24
24
|
// ---- 护栏常量(防畸形/恶意输入耗尽资源)----
|
|
25
25
|
const MAX_TOTAL_CHARS = 100 * 1024; // 单次请求方程文本总长上限 100KB
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lingshu-solver",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.12",
|
|
4
4
|
"description": "灵数求解器 · 确定性实数方程组求解 MCP 工具(≤6变量):区间收缩 + Krawczyk 认证,离线零依赖零数据,诚实标记 truncated。本地 stdio 永久免费;另有常驻托管端点 https://hongchenlingjing.com/mcp(按次 ¥0.01/次,支持 honorPaid 免费放行)。",
|
|
5
5
|
"homepage": "https://genesis-plan.github.io/lingshu-solver/",
|
|
6
6
|
"repository": {
|