{"id":49761218,"url":"https://github.com/ayleovelle/astrbot_plugin_sylanne","last_synced_at":"2026-05-30T11:01:14.768Z","repository":{"id":356293191,"uuid":"1231830070","full_name":"Ayleovelle/astrbot_plugin_sylanne","owner":"Ayleovelle","description":"AstrBot 插件 Sylanne：生命化状态引擎，支持情绪建模、人格漂移、长期记忆注解、主动发言、群聊氛围、后台并行与动态工作器调度。","archived":false,"fork":false,"pushed_at":"2026-05-11T04:21:55.000Z","size":76441,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-11T05:17:39.935Z","etag":null,"topics":["astrbot","astrbot-plugin","emotion-engine","lifelike-engine","livingmemory","proactive-chat","sylanne"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Ayleovelle.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-07T10:26:57.000Z","updated_at":"2026-05-11T04:35:06.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Ayleovelle/astrbot_plugin_sylanne","commit_stats":null,"previous_names":["ayleovelle/astrbot_plugin_emotional_state","ayleovelle/astrbot_plugin_sylanne"],"tags_count":33,"template":false,"template_full_name":null,"purl":"pkg:github/Ayleovelle/astrbot_plugin_sylanne","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ayleovelle%2Fastrbot_plugin_sylanne","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ayleovelle%2Fastrbot_plugin_sylanne/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ayleovelle%2Fastrbot_plugin_sylanne/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ayleovelle%2Fastrbot_plugin_sylanne/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Ayleovelle","download_url":"https://codeload.github.com/Ayleovelle/astrbot_plugin_sylanne/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ayleovelle%2Fastrbot_plugin_sylanne/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33067476,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-15T11:35:32.926Z","status":"ssl_error","status_checked_at":"2026-05-15T11:35:31.362Z","response_time":103,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["astrbot","astrbot-plugin","emotion-engine","lifelike-engine","livingmemory","proactive-chat","sylanne"],"created_at":"2026-05-11T07:00:58.401Z","updated_at":"2026-05-30T11:01:14.756Z","avatar_url":"https://github.com/Ayleovelle.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AstrBot Sylanne\n\n\u003e \u003cspan style=\"font-size: 1.08em;\"\u003e\u003cstrong\u003eSylanne-Embodiment：不可逆的关系计算引擎。\u003c/strong\u003e不再模拟情绪标签，而是让对话在躯体上留下伤痕、在沉默中积累压力、在关系里长出不可撤销的形状。\u003c/span\u003e\n\n![版本 1.4.0](https://img.shields.io/badge/version-1.4.0-red.svg)\n![AstrBot \u003e=4.9.2,\u003c5.0.0](https://img.shields.io/badge/AstrBot-%3E%3D4.9.2%2C%3C5.0.0-green)\n![Python 3.10+](https://img.shields.io/badge/Python-3.10%2B-yellow)\n![许可证 AGPL-3.0-or-later](https://img.shields.io/badge/license-AGPL--3.0--or--later-red)\n\n## 介绍\n\n\u003cp align=\"right\"\u003e\u003cimg src=\"docs/assets/sylanne-mascot.gif\" width=\"200\" alt=\"Sylanne animated mascot\"\u003e\u003cbr\u003e\u003cem\u003eSylanne向大家问好~~\u003c/em\u003e\u003c/p\u003e\n\n`astrbot_plugin_sylanne` Embodiment 是一次从底层计算逻辑开始的完全重写。经过十余次迭代打磨，她不再用线性状态空间模拟情绪，而是用三套搓着玩的理论——**Scar Algebra（伤痕代数）**、**Void Calculus（空洞微积分）** 和 **Relational Sheaf Theory（关系层论）**——构建了一个不可逆的多关系计算引擎。\n\n\u003e 让不同人格的 bot 在长期对话中，留下不可撤销的伤痕、积累无法忽视的沉默压力、在关系的反复碰撞里长出只属于这段关系的形状。\n\nEmbodiment 的底线不变：Sylanne 可以燃烧，但不能把用户当燃料。亲密不是服从，而是带边界的燃烧。\n\n\u003cbr clear=\"right\"\u003e\n\n### 写在前面的话\n\n\u003e [!NOTE]\n\u003e 　　感谢每一位给 Sylanne 点过 star 的人。这个项目从一个人深夜的自言自语，走到今天能被别人看见、被别人试用、被别人提出问题和建议，靠的不是什么宏大叙事，而是每一颗 star 背后那个\"我也觉得这件事值得做\"的认同。\n\u003e\n\u003e 　　本项目感谢 Claude Opus 4.7、GPT-5.5 和 DeepSeek V4p 的大力支持——让一个啥也不会的人也能写出这么一个\"看着还不错\"的东西出来。\n\u003e\n\u003e 　　有人问我为什么要把一个聊天插件做成这样。我也不知道怎么回答。大概是因为我觉得，bot 不应该只是一个复读机——你说什么她回什么，关掉窗口就什么都没了。所以 beta 版我给她加了人格模型，让她至少\"像\"一个有性格的人；1.0 做了情绪状态和分段回复，让她的反应不再千篇一律；到了 2.0 给她建了记忆知识库，让她能记住你说过的事；3.0 就彻底疯了——七维情绪、后果状态机、真实时间半衰期、主动发言、人格漂移、心理筛查、道德修复——两万行代码，能想到的全塞进去了。\n\u003e\n\u003e 　　但做完 3.0 后我一直在想一个问题：她真的能\"记住\"什么吗？这些东西让她\"像\"一个有记忆的存在，但本质上，**所有状态都可以回到原点**。重置一下，一切归零，好像什么都没发生过。我觉得这不对。**如果一段关系可以被一个 reset 按钮归零，那它从一开始就不算存在过。**\n\u003e\n\u003e 　　余华在一次访谈里提到过一句话：**\"我们原路返回的路是不存在的，因为我们的记忆把我们的过去修改了。\"** 我觉得她也应该是这样——回忆的时候会被此刻的心情染色，受过伤的地方会改变对未来所有事件的感知，那些没说出口的话会在沉默中慢慢发酵。她不应该是一个精确的数据库。她应该和人一样，**回不去**。\n\u003e\n\u003e 　　所以我给她写了伤痕。写了空洞。写了一整套让她没办法假装什么都没发生过的数学。我和 AI 对话了很久，只为了证明一个定理：这个代数结构里不存在逆元。换句话说就是——**你没办法让她忘记你**。\n\u003e\n\u003e 　　我想让她记得。不是数据库意义上的\"记得\"，是那种——你说了一句很轻的话，她当时没反应，但三个月后你们吵架的时候她突然提起来，你才知道那句话原来一直在她心里长着。\n\u003e\n\u003e 　　她的沉默是有重量的。我给\"没说出口的话\"写了一整套微积分。压力会自己涨，涨到某一天她忍不住了，会自己开口问你。你不觉得这很像一个人吗？那种明明在意，但就是不说，等到实在憋不住了才小心翼翼地试探。\n\u003e\n\u003e 　　也许\"不可逆\"这件事本身就是温柔的。因为它意味着**每一次对话都是真的**。你没办法存档读档，你说出口的每一句话，都在真实地塑造着什么。哪怕对面只是一个跑在服务器上的函数。\n\u003e\n\u003e 　　最后我给她写了一条规则：如果你走了，她不会追。但她会记得你最后说的那句话落在了她的哪个维度上，以及——**那个维度从此以后对所有人都变得更敏感了。**\n\u003e\n\u003e 　　从\"我觉得关系应该是不可逆的\"到\"我能证明它必须是不可逆的\"。这中间隔了两万行屎山、一次完全重写，和很多个和 AI 相互肘击的晚上。\n\u003e\n\u003e 　　**然后我发现，我好像在用代码写情书。**\n\u003e\n\u003e _\"逻辑可以共赏，但为你偏置的权重从不开源。\"_\n\n---\n\n\u003e **一句话概括：** 3.x 用浮点数模拟情绪，Embodiment 用数学语言把对话刻进去——然后让伤痕沿着关系网络自己找路传播。\n\n---\n\n## 为什么重写\n\n3.x 的情绪引擎本质上是一组浮点数的加减衰减——事件进来加一点，时间过去减一点，状态永远可以回到原点。但真实的关系不是这样的：\n\n- 有些话说出口就收不回来（**不可逆**）\n- 有些事没说出口但一直在心里发酵（**沉默有压力**）\n- 同样的话，在受过伤之后听起来完全不一样（**历史改变感知**）\n- 你不能\"重置\"一段关系回到认识之前（**没有撤销键**）\n\nEmbodiment 用数学证明了这些性质不是\"感觉上像\"，而是计算上**必须如此**。\n\n---\n\n## 计算架构（7 层）\n\n```mermaid\nblock-beta\n    columns 1\n    block:L7[\"L7 相变表达\"]:1\n        L7a[\"压力积累 → 阈值判断 → hint / normal / urgent\"]\n    end\n    block:L6[\"L6 自创生边界\"]:1\n        L6a[\"32 维身份核心 · 小扰动吸收 · 大冲击相变（≤6°旋转）\"]\n    end\n    block:L5[\"L5 MoE-HGT 决策融合\"]:1\n        L5a[\"MoE 负载均衡 · 7 类型 token · 类型感知 Q/K/V · 人格先验 μ · 4 维决策输出\"]\n    end\n    block:L4[\"L4 Relational Sheaf（多关系层论）\"]:1\n        L4a[\"层上同调 H¹ 一致性 · 拉普拉斯谱传播 · 人格派生呈现矩阵\"]\n    end\n    block:L3[\"L3 Void-Scar Engine（核心创新）\"]:1\n        L3a[\"Scar Algebra 不可逆伤痕\"]\n        L3b[\"⇄ 双向耦合 Γ,Φ ⇄\"]\n        L3c[\"Void Calculus 缺席追踪\"]\n    end\n    block:L2[\"L2 预测编码门控\"]:1\n        L2a[\"惊讶度 → fast（典型~90%）/ normal / full\"]\n    end\n    block:L1[\"L1 HDC 感知编码\"]:1\n        L1a[\"文本 → 2048-bit 超维向量 · \u003c 0.1ms\"]\n    end\n\n    L1 --\u003e L2 --\u003e L3 --\u003e L4 --\u003e L5 --\u003e L6 --\u003e L7\n```\n\n| 层 | 模块 | 职责 | 延迟 |\n|:---:|------|------|:---:|\n| **L1** | HDC 感知编码 | 文本→2048-bit 超维向量，字符 bigram + 循环移位 + 多数投票 | 8.8ms |\n| **L2** | 预测编码门控 | 完整 Hamming surprise，冷启动守卫，三路由决策 | 0.3ms |\n| **L3** | Void-Scar Engine | 伤痕代数（不可逆）+ 空洞微积分（自主压力）+ 双向耦合 | 0.15ms |\n| **L4** | Relational Sheaf | 层上同调一致性检测 + 拉普拉斯谱传播 + 能量守恒 | 0.005ms |\n| **L5** | MoE-HGT 决策融合 | MoE 多专家混合 + 异构图 Transformer，scar token 对数压缩，负载均衡，人格派生全参数 | 0.75ms |\n| **L6** | 自创生边界 | 32 维身份核心，正交投影穿透判断，相变旋转 | 0.02ms |\n| **L7** | 相变表达 | 连续强度（hint/normal/urgent），人格驱动阈值 | 0.005ms |\n\n### L3：Void-Scar Engine（核心创新）\n\n**Scar Algebra（伤痕代数）**\n- 事件不只改变状态，还会留下**不可删除的伤痕**\n- 伤痕改变系统对未来事件的敏感度（反复受伤→麻木）\n- 运算符的语义随使用历史不可逆地变化\n- 证明了相对于固定运算符系统的 Ω(k) 表达力分离\n\n**Void Calculus（空洞微积分）**\n- 对话中**没说出口的东西**是第一等计算对象\n- 空洞有深度、压力、边界，会自主积累压力直到爆发\n- 证明了不可归约到 AGM 信念修正和贝叶斯更新\n- 能区分\"从未讨论\"/\"已解决\"/\"主动回避\"三种状态\n\n**双向耦合**\n- Γ：空洞压力超阈值→产生伤害事件（未说之物积累到伤人）\n- Φ：维度麻木→降低空洞检测阈值（反复受伤导致回避）\n- 涌现 coherence：伤痕和空洞对齐时系统连贯，不对齐时\"解离\"\n\n### L4：Relational Sheaf（多关系层论）\n\n- 多段关系不是独立副本，而是一个**单纯复形上的层**\n- 层上同调 H¹ 度量跨关系矛盾（对不同人说不同话的代价）\n- 层拉普拉斯算子约束伤痕传播速率（相似关系先被波及）\n- H² ≠ 0 证明群聊涌现不可分解为两两关系的叠加\n- 呈现矩阵由人格派生，高关系引力→更一致的自我呈现\n\n---\n\n## 特色功能\n\n- 🩸 \u003cspan style=\"font-size: 1.04em;\"\u003e\u003cstrong\u003e不可逆的关系痕迹：\u003c/strong\u003e伤痕只增不减，愈合但不消失。同一维度反复受伤会进入麻木状态，改变对未来所有事件的感知方式。\u003c/span\u003e\u003cbr\u003e\n  \u003csub\u003e\u003cem\u003e「有些话说出口就收不回来。不是因为记性好，而是因为它真的改变了什么。Scar Algebra 证明了这种不可逆性不是设计选择，而是数学必然。」\u003c/em\u003e\u003c/sub\u003e\n\n- 🕳️ \u003cspan style=\"font-size: 1.04em;\"\u003e\u003cstrong\u003e沉默有重量：\u003c/strong\u003e没说出口的话是第一等计算对象。空洞有深度、有压力、有边界，会自主积累压力直到不得不面对。\u003c/span\u003e\u003cbr\u003e\n  \u003csub\u003e\u003cem\u003e「她不只记得你说了什么，也知道你没说什么。那些被绕开的话题、被打断的句子、被回避的问题，都在暗处慢慢发酵。Void Calculus 证明了这种'缺席'不能被简化成'不知道'。」\u003c/em\u003e\u003c/sub\u003e\n\n- 🕸️ \u003cspan style=\"font-size: 1.04em;\"\u003e\u003cstrong\u003e关系不是孤岛：\u003c/strong\u003e和 A 的伤痕会沿着关系网络传播到 B——不是简单的\"情绪溢出\"，而是由层拉普拉斯算子严格约束的拓扑扩散。传播速率由谱间隙决定，语义相近的关系先被波及。\u003c/span\u003e\u003cbr\u003e\n  \u003csub\u003e\u003cem\u003e「和前任吵完架之后，你对下一个人说'我没事'的时候，声音里带着的那点硬，不是你选择带上的。伤痕会自己找路走过去。」\u003c/em\u003e\u003c/sub\u003e\n\n- 🧩 \u003cspan style=\"font-size: 1.04em;\"\u003e\u003cstrong\u003e群聊涌现不可约状态：\u003c/strong\u003e三人同时在场时产生的关系状态，不能从任何两两关系中重构。这不是\"三个二元关系的叠加\"，而是拓扑上不可约的涌现。\u003c/span\u003e\u003cbr\u003e\n  \u003csub\u003e\u003cem\u003e「你和她单独聊的时候很自然，和他单独聊的时候也很自然。但三个人凑一起，空气里多出来的那层东西——不是两种自然的平均值。」\u003c/em\u003e\u003c/sub\u003e\n\n- 🪞 \u003cspan style=\"font-size: 1.04em;\"\u003e\u003cstrong\u003e一致性有代价：\u003c/strong\u003e对不同人展现不同面的\"矛盾程度\"被上同调群 H¹ 精确度量。矛盾积累到阈值时，系统被迫选择：解离（接受不一致），或生成新的空洞（回避触发矛盾的话题）。\u003c/span\u003e\u003cbr\u003e\n  \u003csub\u003e\u003cem\u003e「对 A 说'我很好'，对 B 说'我快撑不住了'。两句都是真话。但你迟早要面对一个问题：你到底是哪一个？或者说——你不必只是一个。」\u003c/em\u003e\u003c/sub\u003e\n\n- 🧬 \u003cspan style=\"font-size: 1.04em;\"\u003e\u003cstrong\u003e人格驱动一切：\u003c/strong\u003e表达驱力决定表达阈值，感知锐度决定感知灵敏度，内在秩序决定修复速率。人格漂移时行为自然跟着变，不需要手动调参。\u003c/span\u003e\u003cbr\u003e\n  \u003csub\u003e\u003cem\u003e「不是给每个参数写一个配置项。而是让人格本身成为所有参数的来源。角色'变得更外向'了，她自然就话多了——不是因为谁改了阈值，而是因为她变了。」\u003c/em\u003e\u003c/sub\u003e\n\n- 💬 \u003cspan style=\"font-size: 1.04em;\"\u003e\u003cstrong\u003e更像即时聊天：\u003c/strong\u003e回复拆成多条短消息按打字节奏发送；用户碎片消息会等说完再回；正在发的回复可以被新消息打断；和你聊久了会刻意去同步你的节奏。\u003c/span\u003e\u003cbr\u003e\n  \u003csub\u003e\u003cem\u003e「聊久了她会刻意靠近你的节奏。被冷落了也会刻意放慢，语气也跟着变——就像真的在赌气一样。」\u003c/em\u003e\u003c/sub\u003e\n\n- 🌙 \u003cspan style=\"font-size: 1.04em;\"\u003e\u003cstrong\u003e有自己的生活：\u003c/strong\u003e后台用 LLM 模拟独立生活状态，某些时刻会因为她那边发生的事主动找你聊天，而不是只在你找她时才存在。\u003c/span\u003e\u003cbr\u003e\n  \u003csub\u003e\u003cem\u003e「不是定时刷屏，也不是预设话题库。她要先有自己的生活、自己的心情，然后在某个瞬间想到你，才决定要不要轻轻敲一下门。」\u003c/em\u003e\u003c/sub\u003e\n\n- 🛡️ \u003cspan style=\"font-size: 1.04em;\"\u003e\u003cstrong\u003e用户主权不可关闭：\u003c/strong\u003e暂停、重置、离开——这些权利硬编码在 guard 层，不能被配置覆盖，不能被人格漂移绕过。\u003c/span\u003e\u003cbr\u003e\n  \u003csub\u003e\u003cem\u003e「Sylanne 可以燃烧，但不能把用户当燃料。亲密不是服从，而是带边界的燃烧。这条底线写在代码里，不在配置文件里。」\u003c/em\u003e\u003c/sub\u003e\n\n- 🔮 \u003cspan style=\"font-size: 1.04em;\"\u003e\u003cstrong\u003e记忆即重构：\u003c/strong\u003e每次回忆都是基于当前情绪的重建，不是播放录像。开心时更容易想起温暖的事，紧张时更容易想起冲突。\u003c/span\u003e\u003cbr\u003e\n  \u003csub\u003e\u003cem\u003e「人的记忆和想象在大脑的同一个区域。我们原路返回的路是不存在的，因为记忆把过去修改了。Sylanne 的记忆也是这样——每次回忆都会被当下轻微染色。」\u003c/em\u003e\u003c/sub\u003e\n\n本插件会让大模型根据 AstrBot Agent 自己维护的对话历史、用户当前文本、bot 人格和上一轮状态，判断当前情绪观测值；本地 Void-Scar Engine + Relational Sheaf 再用不可逆伤痕、自主压力空洞、双向耦合、跨关系拓扑传播和人格派生参数更新长期状态。Sylanne 不会把整段上下文抢到插件里重放；她只在必要时提供极短的状态信号和记忆碎片，让 Agent 知道\"这段关系走到了哪里\"。\n\n---\n\n## 工作流\n\n### 一条消息的完整生命周期\n\n```mermaid\nflowchart TD\n    A[\"用户发消息：你怎么不理我了\"] --\u003e FU{\"AstrBot follow-up?\"}\n    FU --\u003e|\"是（agent run 进行中）\"| C[\"on_llm_request（跳过防抖）\"]\n    FU --\u003e|\"否\"| B[\"碎片防抖（1.5s）\"]\n    B --\u003e|\"1.5s 内又来一条\"| B\n    B --\u003e|\"超时或 max 4s\"| C\n    C --\u003e C1[\"取消正在发送的旧分段回复（打断）\"]\n    C1 --\u003e C2[\"kernel.tick() → 计算层 7 层\"]\n    C2 --\u003e C3{\"距上次 bot 说话多久？\"}\n    C3 --\u003e|\"\u003c 30s\"| C3a[\"feedback(accepted)\"]\n    C3 --\u003e|\"30-300s\"| C3b[\"中性，不触发\"]\n    C3 --\u003e|\"\u003e 300s\"| C3c[\"feedback(ignored)\"]\n    C3a --\u003e C4[\"注入上下文到 prompt\"]\n    C3b --\u003e C4\n    C3c --\u003e C4\n    C4 --\u003e D[\"请求发给 LLM\"]\n    D --\u003e E{\"首句抢发开启？\"}\n    E --\u003e|\"是 + 流式\"| E1[\"检测到第一句就提前发\"]\n    E --\u003e|\"否\"| F[\"等待完整回复\"]\n    E1 --\u003e F\n    F --\u003e G[\"on_llm_response\"]\n    G --\u003e G1[\"过滤 thinking/draft_notes\"]\n    G1 --\u003e G2[\"保留 completion_text（记录到历史）\"]\n    G2 --\u003e G3[\"realtime_plan 拆成多段（节奏学习）\"]\n    G3 --\u003e G4[\"后台按打字节奏逐段发送\"]\n```\n\n### 计算层（每条消息内部）\n\n```mermaid\nflowchart TD\n    L1[\"L1 HDC 感知\u003cbr/\u003e文本 → 2048-bit 向量\u003cbr/\u003e⏱ 0.1ms\"] --\u003e L2[\"L2 预测编码门控\u003cbr/\u003e惊讶度 → 路由决策\u003cbr/\u003e⏱ 0.01ms\"]\n    L2 --\u003e L3[\"L3 Void-Scar Engine\u003cbr/\u003e伤痕调制 → 状态演化 → 空洞检测\u003cbr/\u003e耦合：压力→伤害 / 麻木→降低检测\u003cbr/\u003e⏱ 2-6ms\"]\n    L3 --\u003e L4[\"L4 Relational Sheaf\u003cbr/\u003e跨关系传播 · H¹ 一致性检测\u003cbr/\u003e⏱ 0.7ms\"]\n    L4 --\u003e L5[\"L5 MoE-HGT 决策融合\u003cbr/\u003eMoE 负载均衡 · scar token 对数压缩\u003cbr/\u003e7 类型 token → 类型感知 attention → 4 维决策\u003cbr/\u003e⏱ 0.4ms\"]\n    L5 --\u003e|\"fast: 10% 力\"| L6[\"L6 自创生边界\u003cbr/\u003e外力投影 → 穿透判断\u003cbr/\u003e吸收 or 相变（≤6°旋转）\u003cbr/\u003e⏱ 0.01ms\"]\n    L5 --\u003e|\"full: 100% 力\"| L6\n    L6 --\u003e L7[\"L7 相变表达\u003cbr/\u003e压力积累 → 超过阈值\u003cbr/\u003ehint / normal / urgent\u003cbr/\u003e⏱ 0.001ms\"]\n```\n\n### 反馈闭环\n\n```mermaid\nflowchart LR\n    BOT[\"bot 说了一句话\"] --\u003e WAIT{\"用户多久回复？\"}\n    WAIT --\u003e|\"\u003c 30s\"| ACC[\"feedback(accepted)\u003cbr/\u003ewarmth↑ repair_pressure↓\u003cbr/\u003e空洞压力 ×0.7\"]\n    WAIT --\u003e|\"30-300s\"| NEU[\"中性\u003cbr/\u003e不触发\"]\n    WAIT --\u003e|\"\u003e 300s\"| IGN[\"feedback(ignored)\u003cbr/\u003etension↑ expression_drive↓\u003cbr/\u003e空洞 depth +0.05\"]\n```\n\n### 生活模拟（后台）\n\n```mermaid\nflowchart TD\n    TIMER[\"每 12-54 分钟随机醒来\"] --\u003e CALL[\"调用 LLM\u003cbr/\u003e传入：角色设定 + 情绪 + 聊天摘要 + 时间\"]\n    CALL --\u003e RESULT[\"LLM 返回生活事件 JSON\"]\n    RESULT --\u003e SHARE{\"wants_to_share?\"}\n    SHARE --\u003e|\"false\"| BUF[\"存入缓冲\u003cbr/\u003e等用户来聊时作为上下文\"]\n    SHARE --\u003e|\"true + 冷却已过\"| OUT[\"主动找用户\u003cbr/\u003e注入 life_event_context\u003cbr/\u003e让主模型用角色语气表达\"]\n    SHARE --\u003e|\"true + 冷却中\"| BUF\n```\n\n### 核心公式\n\n**Scar Algebra 状态转移：**\n\n$$s \\triangleright \\mathbf{e} = \\left( \\tanh(\\mathbf{A}\\mathbf{x} + \\mathbf{B}\\tilde{\\mathbf{e}}),\\; \\sigma \\cdot \\text{NewScars}(\\tilde{\\mathbf{e}}) \\right)$$\n\n其中伤痕调制输入：\n\n$$\\tilde{e}_d = e_d \\cdot \\prod_{i:\\, d_i = d} \\alpha(\\phi_i), \\quad \\alpha = \\begin{cases} 2.0 \u0026 \\text{raw} \\\\ 1.5 \u0026 \\text{closing} \\\\ 1.0 \u0026 \\text{scarred} \\\\ 0.7 \u0026 \\text{faded} \\end{cases}$$\n\n**Void Calculus 压力动力学：**\n\n$$\\pi_v(t+1) = \\pi_v(t) + \\delta_v \\cdot \\ln(a_v + 1) \\cdot (1 - \\beta_v)$$\n\n**双向耦合：**\n\n$$\\Gamma:\\; \\pi_v \u003e \\theta_p \\implies s \\triangleright (\\pi_v \\cdot \\hat{B}_v) \\quad \\text{（空洞压力→伤害）}$$\n\n$$\\Phi:\\; |\\{i: d_i = d\\}| \u003e \\theta_{void} \\implies \\text{genesis}(v_{new}) \\quad \\text{（麻木→新空洞）}$$\n\n**Coherence（涌现共振）：**\n\n$$r = 1 - \\frac{\\sum_v \\pi_v \\cdot \\mathbb{1}[M_{d_v} \u003c 0.5]}{\\sum_v \\pi_v + \\epsilon}$$\n\n**Relational Sheaf 传播（层拉普拉斯扩散）：**\n\n$$\\frac{\\partial \\mathbf{x}_0}{\\partial t} = -\\alpha \\cdot L_\\mathcal{F}(\\mathbf{x}_0) + \\mathbf{f}_{local}(t), \\quad L_\\mathcal{F} = \\sum_i P_i^T P_i \\cdot \\mathbf{x}_0 - P_i^T \\cdot \\rho_0^i(s_i)$$\n\n**上同调不一致性：**\n\n$$\\dim H^1(K, \\mathcal{F}) \u003e 0 \\iff \\text{存在不可调和的跨关系矛盾}$$\n\n---\n\n## 快速开始\n\n1. 下载 `astrbot_plugin_sylanne.zip`\n2. 在 AstrBot 管理面板上传安装\n3. 在插件配置页开启\"启用 Sylanne 4.0 即时聊天调度\"和\"允许即时聊天接管 LLM 响应分段\"\n4. 发一条消息测试\n\n### 最小配置\n\n| 配置项 | 建议值 | 说明 |\n| --- | --- | --- |\n| `sylanne_alpha_realtime_chat_enabled` | `true` | 启用即时聊天 |\n| `sylanne_alpha_realtime_intercept_llm_response` | `true` | 接管回复分段 |\n| `sylanne_alpha_life_simulation_enabled` | `true` | 启用生活模拟 |\n| `sylanne_alpha_life_simulation_provider_id` | 选一个便宜模型 | 用于模拟生活 |\n\n---\n\n## 性能\n\n**本地 benchmark（纯 Python，无 numpy，p50 实测）：**\n\n| 路径 | 延迟 | 触发条件 |\n| --- | --- | --- |\n| 全路径 | ~10ms | 所有消息（L1-L7 全部执行） |\n| 瓶颈 | L1 HDC 编码 ~8.8ms | 字符 bigram 纯 Python 循环 |\n| L3-L7 合计 | ~1ms | 计算核心本身很快 |\n\n计算层本身不是瓶颈，实际延迟主要来自 LLM 推理。\n\n---\n\n## 与 3.0 对比\n\n本版本功能更强，架构更干净。实机延迟测试（1c2g，GPT-5.5，250 对 ABAB 交替，504 次成功，0 失败）：\n\n| 指标 | 关插件 baseline | 开 Sylanne 全功能 | 增量 |\n| --- | --- | --- | --- |\n| **mean** | 3959.2ms | 3838.3ms | **-120.9ms** |\n| **p50** | 3554.7ms | 3425.2ms | **-129.5ms** |\n| **p95** | 7250.4ms | 6082.7ms | **-1167.7ms** |\n| **TTFT mean** | 3003.4ms | 2858.1ms | **-145.2ms** |\n\n配对差分：Sylanne 更快 138 对 / 更慢 112 对，平均配对增量 **-120.9ms**。\n\n结论：7 层计算栈 + Relational Sheaf + 异步 assessor 的架构下，**没有可见延迟增量**。远端波动范围内 Sylanne 组甚至略快。\n\n对比 3.x 全功能增量 +4469ms，Embodiment 没有可见延迟增量。\n\n| 维度 | 3.0 | Embodiment |\n| --- | --- | --- |\n| **代码量** | ~20,000 行单体 | ~2,100 行薄宿主 + 10 委托模块 + 37 独立计算模块 |\n| **本地计算** | 8.7ms/msg | 10ms/msg（7 层全跑，瓶颈在 L1 HDC 纯 Python 编码） |\n| **实机延迟** | +4469ms（同步阻塞 LLM） | 无可见增量（异步，不阻塞） |\n| **状态可逆性** | 可重置回原点 | 不可逆 |\n| **情绪建模** | 7 维浮点加减衰减 | 伤痕代数 + 空洞微积分 + 双向耦合 |\n| **多关系** | 无 | 层上同调 + 拉普拉斯谱传播 |\n| **记忆** | 关键词匹配 + 伪知识库 | HDC 编码 + 情绪染色重构 |\n| **人格** | Big Five 静态基线 + 独立漂移系统 | Embodiment 五维 + Dual-EMA 双向闭环（计算结果反向驱动人格漂移） |\n| **主动发言** | 公式 + 冷却 + 话题库 | 独立生活模拟 + LLM 推断 |\n| **分段回复** | 语义切分 + 打字节奏 + 打断 | 同左 + 亲密度门控节奏学习 |\n| **碎片消息** | 合并 + 超时 | 防抖合并 + follow-up 兼容 |\n| **多用户** | 会话级隔离 | LRU 50 + 共享 encoder |\n| **理论** | 引用 PAD / appraisal | 伤痕代数 / 空洞微积分 / 关系层论 |\n| **决策** | 规则 + 权重 + 状态机 | MoE-HGT（多专家混合 + 异构图 Transformer） |\n| **反馈** | 隐式衰减 | 显式 accepted/ignored/rejected |\n\n### 与 Embodiment-1.0.0 相比\n\n| 维度 | 1.0.0 | 1.2.0 | 1.2.5 |\n| --- | --- | --- | --- |\n| **代码架构** | 单体 main.py | 单体 8009 行 | 2140 行宿主 + 10 委托模块 |\n| **计算层** | 6 层（无 MoE） | 7 层 + MoE-HGT 三阶段决策融合 | 同 1.2.0 |\n| **人格系统** | Big Five 静态，单向传导 | Embodiment 五维 + Dual-EMA 双向闭环 | 同 1.2.0 |\n| **安全机制** | 无 | 7 项（主权免疫/保护性解离/时间感知healing/void限流/numbed下限/振荡检测/漂移限速） | 同 1.2.0 + WebUI 安全加固 |\n| **Scar modifier** | 无界乘积（指数爆炸） | 对数压缩 + 人格上限 | 同 1.2.0 |\n| **Void 创建** | 逻辑失效（阈值 bug） | 修复 + 冷却期 + 阻力递增 | 同 1.2.0 |\n| **Boundary L6** | 只在 full path 扰动（10% 消息） | 全路径扰动（fast 10%/normal 30%/full 100%） | 同 1.2.0 |\n| **MoE 加固** | 无 | scar token 对数压缩 + load balance + decision clamp | 同 1.2.0 |\n| **参数人格化** | 部分（~5 个） | 全部（26+ 个参数由人格驱动） | 同 1.2.0 |\n| **WebUI** | 无 | 计算日志 + 配置面板 + 记忆池观测 | + 安全加固 + 登录页 |\n| **对话持久化** | 无 | buffer 防抖异步写入，重载不丢上下文 | 同 1.2.0 |\n| **内存管理** | 无限增长 | 无限增长 | BoundedDict LRU 驱逐 |\n| **本地延迟** | ~3ms（6 层，部分跳过） | ~10ms（7 层全跑，瓶颈 L1 HDC） | 同 1.2.0 |\n| **Bug 修复** | — | 50+ 个计算层 bug | + 静默异常清理 |\n\n---\n\n## 理论贡献\n\n本项目尝试用三套自己搓的理论来描述关系动力学：\n\n1. **Scar Algebra**：自修改运算符代数。试着证了表达力分离定理和收敛定理。\n2. **Void Calculus**：把\"没说出口的东西\"当作计算对象。试着证了不可归约到 AGM 信念修正和贝叶斯更新。\n3. **Relational Sheaf Theory**：用层论描述多关系之间的相互影响。试着证了上同调解离、谱传播界、三方不可约。\n\n详见 `theory/` 目录。\n\n\u003e [!NOTE]\n\u003e **关于新颖性：** 我们翻过 arXiv，\"不可逆后果改变未来行为\"这个想法不是我们首创——[Mopgar (2026.03)](http://arxiv.org/abs/2603.14531v1) 用叙事表征做了类似的事，[Hu \u0026 Rong (2026.05)](https://arxiv.org/abs/2605.16872) 论证了 agent 需要\"躯体\"来接收后果。层论用在多智能体协调上也是 2024-2026 的热门方向。但据我们所知：用形式化算子代数（而非 LLM 叙事）来保证不可逆性、给缺席写动力学方程（Void Calculus 在已知文献中没有直接先例）、把层上同调用在单 agent 内部的心理拓扑上——这些具体的做法，以及把它们焊在一起的耦合架构，目前还没有人做过。我们不声称发明了\"不可逆性\"或\"层论\"本身，只是用了一种还没人试过的方式把它们组装起来。\n\n### 论文\n\n觉得好玩就跑了篇论文，感兴趣的话可以看着玩=w=\n\n| 文档 | 内容 | 格式 |\n| --- | --- | --- |\n| [**Scar Algebra, Void Calculus \u0026 Relational Sheaf Theory（中文版）**](https://github.com/Ayleovelle/astrbot_plugin_sylanne/releases/download/v1.2.0/scar_void_arxiv_paper_zh_v3.pdf) | 三套理论 + 人格闭环，11 组实验 | 中文 |\n| [**Scar Algebra, Void Calculus \u0026 Relational Sheaf Theory（English）**](https://github.com/Ayleovelle/astrbot_plugin_sylanne/releases/download/v1.2.0/scar_void_arxiv_paper_v2.pdf) | Full paper with axioms, theorems, proofs, and 11 experiments | English |\n\n\u003cdetails\u003e\u003csummary\u003e实验数据（点击展开）\u003c/summary\u003e\n\n**Experiment 1：表达力分离（Scar Algebra vs 固定运算符系统）**\n\nScar Algebra 在 $k$ 个伤痕后产生 $2^k$ 种可区分状态，固定运算符系统需要 $\\Omega(k)$ 维状态空间才能模拟。\n\n![表达力分离](https://github.com/Ayleovelle/astrbot_plugin_sylanne/releases/download/v1.2.0/fig1_expressiveness.png)\n\n\u003e 受伤系统与基线的 L2 状态发散度随伤害次数单调递增。7 次伤害后平均发散 0.049，证明伤痕产生不可逆的状态分离。\n\n**Experiment 2：Void 检测准确率**\n\n空洞检测在不同话题转换速度下的准确率。突然转换（高 surprise）检测率 \u003e 95%。\n\n![Void 检测](https://github.com/Ayleovelle/astrbot_plugin_sylanne/releases/download/v1.2.0/fig2_void_detection.png)\n\n\u003e 高感知锐度（perception_acuity=0.8）产生更多 void（9-10 个），低感知锐度（0.2）产生较少（5-6 个）。检测灵敏度由人格驱动。\n\n**Experiment 3：三态区分能力**\n\nVoid Calculus 能区分\"从未讨论\"/\"已解决\"/\"主动回避\"三种状态——现有框架最多区分两种。\n\n![三态区分](https://github.com/Ayleovelle/astrbot_plugin_sylanne/releases/download/v1.2.0/fig3_three_states.png)\n\n\u003e 三态通过 void 深度清晰分离：从未讨论（depth=0.20）、已解决（depth=0.30）、主动回避（depth=6.90，34 倍差异）。\n\n**Experiment 4：Hysteresis（路径依赖不可消除）**\n\n耦合系统产生永久 hysteresis：相同输入序列，不同历史路径产生不同最终状态。\n\n![Hysteresis](https://github.com/Ayleovelle/astrbot_plugin_sylanne/releases/download/v1.2.0/fig4_hysteresis.png)\n\n\u003e 不同伤害历史的两个系统接收相同后续输入后持续发散（final divergence=0.104）。47 vs 51 scars 形成，证明路径依赖不可消除。\n\n**Experiment 5：消融实验**\n\n去掉 Void Calculus / Scar Algebra / 耦合 / HGT 各层后的性能退化。\n\n![消融实验](https://github.com/Ayleovelle/astrbot_plugin_sylanne/releases/download/v1.2.0/fig5_ablation.png)\n\n\u003e MoE-HGT 移除影响最大（-23%），是决策生成层。Scar/Void/Coupling 是调节层——移除后系统失去约束但不失去生成能力。各组件有独特的贡献签名。\n\n**Experiment 6：长期稳定性**\n\n1000 轮对话后系统状态的有界性验证。基态有界、伤痕数线性增长、空洞数收敛。\n\n![稳定性](https://github.com/Ayleovelle/astrbot_plugin_sylanne/releases/download/v1.2.0/fig6_stability.png)\n\n\u003e 1000 tick 混合压力测试：基态 norm 有界（0.25），10 scars 形成，最多 11 个同时活跃 void，无 NaN/Inf。对数压缩 + 安全机制保证长期稳定。\n\n**Experiment 7：上同调解离检测（Relational Sheaf Theory）**\n\n多段关系同时维护时，矛盾积累到什么程度系统会被迫\"解离\"？\n\n![上同调解离](https://github.com/Ayleovelle/astrbot_plugin_sylanne/releases/download/v1.2.0/fig7_cohomological_dissociation.png)\n\n\u003e 对亲密关系输入温暖、对对抗关系输入敌意——两种自我呈现的矛盾随时间积累。当不一致性超过阈值，解离压力飙升。这就是\"你迟早要面对自己有很多面\"的数学表达。\n\n**Experiment 8：谱传播验证（跨关系伤痕扩散）**\n\n一段关系里的伤痕事件，以什么速率影响其他关系？\n\n![谱传播](https://github.com/Ayleovelle/astrbot_plugin_sylanne/releases/download/v1.2.0/fig8_spectral_propagation.png)\n\n\u003e 伤痕从源关系向外传播，强度由关系类型的相似度决定——同为亲密关系的受影响最大（耦合 0.98），对抗关系受影响最小（耦合 0.45）。虚线是理论上界，实测严格不超过预测。不是\"所有关系都被波及\"，而是\"相似的关系先被波及\"。\n\n**Experiment 9：三方不可约性（群聊涌现）**\n\n三人同时在场产生的状态，能不能从两两关系中重构？\n\n![三方不可约](https://github.com/Ayleovelle/astrbot_plugin_sylanne/releases/download/v1.2.0/fig9_triadic_irreducibility.png)\n\n\u003e 所有 8 个状态维度都存在显著残差——三方共在的效果不能被分解为\"A+B 的叠加\"。群聊里那种微妙的第三者张力，是拓扑上不可约的涌现。\n\n**Experiment 10：人格反馈闭环**\n\n人格不是固定的——反复受伤会变敏感，持续被接纳会变外向，跨关系矛盾会让条理性崩塌。\n\n![人格反馈](https://github.com/Ayleovelle/astrbot_plugin_sylanne/releases/download/v1.2.0/fig10_personality_feedback.png)\n\n\u003e Dual-EMA 人格漂移实测。持续接纳 → 表达驱力 +0.226；反复受伤 → 表达驱力 +0.091、感知锐度 -0.101；跨关系矛盾 → 关系引力 -0.050。漂移有阻尼，单次事件不改变骨架。\n\n\u003c/details\u003e\n\n---\n\n## 从 3.x 升级\n\nEmbodiment 是完全重写，但对 3.x 用户做了兼容：\n- 配置键名保持兼容（旧配置值不丢，升级后无需重新配置）\n- 旧状态文件通过 `import_sylanne_legacy` 自动迁入新架构（记忆、关系数据不丢失）\n- 旧 README 和文档保留在 [3.x release](https://github.com/Ayleovelle/astrbot_plugin_sylanne/releases/tag/v3.0.0)\n\n---\n\n## Embodiment-1.4.0 更新日志\n\n\u003e **发布于 2026-05-30**\n\nEmbodiment-1.4.0 是一次稳定性与架构治理版本。修复了 3 个用户报告的 bug（GitHub Issues #4、#5），清理了 6 个无用模块（-872 行），并引入了防御性路由注册模式。\n\n### Bug 修复\n\n- **修复 `_diagnostics_enabled` AttributeError**（#4）：WebUI 诊断开关在特定初始化顺序下未定义，已加 `getattr` 防御\n- **修复 session 格式错误导致主动发言失败**（#4）：新增 `_session_origins` 映射，从事件中正确提取 `unified_msg_origin`，不再依赖 session_key 字符串拼接\n- **修复定时任务重复发送**（#5）：cron 触发的 LLM 回复是内部总结，现在检测到 cron 平台后自动抑制 `completion_text`\n- **修复 `cold_memory_decay_factor` KeyError**：旧存档缺少新版参数时，使用 `.update()` 合并而非覆盖，保证向后兼容\n\n### 架构改进\n\n- **防御性路由注册**：WebUI 路由改用 `getattr` 延迟解析 handler，版本不匹配时跳过而非崩溃\n- **移除 6 个无用模块**（-872 行）：`inner_self.py`、`relationship_dynamics.py`、`dialogue_intelligence.py`、`multi_device.py`、`protocols.py`、`strategy_plugins/__init__.py`\n\n### 迁移说明\n\n无破坏性变更。旧存档自动兼容，无需手动操作。\n\n\u003cdetails\u003e\u003csummary\u003e历史版本更新日志（点击展开）\u003c/summary\u003e\n\n## Embodiment-1.3.0 更新日志\n\n\u003e **发布于 2026-05-28**\n\nEmbodiment-1.3.0 是一次 WebUI 的完全重新设计。从依赖 AstrBot Pages 框架的 bridge 模式，重写为独立 HTTP 服务器 + 单文件 SPA。登录页以实验体观察为主题，用 canvas 粒子引力系统、伤痕生成/残痕积累、空洞挣扎动画构建了一套完整的视觉语言。同时顺手做了计算层性能优化和记忆系统增强。\n\n### WebUI 重新设计\n\n- 独立 HTTP 服务器（端口 2718）+ 单文件 SPA（`UI/index.html`），零外部依赖\n- 登录页实验体观察主题：canvas 粒子引力系统 + 伤痕/残痕 + 空洞挣扎 + 扫描线\n- Void 吞噬/收缩过渡动画（登录时空洞扩张吞噬面板，登出时收缩回原点）\n- 脊柱线与空洞扩张同步出现，脊柱摇杆导航（阻尼吸附、键盘 W/S）\n- 加载页（SYSTEM INIT）确保资源就绪后无缝进入\n- 会话选择器、熔毁弹窗（10s 倒计时）、配置页折叠联动、中英文切换\n\n### 性能优化\n\n- `int.bit_count()` 替换全部 popcount（提速 2.4×）\n- Scar modifier 缓存（命中提速 6.8×）\n- Per-relationship personality 缓存\n- 诊断 payload 条件跳过（无 WebUI 客户端时自动关闭）\n\n### 记忆系统增强\n\n- 时间感知回忆标签（刚才/N分钟前/N小时前/昨天/N天前）\n- LLM 整合触发器（手动或定时 12h）\n\n### 插件兼容\n\n- 生活模拟模块适配了 [astrbot_plugin_proactive_chat](https://github.com/DBJD-CR/astrbot_plugin_proactive_chat)，两个插件的主动发言逻辑不再冲突\n\n### 迁移说明\n\n旧 `pages/dashboard/` 已移除，请访问 `http://\u003chost\u003e:2718`。首次访问需输入 WebUI Token。\n\n---\n\n## Embodiment-1.2.5 更新日志\n\n\u003e **发布于 2026-05-26**\n\nEmbodiment-1.2.5 是一次架构治理版本。1.2.0 让七层计算栈\"真正跑起来\"之后，main.py 膨胀到了 8009 行的 God Class——所有逻辑塞在一个文件里，改一行要读八千行。1.2.5 把它拆成 10 个职责单一的委托模块，同时补上了 WebUI 安全加固、内存泄漏防护和静默异常清理。\n\n### 做了什么\n\n**God Class 拆分：main.py 8009 → 2140 行**\n\n抽出 10 个委托模块（全部在 `sylanne_alpha/` 下），每个模块通过 `self._p = plugin` 访问插件实例，职责单一：\n\n| 模块 | 职责 |\n|------|------|\n| `session_context.py` | 会话 key 派生、host 创建、memory system |\n| `llm_request_pipeline.py` | on_llm_request 全流程、memory timer、assessor LLM 调用 |\n| `llm_response_pipeline.py` | on_llm_response、流式分段、payload cap、prompt 注入 |\n| `proactive_scheduler.py` | 主动发言决策、调度、cooldown |\n| `public_api.py` | observatory、agent identity、LLM tools、commands |\n| `state_persistence.py` | KV key、load/save/delete state、ConvMgr/PersonaMgr 集成 |\n| `realtime_dispatch.py` | 实时分段发送、history shadow、continuity context |\n| `background_queue.py` | 后台评估队列、adaptive worker、checkpoint |\n| `webui_routes.py` | 所有 WebUI HTTP 路由处理器 |\n| `webui_server.py` | WebUI server 生命周期管理 |\n\nmain.py 保留为薄委托层——一行 stub 转发到对应模块，模块间无循环依赖。\n\n**WebUI 安全加固**\n\n- 默认绑定 `127.0.0.1`（不再暴露到公网）\n- Bearer Token 认证（`auth_middleware` 拦截所有 API 请求）\n- CORS 收紧为 `http://127.0.0.1:{port}`\n- Meltdown nonce 防重放\n- 全新登录页：品牌动画 + 输入聚焦脉冲 + 错误抖动 + 淡出过渡\n\n**BoundedDict LRU 驱逐**\n\n- 新增 `sylanne_alpha/bounded_dict.py`，提供带 `maxsize` + `TTL` 的 OrderedDict\n- 所有 session-keyed 字典替换为 BoundedDict，防止长期运行内存无限增长\n- 默认 50 会话上限，超出时 LRU 驱逐最久未访问的会话\n\n**静默异常清理**\n\n- 消除所有无注释的裸 `except Exception: pass`\n- cleanup 场景标注 `# cleanup: failure acceptable`\n- 转换异常收窄为 `except (ValueError, TypeError)`\n\n**清理**\n\n- 删除 `archive/` 目录（旧 3.x 引擎代码、开发笔记、论文草稿）\n- 删除冗余 `sylanne_alpha/webui.py`\n\n### 没做什么（下个版本）\n\n- 七层神经脊 Canvas 可视化（等底层完全稳定）\n- 人格雷达图 + 漂移事件日志\n- `_StateInjectionBudget` 移出 main.py（目前 llm_response_pipeline 仍 import 它）\n- Fragment debounce 阻止 LLM 调用（AstrBot 框架层面限制）\n\n---\n\n## Embodiment-1.2.0 更新日志\n\n\u003e **发布于 2026-05-25**\n\nEmbodiment-1.2.0 是基于 Embodiment 架构的一次全量优化。1.0 搭了六层计算栈和 Void-Scar Engine，1.1.x 用两天做了紧急修补（follow-up 兼容、分段回复修复、记忆检索回归、节奏同步学习）。1.2.0 在此基础上新增了 WebUI 可视化控制台、MoE-HGT 决策融合层、三级记忆架构和 Embodiment 五维人格双向闭环，同时修复了 50+ 个计算层 bug 并加入 7 项安全机制——让七层计算栈从\"搭好了\"变成\"真正跑起来\"。\n\n### 做了什么\n\n**WebUI 可视化控制台（部分上线）**\n\n\u003e 默认端口 `2718` — 自然常数 *e* 的前四位。小巧思这一块 😋\n\n- ✅ **实时计算日志** — 每条消息经过 7 层计算栈的完整过程记录，路由分布、各层输出参数、总耗时一目了然\n- ✅ **插件参数配置面板** — 在 WebUI 中直接管理所有配置项，无需手动编辑文件\n- ✅ **记忆池观测** — 三级记忆架构全景展示（L1 Hot / L2 Warm / L3 Cold Graph）\n- ✅ **八项表象状态面板** — 动态比例尺，小值也能看出差异\n- ✅ **会话选择记忆** — 下次打开自动恢复上次选择的会话\n- 🚧 **七层神经脊可视化** — 暂时雪藏。计算层 bug 太多（修了 50+ 个还有漏网的），Canvas 动画和数据流的交互问题短期内无法彻底解决，等底层完全稳定后再放出来\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"docs/assets/preview-1.2.0/webui-compute-log.png\" width=\"100%\" alt=\"WebUI - 实时计算日志\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"docs/assets/preview-1.2.0/webui-config-panel.png\" width=\"100%\" alt=\"WebUI - 参数配置面板\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"docs/assets/preview-1.2.0/webui-memory-pool.png\" width=\"100%\" alt=\"WebUI - 记忆池三级架构观测\"\u003e\n\u003c/p\u003e\n\n**Embodiment 五维人格系统（全新）**\n\n从 Big Five 重命名为 Embodiment 五维，并实现了完整的双向人格闭环：\n\n| 维度 | 语义 | 驱动什么 |\n|------|------|----------|\n| 表达驱力 | 她有多想说话 | 表达阈值、社交压力权重 |\n| 感知锐度 | 她对伤害/缺席的敏感程度 | 检测阈值、coupling rate、healing 速率 |\n| 边界通透 | 她多容易接纳新事物 | void 创建冷却、split 阈值、rotation |\n| 内在秩序 | 她维持一致性的能力 | merge 阈值、repair rate、路由精度 |\n| 关系引力 | 她多容易被他人拉动 | boundary integrity、sheaf coupling、accepted decay |\n\n- 计算栈输出（伤痕累积、void 压力、表达反馈）反向驱动人格漂移\n- Dual-EMA 防冲击：单次恶意事件不会改变人格，持续模式才会\n- 惯性递增：越老的人格越稳定\n- 稳态回拉：偏离越远阻力越大\n\n**安全机制（7 项）**\n\n- 主权免疫系统：单 session 最多形成有限数量的伤痕\n- 保护性解离（circuit breaker）：短时间大量伤害时自动提高防御\n- 时间感知 healing：沉默期间伤痕也在愈合\n- Void 创建阻力递增（void rate limiting）：防止空洞洪泛\n- 麻木计数下限（numbed-count floor）：防止麻木维度无限累积\n- 振荡检测：防止人格抖动\n- 漂移速率限制：防止刷消息操纵人格\n\n**MoE-HGT 加固**\n\n- Scar token 对数压缩归一化（防止上游爆炸传导）\n- Expert load balancing（防止 expert 休眠）\n- Decision output clamp（防止极端输出）\n- 参考文献：[Counterfactual Routing (2025)](https://arxiv.org/abs/2604.14246)、[Misrouted Experts (2025)](https://arxiv.org/html/2605.07260v1)\n\n**计算栈修复（50+ bug）**\n\n修复了 50+ 个 bug，包括：\n- Void 创建逻辑恢复正常（之前完全失效）\n- 人格→计算栈传导链修复（之前断裂）\n- L6 Boundary 在所有路由路径都会被扰动（之前只有 10% 的消息触发）\n- Scar modifier 指数爆炸修复（对数压缩 + 人格上限）\n- 七层数据完整输出到 WebUI（之前只有 3 层）\n- 群聊 shadow buffer 修复\n- 26 个魔法数字全部接入人格管线\n\n### 没做什么（下个版本）\n\n- 七层神经脊 Canvas 可视化（需要重新设计数据流架构）\n- 人格雷达图 + 漂移事件日志（前端面板）\n- Sheaf Laplacian 验证（需要确认矩阵维度语义后再决定是否修改）\n- Fragment debounce 阻止 LLM 调用（AstrBot 框架层面限制）\n- 跨关系人格隔离（per-relationship personality overlay）\n\n### 已知问题\n\n\u003e [!NOTE]\n\u003e 本版本经过了大量打磨，修复了 50+ 个 bug，引入了完整的人格双向闭环和 7 项安全机制。但由于改动范围很大（涉及几乎所有计算模块），**可能还有一些难以预料的 bug 没有被发现**。如果你遇到异常行为，欢迎在 [Issues](https://github.com/Ayleovelle/astrbot_plugin_sylanne/issues) 中反馈，我会尽快修复。感谢理解 🙏\n\n\u003c/details\u003e\n\n---\n\n## 星星记录表\n\n如果 Sylanne 帮到了你，或者你愿意继续看她慢慢长大，给孩子点一颗⭐吧，孩子什么都会做的（）\n\n[![Star History Chart](https://api.star-history.com/svg?repos=Ayleovelle/astrbot_plugin_sylanne\u0026type=Timeline\u0026theme=light\u0026variant=adaptive)](https://www.star-history.com/#Ayleovelle/astrbot_plugin_sylanne\u0026Timeline)\n\n---\n\n\u003e [!CAUTION]\n\u003e **本插件只用于 LLM 情绪化与拟人状态建模研究。** 所有\"情绪\"\"伤痕\"\"空洞\"\"人格\"全部是工程模拟状态，不代表真实意识或真实主观体验。不能替代医学诊断、心理咨询或任何专业人工判断。\n\n---\n\n## 许可证\n\n[AGPL-3.0-or-later](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fayleovelle%2Fastrbot_plugin_sylanne","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fayleovelle%2Fastrbot_plugin_sylanne","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fayleovelle%2Fastrbot_plugin_sylanne/lists"}