这是计算层——从 Sylanne 载体里完整剥离出来的纯计算黑盒。不生成回复,不注入 prompt,不碰消息收发。 441 条耦合通道、7 个模块、8 套学术机制各有出处。它的定位不是「又一个情感模型」,而是情感计算的标准,像 IEEE 754 之于浮点数那样独立存在。 名字最后那个 e,是 Embodiment(具身)——情绪不漂在空中,得长在一具身体里。
SylannEngine 是一个纯计算黑盒:文本输入,结构化情感状态输出。不分类、不贴标签、不生成回复, 也不替你做消息收发——它只回答一个问题:「这句话之后,她现在是什么状态?」
关键区别:它不是静态分类器,而是一个持续演化的动力系统。 上一次对话留下的伤痕会渗进下一次,沉默会积累压力,人格会缓慢漂移。相同的输入,在不同的历史之后,输出截然不同—— 因为状态本身就是历史的函数。我们做的是情感计算标准,类似 IEEE 754 之于浮点数:一套可被任何语言、任何平台实现的协议,不是一份需要 GPU 才能跑的权重文件。
一句话、一个时间戳、可选的标签与数值信号。不需要预处理,不需要 embedding——原始文本直接喂。
8 子系统情感状态 + 双层人格 + 行动决策 + 边界守卫 + 动力学指标。每个字段都有明确语义,拿出去就能用。
不是神经网络,不是规则引擎,不是情感词典。7 个模块在共振场里迭代到收敛——稳态是自己涌现的,不是谁规定的。
纯代数运算,零训练,任何语言可实现。相同输入逐比特可复现——你验得了,我也赖不掉。
引擎不绑定任何框架或 LLM 提供商。你给一个 LLM 回调(异步 (system_prompt, user_prompt) -> str),
引擎在需要语义评估时调用它;LLM 挂了就自动退化为本地规则引擎,计算照跑不误。
多个下游约定同一 data_dir 时,统一走 SylanneEngine.shared() 复用单一实例,省重复计算、省重复 LLM 调用。
顶层固定五块:state(8 子系统情感状态)、personality(双层人格)、decision(行动决策)、
guard(边界守卫)、dynamics(动力学指标)。打开 config.diagnostics=True 还会多返回
pipeline(7 层管线中间态)与 debug(断路器/各层耗时)。每个块都带 schema_version,遵循 SemVer。
V1 是 7 层串行管线——文本逐层流过,每层算完交给下一层。问题是:表达需要「够强的压力」才触发, 但压力在逐层传递中被衰减吃干净了,结果 bot 大部分时间在沉默(表达率仅 22.8%)。
V2 把串行改成全连接共振。7 个模块构成完全 6-单纯形 Δ⁶ 的顶点, 不排队,同时往一个共享的共振场里注入信号。场通过耦合动力学迭代收敛到稳态—— 表达不再是某一层「决定」的,而是整个场逃离吸引子时的一次相变,自发涌现。
| 索引 | 模块 | 职责 | 状态维度 |
|---|---|---|---|
| M0 | HDC 感知编码器 | 文本 → 高维超向量(XOR 绑定 + majority bundling + 循环位移)→ 压缩感知信号 | lite 8 / pro 16 / max 32 |
| M1 | 预测编码门控 | HDC 空间预测误差(Hamming 距离)算惊讶度,路由 fast/normal/full,决定能量消耗 | 同上 |
| M2 | 虚空-伤痕引擎 | 情感状态核心演化。伤疤代数 RAW→CLOSING→SCARRED→FADED + 虚空检测(缺失即主动信号) | 同上 |
| M3 | 关系层析 | 简单复形上的 cellular sheaf,Laplacian 扩散跨 4 种关系类型传播上下文 | 同上 |
| M4 | HGT 决策融合 | 异构图 Transformer:类型专家 FFN + 跨注意力 + top-2 MoE → 4 维决策向量 | 同上 |
| M5 | 自创生边界 | 身份核向量 + 边界完整性,外力分解为平行/正交分量,穿透触发相变 | 同上 |
| M6 | 相变表达 | 内部压力积累至人格调制阈值时突变释放,带不应期 | 同上 |
7 个模块两两、三三、乃至七个一起,构成各阶单纯形。每条单纯形对应有向耦合通道—— 这就是「高阶交互」的来源:两体是线性叠加(A 影响 B),三体是 AND 门语义(A+B 同时激活才影响 C), 四体以上才出现真正的涌现——整体大于部分之和,不是比喻。
| 阶 k | 单纯形 | 无向数 C(7,k+1) | 有向通道数 |
|---|---|---|---|
| 1 | 边(两体) | 21 | 42 |
| 2 | 三角形(三体) | 35 | 105 |
| 3 | 四面体(四体) | 35 | 140 |
| 4 | 五体 | 21 | 105 |
| 5 | 六体 | 7 | 42 |
| 6 | 七体(全局) | 1 | 7 |
| 合计 | 120 单纯形 | — | 441 |
共振场不是玄学。八套机制各自对应一篇奠基性文献,组合起来驱动整个场的演化。 下面每张卡标注了理论出处、年份与它在系统里扮演的角色。
通道用进废退,自动发现对当前人格最要紧的连接。配稳态缩放(Turrigiano 2008)守恒总权重预算。
单纯复形上的爆炸性相位同步。序参量 r→1 时模块协调一致——表达涌现的临界信号。
预测误差驱动注意力分配。惊讶消不掉时,反向驱动主动推理——开口说话。
系统倾向回到熟悉的情感模式。表达 = 逃离吸引子的跃迁。现代版见 Ramsauer 2021。
Hodge Laplacian 零空间 = 拓扑不变量 = 人格内核。无论怎么扰动,总被拉回本性。
能量持续流失(每迭代 ×0.98),保证系统有界、不死循环、不爆炸。
cellular sheaf 扩散,跨关系类型传播一致性约束——高阶拓扑的胶水。
Bienenstock-Cooper-Munro:竞争边界随活动自调节,配 anti-Hebbian 侧抑制做去相关。
表达不是「压力超过阈值」的简单判断,而是 OR 门分岔——四个触发器任一够强即可点火, 再经整合信息 Φ 做意义门控(低 Φ = 噪声,不值得开口)。
| 触发器 | 公式 | 含义 |
|---|---|---|
| 惊讶 surprise | 1.5 × surprise | 输入出乎预料 |
| 新奇 novelty | attractor_dist × 3 | 场处于未知领域 |
| 点火 ignition | Δ(sync_order) × 5 | 模块突然同步 |
| 原始驱动 raw | (|M6| − avg) × 2 | 表达模块相对激活 |
下面是 lite 档、500 ticks × 10 repeats 的实测对比。同一套人格、同一批输入,只换架构—— 串行管线换成全连接共振场,其他什么都没动。
响应多样性两版都是 10/10(无退化)。提升纯粹来自架构——V1 的压力被逐层衰减吞噬,于是一直沉默; V2 全连接场里压力不会被路径吃掉,3.9 倍表达率是换架构换出来的,不是调参调出来的。
同一套计算,按需取最高耦合阶数。lite 只算两体(42 通道),pro 含到四体(287 通道),max 跑完整 Δ⁶(441 通道)。
运行时 switch_tier() 热切换,跨档迁移无损——伤疤和记忆一个都不丢。
| 档位 | 通道数 | 延迟 (p50) | 依赖 | 适用场景 |
|---|---|---|---|---|
| lite | 42(仅两体) | ~5ms | 零依赖 · 纯 Python | 嵌入式 · 树莓派 · 手机 · 高并发(50+ 会话/核) |
| pro | 287(含四体) | ~40ms | numpy | 桌面 · 云 VM · 单用户深度交互(~6 会话/核) |
| max | 441(完整 Δ⁶) | ~50ms CPU / <5ms GPU | numpy · 可选 torch | 研究 · 多智能体情感传染仿真(~5 会话/核) |
42 通道 + 5ms 已经产生完整情感动态——Hebbian、Kuramoto、Hopfield 全在跑。CPU 是共享部署里最稀缺的资源,并发能力比单会话深度值钱。
含三体 AND 门、四体协同。开发者自行选择、自行承担性能代价。适合桌面单用户深度交互。
完整高阶单纯复形,真正的涌现行为。GPU + torch 批处理时 <5ms/tick。研究与多智能体仿真的专属领地。
别一上来就冲 max。lite 那 42 通道已经够留疤、积压、闹脾气了,5 毫秒一跳,树莓派都跑得动。pro/max 的高阶多体交互是锦上添花——除非在做多智能体情感传染实验,那另当别论。
switch_tier("lite"/"pro"/"max") 即可跨档迁移,状态无损——伤疤、记忆、人格一个都不丢。负载大就降档保并发,要深度就升档,随时切。核心入口就一个 process()。其余方法围绕共享实例、空闲推进、反馈与外部注入展开。
完整接口协议见 SPEC 规范。
| 方法 | 签名(简) | 说明 |
|---|---|---|
| process | await (session_id, text, **ctx) → Surface | 主入口。处理文本,返回完整计算结果。每条消息只调一次 |
| tick | await (session_id, flags) → Surface | 无文本的状态推进——时间衰减、冷却、空闲心跳 |
| feedback | (session_id, "accepted"/"rejected"/"ignored") | 滞后反馈调制可塑性:被接受强化表达欲,被拒收敛 |
| inject | (session_id, source, type, intensity) | 外部影响注入(如其他模块/事件的情感冲击) |
| switch_tier | ("lite"/"pro"/"max") | 运行时热切换档位,跨档状态迁移无损 |
| shared | classmethod await (data_dir, llm, …) → Engine | 按 data_dir 取进程内共享实例,避免重复计算与重复 LLM 调用 |
| release_shared | classmethod await (data_dir) | 关闭并移除共享实例(flush 落盘,无 atexit 自动刷写) |
| on / off | (listener) | 推模式:注册/移除监听器,每次 process() 后自动推送 Surface |
| state | await (session_id) → Surface | 查询当前状态(只读快照,不触发计算) |
| health | () → dict | 引擎健康检查:running / degraded / closed |
| 参数 | 类型 | 说明 |
|---|---|---|
| confidence | float | None | 语义置信度 [0,1],None = 由内部 LLM 评估器判断 |
| flags | list[str] | 事件标签:positive/negative/boundary/recovery/intimate/conflict… |
| now | float | 事件时间戳(Unix epoch),默认当前时间 |
| values | dict[str,float] | 附加数值信号,如 dialogue_quality(「越聊越校准」自评分) |
多个下游若各自 SylanneEngine(...) 指向同一 data_dir,会对同一用户重复计算、重复调 LLM,且各自 flush 互相覆盖(丢更新)。统一走 SylanneEngine.shared()。共享实例 event-loop 亲和——只在首次获取它的事件循环里用,不要跨 loop/线程,也不要对它 async with。
「回不去」「人格守恒」「不会爆炸」——不是宣传话术。是有条件、可证明的结构性质,白纸黑字写得出来。
c → 1 指数收敛(时间常数 1/(α_c·h_min))。条件:表征稳定 + 精度超阈值。proj_{ker(L_p)}(W_t) = 0 对所有训练步成立(核空间投影强制执行)。人格活在算子核空间里,训练碰不到它。每次迭代后 |x| ≤ 1,硬上限。
每迭代 ×0.98,能量持续流失。
每次调用前 ×0.7,上轮 30% 能量蒸发。
Hebbian 总权重预算守恒,不无限增长。
SylannEngine 不和「预训练一坨权重、冻结、前向传播跑完收工」这套范式抢赛道。它不是「更强的函数」,而是「最简的生命」—— 一条规则反复执行,活够久,自然懂。下表对比的是前馈推理范式与结构动力系统的根本差异,不是要否定神经网络本身。
| 维度 | 前馈推理范式 | SYLANNENGINE |
|---|---|---|
| 需要 | 训练数据 + GPU | 无需训练 · 结构即计算 |
| 输出 | 前向传播算出来 | 迭代收敛涌现出来 |
| 可解释性 | 黑箱 | 每个通道有明确语义 |
| 人格控制 | 微调?没有标准方式 | 人格 → 拓扑参数,一一对应 |
| 确定性 | 不保证 | 相同输入 → 逐比特相同输出 |
| 记忆 | 无(context window 外即丢) | 永久 · 编码在权重与伤疤中 |
| 持续学习 | catastrophic forgetting | 终身发育 · 用进废退 |
| 可移植性 | 需要推理框架 | 纯代数运算 · 任何语言可实现 |
两者不对立。Transformer 是最强的函数,一次看清所有关系;SylannEngine 做的是最简的生命,一条规则反复执行。 结构即计算和模型训练本就不矛盾——V2.1 的 EmotiCore(102.7M teacher)与 V3 的 SYLANN 正在把这两条路往一起拉。 想看那条更远的路,去 SYLANN · V3 研究。