Files
story/docs/first-chat-introduction-release-20261004.md
T
Codex Local bf1233d5df
ci / verify (push) Canceled after 0s
feat: expand companion platform, device controls, and memoir workflows
Add customer and operator login, BLE provisioning, device fleet controls, call memory, memoir generation, and refreshed family and maintenance portals. Include API contracts, migrations, firmware sources, tests, assets, and deployment documentation.
2026-10-08 10:06:44 +08:00

6.9 KiB
Raw Blame 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 身份和云端在线状态不能代替音频验收。

证据

证据位于 本次证据目录,包括 生产发布回执、候选构建清单、隔离测试结果、18 项集成日志、仅本次源码差异、发布前设备快照、发布后设备快照 和 串口观察结果。