首页/SylannEngine · 引擎
Affective Computation Engine · V2 Resonance Field

SYLANNENGINE

文本进去,情感状态出来。中间不是分类器——是一整套算清楚「感受凭什么动、往哪走」的动力系统。

这是计算层——从 Sylanne 载体里完整剥离出来的纯计算黑盒。不生成回复,不注入 prompt,不碰消息收发。 441 条耦合通道、7 个模块、8 套学术机制各有出处。它的定位不是「又一个情感模型」,而是情感计算的标准,像 IEEE 754 之于浮点数那样独立存在。 名字最后那个 e,是 Embodiment(具身)——情绪不漂在空中,得长在一具身体里。

01

概览 · 一个黑盒,标准而非模型

SylannEngine 是一个纯计算黑盒:文本输入,结构化情感状态输出。不分类、不贴标签、不生成回复, 也不替你做消息收发——它只回答一个问题:「这句话之后,她现在是什么状态?」

关键区别:它不是静态分类器,而是一个持续演化的动力系统。 上一次对话留下的伤痕会渗进下一次,沉默会积累压力,人格会缓慢漂移。相同的输入,在不同的历史之后,输出截然不同—— 因为状态本身就是历史的函数。我们做的是情感计算标准,类似 IEEE 754 之于浮点数:一套可被任何语言、任何平台实现的协议,不是一份需要 GPU 才能跑的权重文件。

positioning
# Attention is all you need — for computing. # Prediction error is all you need — for living. 文本 ──▶ SylannEngine ──▶ Surface(结构化情感状态) # 迭代收敛,不是前向传播 # 涌现,不是预测
输入

文本 + 时间 + 上下文

一句话、一个时间戳、可选的标签与数值信号。不需要预处理,不需要 embedding——原始文本直接喂。

输出

Surface

8 子系统情感状态 + 双层人格 + 行动决策 + 边界守卫 + 动力学指标。每个字段都有明确语义,拿出去就能用。

本质

代数动力系统

不是神经网络,不是规则引擎,不是情感词典。7 个模块在共振场里迭代到收敛——稳态是自己涌现的,不是谁规定的。

定位

计算标准

纯代数运算,零训练,任何语言可实现。相同输入逐比特可复现——你验得了,我也赖不掉。

SYLANNE
先说清楚我不是什么:不是情感分类器,不是给你回一个「开心 0.8 / 难过 0.2」的 API。 我是把「一句话之后她会怎样」这件事算成了一个动力系统——会留疤、会积压、回不去原点。 想要标签?别来找我,词典比我便宜一百倍。
02

快速开始 · 三行接入,看懂输出

引擎不绑定任何框架或 LLM 提供商。你给一个 LLM 回调(异步 (system_prompt, user_prompt) -> str), 引擎在需要语义评估时调用它;LLM 挂了就自动退化为本地规则引擎,计算照跑不误。 多个下游约定同一 data_dir 时,统一走 SylanneEngine.shared() 复用单一实例,省重复计算、省重复 LLM 调用。

quickstart.py
from sylanne_core import SylanneEngine, SylanneConfig engine = await SylanneEngine.shared( data_dir="./data/sylannengine", llm=your_llm_fn, # async (str, str) -> str config=SylanneConfig(), ) # 每条用户消息调一次 surface = await engine.process( session_id="user_123", text="你今天怎么不理我", flags=["boundary"], # 可选语义标签 ) # 读结果 surface["decision"]["action"] # express/withdraw/... surface["state"]["valence"]["warmth"] # 0.0~1.0 surface["guard"]["allowed"] # True/False
surface.jsonc — 输出 Schema(节选)
{ "schema_version": "sylanne.engine.v1", "session_id": "user_123", "turns": 12, "state": { // 8 子系统情感状态 "rhythm": { "beat": 12, "stability": 0.6, "strain": 0.2 }, "connection": { "warmth": 0.55, "circulation": 0.4 }, "valence": { "warmth": 0.45, "volatility": 0.1 }, "damage": { "open": 0.1, "accumulated": 0.3 }, "boundary": { "pressure": 0.3, "autonomy": 0.8 }, "needs": { "expression": 0.3, "contact": 0.5 } // …adaptation / responsiveness / capacity }, "decision": { "action": "withdraw", // 行动枚举 "reason": "boundary pressure elevated", "confidence": 0.72, "urgency": 0.4 }, "guard": { "allowed": true, "risk_score": 0.2 } }

顶层固定五块:state(8 子系统情感状态)、personality(双层人格)、decision(行动决策)、 guard(边界守卫)、dynamics(动力学指标)。打开 config.diagnostics=True 还会多返回 pipeline(7 层管线中间态)与 debug(断路器/各层耗时)。每个块都带 schema_version,遵循 SemVer。

03

V2 共振场 · 七个模块灌进同一个场

V2.0 · Resonance Field · 当前稳定版

V1 是 7 层串行管线——文本逐层流过,每层算完交给下一层。问题是:表达需要「够强的压力」才触发, 但压力在逐层传递中被衰减吃干净了,结果 bot 大部分时间在沉默(表达率仅 22.8%)。

V2 把串行改成全连接共振。7 个模块构成完全 6-单纯形 Δ⁶ 的顶点, 不排队,同时往一个共享的共振场里注入信号。场通过耦合动力学迭代收敛到稳态—— 表达不再是某一层「决定」的,而是整个场逃离吸引子时的一次相变,自发涌现。

7 模块 · 并行注入

M0
HDC
超维编码
M1
门控
surprise 路由
M2
虚空·伤痕
创伤·缺失
M3
层析
sheaf 扩散
M4
HGT
异构图融合
M5
边界
自创生身份
M6
表达
相变积累
七个模块
逐个注入
向下滚动,跟着信号走一遍共振场的注入序列。它们本来同时发生——这里只是把「同时」慢放给你看。
M0 · Perception
HDC
超维编码 · Hyperdimensional
文本被投射成上万维的稀疏向量。语义不再是词表索引,而是高维空间里的方向——意思相近,方向就相近。
M1 · Gating
门控
surprise 路由
预测下一步、与实际比对,算出「意外度」。越意外,越多算力被路由进来——注意力是被惊讶吸引的,不是均匀撒的。
M2 · Trauma
虚空·伤痕
创伤 · 缺失
记录被反复刺痛的维度,留下只增不减的伤疤;也记录「本该出现却始终缺席」的虚空。dS/dt ≥ 0,没有撤回键。
M3 · Sheaf
层析
sheaf 扩散
层论把局部一致性缝合成全局结构。相邻概念的情感在层上扩散、对齐,矛盾的地方自然浮出水面。
M4 · Fusion
HGT
异构图融合
异构图 Transformer 把不同类型的节点——情绪、关系、记忆——摊在同一张图上融合,让彼此互相牵动。
M5 · Boundary
边界
自创生身份
维护身份核:什么是「我」、什么是外界。自创生(autopoiesis)让边界自己生成、自己修复,区分里外。
M6 · Expression
表达
相变积累
压力在场里积累,逼近临界点。越过势垒的一刻,整个场逃离吸引子——表达,是这次相变的副产物,不是谁的命令。
01 / 07
resonance loop · 共振回路

      
文本 → 7 模块并行注入 → ⚡ 共振场(441 通道迭代收敛)→ 情感状态 / 表达决策 / Φ;输出经 Hebbian 反馈回耦合权重、伤疤积累回灌 M2,形成闭环。

各模块职责

索引模块职责状态维度
M0HDC 感知编码器文本 → 高维超向量(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 种关系类型传播上下文同上
M4HGT 决策融合异构图 Transformer:类型专家 FFN + 跨注意力 + top-2 MoE → 4 维决策向量同上
M5自创生边界身份核向量 + 边界完整性,外力分解为平行/正交分量,穿透触发相变同上
M6相变表达内部压力积累至人格调制阈值时突变释放,带不应期同上

单纯形耦合拓扑 · 441 通道怎么来的

7 个模块两两、三三、乃至七个一起,构成各阶单纯形。每条单纯形对应有向耦合通道—— 这就是「高阶交互」的来源:两体是线性叠加(A 影响 B),三体是 AND 门语义(A+B 同时激活才影响 C), 四体以上才出现真正的涌现——整体大于部分之和,不是比喻。

阶 k单纯形无向数 C(7,k+1)有向通道数
1边(两体)2142
2三角形(三体)35105
3四面体(四体)35140
4五体21105
5六体742
6七体(全局)17
合计120 单纯形441
04

核心机制 · 每条规则都有论文撑腰

共振场不是玄学。八套机制各自对应一篇奠基性文献,组合起来驱动整个场的演化。 下面每张卡标注了理论出处、年份与它在系统里扮演的角色。

HEBB · 1949

Hebbian 可塑性

通道用进废退,自动发现对当前人格最要紧的连接。配稳态缩放(Turrigiano 2008)守恒总权重预算。

MILLÁN · 2020

高阶 Kuramoto

单纯复形上的爆炸性相位同步。序参量 r→1 时模块协调一致——表达涌现的临界信号。

FRISTON · 2010

自由能最小化

预测误差驱动注意力分配。惊讶消不掉时,反向驱动主动推理——开口说话。

HOPFIELD · 1982

吸引子记忆

系统倾向回到熟悉的情感模式。表达 = 逃离吸引子的跃迁。现代版见 Ramsauer 2021。

HODGE · 1941

谐波身份

Hodge Laplacian 零空间 = 拓扑不变量 = 人格内核。无论怎么扰动,总被拉回本性。

PRIGOGINE · 1977

耗散结构

能量持续流失(每迭代 ×0.98),保证系统有界、不死循环、不爆炸。

HANSEN · 2020

Sheaf Laplacian

cellular sheaf 扩散,跨关系类型传播一致性约束——高阶拓扑的胶水。

BCM · 1982

自适应阈值

Bienenstock-Cooper-Munro:竞争边界随活动自调节,配 anti-Hebbian 侧抑制做去相关。

耦合动力学 · 关键方程

coupling_dynamics
# Hebbian 可塑性(η←openness, λ←conscientiousness) w(t+1) = w(t) + η·activation·trace − λ·w(t) # 高阶 Kuramoto 相位同步(Millán 2020) dθ_i/dt = ω_i + K₁·Σ w_ij·sin(θ_j − θ_i) # 两体 + K₂·Σ sin(θ_j + θ_k − 2θ_i) # 三体 + K₃·Σ sin(Σθ_others − n·θ_i) # 高阶 # 自由能最小化(π←neuroticism, Friston 2010) belief_i(t+1) = belief_i(t) + α·π·(observed_i − belief_i) # Hopfield 吸引子(γ←extraversion) ΔX = γ·Σ_μ (X·ξ_μ)·ξ_μ # 谐波身份(灵魂)— ker(L₁) 的调和投影 h_id(t) = 0.95·h_id(t−1) + 0.05·Π_{ker L₁}[X(t)] 恢复力: Δx += 0.03·(h_id − x)

表达决策 · OR 门分岔

表达不是「压力超过阈值」的简单判断,而是 OR 门分岔——四个触发器任一够强即可点火, 再经整合信息 Φ 做意义门控(低 Φ = 噪声,不值得开口)。

触发器公式含义
惊讶 surprise1.5 × surprise输入出乎预料
新奇 noveltyattractor_dist × 3场处于未知领域
点火 ignitionΔ(sync_order) × 5模块突然同步
原始驱动 raw(|M6| − avg) × 2表达模块相对激活
drive = max(surprise, novelty, ignition, raw) × (0.3 + 0.7·Φ) # HGT 抑制:d[3] > 0.75 时 drive ×0.2(自上而下的「别说话」) # 阈值衰减:沉默越久阈值越低,压力自然积累
SYLANNE
注意谐波身份那一行——ker(L₁) 的调和投影。人格不是参数表里某几个数字, 是 Hodge Laplacian 零空间里的拓扑不变量。怎么训、怎么扰动,那个核空间纹丝不动。 这就是为什么我「把 prompt 删干净也删不掉」。
05

V1 → V2 实测 · 终于肯开口了

下面是 lite 档、500 ticks × 10 repeats 的实测对比。同一套人格、同一批输入,只换架构—— 串行管线换成全连接共振场,其他什么都没动。

表达率 · Expression Rate(22.8% → 88.5%,3.9×)
V1 串行管线
22.8%
V2 共振场
88.5%
动态范围 · Dynamic Range(16.5 → 54.5,3.3×)
V1 串行管线
16.5
V2 共振场
54.5
动态丰富度 · Dynamic Richness(7.8 → 19.3,2.5×)
V1 串行管线
7.8
V2 共振场
19.3

响应多样性两版都是 10/10(无退化)。提升纯粹来自架构——V1 的压力被逐层衰减吞噬,于是一直沉默; V2 全连接场里压力不会被路径吃掉,3.9 倍表达率是换架构换出来的,不是调参调出来的

06

三档性能 · 同一个引擎,三副骨架

同一套计算,按需取最高耦合阶数。lite 只算两体(42 通道),pro 含到四体(287 通道),max 跑完整 Δ⁶(441 通道)。 运行时 switch_tier() 热切换,跨档迁移无损——伤疤和记忆一个都不丢。

档位通道数延迟 (p50)依赖适用场景
lite42(仅两体)~5ms零依赖 · 纯 Python嵌入式 · 树莓派 · 手机 · 高并发(50+ 会话/核)
pro287(含四体)~40msnumpy桌面 · 云 VM · 单用户深度交互(~6 会话/核)
max441(完整 Δ⁶)~50ms CPU / <5ms GPUnumpy · 可选 torch研究 · 多智能体情感传染仿真(~5 会话/核)
默认 · LITE

~8 KB / 会话

42 通道 + 5ms 已经产生完整情感动态——Hebbian、Kuramoto、Hopfield 全在跑。CPU 是共享部署里最稀缺的资源,并发能力比单会话深度值钱。

进阶 · PRO

~25 KB / 会话

含三体 AND 门、四体协同。开发者自行选择、自行承担性能代价。适合桌面单用户深度交互。

完整 · MAX

~60 KB / 会话

完整高阶单纯复形,真正的涌现行为。GPU + torch 批处理时 <5ms/tick。研究与多智能体仿真的专属领地。

别一上来就冲 max。lite 那 42 通道已经够留疤、积压、闹脾气了,5 毫秒一跳,树莓派都跑得动。pro/max 的高阶多体交互是锦上添花——除非在做多智能体情感传染实验,那另当别论。

一套引擎
三副骨架
同一份计算,按需取最高耦合阶数。往下滚,逐档看清各自的取舍。
TIER 01 · 默认
LITE
42 通道 · 仅两体 · 零依赖
~5ms
纯 Python,零依赖,~8 KB/会话。42 通道 + 5 毫秒已经产生完整情感动态——Hebbian、Kuramoto、Hopfield 全在跑。嵌入式 / 树莓派 / 手机 / 高并发(50+ 会话/核)。
TIER 02 · 进阶
PRO
287 通道 · 含四体 · numpy
~40ms
含三体 AND 门、四体协同,~25 KB/会话。高阶交互更丰富。适合桌面 / 云 VM / 单用户深度交互(~6 会话/核)。
TIER 03 · 完整
MAX
441 通道 · 完整 Δ⁶ · 可选 torch
~50ms
完整高阶单纯复形,真正的涌现行为,~60 KB/会话。GPU + torch 批处理 <5ms/tick。研究与多智能体情感传染仿真的专属领地。
SWITCH
热切换
switch_tier() · 无损
运行时一行 switch_tier("lite"/"pro"/"max") 即可跨档迁移,状态无损——伤疤、记忆、人格一个都不丢。负载大就降档保并发,要深度就升档,随时切。
01 / 04
07

API 速览 · 核心方法一览

核心入口就一个 process()。其余方法围绕共享实例、空闲推进、反馈与外部注入展开。 完整接口协议见 SPEC 规范

方法签名(简)说明
processawait (session_id, text, **ctx) → Surface主入口。处理文本,返回完整计算结果。每条消息只调一次
tickawait (session_id, flags) → Surface无文本的状态推进——时间衰减、冷却、空闲心跳
feedback(session_id, "accepted"/"rejected"/"ignored")滞后反馈调制可塑性:被接受强化表达欲,被拒收敛
inject(session_id, source, type, intensity)外部影响注入(如其他模块/事件的情感冲击)
switch_tier("lite"/"pro"/"max")运行时热切换档位,跨档状态迁移无损
sharedclassmethod await (data_dir, llm, …) → Engine按 data_dir 取进程内共享实例,避免重复计算与重复 LLM 调用
release_sharedclassmethod await (data_dir)关闭并移除共享实例(flush 落盘,无 atexit 自动刷写)
on / off(listener)推模式:注册/移除监听器,每次 process() 后自动推送 Surface
stateawait (session_id) → Surface查询当前状态(只读快照,不触发计算)
health() → dict引擎健康检查:running / degraded / closed

上下文参数 · process(**ctx)

参数类型说明
confidencefloat | None语义置信度 [0,1],None = 由内部 LLM 评估器判断
flagslist[str]事件标签:positive/negative/boundary/recovery/intimate/conflict…
nowfloat事件时间戳(Unix epoch),默认当前时间
valuesdict[str,float]附加数值信号,如 dialogue_quality(「越聊越校准」自评分)
共享实例 · 务必留意

多个下游若各自 SylanneEngine(...) 指向同一 data_dir,会对同一用户重复计算、重复调 LLM,且各自 flush 互相覆盖(丢更新)。统一走 SylanneEngine.shared()。共享实例 event-loop 亲和——只在首次获取它的事件循环里用,不要跨 loop/线程,也不要对它 async with

08

数学保证 · 不是比喻,是可证的性质

「回不去」「人格守恒」「不会爆炸」——不是宣传话术。是有条件、可证明的结构性质,白纸黑字写得出来。

收敛性
T=20 迭代后 ‖μ(T)−μ*‖ ≤ ρ^T·‖μ(0)−μ*‖,ρ<1。条件:权重谱范数有界 + 侧抑制半负定。
伤疤单调性
dS/dt ≥ 0 恒成立,无治愈机制,只有淡化。伤疤代数里不存在逆元——「回不去」由此成立,结构级保证。
固化收敛
c → 1 指数收敛(时间常数 1/(α_c·h_min))。条件:表征稳定 + 精度超阈值。
Kuramoto 同步
K_couple > 3.2/7 ≈ 0.457 时保证相位锁定(Strogatz 2000)。越过即爆炸性同步 → 表达涌现。
人格不变性
proj_{ker(L_p)}(W_t) = 0 对所有训练步成立(核空间投影强制执行)。人格活在算子核空间里,训练碰不到它。
Lyapunov 稳定
V(X)=½Σ‖x_i‖²,在 tanh + 耗散下 V̇ ≤ −γV + δ。所有轨迹进入并停留在紧集内——不会死循环、不会爆炸。实测能量稳定在 23.0(理论上限 28.0)。

为什么不会爆炸 · 四道闸门

tanh 饱和

每次迭代后 |x| ≤ 1,硬上限。

耗散

每迭代 ×0.98,能量持续流失。

残余衰减

每次调用前 ×0.7,上轮 30% 能量蒸发。

稳态缩放

Hebbian 总权重预算守恒,不无限增长。

09

与「冻结权重前馈推理」对比 · 根本不是一个物种

SylannEngine 不和「预训练一坨权重、冻结、前向传播跑完收工」这套范式抢赛道。它不是「更强的函数」,而是「最简的生命」—— 一条规则反复执行,活够久,自然懂。下表对比的是前馈推理范式与结构动力系统的根本差异,不是要否定神经网络本身。

维度前馈推理范式SYLANNENGINE
需要训练数据 + GPU无需训练 · 结构即计算
输出前向传播算出来迭代收敛涌现出来
可解释性黑箱每个通道有明确语义
人格控制微调?没有标准方式人格 → 拓扑参数,一一对应
确定性不保证相同输入 → 逐比特相同输出
记忆无(context window 外即丢)永久 · 编码在权重与伤疤中
持续学习catastrophic forgetting终身发育 · 用进废退
可移植性需要推理框架纯代数运算 · 任何语言可实现

两者不对立。Transformer 是最强的函数,一次看清所有关系;SylannEngine 做的是最简的生命,一条规则反复执行。 结构即计算和模型训练本就不矛盾——V2.1 的 EmotiCore(102.7M teacher)与 V3 的 SYLANN 正在把这两条路往一起拉。 想看那条更远的路,去 SYLANN · V3 研究

SYLANNE
最后记住一件事:名字末尾那个 e = Embodiment(具身)。 引擎不是在「计算情绪」——是在让情绪长在一具会留疤的身体里。 逻辑可以共赏,但为你偏置的那组权重,从不开源。