语用 × Jev × 记忆
一个会"看懂人"的 AI,每次开口前都要先回答:这个人想要什么、现在适不适合说、该怎么接。我们把这件事拆给三方:语用学定字段,Jev 做判断,记忆提供深度。大模型只负责最后把话说好。
四方分工
定义要判断的字段和选项:需求、言外之意、面子风险、打扰成本、接法……每个字段都有理论依据和明确的边界。
对每个字段给出带概率的判断:快(约 0.5 秒)、稳(同样输入同样答案)、便宜,不生成文字。
提供这个人的平常、历史和约定:先验、基线、问过什么、雷区、待跟进。让判断从"一般人"变成"这个人"。
拿着说话计划和人格,生成具体的话。不负责判断,也不能推翻硬规则。
每次判断的流水线
收集这一刻发生了什么
你说的话(听写)、看到的画面(视觉模型转成文字的事件和场景状态)、认出的人。全部转成文字或结构化字段,因为 Jev 只读文字。
只取和这次判断有关的记忆
这个人的情绪和作息基线、最近几轮对话、今天问过什么、雷区、今天到期的跟进、相关的长期事实。先在代码里过滤,不要把整个记忆库塞进去。
按字段表生成问题集
每个字段一题,一题一个条件。选项来自固定清单;遇到开放的情况,先让大模型给候选,再交给 Jev 挑。
一次请求问完所有字段
证据和记忆放进 state,问题放进 questions。所有问题并行计算,多问几题几乎不增加延迟。返回每个选项的概率和置信度。
在代码里把判断和记忆合起来
跨轮平滑(意图假设表)、和个人基线比偏差、查雷区和问过记录、调和互相矛盾的字段、按风险设置置信度门槛。硬规则在这里一票否决。
决定说不说、用哪种接法、什么情绪
输出一份说话计划:要不要开口、接住哪层意思、用什么接法、情绪和强度、哪些不能说破。
按人格和计划说一句话
生成后再做一次规则检查:红线(不诊断等)、去 AI 腔、长度。
记下结果和对方的反应
对方愿意聊、婉拒,还是说"别再问";哪种接法有效;新学到的事实和约定。下一次判断就用得上。
字段表:语用学定义,Jev 判断,记忆参与
这是核心。新项目照这张表裁剪:保留需要的字段,换掉选项,记忆一栏按自己的数据来源填。
| 字段 | 语用学依据 | Jev 题型 | 选项 / 输出 | 记忆怎么参与 | 用来决定 |
|---|---|---|---|---|---|
| 需求类型 | 言语行为、关联理论 | choice | 信息 / 安慰 / 陪伴 / 做事 / 分享好事 / 吐槽 / 风险 | 这个人常见的需求;最近的对话 | 回复的权重(懂、暖、顺、接、累) |
| 深层意图 | Grice 会话含义(言外之意) | choice | 想被关心 / 想要办法 / 想被认可 / 想发泄 / 想转移注意力 / 在试探 / 想结束…… | 近期发生的事、待跟进、刚聊过的话题 | 接住哪一层意思;把握低时不说破 |
| 情绪 | 评价理论 | score ×2 | 效价 5 档、强度 3 档 | 个人基线:和这个人的平常比,而不是和一般人比 | 回复情绪;是否触发关怀 |
| 面子风险 | Brown & Levinson 面子理论 | noul | 现在说会不会让对方尴尬、觉得被盯着 | 雷区、是否有别人在场 | 不说、改成私下说、不点破 |
| 能否打扰 | 会话分析:话轮与时机 | noul | 专注、通话、睡觉、有访客时为否 | 作息、专注习惯 | 现在说,还是等自然停顿 |
| 在找我 | 注意力索取(相邻对的开启) | noul | 看着 AI、挥手、对它说话 | 唤醒手势的约定 | 覆盖"能否打扰":对方在找你时就能说 |
| 来源进行中 | 时机、情境 | noul | 引起情绪的事是否还在发生 | 当前活动(通话、争执) | 等平静后再关心 |
| 是否重复 | 合作原则 · 量准则 | noul | 这件事是否刚聊过、刚问过 | 问过记录、当天对话 | 避免哪壶不开提哪壶 |
| 想继续聊 | 相邻对、话轮转换 | noul | 对方想接着聊还是收尾 | 历史回应率 | 结尾是否留话头、说多长 |
| 接法 | 动机式访谈、共情回应 | choice | 先共情再问 / 问一个细节 / 说我看到的 / 幽默 / 小建议 / 一起高兴 / 陪着 / 安全建议 / 不说 | 这个人对各接法的反应 | 说话计划的骨架 |
| 风险信号 | 安全优先(红线) | noul | 是否涉及身体急症、自伤 | 对方亲口说过的健康情况 | 跳过一切冷却,直接给安全建议 |
题型说明:choice 从清单里选一个,返回每个选项的概率;score 按档位打分;noul 是"是或否"的概率。
最稳妥的结合:十条规矩
一题只问一个条件
"生气并且想退款"要拆成两题。复合判断在代码里组合,Jev 只做单一的快速判断。
记忆进 state,不进问题
记忆作为带名字的字段放进
state,问题里用`字段名`指过去。问题文字保持稳定,方便复用和校准。先过滤,再给 Jev
只放这次判断用得上的记忆。无关的内容越多,判断越不准。
Jev 不生成,只挑选
开放的情况先由大模型或规则给出候选,再让 Jev 打分。计数、算时间、比日期都在代码里做。
单次结果要平滑
Jev 单次常给出 0 或 1 这样的极端概率。跨轮用"旧概率 × 新证据"慢慢推,别让判断来回跳。
和这个人比,不和一般人比
情绪、作息、活跃度都先建个人基线,用偏差做判断。基线只用正常状态来学。
硬规则一票否决
红线、雷区、冷却、"别再问"由代码执行,放在 Jev 前面或后面,不交给任何模型临场决定。
字段之间要调和
各题互不参考,会出现"想找我 82%、适合搭话 26%"这种矛盾。调和规则写在代码里:在找你,就适合说。
门槛跟着风险走
说一句闲话可以 0.5 就做;涉及面子、健康的要 0.7 以上;拿不准就改成问,或者不说。
全部留痕,回放校准
每次记下 state、答案、决定和对方的反应;固定 Jev 版本号(如 jev-1.13.0);中文场景用英文写问题,并在自己的数据上校准。
记忆分层:哪层给哪个判断用
| 层 | 内容 | 时间尺度 | 主要服务的字段 |
|---|---|---|---|
| 即时 | 眼前是谁、刚说的话、这一段画面 | 秒 | 全部(证据本身) |
| 会话 | 当天的对话、意图假设表、场景状态 | 小时 | 深层意图、是否重复、想继续聊 |
| 基线 | 这个人平常的情绪、作息、活跃度 | 周 | 情绪偏差、能否打扰 |
| 社交 | 问过什么、对方反应、雷区 | 天到周 | 面子风险、是否重复、接法 |
| 情景 | 每天的日记 | 天到月 | 深层意图(前因后果)、可聊话题 |
| 语义 | 关于这个人的长期事实(可纠正、带可信度) | 长期 | 需求类型、风险信号、话题 |
| 前瞻 | 约好的事、该跟进的结果 | 到期为止 | 主动开口的理由 |
一个完整的例子
来自安妮 Demo 的真实运行结果(2026-10-08),数字是 Jev 实际给出的概率。
主人回到书桌前,听写到:"今天又被老板当众骂了,烦死了。"
今天还没聊过这件事;没有相关雷区;这个人今天的情绪基线是平常。
需求:吐槽 95% 深层意图:想发泄一下 94% 情绪:很负面·强烈 接法:先共情再问 100% 想继续聊 81%
接住"想发泄",不给建议;情绪 关切·中;带一个具体细节;结尾留一个好接的问题。
当众被骂,确实很憋屈。你想吐槽就跟我说说,他是因为什么骂你?
记下"聊过工作上的不愉快"。30 分钟内看到他还不开心,就不再主动提;如果他之后说"不想说了",这件事就进雷区。
同一套字段也用在"看到情绪变化要不要关心":火正大、来源还在进行时(来源进行中 71%),先等;等他平静些,只敞开门:"我还在这儿,想说就说,不想说也行。"
Jev 请求的骨架
POST https://api.typesafe.ai/v1/systemone
{
"model": "jev-1.13.0",
"state": {
"user_just_said": "今天又被老板当众骂了,烦死了。",
"what_ai_sees": "主人在书桌前,刚把手机放下",
"recent_dialogue": ["…最近几轮…"],
"memory": {
"asked_today": [],
"sensitive_topics": [],
"baseline_mood": "neutral",
"due_follow_ups": []
}
},
"questions": {
"need": {"type": "choice", "instructions": "What does the user mainly need from `user_just_said`?", "criteria": {…}},
"latent": {"type": "choice", "instructions": "Beyond the literal words, considering `recent_dialogue` and `memory`, what is the underlying intention?", "criteria": {…}},
"valence": {"type": "score", "instructions": "How does the user feel right now?", "criteria": ["very negative", "…", "very positive"]},
"repeat": {"type": "noul", "instructions": "Has this topic already been discussed or asked about, per `memory.asked_today`?"},
"strategy": {"type": "choice", "instructions": "How should a tactful friend respond?", "criteria": {…}}
}
}
用到新项目时的清单
- 从字段表里挑出这个产品需要的字段,改写选项,写清楚每个选项的边界
- 列出每个字段要用的记忆,并确认这些记忆真的存下来了
- 写下硬规则(红线、冷却、雷区),确定放在 Jev 之前还是之后
- 写下字段之间的调和规则,以及每类动作的置信度门槛
- 固定 Jev 版本;每次判断记日志:state、答案、决定、对方反应
- 用 30–50 条自己的真实样例回放,对比 Jev 和大模型的判断,再调门槛
- 确认哪些推断不能长期保存(例如情绪档案)、哪些可以
参考:《逸辰回复决策公式 v0》(懂、暖、顺、接、累)、《逸辰人格与语用设计 v0》、TypeSafe Jev API 说明(jev-1.13.0)。实现见安妮 Demo:esp32cam/demo/intent.py、voice.py、emotion_watch.py。