# 聊天记录与老人记忆 > 2026-10-07 更新:用户已确认聊天应直接从火山 Viking 检索;平台回忆提取用于整理故事和回忆录。原来的“平台筛选后注入聊天”方式被替换,详见 [原生检索说明](native-viking-retrieval-20261007.md)。以下保留 2026-09-16 的实施记录。 ## 现在的流程 1. 设备向平台请求开始聊天,平台查设备绑定的老人。 2. 平台把该老人的有效记忆加入其智能体的 S2S 对话配置,然后返回设备所需的聊天参数。 3. 设备直接与火山聊天。火山按照本次 `session_id` 把聊天文字回调给平台,平台保存聊天记录。 4. 设备报告结束。平台等待末尾字幕回调,后台把已收到的用户和助手文字上传到火山记忆库。 5. 火山异步提取记忆;平台读取结果,保存成小程序可查看、修改和删除的记忆。下一通聊天再带入。 设备不用另传整份聊天文字,也不用拿记忆库密钥。这次不需要重新烧录或重新绑定。 ## 两份数据分别干什么 | 数据 | 保存位置 | 用途 | | --- | --- | --- | | 聊天记录 | 平台数据库 `call_utterance` | 家人查看原始对话,作为上传来源 | | 火山提取的记忆 | 火山记忆库 `memory` 的 `event_v1` | 火山根据对话自动整理事实 | | 可管理的记忆 | 平台 `curated_memory` / `memory_version` | 家人查看、纠正、停用、删除;作为下次聊天的资料 | 不同老人使用由“租户 ID + 老人 ID”生成的独立 `user_id`,查询和上传都限定该标识,不以设备编号当作老人记忆身份。换设备后仍跟随老人。 ## 小程序 在家人的故事与记忆页面查看记忆。聊天结束后不是立即生成;处理期间会显示上传或提取状态。接口失败不会把已有列表隐藏。 人工修改优先,后台不会用原提取结果覆盖人工修改。删除、停用后不再带入新的聊天;后台同步处理火山对应事件。撤回授权停止上传,个人信息删除沿用平台现有删除流程。 ## 运行条件 - 老人已授权“聊天记录保存”和“个性化记忆”,设备仍按原流程绑定。 - API、worker 使用已有 `VIKING_MEMORY_RESOURCE_ID`、`VIKING_MEMORY_API_KEY_FILE`、事件类型配置。 - 数据库新增迁移 `000067_managed_call_memory`,记录上传进度和云端事件对应关系;上传或查询失败自动重试。 - 已结束且仍有授权、仍保存文字的旧直连聊天会自动补传。不补造缺失的聊天记录。 本方案使用火山提取事件记忆,不依赖平台另配 ARK 文本提取模型;不另外自动生成 `profile_v1`。老人偏好等事实也可以包含在事件记忆中。 `MemoryConfig.Enable` 仍为 `false`,这是有意的:纯 S2S 使用平台整理后的资料注入,避免云端直接检索绕过家人的修改、停用和删除。不要仅为“启用记忆”把这个开关打开。 ## 状态接口 `POST /api/v1/memories/sync/status`(使用已有小程序登录凭证) 输入:`{"elder_id":"老人公开ID"}`。 在原有返回字段上增加: | 输出字段 | 含义 | | --- | --- | | `upload_pending_count` | 等待上传的通话数 | | `extracting_count` | 已上传,尚未读取到记忆结果的通话数 | | `synced_call_count` | 已读取到记忆结果的通话数 | | `error_code` | 最近的同步错误码;后台继续重试 | `SYNCED` 表示已取到记忆,不代表火山保证提取全部结束;没有新事实的聊天可能一直没有提取结果。平台保留聊天记录,不会凭空编造记忆。 ## 当前边界 - 长期记忆由模型提取,可能遗漏或理解错误,家人可以纠正。 - 纯 S2S 每通开始时带入近期有效记忆,当前沿用约 1000 字符的上下文预算;并非把全部历史聊天无限塞入模型,也不是通话中随问随查全部历史的检索系统。 - 单通上传最多 1000 条文字消息;超限会保留原文并标记 `TRANSCRIPT_TOO_LARGE`,不静默截断。 - 回调只有收到的文字才能入库;中断造成的缺失字幕无法恢复。迟到回调按新的文字版本补传,同一会话重试使用稳定云端会话 ID。 ## 已做的验证 - 独立测试数据库:上传失败重试、重复读取去重、跨老人结果排除、自动记忆在家人页面可见、下一次聊天带入记忆、修改同步、删除不复活、撤回授权清理。 - 火山真实接口使用独立测试身份完成上传、提取、更新、单条删除和按测试身份清理;未写入真实老人测试事实。 - 设备接口和固件均保持不变。 ## 上线结果(2026-09-16) - 后端版本 `0.93.1-rc.memory1` 已部署到 `82.157.201.114`,数据库迁移到 67;切换前已备份。 - API、callbacks、worker 均正常运行,健康检查通过。 - 当前 COM6 绑定的老人“姥姥”:4 通有效历史对话完成补传,生成 6 条记忆,6 条同步任务可见,无上传错误。另有 6 通缺少用户或助手正文的通话被跳过,未编造记忆。 - 后端全量 Go 测试通过;4 个核心模块使用隔离数据库完成集成测试;小程序 97 项测试通过,原生 WXML 检查家人资料和家庭成员页面正常。 - 火山真实测试仅写入独立联调身份,测试事件已删除并查询确认无剩余。 - 小程序状态提示改动在 `C:\Users\19926\WeChatProjects\voicelink`,需要重新编译/上传体验版才会出现在手机上。 - 尚未代替用户进行上线后的实体设备主观语音记忆验收;自动化测试已验证新通话配置会带入该老人的记忆。 接口参考:[上传会话 AddSession](https://www.volcengine.com/docs/84313/1783353?lang=zh)、[事件检索](https://www.volcengine.com/docs/84313/2100967)。