罗德岛通讯与技术部

演进架构 — 未来的拓展方向

FUTURE ARCHITECTURE

S 向量、三维信赖、情绪坐标、记忆检索结果——全部被序列化成中文,塞进 system prompt。

状态:🟢 现行 · 最后核对 2026-08-06

2026-07-28 · 与 architecture.md 分工:那份写"现在是什么",这份写"要变成什么"。

两者生命周期不同——现状文档跟着每次重构变,本文档变得很慢。混在一起会互相污染。


0. 判断标准

一切取舍服从一句话:

对话本身的质量与纵深 > 系统能力的广度 > 工程指标的漂亮。

由此推出三条不做的事:

不做 为什么
不为增长做架构 用户是几个朋友。他们是约束(不能弄坏数据)不是目标(不需要为规模设计)
不追竞品功能表 广度不是目标。宁可 10 个干员每个都活,不要 300 个都像客服
不做产品化地基 多进程/共享状态/横向扩展——这些会消耗掉本可以用在纵深上的全部时间

当前资源:每周 15h+ · 每月 200-500 元预算 · 常聊 10-20 个干员 · 主要用深聊。


1. 当前架构的根本假设,以及它的天花板

整个系统建立在一个假设上:

每一轮对话,角色都从文本重新构建一次。

S 向量、三维信赖、情绪坐标、记忆检索结果——全部被序列化成中文,塞进 system prompt。 模型读到的不是状态,是关于状态的描述

这个假设支撑了现在的一切,也是天花板所在:

表现 根因
长对话人格漂移 每轮重建,而 prompt 在注意力 U 型分布的谷底
她"记不住"某些事 没被检索到的记忆,那一轮就不存在
她太顺着你 状态模型全是反应性的——没有任何维度表示"她想要什么"

已经做到的抗退化体系(周期重锚定、漂移信号监控、元认知重述、窗口化上下文) 是在这个假设内部能做到的最好程度。再往上走需要改假设本身。

三个改假设的方向,贯穿下文全部能力:

  1. 状态从"被描述"变成"起作用" —— 不再把 warmth=0.72 写成文字,而是让它去选注入哪条示例、调什么采样参数
  2. 从"每轮重建"到"持续存在" —— 跨会话的意图、未和解的账、没说出口的话
  3. 从"防攻击"到"记日常" —— 已有的负面状态机制只接在身份攻击上,日常摩擦在状态层完全不存在

2. 六条能力线

每条标注三层确定性:

  • 🟢 近期(确定要做,顺序已定)
  • 🟡 中期(方向定了,做法未定)
  • 远期(只是设想)

能力 1:意图 —— 从"她怎么感受"到"她想要什么"

这是当前最大的结构性缺口,也是"她太顺着我"的第一成因。

现状(已核对代码):

状态 是什么
S 向量 7 维(warmth/tension/fatigue/comfort/restlessness/alertness/social_availability) 全是身体反应
三维信赖 她对你的感受
emotion (valence/arousal) 对刚才那句话的反应

want / goal / intent / desiresomatic_state.py / operator_state.py / trust_manager.py 三个状态模块里的出现次数是 0

每一个维度都是反应性的。一个没有欲求的角色只能回应;对用户的回应,默认就是同意。

competitive-analysis.md 里其实早就记下了答案(Roundtable 的隐藏特质 secret/wound/want/fear/honesty),当时的批注是"已隐含在 .char 里,但没有结构化编码"。 缺的正是 wantfear

  • 🟢 结构化 want / fear / honesty.char 蒸馏,存独立 JSON。关键:不注入 prompt,而是作为决策引擎的输入。 honesty < 0.5 时她不想回答就绕开,而不是老实说"我不想谈"。 常聊只有 10-20 个干员 → 手写即可,不需要自动化管线(一个周末)。

  • 🟡 未说出口的话 她有想说但还没说的事,跨会话保持,等一个时机。这是 want 落到对话层的形式。 需要跨会话的 agenda 存储——现有的 ## 我们 段和深聊 [ANCHORS] 是可复用的载体。

  • 意图会因互动而改变 她想要的东西本身在变。这需要 want 不再是静态配置,而是有自己的演化规则。


能力 2:关系 —— 从"单向棘轮"到"真实的关系"

这是"她太顺着我"的第二成因,而且是可以立刻拆掉的那个。

现状(已核对代码):response_interceptor.py 的分析 prompt 写死

"trust_gain": 1-3
1=日常礼貌, 2=有真实情绪或具体关心, 3=深刻情感连接

解析时又兜一道 max(1, min(3, ...))日常对话里没有任何路径能让信赖下降。 扣分只在身份覆写攻击(dissonance>=3)和反复试探(manip>=2.0)时触发。

更深的问题:分析的输入是干员自己的回复,不是博士做了什么。于是形成闭合正反馈:

她回复得温情 → trust_gain=3 → 信赖涨 → prompt 注入"你们很亲近" → 她更温情 → ...

而且下限焊死在 1,这个回路没有阻尼

  • 🟢 分析器改成评博士,trust_delta 放开到 -2 ~ +3

    +3 博士给出了真实的、具体的、有代价的东西
    +1 正常交流
     0 这一轮没有实质交流(客套、敷衍、单向索取)
    -1 回避了她的认真提问 / 前后矛盾 / 把她的付出当理所当然
    -2 轻慢、消费她的信任、用她的坦白反过来刺她
    

    必须同时写明:干员反驳博士不扣分。 否则一放开负值,系统会学会 "她不同意 = 关系恶化",把她压得更顺从——比现在更糟。

  • 🟢 日常摩擦接入已有的负面状态机制 record_residue() / spine_event() / add_trust_deduction() 三个机制已经实现并在跑, 但全部 16 个调用点的触发条件只有身份攻击和反复试探。

    系统能记住"博士试图攻击我的人格",但记不住"博士让我失望了"。

    接线工作,不是造新系统。

  • 🟡 不可逆的时刻 有些话说了就回不去。spine_event 是现成的载体,目前只用于 L3 身份防御。

  • 翻旧账(真人版) 这个方向被砍过一次(见 decisions.md)。重做的前提是先有"情绪残留"托底—— 否则只能是条件触发,机械感正是上次被砍的原因。

    真人翻旧账 vs 机械翻旧账的区别:只在她已经处于负面状态时才滑出来 · 只提戳中她 fear 的事 · 她不想提是没忍住 · 是一个具体细节而非概括。


能力 3:记忆 —— 从"检索精度"到"锚点与遗忘"

目标已明确:关键的记牢,日常的可以忘。

这意味着优化方向不是"提高召回率",而是分化:锚点级记忆要牢不可破,日常记忆应该主动淡出。

现状:L1→L4 四层 + 窗口化上下文,整体是检索精度导向的。 深聊的 ★星标 + [ANCHORS] 层已经是"锚点"思路的雏形——要强化它,不是重做

  • 🟢 建立标尺 eval/ 已实现(P@5/R@5/MRR,15 条 query)但从未用于决策。 三次 embedding 迁移(MiniLM → BGE-M3 → BGE-small)全靠感觉,阈值至今没重新标定。 扩到 100+ 条,跑出基线。没有标尺,后面每一条记忆改动都是猜。

    注意:这条服务于本能力线,但优先级低于能力 1、2 —— 它测的是检索精度,而当前痛点是立场不是记忆。

  • 🟡 锚点机制强化 + 日常记忆主动淡出 L2 已有艾宾浩斯衰减,但那只影响检索权重,记忆内容本身不变。 真正的"忘"应该是内容层面的:日常细节磨损、合并、最终消失。

  • 记忆的失真与重构 真实关系里记忆会变形——被后来的事改写、被情绪染色、细节被磨平。 这是"纵深"最直接的技术表达,也是最难做对的。

  • 记忆的主观性 同一件事,在 A 的 L3 和 B 的 L3 里记录得不一样。她们记住的是各自在乎的部分。 技术成本几乎为零,对"活人感"是质变。


能力 4:时间与在场 —— 从"随叫随到"到"她有自己的时间"

"随叫随到"是当前所有 AI 陪伴产品共同的沉浸感杀手。

现状:somatic_state.is_absent() 和 silence-space 有雏形,agent_loop 60s 心跳在跑 (扫 S 向量、冷落检测、主动联系),但对话本身永远是即时应答。

  • 🟡 异步性 她在忙 · 她三小时后才回 · 她回的时候提到中间发生了什么。 基础设施已经有了(agent_loop + 主动消息 + 推送三通道),缺的是**"这一轮我不回"的动机系统**。 competitive-analysis.md 记过 Eros 的 Ghost 机制和它的公平性规则(不能连续 ghost、有冷却)。

  • 独立时间线 她的时间不依附于你的会话。你不在的时候,事情真的在发生—— 这和舰内叙事生态(朋友圈/天气/广播)是同一条线,只是现在生态和对话是割裂的。


能力 5:世界的导通 —— 从"静态关系图"到"信息会流动"

这是已有资产里最被浪费的一个。

现状(relation-rag-design.md 已指出):

  • relation_graph.json 303 节点 2163 边 —— 单聊完全不调用

  • RELATIONSHIP_MATRIX 15 对手写关系 —— 只在群聊注入

  • 单聊(最常用路径)的 system prompt 里没有任何关系上下文

  • 🟢 关系 RAG 设计已完成(见 relation-rag-design.md),未实施。 把静态数据变成可检索、可注入、上下文感知的关系知识。锚定 top-3 + 语境 top-2。

  • 🟡 跨干员信息流动 你告诉 A 的事,A 会(按关系亲疏、按性格)告诉 B。下次找 B,B 已经知道了。 常聊 10-20 个干员的规模正好适合——太少没有网络效应,太多则信息扩散不可控。

  • 她们之间发生你不在场的事 关系图不只传递你的信息,她们之间也有自己的往来。


能力 6:可测量(横切)

服务于上面全部五条。没有它,每一次改动都是凭感觉。

  • 🟢 eval/ 扩到 100+ 条 —— 检索质量的标尺
  • 🟢 模型对比实验 —— 同一段对话换 Claude / GPT 各跑一遍。 谄媚最深的一层来自底模的 RLHF 先验,DeepSeek 在同类里偏顺从。 预算 200-500 却只花 30-80,深聊又是调用频次最低的场景——这是单位投入回报最高的一次验证。
  • 🟡 pronoun-gender-research.md 阶段 2-3(阶段 1 的 [PRONOUN] 日志已在采集)
  • 🟡 立场的可测量化 —— 目前"她太顺着我"只能靠感觉。能不能像代词一样做成指标? (比如:连续 N 轮无异议率、让步是否伴随理由)

3. 会成为瓶颈的三件事

诚实记录,避免半年后重新发现:

3.1 底模的顺从先验

上面能力 1、2 的全部改造都在 prompt/状态层。但 RLHF 训练出的"助人、顺从"先验 是模型权重里的东西,prompt 层有天花板。

这是唯一可能真正需要微调的地方——但不该是下一步。 等能力 1、2 做完、评估体系建起来,确认某个质量维度确实无法靠 prompt 提升了再上。 现在上微调是用最贵的手段解还没确诊的问题。

3.2 "每轮重建"的架构

持续的意图、未和解的账、跨会话的 agenda——这些"持续存在"的东西 在当前架构里只能靠外部状态 + 每轮重新注入硬撑。 能撑多远是未知数,可能在某个复杂度上会崩。

3.3 单进程假设

内存缓存、进程内锁、进程内会话状态、进程内限流——四层都建立在"只有一个进程"之上。 这是当前的正确选择(不走产品路线),但它意味着: --workers 一个都不能加,加了就会重新引入已修好的数据损坏。


4. 不在本文档范围内的

方向 归属
已放弃的方向及原因(吃醋/PDD/翻旧账/Flutter/语音通话…) decisions.md
当前系统是什么样 architecture.md
具体的待办条目 backlog.md(待建,见 docs-reorg-plan.md)
技术债 tech-debt.md
Phase 2-5(F 网络 → 双轨 → RL → 放生) the-weight-of-breathing.md,尚未开始

5. 本文档的维护

  • 变得慢是特性。如果它一个月要改三次,说明写得太具体了——具体的东西属于 backlog.md
  • 每条 🟢 做完后:从本文档移除,结果进 CHANGELOG,决策进 decisions.md
  • 🟡 升 🟢 时才写做法。在方向还没验证前写做法,是过度设计
  • ⚪ 可以一直躺着。它们的作用是标记方向,不是承诺