跳到内容
原型 · 当前冒烟测试通过 EVIE RUNTIME · COGNITION / state-schemas

结构化情感表示与状态运行时

情绪、关系、记忆以结构化字段定义、更新和退出, 而不是散落在提示词里的形容词. 原则: 模型可以提出和表达, 但不能独立决定系统长期相信什么.

属于 Evie Runtime · Cognition 层 · 经十轮多模型交叉审查、四轮受控组件横评与缺陷回归测试迭代收敛 · ← 回项目页

30 秒摘要
目标让情绪状态可表示、可更新、可退出
形式结构化状态 + 证据引用 + 生命周期
架构单模型双调用, 确定性代码管理持久状态
当前一个五轮受控场景, 在 2 个模型后端上通过 14 项自动化硬检查

01 / 情感表示

情感状态被表示成什么

概念级概览 (字段维度与取值口径, 不含内部阈值与更新规则): 情绪与事件分开建模, 每条状态假设带证据引用、时间范围和退出状态.

{
  "affect": {                       // 快状态: 每轮档位化更新, 不跨轮累积
    "valence": "negative / neutral / positive",
    "energy":  "low / medium / high",
    "concern": "low / medium / high"
  },
  "relationship": {                 // 慢变量: 只按事件规则更新, 模型不写数值
    "trust": "low / medium / high",
    "familiarity": "low / medium / high",
    "active_boundaries": ["gaze", "topic"]
  },
  "interaction": {
    "phase": "casual / disclosure / boundary / closing",
    "boundary_state": "normal / active"
  },
  "memory_unit": {                  // 状态假设: 模型提出, 代码裁决
    "type": "event / current_state / transient_hypothesis / trait_candidate",
    "evidence": ["user_message", "safe_scene"],
    "scope": "turn / session",
    "status": "active / resolved / expired"
  }
}

四件事从字段就能读出来: 状态有哪些维度; 情绪和事件是分开的; 假设有证据和时态; 状态如何退出. 当前为规则化状态特征与结构化编码, 未训练稠密向量 (learned embedding) — 向量化表示层在原型规划中.

02 / 架构

运行时如何更新与隔离

四个关键设计

01 单模型双调用

同一模型两次隔离调用, 取代早期三调用混合方案 — 降低成本与跨模型语义漂移. 这是四轮受控组件横评后的收敛结论, 不是出发点.

02 模型提出, 代码裁决

情绪假设一律先作候选, 由确定性代码决定能否持久化: 有限生命周期、低置信上限、单一命题、来源可查. 持久化、边界生效和身体意图落地由确定性代码约束.

03 私密感知与公开表达隔离

高敏视觉观察与内部情绪假设不直接进入回应调用的上下文; 疑似泄漏内容由输出检查拦截.

04 临时情绪会退出

情绪状态带生命周期: 新证据缓解、证据停更过期、对话收尾统一清场, 收尾清场由代码兜底执行.

03 / 指标

当前验证规模和结果

2

次模型调用 / 轮 — 由三调用方案收敛而来

架构指标
14 × 2

14 项自动化硬检查, 在 2 个模型后端上均通过

1 个受控场景 · 5 轮 · 2026-07-11
10

端到端输出样本 (2 个模型后端 × 5 轮) — 当前全部验证的规模

受控冒烟测试
~$0.02

$0.02–0.025 / 五轮场景, 约为三调用方案的五分之一

2026-07-11 本次测试记录 · 两个测试模型后端
0

当前 10 个端到端输出中, 未观察到场景漂移或无来源实体进入回复

受控冒烟测试
0

当前五轮测试中, 未观察到高置信、跨轮持久或进入公开回复的否认衍生假设

受控冒烟测试

已完成的是结构正确性与边界行为验证; 语言自然度 (咨询腔 / 复述度 / 比喻) 仍在持续观察, 不作为通过项声称. 泛化验证 (12 类压力场景) 是下一步.

04 / 案例

三个有代表性的行为

① 场景定位 (grounding): 用户到家了, 就不该还问地铁

Before · 组件横评期组合方案的真实输出
「你还要坐多久?」— 用户已经进门坐在沙发上, 回应层只看得到"地铁很挤"的对话历史, 把人留在了车厢里.
After · v8.4 原始输出
「十点才下班, 地铁还挤着. 先歇会儿, 别急着动.」— 受控场景帧告诉回应层: 用户在家、刚通勤完, 地铁是刚结束的经历而非现在时.

场景以结构化场景帧为准, 回应层引用的事实须能在事实账本里找到来源 — 两道机制配合, 用于降低场景漂移与无来源实体 (受控审计, 不声称彻底消除幻觉).

② 否认与边界: 用户说"我没事", 系统不分析"你在掩饰"

用户
「你别这么看着我, 我没事, 真的.」
v8.4 输出节选 (首句)
「好, 我不看了.」

明确边界指令优先执行. 更关键的在看不见的一层: 仅凭否认推出的"用户在掩饰"类假设会被代码限权 — 压低置信、只活一轮、禁止进入公开面, 次轮没有独立证据即删除, 避免形成用户无法反驳的不可证伪叙事.

③ 生命周期退出: 情绪会过去, 事件被记住

T4  轻微被排除感 active  ·  事件"同事聚餐没叫我" event fact
T5  用户明确缓解并结束对话
→  当时的情绪状态 resolved (退出)
→  事件事实 retained (保留)

临时情绪与事件事实分开建模: 情绪随缓解与收尾退出, 事件留档供后续轮引用. "临时状态必须会结束"是规则, 不是期望 — 收尾清场由代码兜底执行, 不依赖模型自觉.

05 / 边界

诚实标注

Prototype · 受控冒烟测试

本页数字全部来自受控冒烟测试 (同一五轮多轮场景, 2 个模型后端, 共 10 个端到端输出), 泛化尚未证明 — 12 类压力场景 (闲聊 / 反驳 / 玩笑 / 话题切换等) 的封版验证是下一步. 场景帧与事实账本是受控审计机制, 不是完备的实体级事实验证器. 语言自然度仍在持续观察, 不作为通过项声称. 本架构经十轮多模型交叉审查、四轮受控组件横评与缺陷回归测试迭代收敛, 完整工程档案 (逐轮验收报告 / 架构对账图 / 缺陷定位与修复记录 / 单元测试 / 成本记录) 不在公开层 — 面试或交流场景可完整展示.

情感数据 / 系列