Files

46 lines
6.9 KiB
Markdown
Raw Permalink Normal View History

# 小禾首次聊天介绍发布(2026-10-04)
已于 2026-10-04 09:41(北京时间)发布 API `0.99.27-rc.first-introduction1`,基线为 `0.99.26-rc.natural-chat1`;Web 保持 `0.99.25-rc.firmware-entry1`。本次增加独立于普通动态开场的首次使用介绍,候选构建、单元测试、18 项隔离会话集成和生产上线复核均通过。目标设备当前绑定尚无介绍完成记录,下一通新会话将使用下述介绍;真实设备口播与麦克风验收仍待完成。
## 已批准的介绍原文
> 您好,我叫小禾,是陪您聊天的智能助手。平时,我能陪您聊聊家常,听您说说生活里的事,也能给您讲故事、解答一些日常问题。您想说什么,直接跟我说就行,就像平常聊天一样。要是没听清我说的话,您就说“再说一遍”。咱们先认识一下,您希望我怎么称呼您?
原文以 `introduction-v1` 固定模板交付,主话题为 `neutral`、类别为 `introduction`。功能示例只用于说明能做什么,不视为老人已经请求讲故事、解答问题或参加活动。
介绍后等待老人回应,不立即追加故事、功能说明或活动。老人提供称呼时简短确认,并按其希望的称呼交流;只说听到了、不愿提供称呼或直接聊别的时,接住当前内容,不反复索要姓名。不承诺已保存称呼或已修改个人资料;本次引导不新增资料写入操作,也不改变原有记忆与字幕授权。
## 首次范围与完成条件
- 首次按“设备 + 老人 + 当前绑定代数”判断。同一老人换另一台设备会重新介绍;设备从 A 换绑到 B、再换回 A,新的绑定代数也会重新介绍,不能沿用旧绑定的完成记录。
- 旧设备上线后,如果当前绑定没有完成过 `introduction-v1`,下一通新会话补一次介绍。旧版普通问候或已经聊过很多通,不会代替这次介绍的完成记录。
- 仅当前范围内的 `DIRECT-CHAT-1` 介绍会话同时满足 `call_state=ENDED`、`ended_at` 非空、`local_audio_off=true` 和 `sdk_stopped=true`,才视为已经完成,后续新通话恢复普通开场。这是正常结束的运行记录,不是设备已完整播放、老人已听见或已理解的证明。
- 准备供应商配置失败时不提交介绍会话;启动失败、断开、超时等失败会话,以及音频或 SDK 尚未停止的会话,不消费这次机会,下一通仍可介绍。完成记录不受最近五通轮换窗口、后续失败通话或记忆隐私代数变化影响。
- 普通动态开场关闭、偏好格式不支持、未授权个性化记忆或未授权字幕保存时,首次介绍仍生效。它不需要历史字幕或个人记忆;记忆未授权时仍保持 `memory_mode=OFF`,不因介绍而开启存储。
## 会话一致性与实现范围
在现有长者锁、绑定校验和活动通话检查内选择介绍。设备运行参数与供应商 `PrepareWithWelcome` 使用同一句原文;同一会话的重试与续约复用冻结参数,不重新选择介绍,也不重复准备供应商配置。会话期间修改偏好或基础欢迎语,不改变当前会话的开场。
首次介绍的行为补充只作用于本通角色,不写回基础人设,也不带入后续普通会话。`call_session.budget_snapshot.opening` 保存有界的模板键及 `companion-opening-v2` 版本,不在该元数据中保存口播正文、老人称呼或记忆事实。普通开场的近期记录另按当前设备、老人、绑定代数和隐私代数限定,既有兴趣和字幕用途继续受原授权约束。
候选从线上基线构建,源码与测试差异为六个文件:新增介绍模板和会话集成测试,调整 `callmemory` 的开场选择与调用、`elderagent` 的本通角色引导及相应测试。没有新增数据库迁移;本说明为仓库发布记录。
## 已完成验证
- `companionopening`、`elderagent`、`callmemory` 单元测试和 Go vet 通过,Linux API 与测试二进制构建通过。
- 独立 PostgreSQL、Redis 和内部测试网络中应用 74 个迁移及本地测试种子,18 项集成测试全部通过、0 跳过。覆盖无记忆或字幕权限、关闭动态开场、同会话冻结、失败后重试、音频及 SDK 停止条件、完成记录不依赖字幕和近期窗口、旧设备补介绍、A→B→A 换绑、同老人不同设备,以及原有动态开场、绑定隔离、结束与回调校验。
- 供应商准备使用本地模拟,没有真实火山对话请求、生产业务数据复制或生产容器修改;隔离测试容器、网络和远端临时目录已清理。以上隔离结论不替代生产发布回执。
## 生产与设备验收
发布使用 42 层 Compose 配置,仅更新 API;运行二进制 SHA256 为 `3d8ffec7052627202c93a5ae7cf4098ebbd46a97ad80d20dfbd72003b0560c18`,与冻结候选一致。生产版本与 readiness 复核通过,schema 为 74 且 clean,没有执行迁移。API 环境、挂载和端口、其它容器及 Web 容器 ID 保持一致;112 个 Web 静态文件及生成的运行配置验证通过。未写业务数据、重新应用人设、主动发起通话或 OTA。发布回执时间为 `2026-10-04T01:41:07.583602+00:00`,上一 API 镜像为 `0.99.26-rc.natural-chat1`。
Windows 只读枚举确认 COM6 的父 USB 设备序列为 `B4:3A:45:16:34:A8`,与目标 EchoEar 的物理 MAC 一致。发布后 09:41:20(北京时间)的云端只读快照显示设备在线,最近心跳为 09:41:08,固件为 `1.7.0-controls.23 / code 7`,有效绑定一条、绑定代数 1、配置版本 19/19,没有活动通话或 OTA。介绍会话数与已完成数均为 0,下一通新会话应补首次介绍。
本次 `diag-state` 观察记录没有收到诊断输出,不能写作串口诊断成功。尚未确认设备实际播出上述介绍,也未完成麦克风输入、扬声器听感、介绍后等待回应或真实多轮交流验收。本次不发布设备固件;COM6 身份和云端在线状态不能代替音频验收。
## 证据
证据位于 [本次证据目录](E:/Codex/story/.local-evidence/first-chat-introduction-20261004),包括 [生产发布回执](E:/Codex/story/.local-evidence/first-chat-introduction-20261004/production-receipt.json)、[候选构建清单](E:/Codex/story/.local-evidence/first-chat-introduction-20261004/build-manifest.json)、[隔离测试结果](E:/Codex/story/.local-evidence/first-chat-introduction-20261004/result.json)、[18 项集成日志](E:/Codex/story/.local-evidence/first-chat-introduction-20261004/integration-callmemory.log)、[仅本次源码差异](E:/Codex/story/.local-evidence/first-chat-introduction-20261004/task-only.patch)、[发布前设备快照](E:/Codex/story/.local-evidence/first-chat-introduction-20261004/device-cloud-before.json)、[发布后设备快照](E:/Codex/story/.local-evidence/first-chat-introduction-20261004/device-cloud-after.json) 和 [串口观察结果](E:/Codex/story/.local-evidence/first-chat-introduction-20261004/device-before.json)。