@metago-ai/engine 2.1.2 → 2.1.4

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.
Files changed (67) hide show
  1. package/BOUNDARIES.md +109 -0
  2. package/CHANGES.md +4 -4
  3. package/CONSTITUTION/AXIOMS.md +72 -110
  4. package/CORE/ATOMS.md +611 -0
  5. package/CORE/ATTRIBUTES.md +70 -101
  6. package/CORE/PROTOCOLS.md +134 -116
  7. package/ENGINE.md +6 -6
  8. package/ENGINES/engine-runtime.cjs +318 -0
  9. package/ENGINES/final-engines-runtime.cjs +683 -0
  10. package/ENGINES/governance-runtime.cjs +582 -0
  11. package/ENGINES/math-capability-runtime.cjs +451 -0
  12. package/ENGINES/philosophy-runtime.cjs +427 -0
  13. package/ENGINES/yili/data/yaoci-1.js +24 -0
  14. package/ENGINES/yili/data/yaoci-2.js +21 -0
  15. package/ENGINES/yili/data/yaoci-3.js +21 -0
  16. package/ENGINES/yili/data/yaoci-4.js +21 -0
  17. package/ENGINES/yili/data/yaoci.js +17 -0
  18. package/ENGINES/yili/lib/almanac.js +416 -0
  19. package/ENGINES/yili/lib/bazi.js +127 -0
  20. package/ENGINES/yili/lib/diagnose.js +71 -0
  21. package/ENGINES/yili/lib/hetu-luoshu.js +123 -0
  22. package/ENGINES/yili/lib/index.js +23 -0
  23. package/ENGINES/yili/lib/liuyao.js +226 -0
  24. package/ENGINES/yili/lib/qimen.js +167 -0
  25. package/ENGINES/yili/lib/shushu-calculus.js +85 -0
  26. package/ENGINES/yili/lib/taiyi.js +83 -0
  27. package/ENGINES/yili/lib/vendor/shouxing-core.js +627 -0
  28. package/ENGINES/yili/lib/wuxing.js +106 -0
  29. package/ENGINES/yili/lib/yijing.js +226 -0
  30. package/ENGINES/yili/lib/zeri.js +80 -0
  31. package/ENGINES/yili/lib/ziwei.js +145 -0
  32. package/ENGINES/yili/package.json +1 -0
  33. package/EXECUTORS.md +85 -0
  34. package/GENOME.json +11 -10
  35. package/INDEX/ENGINES.md +168 -0
  36. package/INDEX/engines.json +161 -161
  37. package/INDEX/knowledge.json +2 -2
  38. package/INDEX/skills.json +29 -5
  39. package/INDEX/tools.json +64 -64
  40. package/PATENTS.md +1 -1
  41. package/PROTOCOLS/closure-runtime.cjs +288 -0
  42. package/PROTOCOLS/covenant-runtime.cjs +409 -0
  43. package/PROTOCOLS/final-runtime.cjs +680 -0
  44. package/PROTOCOLS/formula-runtime.cjs +399 -0
  45. package/PROTOCOLS/proactive-runtime.cjs +368 -0
  46. package/PROTOCOLS/rule-runtime.cjs +448 -0
  47. package/PROTOCOLS/runtime.cjs +441 -0
  48. package/README.md +5 -5
  49. package/RUNTIME/dist/kmwi-memory.d.ts.map +1 -1
  50. package/RUNTIME/dist/kmwi-memory.js +14 -2
  51. package/RUNTIME/dist/kmwi-memory.js.map +1 -1
  52. package/RUNTIME/dist/validators.d.ts +2 -2
  53. package/RUNTIME/dist/validators.js +19 -10
  54. package/atoms/approx.cjs +293 -0
  55. package/atoms/atom-factory.cjs +550 -0
  56. package/atoms/atoms-cosmic-bio.cjs +340 -0
  57. package/atoms/atoms-crypto-emotion.cjs +215 -0
  58. package/atoms/atoms_engines.json +5821 -0
  59. package/atoms/blueprint-atoms-2.cjs +583 -0
  60. package/atoms/blueprint-atoms.cjs +975 -0
  61. package/atoms/constraints.cjs +257 -0
  62. package/atoms/contract-validator.cjs +213 -0
  63. package/atoms/engine.cjs +849 -0
  64. package/atoms/specialized.cjs +530 -0
  65. package/atoms/verify.cjs +94 -0
  66. package/package.json +97 -91
  67. package/scripts/verify-dist.cjs +80 -0
@@ -0,0 +1,849 @@
1
+ "use strict";
2
+ /**
3
+ * atoms/engine.cjs — 原子工程化引擎(V36.10.0)
4
+ *
5
+ * 设计原则(诚实优先):
6
+ * 1. 每个原子必须声明自己的 kind,不得含糊
7
+ * - compute : 确定性计算,有明确公式,可复跑,可断言
8
+ * - template : 结构化生成(按输入组装输出),不是 AI 推理,明确标注
9
+ * - external : 需要模型/服务(翻译、语音合成、图像理解),纯 JS 无法真实实现
10
+ * → 调用返回 success:false + reason:EXTERNAL_REQUIRED,绝不假装成功
11
+ * 2. 只有 compute 类声称"已实现"
12
+ * 3. 每个 compute 原子必须能通过自测
13
+ */
14
+ /* 内联所需计算原语,避免跨包依赖 */
15
+ const mean = a => (a.length ? a.reduce((s, x) => s + (Number(x) || 0), 0) / a.length : 0);
16
+ const std = a => {
17
+ if (a.length < 2) return 0;
18
+ const m = mean(a);
19
+ return Math.sqrt(a.reduce((s, x) => s + (Number(x) - m) ** 2, 0) / (a.length - 1));
20
+ };
21
+ const round = (x, n = 4) => { const p = 10 ** n; return Math.round((Number(x) || 0) * p) / p; };
22
+ const clamp01 = x => Math.max(0, Math.min(1, x));
23
+ const safeDiv = (a, b, d = 0) => (b === 0 || !isFinite(b) ? d : a / b);
24
+ const gini = v => {
25
+ const a = [...v].map(Number).sort((x, y) => x - y);
26
+ const n = a.length, s = a.reduce((x, y) => x + y, 0);
27
+ if (!n || s === 0) return 0;
28
+ let acc = 0;
29
+ a.forEach((x, i) => { acc += (i + 1) * x; });
30
+ return round((2 * acc) / (n * s) - (n + 1) / n, 4);
31
+ };
32
+ const ols = y => {
33
+ const n = y.length;
34
+ const xs = y.map((_, i) => i);
35
+ const mx = mean(xs), my = mean(y);
36
+ let num2 = 0, den = 0;
37
+ for (let i = 0; i < n; i++) { num2 += (xs[i] - mx) * (y[i] - my); den += (xs[i] - mx) ** 2; }
38
+ return { slope: den === 0 ? 0 : num2 / den };
39
+ };
40
+
41
+ const clamp = clamp01;
42
+ const num = (v, d = 0) => (isFinite(Number(v)) ? Number(v) : d);
43
+ const arr = v => (Array.isArray(v) ? v : []);
44
+ const sum = a => a.reduce((s, x) => s + (num(x) || 0), 0);
45
+
46
+ /* ============ compute 类原子(真实计算) ============ */
47
+ const COMPUTE = {
48
+ /* 耦生 / 融合度 */
49
+ ATOM_BIO_FUSION_026: (i) => {
50
+ const d = arr(i["交互数据"] ?? i.data ?? i.input);
51
+ const v = d.map(num);
52
+ if (!v.length) return { "融合度F": 0, 说明: "无交互数据" };
53
+ const intensity = clamp(mean(v.map(Math.abs)));
54
+ const consistency = clamp(1 - safeDiv(std(v), Math.abs(mean(v)) + 1e-9));
55
+ const F = round(clamp(0.6 * intensity + 0.4 * consistency), 4);
56
+ return { "融合度F": F, 强度: round(intensity, 4), 一致性: round(consistency, 4) };
57
+ },
58
+ ATOM_FUSION_COUPLING_046: (i) => {
59
+ const s = arr(i["六元状态"] ?? i.input).map(num);
60
+ if (!s.length) return { 总耦生度: 0 };
61
+ const prod = s.reduce((p, x) => p * clamp(Math.abs(x)), 1);
62
+ const geo = Math.pow(prod, 1 / s.length);
63
+ return { 总耦生度: round(geo, 4), 各元: s.map(x => round(x, 4)), 短板: round(Math.min(...s), 4) };
64
+ },
65
+ ATOM_COSMIC_NETWORK_033: (i) => {
66
+ const s = arr(i["网络状态"] ?? i.input).map(num);
67
+ if (!s.length) return { 耦生度: 0 };
68
+ const norm = clamp01((mean(s) + 1) / 2);
69
+ return { 耦生度: round(norm, 4), 节点数: s.length };
70
+ },
71
+ ATOM_FUSION_NEGENTROPY_048: (i) => {
72
+ const e = arr(i["三元熵值"] ?? i.input).map(num);
73
+ if (!e.length) return { 总负熵: 0 };
74
+ const total = sum(e);
75
+ return { 总负熵: round(-total, 4), 各源熵: e.map(x => round(x, 4)) };
76
+ },
77
+
78
+ /* 价值 / 贡献 */
79
+ ATOM_CONTRIB_CALC_207: (i) => {
80
+ const b = arr(i["行为数据"] ?? i.input).map(x => (typeof x === "object" ? num(x.value ?? x.amount) : num(x)));
81
+ if (!b.length) return { 贡献值: 0 };
82
+ const total = sum(b);
83
+ const diversity = clamp(1 - gini(b.map(Math.abs)));
84
+ return { 贡献值: round(total * (0.7 + 0.3 * diversity), 4), 总量: round(total, 4), 多样性: round(diversity, 4) };
85
+ },
86
+ ATOM_CONTRIB_EXCHANGE_208: (i) => {
87
+ const c = num(i["贡献值"] ?? i.value ?? i.input);
88
+ const rate = num(i.汇率 ?? i.rate, 1);
89
+ return { 兑换结果: round(c * rate, 4), 消耗: round(c, 4), 汇率: rate };
90
+ },
91
+ ATOM_ETHIC_SCORE_204: (i) => {
92
+ const p = i["方案"] ?? i.plan ?? i.input;
93
+ const dims = ["合法", "公平", "透明", "无害", "可溯"];
94
+ const o = typeof p === "object" && p ? p : {};
95
+ const scores = dims.map(d => clamp(num(o[d] ?? 0.5)));
96
+ return {
97
+ 伦理分数: round(mean(scores), 4),
98
+ 各维度: Object.fromEntries(dims.map((d, k) => [d, round(scores[k], 4)])),
99
+ 最弱项: dims[scores.indexOf(Math.min(...scores))]
100
+ };
101
+ },
102
+ ATOM_EMOTION_ANXIETY_501: (i) => {
103
+ const a = clamp(num(i["焦虑情绪"] ?? i.value ?? i.input, 0.5));
104
+ return {
105
+ 行动建议: a > 0.7 ? "立即缩小任务范围并拆成 15 分钟可完成的最小步"
106
+ : a > 0.4 ? "先做一件确定能完成的小事重建控制感" : "保持当前节奏",
107
+ 焦虑强度: round(a, 4),
108
+ 可控性提升: round(clamp(1 - a * 0.6), 4)
109
+ };
110
+ },
111
+ ATOM_EMOTION_TRACK_504: (i) => {
112
+ const h = arr(i["历史情绪"] ?? i.input).map(num);
113
+ if (!h.length) return { 情绪曲线: [], 趋势: "stable" };
114
+ const { slope } = h.length >= 2 ? ols(h) : { slope: 0 };
115
+ return {
116
+ 情绪曲线: h.map(x => round(x, 4)),
117
+ 趋势: slope > 0.05 ? "up" : slope < -0.05 ? "down" : "stable",
118
+ 波动: round(std(h), 4)
119
+ };
120
+ },
121
+ ATOM_EMOTION_REGULATE_503: (i) => {
122
+ const c = clamp(num(i["当前情绪"] ?? i.value ?? i.input, 0.5));
123
+ const plan = c > 0.7 ? ["撤离刺激源", "4-7-8 呼吸 3 轮", "30 分钟后再决策"]
124
+ : c > 0.4 ? ["标注情绪名称", "写一句事实陈述", "选择一个小行动"] : ["维持", "记录触发点"];
125
+ return { 调节方案: plan, 当前强度: round(c, 4), 预期回落: round(clamp(c * 0.6), 4) };
126
+ },
127
+
128
+ /* 边界 / 隐私 */
129
+ ATOM_BIO_PRIVACY_028: (i) => {
130
+ const s = arr(i["原始生物信号"] ?? i.input).map(num);
131
+ if (!s.length) return { 脱敏特征: [], 不可逆性: 1 };
132
+ const m = mean(s), sd = Math.max(1e-9, std(s));
133
+ const z = s.map(x => round((x - m) / sd, 4));
134
+ return { 脱敏特征: z, 不可逆性: round(clamp(1 - 1 / Math.max(2, s.length)), 4), 原始均值已抹除: true };
135
+ },
136
+ ATOM_BIO_BOUNDARY_027: (i) => {
137
+ const rep = arr(i["用户报告"] ?? i.report).map(num);
138
+ const beh = arr(i["行为"] ?? i.behavior).map(num);
139
+ const all = rep.concat(beh);
140
+ if (!all.length) return { 边界清晰度: 0.5 };
141
+ const consistency = clamp(1 - Math.abs(mean(rep.length ? rep : all) - mean(beh.length ? beh : all)));
142
+ return { 边界清晰度: round(clamp(consistency), 4), 报告样本: rep.length, 行为样本: beh.length };
143
+ },
144
+
145
+ /* 伦理 / 冲突 */
146
+ ATOM_ETHIC_CONFLICT_203: (i) => {
147
+ const d = String(i["冲突描述"] ?? i.input ?? "");
148
+ const tags = [];
149
+ if (/利益|资源/.test(d)) tags.push("利益分配");
150
+ if (/价值|信念/.test(d)) tags.push("价值取向");
151
+ if (/程序|流程/.test(d)) tags.push("程序正义");
152
+ if (!tags.length) tags.push("待识别");
153
+ return {
154
+ 解决方案: tags.map(t => t === "利益分配" ? "按可量化贡献加权分配并公示"
155
+ : t === "价值取向" ? "分层处理:共同价值合作,不可调和者搁置"
156
+ : "回到规则本身,先修规则再判个案"),
157
+ 冲突类型: tags
158
+ };
159
+ },
160
+ ATOM_ETHIC_CHECK_202: (i) => {
161
+ const p = i["决策方案"] ?? i.input;
162
+ const t = typeof p === "object" ? JSON.stringify(p) : String(p ?? "");
163
+ const issues = [];
164
+ if (/未授权|超范围|未告知/.test(t)) issues.push("程序违规");
165
+ if (/歧视|偏见|区别对待/.test(t)) issues.push("公平性风险");
166
+ if (/无法追溯|无记录/.test(t)) issues.push("可溯性缺失");
167
+ return { 审查结果: issues.length ? "不通过" : "通过", 问题: issues, 风险等级: issues.length >= 2 ? "high" : issues.length ? "medium" : "low" };
168
+ },
169
+
170
+ /* 宇宙/推演 */
171
+ ATOM_COSMIC_WARN_034: (i) => {
172
+ const e = arr(i["事件数据"] ?? i.input).map(num);
173
+ if (!e.length) return { 预警级别: "green" };
174
+ const peak = Math.max(...e.map(Math.abs));
175
+ const base = Math.abs(mean(e)) + 1e-9;
176
+ const ratio = peak / base;
177
+ return {
178
+ 预警级别: ratio > 5 ? "red" : ratio > 3 ? "orange" : ratio > 2 ? "yellow" : "green",
179
+ 峰值比: round(ratio, 4), 峰值: round(peak, 4)
180
+ };
181
+ },
182
+ ATOM_COSMIC_SIMULATE_031: (i) => {
183
+ const p = arr(i["初始参数"] ?? i.input).map(num);
184
+ if (!p.length) return { 演化轨迹: [] };
185
+ // 简化 N 体:用参数向量的线性外推做演示轨迹(明确标注为简化模型)
186
+ const traj = [];
187
+ let cur = p.slice();
188
+ for (let step = 0; step < 5; step++) {
189
+ traj.push(cur.map(x => round(x, 4)));
190
+ cur = cur.map((x, k) => x + (num(p[k]) - mean(p)) * 0.1);
191
+ }
192
+ const seq = traj.map(t => round(mean(t), 4));
193
+ const d0 = seq[seq.length - 1] - seq[0];
194
+ return {
195
+ 演化轨迹: traj,
196
+ 轨迹序列: seq,
197
+ 趋势: d0 > 1e-9 ? "上升" : d0 < -1e-9 ? "下降" : "平稳",
198
+ 模型: "一阶线性外推(简化模型,非真实 N 体解)"
199
+ };
200
+ },
201
+
202
+ /* 无障碍 / 可读性 */
203
+ ATOM_ACCESSIBLE_READ_506: (i) => {
204
+ const t = String(i["文本"] ?? i.input ?? "");
205
+ const sentences = t.split(/[。!?.!?]+/).filter(Boolean);
206
+ const long = sentences.filter(s => s.length > 40);
207
+ return {
208
+ 语音: `[待 TTS 合成] ${t.slice(0, 60)}${t.length > 60 ? "…" : ""}`,
209
+ 句数: sentences.length, 超长句: long.length,
210
+ 可读性提示: long.length ? `${long.length} 句超过 40 字,建议拆分` : "句长合适"
211
+ };
212
+ }
213
+ };
214
+
215
+ /* ============ template 类(结构化生成,明确非推理) ============ */
216
+ /* 修(Round 35):这 3 条已由 blueprint-atoms-2.cjs 真实实现(实测 BIO_EMOTION 返回真 valence/arousal;
217
+ COSMIC_LEGACY 生成真 merkleRoot;COSMIC_RECEIVE 对短信号如实返回 SIGNAL_TOO_SHORT)。TEMPLATE 清空。 */
218
+ const TEMPLATE = new Set([]);
219
+
220
+ /* ============ external 类(必须模型/服务,纯 JS 不可实现) ============ */
221
+ /* 修(Round 35):移除 ATOM_EMOTION_RECOG_502 —— 文本情绪识别已确定性实现(词典+否定翻转+程度加权)。
222
+ 仅保留真正需外部模型/硬件的 5 条。 */
223
+ const EXTERNAL = new Set([
224
+ "ATOM_ACCESSIBLE_SIGN_507", "ATOM_BIO_NEURAL_021", "ATOM_BIO_SPECIES_025",
225
+ "ATOM_COSMIC_GRAVITY_032", "ATOM_COSMIC_DISTRIBUTE_030"
226
+ ]);
227
+
228
+ /* ==== R144 / D-22:聚合同级实现(修复 68 个已实现原子不可达) ====
229
+ 此前 engine.cjs 只暴露自身 50 个 COMPUTE,不 require 任何同级实现文件,
230
+ 导致 blueprint-atoms(52) / blueprint-atoms-2(11) / constraints(5) 的实现经 run() 全不可达。
231
+ 纪律:模块不存在可跳过(可选模块);模块存在但加载失败必须记录,不静默吞掉。 */
232
+ const MERGED_SOURCES = { engine: 0, blueprintAtoms: 0, blueprintAtoms2: 0, constraints: 0, errors: [] };
233
+ function __tryRequire(rel, label) {
234
+ try {
235
+ const m = require(rel);
236
+ if (label) MERGED_SOURCES[label] = 1;
237
+ return m;
238
+ } catch (e) {
239
+ /* 模块不存在 → 可选,跳过;存在但抛错 → 记录 */
240
+ if (e && e.code !== "MODULE_NOT_FOUND") MERGED_SOURCES.errors.push(label + ": " + e.message);
241
+ return null;
242
+ }
243
+ }
244
+ const __bp1 = __tryRequire("./blueprint-atoms.cjs", "blueprintAtoms");
245
+ const __bp2 = __tryRequire("./blueprint-atoms-2.cjs", "blueprintAtoms2");
246
+ const __cons = __tryRequire("./constraints.cjs", "constraints");
247
+
248
+ /* 合并 COMPUTE:优先级 engine.COMPUTE > bp2 > bp1(既有 50 个行为完全不变) */
249
+ /* 惰性合并:engine.cjs 的 COMPUTE 是在本行之后逐条赋值的(实测本行时仅 17 个),
250
+ 若在此刻一次性 Object.assign 会漏掉另外 33 个。故改为首次使用时才合并并缓存。 */
251
+ let __mergedCache = null;
252
+ function __mergeAll() {
253
+ if (__mergedCache) return __mergedCache;
254
+ /* 优先级(低→高):工厂生成 < bp1 < bp2 < engine.COMPUTE
255
+ 工厂生成来自 atom-factory.make(id),覆盖 473 条「有契约无手写实现」的原子。
256
+ 实测:473/473 均可返回函数且产出非空对象,0 抛错。
257
+ 纪律:make 返回 null(MODEL_NEEDED/EXTERNAL/约束器)时跳过,绝不用假实现填充。 */
258
+ const __factory = {};
259
+ try {
260
+ const __fp = require("./atom-factory.cjs");
261
+ if (__fp && typeof __fp.make === "function" && __fp.CONTRACTS) {
262
+ for (const __id of Object.keys(__fp.CONTRACTS)) {
263
+ const __fn = __fp.make(__id);
264
+ if (typeof __fn === "function") __factory[__id] = __fn;
265
+ }
266
+ MERGED_SOURCES.factory = Object.keys(__factory).length;
267
+ }
268
+ } catch (e) {
269
+ MERGED_SOURCES.errors.push("atom-factory: " + e.message);
270
+ }
271
+ __mergedCache = Object.assign(
272
+ {},
273
+ __factory,
274
+ (__bp1 && __bp1.IMPL) || {},
275
+ (__bp2 && __bp2.IMPL) || {},
276
+ COMPUTE
277
+ );
278
+ MERGED_SOURCES.engine = Object.keys(COMPUTE).length;
279
+ MERGED_SOURCES.merged = Object.keys(__mergedCache).length;
280
+ return __mergedCache;
281
+ }
282
+ /* 对外以 getter 暴露 MERGED,保持 e.MERGED 用法不变 */
283
+ Object.defineProperty(globalThis, "__metagoMerged", { value: __mergeAll, writable: true, configurable: true });
284
+
285
+ /* constraint 类原子(哲学族约束器),走 check(id, input) */
286
+ const CONSTRAINT = new Set(__cons && __cons.CONSTRAINTS ? Object.keys(__cons.CONSTRAINTS) : []);
287
+ MERGED_SOURCES.constraint = CONSTRAINT.size;
288
+
289
+ function kindOf(id) {
290
+ if (__mergeAll()[id]) return "compute";
291
+ if (CONSTRAINT.has(id)) return "constraint";
292
+ if (EXTERNAL.has(id)) return "external";
293
+ if (TEMPLATE.has(id)) return "template";
294
+ return "declared";
295
+ }
296
+
297
+ function run(id, input) {
298
+ const kind = kindOf(id);
299
+ if (kind === "compute") {
300
+ try {
301
+ const out = __mergeAll()[id](input || {});
302
+ for (const [k, v] of Object.entries(out)) {
303
+ if (typeof v === "number" && !isFinite(v)) {
304
+ return { success: false, error: `原子 ${id} 输出字段 ${k} 非有限数`, kind };
305
+ }
306
+ }
307
+ return { success: true, output: out, kind };
308
+ } catch (e) {
309
+ return { success: false, error: e.message, kind };
310
+ }
311
+ }
312
+ if (kind === "constraint") {
313
+ try {
314
+ const out = __cons.check(id, input || {});
315
+ return { success: true, output: out, kind };
316
+ } catch (e) {
317
+ return { success: false, error: e.message, kind };
318
+ }
319
+ }
320
+ if (kind === "external") {
321
+ return {
322
+ success: false, kind,
323
+ error: `原子 ${id} 需要模型/外部服务(${EXTERNAL.has(id) ? "语音/视觉/翻译/硬件接口" : ""}),纯 JS 无法真实实现`,
324
+ reason: "EXTERNAL_REQUIRED"
325
+ };
326
+ }
327
+ if (kind === "template") {
328
+ return {
329
+ success: false, kind,
330
+ error: `原子 ${id} 属结构化生成类,尚未实现模板;不做假装是推理的输出`,
331
+ reason: "TEMPLATE_NOT_IMPLEMENTED"
332
+ };
333
+ }
334
+ return {
335
+ success: false, kind,
336
+ error: `原子 ${id} 仅有蓝本名字与功能描述,无「输入/输出」契约,无法工程化`,
337
+ reason: "NO_CONTRACT"
338
+ };
339
+ }
340
+
341
+ /* 自测样例 */
342
+ const SAMPLES = {
343
+ ATOM_BIO_FUSION_026: { "交互数据": [0.8, 0.7, 0.75, 0.82] },
344
+ ATOM_FUSION_COUPLING_046: { "六元状态": [0.8, 0.7, 0.9, 0.6, 0.75, 0.85] },
345
+ ATOM_COSMIC_NETWORK_033: { "网络状态": [0.9, 0.85, 0.88] },
346
+ ATOM_FUSION_NEGENTROPY_048: { "三元熵值": [0.3, 0.2, 0.4] },
347
+ ATOM_CONTRIB_CALC_207: { "行为数据": [10, 20, 15, 8] },
348
+ ATOM_CONTRIB_EXCHANGE_208: { "贡献值": 100, "汇率": 0.8 },
349
+ ATOM_ETHIC_SCORE_204: { "方案": { 合法: 0.9, 公平: 0.8, 透明: 0.7, 无害: 0.85, 可溯: 0.75 } },
350
+ ATOM_EMOTION_ANXIETY_501: { "焦虑情绪": 0.8 },
351
+ ATOM_EMOTION_TRACK_504: { "历史情绪": [0.3, 0.4, 0.55, 0.7] },
352
+ ATOM_EMOTION_REGULATE_503: { "当前情绪": 0.75 },
353
+ ATOM_BIO_PRIVACY_028: { "原始生物信号": [72, 75, 71, 80] },
354
+ ATOM_BIO_BOUNDARY_027: { "用户报告": [0.6, 0.65], "行为": [0.58, 0.62] },
355
+ ATOM_ETHIC_CONFLICT_203: { "冲突描述": "双方在资源分配上存在利益冲突" },
356
+ ATOM_ETHIC_CHECK_202: { "决策方案": "未授权采集用户数据用于训练" },
357
+ ATOM_COSMIC_WARN_034: { "事件数据": [1, 1.1, 0.9, 8] },
358
+ ATOM_COSMIC_SIMULATE_031: { "初始参数": [1, 2, 3] },
359
+ ATOM_ACCESSIBLE_READ_506: { "文本": "这是一段用于测试可读性的文本。它包含多个句子!是否超长?" }
360
+ };
361
+
362
+
363
+ /* ---------- 第二批 compute 原子(R20)---------- */
364
+ Object.assign(COMPUTE, {
365
+ /* 量子 / 纠缠 */
366
+ ATOM_QUANTUM_TOMOGRAPHY_020: (i) => {
367
+ const c = arr(i["测量统计"] ?? i.counts ?? i.input).map(num);
368
+ if (!c.length) return { 密度矩阵: [], 纯度: 0 };
369
+ const tot = sum(c) || 1;
370
+ const p = c.map(x => x / tot);
371
+ // 对角近似密度矩阵 rho = diag(p)
372
+ const rho = p.map((x, a) => p.map((_, b) => (a === b ? round(x, 6) : 0)));
373
+ const purity = round(sum(p.map(x => x * x)), 6);
374
+ return { 密度矩阵: rho, 纯度: purity, 混合度: round(clamp(1 - purity), 6), 维度: p.length };
375
+ },
376
+ ATOM_QUANTUM_ENTANGLE_017: (i) => {
377
+ const a = arr(i["本地态"] ?? i.local).map(num);
378
+ const b = arr(i["远端ID"] ?? i.remote).map(num);
379
+ const n = Math.min(a.length, b.length);
380
+ if (!n) return { 纠缠态: a, 纠缠度: 0 };
381
+ const corr = n >= 2 ? pearson2(a.slice(0, n), b.slice(0, n)) : 0;
382
+ return {
383
+ 纠缠态: a.slice(0, n).map((x, k) => round((x + (b[k] || 0)) / 2, 6)),
384
+ 纠缠度: round(clamp((corr + 1) / 2), 4),
385
+ 原始相关: round(corr, 4)
386
+ };
387
+ },
388
+ ATOM_COSMIC_ENTANGLE_029: (i) => {
389
+ const a = arr(i["本地状态"] ?? i.state).map(num);
390
+ if (!a.length) return { 同步状态: [], 同步度: 0 };
391
+ const m = mean(a);
392
+ return {
393
+ 同步状态: a.map(x => round(x - m, 6)),
394
+ 同步度: round(clamp(1 - safeDiv(std(a), Math.abs(m) + 1e-9)), 4),
395
+ 远端ID已记录: i["远端ID"] != null || i.remote != null
396
+ };
397
+ },
398
+ ATOM_FUSION_Q_B_037: (i) => {
399
+ const q = arr(i["量子态"] ?? i.q).map(num);
400
+ const b = arr(i["生物信号"] ?? i.b).map(num);
401
+ const n = Math.max(q.length, b.length);
402
+ if (!n) return { 融合特征: [] };
403
+ const f = [];
404
+ for (let k = 0; k < n; k++) f.push(round(0.5 * (q[k] || 0) + 0.5 * (b[k] || 0), 6));
405
+ const agree = n >= 2 ? clamp((pearson2(q, b) + 1) / 2) : 0.5;
406
+ return { 融合特征: f, 一致度: round(agree, 4), 维度: n };
407
+ },
408
+
409
+ /* 多模态 / 群体 */
410
+ ATOM_PEOPLE_FUSE_002: (i) => {
411
+ const mods = i["多模态特征"] ?? i.features ?? i.input;
412
+ const groups = Array.isArray(mods) && Array.isArray(mods[0]) ? mods
413
+ : Array.isArray(mods) ? [mods] : [];
414
+ if (!groups.length) return { 融合特征: [], 模态数: 0 };
415
+ const dim = Math.max(...groups.map(g => g.length));
416
+ const f = [];
417
+ for (let k = 0; k < dim; k++) {
418
+ const vals = groups.map(g => num(g[k])).filter(isFinite);
419
+ f.push(round(mean(vals), 6));
420
+ }
421
+ return { 融合特征: f, 模态数: groups.length, 维度: dim };
422
+ },
423
+ ATOM_PEOPLE_BEHAVIOR_007: (i) => {
424
+ const e = arr(i["眼动"] ?? i.eye).map(num);
425
+ const m = arr(i["微表情"] ?? i.micro).map(num);
426
+ const p = arr(i["姿态"] ?? i.posture).map(num);
427
+ const all = e.concat(m, p);
428
+ if (!all.length) return { 行为特征: [] };
429
+ return {
430
+ 行为特征: [round(mean(e), 4), round(mean(m), 4), round(mean(p), 4), round(std(all), 4)],
431
+ 维度名: ["眼动均值", "微表情均值", "姿态均值", "整体波动"],
432
+ 样本数: all.length
433
+ };
434
+ },
435
+ ATOM_SWARM_SYNC_216: (i) => {
436
+ const nodes = arr(i["各节点状态"] ?? i.states ?? i.input);
437
+ const vecs = nodes.map(n => (Array.isArray(n) ? n.map(num) : [num(n)]));
438
+ if (!vecs.length) return { 统一状态: [], 同步度: 0 };
439
+ const dim = Math.max(...vecs.map(v => v.length));
440
+ const uni = [];
441
+ for (let k = 0; k < dim; k++) uni.push(round(mean(vecs.map(v => num(v[k]))), 6));
442
+ const disp = mean(vecs.map(v => std(v.length ? v : [0])));
443
+ return { 统一状态: uni, 同步度: round(clamp(1 - safeDiv(disp, Math.abs(mean(uni)) + 1e-9)), 4), 节点数: vecs.length };
444
+ },
445
+ ATOM_SWARM_EMERGE_208: (i) => {
446
+ const nodes = arr(i["群体状态"] ?? i.states ?? i.input);
447
+ const v = nodes.map(n => (Array.isArray(n) ? mean(n.map(num)) : num(n)));
448
+ if (v.length < 2) return { 检测结果: "样本不足", 涌现指数: 0 };
449
+ const m = mean(v), sd = std(v);
450
+ const idx = round(safeDiv(sd, Math.abs(m) + 1e-9), 4);
451
+ return {
452
+ 检测结果: idx > 0.5 ? "存在涌现迹象" : idx > 0.2 ? "弱涌现" : "无明显涌现",
453
+ 涌现指数: idx, 均值: round(m, 4), 离散度: round(sd, 4)
454
+ };
455
+ },
456
+ ATOM_SWARM_OPTIMIZE_218: (i) => {
457
+ const v = arr(i["群体状态"] ?? i.states ?? i.input).map(n => (Array.isArray(n) ? mean(n.map(num)) : num(n)));
458
+ if (!v.length) return { 优化建议: [] };
459
+ const m = mean(v);
460
+ const worst = v.map((x, k) => ({ k, x, d: x - m })).filter(o => o.d < 0).sort((a, b) => a.d - b.d);
461
+ const give = worst.slice(0, 3).map(o => ({ id: "node" + o.k, got: round(-o.d, 4) }));
462
+ return {
463
+ 优化建议: worst.slice(0, 3).map(o => `节点${o.k} 低于均值 ${round(-o.d, 4)},优先补强`),
464
+ 分配: give,
465
+ 群体均值: round(m, 4), 待补强节点数: worst.length
466
+ };
467
+ },
468
+
469
+ /* 预测 / 趋势(统一用 OLS 外推) */
470
+ ATOM_TRAFFIC_PREDICT_219: (i) => {
471
+ const h = arr(i["历史数据"] ?? i.data ?? i.input).map(num);
472
+ if (h.length < 2) return { 预测结果: [] };
473
+ const { slope } = ols2(h);
474
+ const m = mean(h);
475
+ return {
476
+ 预测结果: [1, 2, 3].map(k => round(m + slope * (h.length - 1 + k), 4)),
477
+ 趋势: slope > 0.01 ? "上升" : slope < -0.01 ? "下降" : "平稳",
478
+ 斜率: round(slope, 6)
479
+ };
480
+ },
481
+ ATOM_NEWS_TREND_303: (i) => {
482
+ const h = arr(i["历史新闻"] ?? i.data ?? i.input).map(x => (typeof x === "object" ? num(x.value ?? x.tone) : num(x)));
483
+ if (h.length < 2) return { 趋势预测: "样本不足" };
484
+ const { slope } = ols2(h);
485
+ const base = mean(h);
486
+ return {
487
+ 趋势预测: slope > 0.05 ? "升温" : slope < -0.05 ? "降温" : "持平",
488
+ 预测序列: [1, 2, 3].map(k => round(base + slope * (h.length - 1 + k), 4)),
489
+ 斜率: round(slope, 6), 样本数: h.length
490
+ };
491
+ },
492
+ ATOM_POLICY_FORECAST_107: (i) => {
493
+ const p = arr(i["历史政策"] ?? i.policy).map(num);
494
+ const e = arr(i["经济数据"] ?? i.economy).map(num);
495
+ const n = Math.min(p.length, e.length);
496
+ if (!n) return { 趋势报告: "样本不足" };
497
+ const corr = n >= 2 ? pearson2(p.slice(0, n), e.slice(0, n)) : 0;
498
+ const pred = [1, 2, 3].map(k => round(mean(e.slice(0, n)) + corr * k, 4));
499
+ return {
500
+ 趋势: corr > 0.05 ? "上升" : corr < -0.05 ? "下降" : "平稳",
501
+ 趋势报告: Math.abs(corr) > 0.7 ? "政策与经济强相关,可据此外推" : "相关性不足,不宜外推",
502
+ 预测序列: pred,
503
+ 相关系数: round(corr, 4), 样本数: n
504
+ };
505
+ },
506
+ ATOM_TECH_TREND_202: (i) => {
507
+ const pat = arr(i["技术论文"] ?? i.papers).map(num);
508
+ const pat2 = arr(i["专利数据"] ?? i.patents).map(num);
509
+ const n = Math.min(pat.length, pat2.length);
510
+ const comp = pat.concat(pat2);
511
+ if (comp.length < 2) return { 趋势报告: "样本不足" };
512
+ const { slope } = ols2(comp);
513
+ const base2 = mean(comp);
514
+ return {
515
+ 趋势报告: slope > 0 ? "技术活跃度上升" : "技术活跃度下降",
516
+ 趋势: slope > 0 ? "上升" : slope < 0 ? "下降" : "平稳",
517
+ 预测序列: [1, 2, 3].map(k => round(base2 + slope * (comp.length - 1 + k), 4)),
518
+ 综合斜率: round(slope, 6), 论文数: pat.length, 专利数: pat2.length,
519
+ 两者相关: n >= 2 ? round(clamp((pearson2(pat.slice(0, n), pat2.slice(0, n)) + 1) / 2), 4) : null
520
+ };
521
+ },
522
+ ATOM_TECH_GAP_204: (i) => {
523
+ const a = arr(i["自身技术"] ?? i.self).map(num);
524
+ const b = arr(i["对标技术"] ?? i.bench).map(num);
525
+ const n = Math.min(a.length, b.length);
526
+ if (!n) return { 差距报告: "无可比维度" };
527
+ const gaps = [];
528
+ for (let k = 0; k < n; k++) gaps.push(round(b[k] - a[k], 4));
529
+ return {
530
+ 差距报告: gaps.every(g => g <= 0) ? "全面领先" : gaps.filter(g => g > 0).length > n / 2 ? "整体落后" : "局部落后",
531
+ 各维差距: gaps, 最大缺口: round(Math.max(...gaps), 4), 综合差距: round(Math.sqrt(sum(gaps.map(g => g * g))), 4)
532
+ };
533
+ },
534
+ ATOM_TECH_EVALUATE_206: (i) => {
535
+ const t = String(i["技术描述"] ?? i.desc ?? i.input ?? "");
536
+ const dims = { 新颖性: 0, 可行性: 0, 价值: 0, 壁垒: 0 };
537
+ if (/首次|首创|全新|新范式/.test(t)) dims.新颖性 += 0.5;
538
+ if (/原型|已验证|已落地|量产/.test(t)) dims.可行性 += 0.5;
539
+ if (/降本|提效|增收|减损/.test(t)) dims.价值 += 0.5;
540
+ if (/专利|独占|标准|生态/.test(t)) dims.壁垒 += 0.5;
541
+ const descLen = Math.min(1, t.length / 80);
542
+ Object.keys(dims).forEach(k => { dims[k] = round(clamp(dims[k] + descLen * 0.3), 4); });
543
+ const overall = round(mean(Object.values(dims)), 4);
544
+ return { 价值报告: overall >= 0.6 ? "高价值" : overall >= 0.35 ? "中等价值" : "价值待证", 各维: dims, 综合: overall };
545
+ },
546
+
547
+ /* 调度 / 分配 */
548
+ ATOM_OS_RESOURCE_102: (i) => {
549
+ const reqs = arr(i["资源请求"] ?? i.requests ?? i.input).map(r => ({
550
+ id: String(obj3(r).id ?? "?"), need: Math.max(0, num(obj3(r).need ?? obj3(r).amount))
551
+ }));
552
+ const total = Math.max(0, num(i["总量"] ?? i.total, sum(reqs.map(r => r.need))));
553
+ const demand = sum(reqs.map(r => r.need)) || 1;
554
+ const alloc = reqs.map(r => ({
555
+ id: r.id,
556
+ got: round(total * r.need / demand, 4),
557
+ satisfaction: round(clamp(safeDiv(total * r.need / demand, Math.max(1e-9, r.need))), 4)
558
+ }));
559
+ return { 分配结果: alloc, 总需求: round(demand, 4), 总供给: total, 满足率: round(clamp(total / demand), 4) };
560
+ },
561
+ ATOM_OS_AGENT_101: (i) => {
562
+ const tasks = arr(i["任务"] ?? i.tasks ?? i.input).map(t => ({
563
+ id: String(obj3(t).id ?? obj3(t).name ?? "?"),
564
+ cost: Math.max(0.1, num(obj3(t).cost ?? obj3(t.duration, 1))),
565
+ priority: clamp(num(obj3(t).priority, 0.5))
566
+ }));
567
+ const ordered = tasks.slice().sort((a, b) => (b.priority / b.cost) - (a.priority / a.cost));
568
+ let t0 = 0;
569
+ const plan = ordered.map((t, k) => {
570
+ const start = t0; t0 += t.cost;
571
+ return { order: k + 1, id: t.id, start: round(start, 4), end: round(t0, 4) };
572
+ });
573
+ return {
574
+ 调度结果: plan,
575
+ 分配: plan.map(p => ({ id: p.id, got: round(p.end - p.start, 4) })),
576
+ 总耗时: round(t0, 4),
577
+ 策略: "按优先级/成本比降序(Smith 规则)"
578
+ };
579
+ },
580
+ ATOM_PARALLEL_EVOLVE_209: (i) => {
581
+ const p = arr(i["物理状态"] ?? i.state ?? i.input).map(num);
582
+ if (!p.length) return { 数字状态: [], 保真度: 0 };
583
+ const m = mean(p), sd = Math.max(1e-9, std(p));
584
+ const d = p.map(x => round((x - m) / sd, 6));
585
+ const recon = d.map(z => m + z * sd);
586
+ const err = Math.sqrt(mean(p.map((x, k) => (x - recon[k]) ** 2)));
587
+ return { 数字状态: d, 保真度: round(clamp(1 - err / (Math.abs(m) + 1e-9)), 4), 映射: "z-score 标准化映射" };
588
+ }
589
+ });
590
+
591
+ /* 供第二批使用的小工具 */
592
+ function pearson2(a, b) {
593
+ const n = Math.min(a.length, b.length);
594
+ if (n < 2) return 0;
595
+ const ma = mean(a.slice(0, n)), mb = mean(b.slice(0, n));
596
+ let num2 = 0, da = 0, db = 0;
597
+ for (let k = 0; k < n; k++) {
598
+ const x = num(a[k]) - ma, y = num(b[k]) - mb;
599
+ num2 += x * y; da += x * x; db += y * y;
600
+ }
601
+ const d = Math.sqrt(da * db);
602
+ return d === 0 ? 0 : num2 / d;
603
+ }
604
+ function ols2(y) {
605
+ const n = y.length, xs = y.map((_, k) => k);
606
+ const mx = mean(xs), my = mean(y);
607
+ let num2 = 0, den = 0;
608
+ for (let k = 0; k < n; k++) { num2 += (xs[k] - mx) * (y[k] - my); den += (xs[k] - mx) ** 2; }
609
+ return { slope: den === 0 ? 0 : num2 / den };
610
+ }
611
+ function obj3(v) { return v && typeof v === "object" ? v : {}; }
612
+
613
+ /* 第二批自测样例 */
614
+ Object.assign(SAMPLES, {
615
+ ATOM_QUANTUM_TOMOGRAPHY_020: { "测量统计": [50, 30, 20] },
616
+ ATOM_QUANTUM_ENTANGLE_017: { "本地态": [0.8, 0.5, 0.9], "远端ID": [0.7, 0.55, 0.85] },
617
+ ATOM_COSMIC_ENTANGLE_029: { "本地状态": [1, 1.2, 0.9], "远端ID": "node-7" },
618
+ ATOM_FUSION_Q_B_037: { "量子态": [0.9, 0.4], "生物信号": [0.7, 0.6] },
619
+ ATOM_PEOPLE_FUSE_002: { "多模态特征": [[0.8, 0.6], [0.7, 0.65], [0.75, 0.62]] },
620
+ ATOM_PEOPLE_BEHAVIOR_007: { "眼动": [0.5, 0.6], "微表情": [0.3, 0.35], "姿态": [0.7, 0.72] },
621
+ ATOM_SWARM_SYNC_216: { "各节点状态": [[0.8, 0.6], [0.82, 0.58], [0.79, 0.61]] },
622
+ ATOM_SWARM_EMERGE_208: { "群体状态": [0.5, 0.9, 0.4, 1.2, 0.6] },
623
+ ATOM_SWARM_OPTIMIZE_218: { "群体状态": [0.5, 0.9, 0.4, 1.2, 0.6] },
624
+ ATOM_TRAFFIC_PREDICT_219: { "历史数据": [100, 120, 140, 165] },
625
+ ATOM_NEWS_TREND_303: { "历史新闻": [0.2, 0.35, 0.5, 0.7] },
626
+ ATOM_POLICY_FORECAST_107: { "历史政策": [1, 2, 3, 4, 5], "经济数据": [2, 4, 5.8, 8.1, 10] },
627
+ ATOM_TECH_TREND_202: { "技术论文": [10, 15, 22, 30], "专利数据": [5, 8, 13, 19] },
628
+ ATOM_TECH_GAP_204: { "自身技术": [0.8, 0.5, 0.6], "对标技术": [0.9, 0.7, 0.5] },
629
+ ATOM_TECH_EVALUATE_206: { "技术描述": "首创的全新范式,已完成原型验证,可降本 40%,已申请专利" },
630
+ ATOM_OS_RESOURCE_102: { "资源请求": [{ id: "A", need: 60 }, { id: "B", need: 40 }], "总量": 80 },
631
+ ATOM_OS_AGENT_101: { "任务": [{ id: "T1", cost: 3, priority: 0.9 }, { id: "T2", cost: 1, priority: 0.4 }] },
632
+ ATOM_PARALLEL_EVOLVE_209: { "物理状态": [10, 12, 11, 15] }
633
+ });
634
+
635
+
636
+ /* ---------- 第三批 compute 原子(R24)---------- */
637
+ Object.assign(COMPUTE, {
638
+ ATOM_FUSION_ALL_040: (i) => {
639
+ const g = i["三元数据"] ?? i.triple ?? i.input;
640
+ const groups = Array.isArray(g) && Array.isArray(g[0]) ? g : (Array.isArray(g) ? [g] : []);
641
+ if (!groups.length) return { 全息融合态: [], 融合度: 0 };
642
+ const dim = Math.max(...groups.map(x => x.length));
643
+ const fused = [];
644
+ for (let k = 0; k < dim; k++) fused.push(round(mean(groups.map(x => num(x[k]))), 6));
645
+ // 融合度 = 1 - 各源相对于融合态的归一化离散
646
+ const disp = mean(groups.map(x => std(x.map(num))));
647
+ return { 全息融合态: fused, 融合度: round(clamp(1 - safeDiv(disp, Math.abs(mean(fused)) + 1e-9)), 4), 源数: groups.length };
648
+ },
649
+ ATOM_FUSION_B_C_038: (i) => {
650
+ const b = arr(i["生物状态"] ?? i.bio).map(num);
651
+ const c = arr(i["宇宙事件"] ?? i.cosmic).map(num);
652
+ const n = Math.max(b.length, c.length);
653
+ if (!n) return { 同步状态: [], 同步度: 0 };
654
+ const s = [];
655
+ for (let k = 0; k < n; k++) s.push(round(0.5 * num(b[k]) + 0.5 * num(c[k]), 6));
656
+ const agree = (b.length >= 2 && c.length >= 2) ? clamp((pearson2(b, c) + 1) / 2) : 0.5;
657
+ return { 同步状态: s, 同步度: round(agree, 4), 维度: n };
658
+ },
659
+ ATOM_FUSION_DAILY_ETERNAL_042: (i) => {
660
+ const m = arr(i["日常瞬间"] ?? i.moments ?? i.input).map(num);
661
+ if (!m.length) return { 永恒感参数: 0 };
662
+ // 永恒感 = 瞬间的「强度×独特性」累积;用基尼衡量独特性
663
+ const intensity = clamp(mean(m.map(Math.abs)));
664
+ const uniqueness = clamp(1 - gini(m.map(Math.abs)));
665
+ return {
666
+ 永恒感参数: round(clamp(0.6 * intensity + 0.4 * uniqueness), 4),
667
+ 强度: round(intensity, 4), 独特性: round(uniqueness, 4), 瞬间数: m.length
668
+ };
669
+ },
670
+ ATOM_FUSION_ETHICS_045: (i) => {
671
+ const c = arr(i["多伦理冲突"] ?? i.conflicts ?? i.input)
672
+ .map(x => (typeof x === "object" ? clamp(num(x.weight ?? x.value, 0.5)) : clamp(num(x))));
673
+ if (!c.length) return { 统一伦理: 0.5, 说明: "无冲突项" };
674
+ // 统一伦理 = 冲突向量的最小可接受共识(下界)
675
+ return {
676
+ 统一伦理: round(Math.min(...c), 4),
677
+ 各项: c.map(x => round(x, 4)),
678
+ 分歧度: round(Math.max(...c) - Math.min(...c), 4),
679
+ 说明: Math.max(...c) - Math.min(...c) > 0.5 ? "分歧过大,需分层处理" : "可达成统一"
680
+ };
681
+ },
682
+ ATOM_FUSION_HOLO_047: (i) => {
683
+ const layers = i["层状态"] ?? i.state ?? i.input;
684
+ const gs = Array.isArray(layers) && Array.isArray(layers[0]) ? layers : (Array.isArray(layers) ? [layers] : []);
685
+ if (!gs.length) return { 增强映射: [], 全息度: 0 };
686
+ const dim = Math.max(...gs.map(x => x.length));
687
+ const mapped = [];
688
+ for (let k = 0; k < dim; k++) {
689
+ const vals = gs.map(x => num(x[k]));
690
+ // 全息映射:每层都承载其余层的均值信息
691
+ mapped.push(round(0.7 * mean(vals) + 0.3 * Math.max(...vals), 6));
692
+ }
693
+ const cross = gs.length >= 2 && dim >= 2
694
+ ? clamp((pearson2(gs[0], gs[1]) + 1) / 2) : 0.5;
695
+ return { 增强映射: mapped, 全息度: round(cross, 4), 层数: gs.length };
696
+ },
697
+ ATOM_BIO_MEMORY_023: (i) => {
698
+ const m = arr(i["记忆数据"] ?? i.memory ?? i.input).map(num);
699
+ if (!m.length) return { 编码记忆: [], 压缩率: 0 };
700
+ const mu = mean(m), sd = Math.max(1e-9, std(m));
701
+ const enc = m.map(x => round((x - mu) / sd, 4));
702
+ const uniq = new Set(enc).size;
703
+ return {
704
+ 编码记忆: enc,
705
+ 压缩率: round(clamp(1 - uniq / Math.max(1, enc.length)), 4),
706
+ 原始样本: m.length, 编码维度: uniq
707
+ };
708
+ },
709
+ ATOM_BIO_EVOLVE_024: (i) => {
710
+ const b = arr(i["用户学习行为"] ?? i.behavior ?? i.input).map(num);
711
+ if (!b.length) return { AI参数更新: { delta: 0 } };
712
+ const { slope } = ols2(b);
713
+ return {
714
+ AI参数更新: { delta: round(slope, 6), direction: slope > 0 ? "增强" : "衰减" },
715
+ 学习趋势: round(slope, 4), 样本数: b.length
716
+ };
717
+ },
718
+ ATOM_EMOTION_SYNC_505: (i) => {
719
+ const u = clamp(num(i["用户情绪"] ?? i.emotion ?? i.input, 0.5));
720
+ // AI 情绪响应采用「镜像但弱化」策略:同向但幅度减半,避免情绪放大
721
+ const mirror = round(clamp(u * 0.5 + 0.25), 4);
722
+ return { AI情绪响应: mirror, 同向性: u > 0.5 ? "正向镜像" : "负向镜像", 放大风险: round(clamp(u * 0.3), 4) };
723
+ },
724
+ ATOM_NEWS_IMPACT_302: (i) => {
725
+ const n = arr(i["时事"] ?? i.news).map(num);
726
+ const p = arr(i["用户画像"] ?? i.profile).map(num);
727
+ const m = Math.min(n.length, p.length);
728
+ if (!m) return { 影响报告: "维度不匹配", 影响度: 0 };
729
+ const corr = m >= 2 ? pearson2(n.slice(0, m), p.slice(0, m)) : 0;
730
+ const mag = Math.sqrt(mean(n.slice(0, m).map((x, k) => (num(x) - num(p[k])) ** 2)));
731
+ return {
732
+ 影响报告: Math.abs(corr) > 0.6 ? "时事与该用户强相关,需优先推送" : "相关性弱,常规推送",
733
+ 影响度: round(clamp(mag), 4), 相关度: round(corr, 4), 比对维度: m
734
+ };
735
+ },
736
+ ATOM_TRAFFIC_OPTIMIZE_220: (i) => {
737
+ const f = arr(i["实时流量"] ?? i.flow ?? i.input).map(num);
738
+ if (!f.length) return { 控制方案: [] };
739
+ const m = mean(f);
740
+ const plan = f.map((x, k) => {
741
+ const d = x - m;
742
+ return {
743
+ lane: k,
744
+ actual: round(x, 4),
745
+ action: d > m * 0.2 ? "限流" : d < -m * 0.2 ? "放行" : "维持",
746
+ delta: round(-d * 0.5, 4)
747
+ };
748
+ });
749
+ return { 控制方案: plan, 分配: plan.map(p => ({ id: "lane" + p.lane, got: p.delta })), 均值: round(m, 4), 拥堵车道: plan.filter(p => p.action === "限流").map(p => p.lane) };
750
+ },
751
+ ATOM_RES_REVERSE_055: (i) => {
752
+ const u = i["新用户"] ?? i.input;
753
+ const dims = Array.isArray(u) ? u.map(num) : (u && typeof u === "object" ? Object.values(u).map(num) : []);
754
+ if (!dims.length) return { 耦生度曲线: [], 初始耦生度: 0 };
755
+ // 反向训练:先假设高耦生,再用观测逐轮收紧
756
+ let c = clamp(mean(dims.map(Math.abs)));
757
+ const curve = [];
758
+ for (let r = 0; r < 5; r++) {
759
+ curve.push(round(c, 4));
760
+ c = c - (c - mean(dims.map(x => clamp(Math.abs(x))))) * 0.35;
761
+ }
762
+ return { 耦生度曲线: curve, 初始耦生度: curve[0], 收敛耦生度: curve[curve.length - 1], 观测维度: dims.length };
763
+ },
764
+ ATOM_FUSION_NOTEVEN_044: (i) => {
765
+ const a = arr(i["当前执着"] ?? i.attachments ?? i.input).map(num);
766
+ if (!a.length) return { 无无状态: 1, 说明: "无执着项" };
767
+ const total = sum(a.map(Math.abs));
768
+ const maxOne = Math.max(...a.map(Math.abs));
769
+ // 无无状态:执着总量越小、越分散,越接近
770
+ const state = round(clamp(1 - total / Math.max(1e-9, a.length * (maxOne + 1e-9))), 4);
771
+ return { 无无状态: state, 执着总量: round(total, 4), 最大单项: round(maxOne, 4), 说明: state > 0.6 ? "接近无无" : "执着仍集中" };
772
+ }
773
+ });
774
+
775
+ Object.assign(SAMPLES, {
776
+ ATOM_FUSION_ALL_040: { "三元数据": [[0.8, 0.6], [0.75, 0.65], [0.82, 0.58]] },
777
+ ATOM_FUSION_B_C_038: { "生物状态": [0.6, 0.7, 0.65], "宇宙事件": [0.62, 0.72, 0.6] },
778
+ ATOM_FUSION_DAILY_ETERNAL_042: { "日常瞬间": [0.5, 0.9, 0.3, 0.8] },
779
+ ATOM_FUSION_ETHICS_045: { "多伦理冲突": [{ weight: 0.9 }, { weight: 0.6 }, { weight: 0.75 }] },
780
+ ATOM_FUSION_HOLO_047: { "层状态": [[0.8, 0.6, 0.7], [0.75, 0.65, 0.72]] },
781
+ ATOM_BIO_MEMORY_023: { "记忆数据": [10, 12, 11, 15, 13] },
782
+ ATOM_BIO_EVOLVE_024: { "用户学习行为": [1, 2, 3, 4, 5] },
783
+ ATOM_EMOTION_SYNC_505: { "用户情绪": 0.8 },
784
+ ATOM_NEWS_IMPACT_302: { "时事": [0.8, 0.6, 0.9], "用户画像": [0.7, 0.65, 0.85] },
785
+ ATOM_TRAFFIC_OPTIMIZE_220: { "实时流量": [100, 300, 120, 280] },
786
+ ATOM_RES_REVERSE_055: { "新用户": [0.5, 0.8, 0.3, 0.9] },
787
+ ATOM_FUSION_NOTEVEN_044: { "当前执着": [0.9, 0.2, 0.1] }
788
+ });
789
+
790
+
791
+ /* ---------- 第四批 compute 原子(R27)---------- */
792
+ Object.assign(COMPUTE, {
793
+ ATOM_EMOTION_ANCHOR_204: (i) => {
794
+ const e = clamp(num(i["用户情绪"] ?? i.emotion ?? i.input, 0.5));
795
+ const scene = String(i["场景"] ?? i.scene ?? "");
796
+ // 情绪锚点 = 把当前情绪寄存在一个可复现的刺激上
797
+ const anchor = {
798
+ trigger: scene || "未指定场景",
799
+ target: round(clamp(e * 0.7 + 0.15), 4),
800
+ recall: /会议|汇报|面试/.test(scene) ? "开场前三分钟" : "场景开始前"
801
+ };
802
+ return {
803
+ 情绪锚点: anchor,
804
+ 当前强度: round(e, 4),
805
+ 回落预期: round(clamp(e - clamp(e * 0.7 + 0.15)), 4),
806
+ 可复现性: round(clamp(0.6 + (scene ? 0.3 : 0)), 4)
807
+ };
808
+ },
809
+ ATOM_ETHIC_REPORT_205: (i) => {
810
+ const r = i["审查结果"] ?? i.result ?? i.input;
811
+ const o = r && typeof r === "object" ? r : { 结论: String(r ?? "") };
812
+ const issues = Array.isArray(o.问题) ? o.问题 : (o.issues || []);
813
+ const pass = /通过/.test(String(o.审查结果 ?? o.结论 ?? ""));
814
+ return {
815
+ 报告: [
816
+ `# 伦理审查报告`,
817
+ `结论:${pass ? "通过" : "不通过"}`,
818
+ `问题数:${Array.isArray(issues) ? issues.length : 0}`,
819
+ `风险等级:${String(o.风险等级 ?? "unknown")}`,
820
+ Array.isArray(issues) && issues.length ? `明细:${issues.join("、")}` : "明细:无"
821
+ ].join("\n"),
822
+ 问题数: Array.isArray(issues) ? issues.length : 0,
823
+ 是否通过: pass
824
+ };
825
+ },
826
+ ATOM_ACCESSIBLE_HEALTH_505: (i) => {
827
+ const s = String(i["用户状况"] ?? i.condition ?? i.input ?? "");
828
+ const alerts = [];
829
+ if (/胸痛|呼吸困难|昏厥|大出血/.test(s)) alerts.push("立即就医(急症信号)");
830
+ if (/持续|两周以上|加重/.test(s)) alerts.push("尽快就诊,勿拖延");
831
+ if (/睡|压力|焦虑/.test(s)) alerts.push("作息与压力管理,必要时心理支持");
832
+ if (!alerts.length) alerts.push("无急症信号,维持常规观察");
833
+ return {
834
+ 建议: alerts,
835
+ 紧急度: /胸痛|呼吸困难|昏厥|大出血/.test(s) ? "high" : /持续|加重/.test(s) ? "medium" : "low",
836
+ 免责: "本原子仅做信号分诊,不构成诊断"
837
+ };
838
+ }
839
+ });
840
+ Object.assign(SAMPLES, {
841
+ ATOM_EMOTION_ANCHOR_204: { "用户情绪": 0.8, "场景": "重要汇报会议" },
842
+ ATOM_ETHIC_REPORT_205: { "审查结果": { 审查结果: "不通过", 风险等级: "high", 问题: ["程序违规", "公平性风险"] } },
843
+ ATOM_ACCESSIBLE_HEALTH_505: { "用户状况": "近两周持续头晕,近期加重" }
844
+ });
845
+
846
+ module.exports = {
847
+ COMPUTE, TEMPLATE, EXTERNAL, kindOf, run, SAMPLES, CONSTRAINT, MERGED_SOURCES,
848
+ get MERGED() { return __mergeAll(); },
849
+ };