可可今天的奇遇日报准备好了
今日 Tab + 日复盘(核心仪式)+ 守望(差异化壁垒)+ prompts_v5 全套契约。这是产品最高频的体验主线 —— 用户每天 10 分钟的陪伴消费 + 关注议题的克制告警。
v0.3 全景版:增加战略背景、prompt 架构、契约说明、前端路由、迁移灰度,给团队和开发同学一份一站式参考。
这一节给团队成员先建立全局认知 —— 我们为什么改、改成什么样、产品对家长承诺什么。所有后续设计决策都从这里推导。
| 决策 | 在批次 B 的体现 |
|---|---|
| NSM = 日复盘完成率 | 整个 Tab 1 围绕"今天的复盘"组织,不是新闻流式信息流 |
| 主战场 = 消除缺席感的 10 分钟 | 复盘控制在 2~8 张卡片,可在通勤一程读完 |
| AI commute timing 学习 | 不固定 8:00 推送,学用户的实际"碎片可读时段" |
| "无事发生本身就是信息" | 平淡日不强行编故事,A+C 兜底(一句解读 + 一个时刻) |
| 守望独立成线 | Tab 1 命中时 banner 露出,详情进 Tab 3 二级页;不参与 Hero 钩子 |
| 守望姿态克制 | 不诊断 / 不焦虑 / 不催促;"我觉得 AI 想多了"反馈永远在 |
| 4 维标签 | 情绪 #E59CB1 / 运动 #8DC79B / 社交 #8DB1D9 / 思维 #B197D3 |
| 全天陪伴 + 录音即焚 | 复盘材料是 AI 解读 + 奇遇时刻,不再展示"录音/采集时长" |
| 年龄分档(v0.2 新) | young (3~4.5 岁) / older (4.5~6 岁) 两档;越界 nudge 不阻断 |
| 卡片数 AI 决定(v0.2 新) | 不固定 5-7 张;orchestrator 按 mode (rich/mild/quiet) 决定 2~8 张 |
| 守望阈值按 stage(v0.2 新) | young 默认 0.65 / older 默认 0.70;阈值在 prompt 内硬截断,不下放前端 |
v4 是固定 3 卡(summary / metrics / dialogue_style)+ score 0~100 打分。Batch B 重塑为 8 卡候选 + AI 调度 + 不打分。下表是逐项对照:
| 维度 | v4 | Batch B (v5) | 动作 |
|---|---|---|---|
| 卡片数 | 固定 3 | AI 决定(2~8) | + 顶层调度 |
| summary_card | 1 张多 items + score 0-100 | 4 维度独立成卡,无打分 | 拆 4 卡,去 score |
| timeline_card | 全天时间轴 | "高光奇遇"仅子集 | 重塑为 curator |
| dialogue_style | 日复盘出 | 不上日复盘 UI | 挪到周/月报 |
| Hero 钩子 | 无 | 必有 | 新增 |
| 平淡日 A+C | 无 | 必有兜底 | 新增 |
| 行动建议 | 无(light_tip 接近) | 每日 ≤1 张 | 新增 |
| 守望命中 | 无 | 议题告警 + 65/70% 阈值 + hedge | 新增 |
| 年龄约束 | 无 | 3-6 岁 young/older 两档 | 新增 |
| commute timing | 无(无状态) | push 时机依此 | 工程层做,不在 prompt |
§0 §1 §2 §7 + 设计决策段§3 §4 + 各 prompt 的 .pmt 文件§4 输出 schema + §5 路由表§3 双层架构 + §6 灰度计划用户每天打开 App 的第一屏 —— 情绪锚定 = "今天可可怎么样"。Home 有三种状态:待复盘 / 已复盘 / 平淡日。日复盘是由 AI 决定 2~8 张卡片的故事流(rich/mild/quiet 三种 mode),不再固定 5-7。年龄越界 / 缺生日时在 Hero 上方出现轻量 nudge 条,不阻断浏览。
4 个奇遇时刻 · 全天陪伴 14 小时
晚饭前可以读完
没有明显波动;午睡前有一段抗拒,但很快被绘本转移注意力。
下午在小区花园跑跳了一阵;晚饭前主动要求"再下楼一次"。
今天在花园里 3 段同伴互动,其中一段她主动起话头 —— 看起来比上周更愿意先开口。
本周关于天文的提问累计 5 次,比上周多 4 次 —— 像是兴趣窗口打开了。
连续 3 天提到月亮、星星、夜空。
周末可以带她看一次儿童天文绘本,或者去户外看看。
明天还会陪着可可。
你今天的陪伴时间是 14 小时。
「替你留意可可的 X 件事」 —— 不是监控,是帮你照看。家长设关注议题 → AI 在每天的素材里留意 → 命中时柔和告知。这是产品的差异化壁垒,但姿态必须克制。
选一个你最关心的方面,AI 会在每天的素材里留意。
这可能是入睡前的拖延话术,也可能是真实不适。如果近 3 天重复 3 次以上,值得带去看看。
这一节给算法 / 后端同学看 —— 我们怎么把"前端要的 8 张候选卡"翻译成可调度的 prompt 链路。核心思路:双层架构(规则代码兜底 + prompt 精修) + 单卡 prompt 可并行调用。
| 规则 | 说明 |
|---|---|
| prompt 不能改 mode | rich/mild/quiet 由工程层硬规则决定,prompt 不能从 quiet 跳到 rich |
| prompt 不能新增维度卡 | candidate_dimensions 是白名单,prompt 只能从中筛选或剔除 |
| prompt 不能在 quiet 模式出 highlight / dimension / action | quiet 模式只允许 hero_hook + quiet_day 两张卡 |
| prompt 可以削减候选维度卡 | 若证据语义弱(仅 1 条且 source 不明确),可剔除 1 张 |
| prompt 可以调整 hero_hook tone | curious / warm / playful / quiet 四档 |
| prompt 可以决定 card_order | 但需在 adjustment_notes 字段说明原因 |
每个 prompt 的输入 schema / 输出 cards 键 / 强约束清单 / 禁忌词。前端拿这一节做反序列化 + 渲染规则;算法拿这一节做边界检查。
| msg_type | 来源 prompt | cards 键 | UI 落点 |
|---|---|---|---|
activity_cards_v5 | activity_timeline_analysis_v5 | timeline_card | 已复盘 Home 时刻流(1.1b)+ 时间线 Tab |
recap_plan_v5 | daily_recap_orchestrator_v5 | recap_plan | 不直接渲染;前端按 card_order 分发 |
hero_hook_v5 | hero_hook_v5 | hero_hook | 1.1a 待复盘 Hero / 1.2a 复盘流首屏 / 1.1c 平淡日 Hero |
dimension_card_v5 | dimension_card_v5(×4) | dimension_emotion / motion / social / cognition | 1.2b~1.2e 复盘流 4 张维度卡 |
highlight_curator_v5 | highlight_curator_v5 | highlight_curator | 1.2f 高光奇遇时刻 |
action_suggestion_v5 | action_suggestion_v5 | action_suggestion | 1.2g 行动建议 |
quiet_day_v5 | quiet_day_a_c_v5 | quiet_day | 1.1c 平淡日 A+C |
topic_hits_v5 | watchful_topic_detector_v5 | topic_hits | 2.3 命中详情 + 1.1a banner + push(独立链路) |
v5 所有卡片产物统一使用,前端反序列化先看信封:
run_context(含 age_stage / age_months / phase)asr_transcript 原始转录(每行 [id][HH:MM:SS]内容)timeline_card = { title, total_duration, items[] }type / start_time / duration_min / is_child_activity / content / tags / sub_item?quote | risk_signal | insightbootstrap_plan 基础上做小幅精修,决定今天的最终卡片清单与顺序。bootstrap_plan(mode / candidate_dimensions / candidate_highlight_count / candidate_action_suggestion / candidate_quiet_day)timeline_carddaily_accumulatorsprevious_cards_anchor 昨日基线mode ∈ rich / mild / quiet(不能改)dimensions[](从 candidate 中筛)highlight_count rich:0~3 / mild:0~1 / quiet:0action_suggestion bool(quiet 恒 false)card_order[] 推荐顺序adjustment_notes 12~30 字说明dimension_* 仅为简写,prompt 实际输出必须展开为完整 key 如 dimension_emotion):[hero_hook, highlight_curator, dimension_*(score 降序), action_suggestion][hero_hook, highlight_curator?, dimension_*, action_suggestion?][hero_hook, quiet_day][hero_hook, highlight_curator, dimension_cognition, dimension_emotion, action_suggestion]
recap_plan.modetimeline_cardhook_text 12~22 字hook_anchor_event_index(quiet 时 null)tone ∈ curious / warm / playful / quietdimension ∈ 4 维之一timeline_carddaily_accumulatorsprevious_dimension_anchorhighlight_selected_indices[] ★ 5.1(工程层从 highlight_curator 输出注入,用于降冗)dimension + title(4~7 字)headline 12~24 字evidence_items[1~4](兜底场景 1 条;正常 2~4 条)sparkline_7d(工程层填,prompt 输出 [])internal_score 0~100(UI 永不渲染)highlight_selected_indices 之外的事件,避免与 Highlight 卡叙事重复;若本维度强证据全部已被高光占用,进入不同侧面改写分支(保留原 source_item_index,但 evidence.text 与 headline 从声音/语调/弧线时长等不同 facet 切入)。candidate_count 0/1/2/3timeline_cardhighlights[] 0~3 条timeline_cardsuggestions[] 0~1 条timeline_card(稀薄)daily_accumulatorsthirty_day_baseline(common_activities / quiet_days_count_in_30d)a_today { text, anchor_time }c_compare { text, compare_window_days:30 }closing 12~20 字watchful_topics[] 用户配置(topic_id / label / category / user_keywords)timeline_cardraw_transcript_excerpttopic_hits[] 0~N 条| 维度 | young (3~4.5 岁) | older (4.5~6 岁) |
|---|---|---|
| emotion 情绪 | 含情绪 tag 或 sub_item.type=quote/risk_signal 的 items ≥ 1 (哭闹 >3min / 主动表达开心 / 抱抱要求 / 拒绝/抗议) | 同样 items ≥ 2 (older 情绪表达更内化,关注语调与具体场景) |
| motion 运动 | daily_accumulators.active_minutes ≥ 25 | 同阈值 ≥ 25(6 岁活动量未必更大) |
| social 社交 | 含他人互动 items ≥ 1 | 需含同伴互动或合作游戏 items ≥ 2 |
| cognition 思维 | 含 sub_item.type=insight 或 quote 含问句 ≥ 1 (新词 / 为什么 / 因果尝试 / 物体探索 >2min) | 同上 ≥ 1 (完整叙事 / 规则讨论 / 解释因果 / 计划反思) |
| stage | 置信度阈值 | 触发证据 | hedge 词推荐 | suggested_action |
|---|---|---|---|---|
| young | 0.65 |
身体类单证据可触发;情绪/社交需 ≥2 | 似乎 / 可能 / 像是 | 仅 body 类可出("留意一下"级别) |
| older | 0.70 |
任何 category 单证据不触发,需 ≥2 | 可能 / 看起来 / 听起来 | 优先留空,由家长判断 |
这一节给前端同学看 —— 拿到一份产物时怎么决定渲染哪个组件。核心原则:前端不感知 mode 变化,只消费 cards 字典;前端不计算 internal_score,只按 card_order 排序。
| msg_type | 渲染逻辑 | 关键判断 |
|---|---|---|
activity_cards_v5 |
渲染 timeline_card.items 到时刻流 | 1.1b 已复盘 Home 主区 / 时间线 Tab |
recap_plan_v5 |
不直接渲染。前端按 card_order 顺序拉取并展示其它产物 |
quiet 模式 → 走 1.1c 平淡日 home rich/mild → 走 1.1a 钩子 hero |
hero_hook_v5 |
渲染 hook_text 到 1.1a Hero 标题tone=quiet 时切换到 1.1c calm 视觉 |
tone 决定视觉变体(curious/warm/playful/quiet) |
dimension_card_v5 |
按 cards 键(dimension_emotion 等)渲染 4 维卡片,色板按维度切 | internal_score 不渲染,仅作为前端排序 key 使用(如有需要) |
highlight_curator_v5 |
渲染 highlights[] 到 1.2f;空数组 → 不渲染此屏 | 每条配"⭐ 收为里程碑"+"分享给爸爸"按钮 |
action_suggestion_v5 |
渲染 suggestions[0] 到 1.2g;空数组 → 不渲染此屏 | category 决定 icon 选取(💬/🎮/🌙/👁) |
quiet_day_v5 |
渲染 a_today + c_compare + closing 到 1.1c | 仅 mode=quiet 出现 |
topic_hits_v5 |
每条独立卡片:1.1a banner / push 通知 / 2.3 详情 空数组 → 不出 banner |
不进 Hero。banner 颜色:普通 #E89B5A / 紧急 #D9533C |
#E59CB1 · soft #FBE2EA#8DC79B · soft #E0F0E5#8DB1D9 · soft #DEEAF6#B197D3 · soft #ECE3F4| age_stage_hint 值 | UI 表现 | 展示频次 |
|---|---|---|
"" (在范围内) | 不出 nudge | — |
out_of_range_young | 1.1a 顶部黄条:"奇遇目前最适合 3~6 岁,部分内容可能不适用" | 24h ≤1 次;关闭后 7 天不再 |
out_of_range_older | 1.1a 顶部黄条:"孩子已经长大了,奇遇可能跟不上 ta 的世界" | 同上 |
missing_age | 1.1d 顶部黄条 + CTA:"加上生日,奇遇会更懂 {child_name}" → 跳 Baby Profile | 同上,但点击跳转后清除 |
⚠️ 所有 nudge 都不进 push,仅在 App 内 banner 形式露出。
每个 child_id 独立跑 orchestrator + 单卡 prompt。原料层 ASR 共用(一台设备一份 raw_transcript,不重复跑 ASR);timeline_card 由工程层按 child 视角切片后下发(基于 speaker_id ↔ child_id 映射过滤 items),下游 prompt 拿到的 timeline_card 已是单 child view。前端按 child_id 路由到对应娃的 Home,并提供"娃切换器"。prompt 不需要意识到"多孩",orchestrator 输入只有一个 child 的 view。
| 故障场景 | 降级 |
|---|---|
| orchestrator 超时 / 失败 | 使用工程层 bootstrap_plan 直接走 rich/mild/quiet 分发 |
| 某单卡 prompt 失败 | 该卡不渲染,整个复盘流跳过此屏,不阻断其他卡 |
| highlight / action 输出空数组 | 不是错误,正常隐藏对应屏(合法且推荐) |
| watchful 失败 | 不影响日复盘;下次素材到达时重试 |
| JSON schema 不合法 | 整个产物丢弃,UI 走 v4 兜底(灰度期) |
这一节给后端 / SRE / 运营看 —— 怎么从 v4 平滑迁到 v5,怎么观测,什么情况下回滚。
summary_cards / activity_cards → 旧 UI;recap_plan_v5 / hero_hook_v5 / ... → 新 UI| 阶段 | 家庭群规模 | 触发升档条件 | 回滚条件 |
|---|---|---|---|
| α | 5%(内部 + 早期共建用户) | 3 天内复盘完成率 ≥ v4 baseline -5pp,且"AI 想多了"反馈率 < 10% | schema 错误率 > 1% / 用户 NPS 下降 > 5pp |
| β | 20% | 7 天稳定期 + 守望命中后家长操作率 ≥ v4 baseline | 同上 + 平淡日"AI 想多了"反馈率 > 20% |
| γ | 50% | 14 天稳定期 + 4 维卡片单卡反馈正向 | 同上 |
| GA | 100% | γ 持续 14 天稳定 | 启动 v6 规划 |
| 指标 | v4 baseline | v5 目标 | 采集点 |
|---|---|---|---|
| 日复盘完成率(NSM) | — | ≥ v4 baseline 持平 +5% | 1.2h 完成屏触达 |
| Hero 钩子点击率 | — | 新增基线 | 1.1a → 1.2a 转化 |
| "AI 想多了"反馈率 | — | < 10% | 1.2h 反馈 + 2.3 反馈 |
| 守望命中后操作率 | — | 新增基线 | 2.3 详情停留 + 行动按钮点击 |
| 平淡日识别准确率 | — | 家长认同率 > 75% | 1.1c 反馈("今天确实平淡 / 其实有事") |
| schema 错误率 | — | < 0.1% | 后端解析失败计数 |
| 多孩家庭路由正确率 | — | 100% | child_id 一致性校验 |
| v4 资产 | 状态 | 说明 |
|---|---|---|
| daily_summary_report_v4.pmt | deprecated | 仅周/月报场景保留 dialogue_style 部分 |
| card_schema_summary_v4 | 弃用 | — |
| card_schema_metrics_v4 | 弃用 | 内容已并入 dimension_card 的 evidence_items |
| card_schema_dialogue_style_v4 | 暂留 | 等批次 D 周/月报上线后再决定去留 |
| activity_timeline_analysis_v4 | 沿用 + 改名 | v5 是 v4 的小改造,迁移即可 |
前端按 msg_type 路由意味着回滚成本极低 —— 关闭 v5 流量分发开关,所有用户立即回到 v4 UI,无需 hotfix。
这些是设计时遇到的分叉点 —— 倾向我先标了,但需要你定。