演进架构 — 未来的拓展方向
FUTURE ARCHITECTURE
状态:🟢 现行 · 最后核对 2026-08-06
2026-07-28 · 与 architecture.md 分工:那份写"现在是什么",这份写"要变成什么"。
两者生命周期不同——现状文档跟着每次重构变,本文档变得很慢。混在一起会互相污染。
0. 判断标准
一切取舍服从一句话:
对话本身的质量与纵深 > 系统能力的广度 > 工程指标的漂亮。
由此推出三条不做的事:
| 不做 | 为什么 |
|---|---|
| 不为增长做架构 | 用户是几个朋友。他们是约束(不能弄坏数据)不是目标(不需要为规模设计) |
| 不追竞品功能表 | 广度不是目标。宁可 10 个干员每个都活,不要 300 个都像客服 |
| 不做产品化地基 | 多进程/共享状态/横向扩展——这些会消耗掉本可以用在纵深上的全部时间 |
当前资源:每周 15h+ · 每月 200-500 元预算 · 常聊 10-20 个干员 · 主要用深聊。
1. 当前架构的根本假设,以及它的天花板
整个系统建立在一个假设上:
每一轮对话,角色都从文本重新构建一次。
S 向量、三维信赖、情绪坐标、记忆检索结果——全部被序列化成中文,塞进 system prompt。 模型读到的不是状态,是关于状态的描述。
这个假设支撑了现在的一切,也是天花板所在:
| 表现 | 根因 |
|---|---|
| 长对话人格漂移 | 每轮重建,而 prompt 在注意力 U 型分布的谷底 |
| 她"记不住"某些事 | 没被检索到的记忆,那一轮就不存在 |
| 她太顺着你 | 状态模型全是反应性的——没有任何维度表示"她想要什么" |
已经做到的抗退化体系(周期重锚定、漂移信号监控、元认知重述、窗口化上下文) 是在这个假设内部能做到的最好程度。再往上走需要改假设本身。
三个改假设的方向,贯穿下文全部能力:
- 状态从"被描述"变成"起作用" —— 不再把 warmth=0.72 写成文字,而是让它去选注入哪条示例、调什么采样参数
- 从"每轮重建"到"持续存在" —— 跨会话的意图、未和解的账、没说出口的话
- 从"防攻击"到"记日常" —— 已有的负面状态机制只接在身份攻击上,日常摩擦在状态层完全不存在
2. 六条能力线
每条标注三层确定性:
- 🟢 近期(确定要做,顺序已定)
- 🟡 中期(方向定了,做法未定)
- ⚪ 远期(只是设想)
能力 1:意图 —— 从"她怎么感受"到"她想要什么"
这是当前最大的结构性缺口,也是"她太顺着我"的第一成因。
现状(已核对代码):
| 状态 | 是什么 |
|---|---|
| S 向量 7 维(warmth/tension/fatigue/comfort/restlessness/alertness/social_availability) | 全是身体反应 |
| 三维信赖 | 她对你的感受 |
| emotion (valence/arousal) | 对刚才那句话的反应 |
want / goal / intent / desire 在 somatic_state.py / operator_state.py / trust_manager.py
三个状态模块里的出现次数是 0。
每一个维度都是反应性的。一个没有欲求的角色只能回应;对用户的回应,默认就是同意。
competitive-analysis.md里其实早就记下了答案(Roundtable 的隐藏特质secret/wound/want/fear/honesty),当时的批注是"已隐含在 .char 里,但没有结构化编码"。 缺的正是want和fear。
-
🟢 结构化
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.json303 节点 2163 边 —— 单聊完全不调用 -
RELATIONSHIP_MATRIX15 对手写关系 —— 只在群聊注入 -
单聊(最常用路径)的 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
- 🟡 升 🟢 时才写做法。在方向还没验证前写做法,是过度设计
- ⚪ 可以一直躺着。它们的作用是标记方向,不是承诺