
“我不是想要一只泛泛的橘猫,我想要鼻子旁边有那块小斑点的年糕。”
3–6
张宠物参考照片
多角度建立身份
6
页固定故事分镜
先审阅,后生图
1×
单页自动重试上限
控制成本与等待
01 · Opportunity
现有宠物 AI 产品大多停在头像、贴纸和单张插画。它们提供即时惊喜,却很难承载一段有起伏、有细节、可以反复翻阅的真实记忆。
核心张力
情感价值要求“像它、是真的”
生成模型倾向“更好看、更会编”
身份漂移
同一本书里,毛色、斑纹、项圈和体型可能每页都不一样。
事实漂移
AI 为了戏剧性补写内容,却没有告诉用户哪些不是原始经历。
编辑失控
用户只想改一个表情,结果角色、背景和构图一起被重画。

“我不是想要一只泛泛的橘猫,我想要鼻子旁边有那块小斑点的年糕。”

“那天它真的用尾巴盖住了小猫,这个动作不能被 AI 改成别的。”
02 · Product strategy
每一次用户确认都在降低下一阶段的风险:先确认身份,再确认事实和结构,最后才进入昂贵的图像生成。
足够形成冲突与转折,又能把生成时间、成本和评测规模控制在面试 Demo 可解释范围内。
把多张真实照片先收敛成统一画风的角色锚点,后续每页同时引用照片、Pet DNA 与标准图。
首张通过质检后再继续;单页失败、修正和重试不会让整本书归零。
03 · AI orchestration
页面只调用内部 Route Handler。Provider 工厂决定使用 Mock 还是 Google Gemini;结构化结果统一经过 Zod 校验。
Vision
Text
Story
Image
Vision
Edit
输入契约
照片、Pet DNA、不可变特征、角色标准图、当前分镜、前后页连续性、mustKeep 与 avoid。
输出契约
文本严格 JSON;图片不含正文;每次返回 model、generationId、耗时、状态和来源。
失败契约
超时、限流与单页失败会明确提示;允许一次自动重试,但绝不静默替换为 Mock。
04 · Product evidence
同一份年糕项目状态贯穿 Pet DNA、分镜、角色标准图、成品和编辑版本。
Pet DNA · 身份锁
01
暖橘 × 奶油白
鼻右侧橘色斑点
琥珀绿色圆眼睛
森林绿项圈
橘色环纹长尾
不确定:逆光下背部花纹边界
Storyboard · 六页结构
02





Character Sheet · 视觉锚点
03
Editable Book · 版本历史
04

Natural language edit
让年糕看起来更好奇一些,其他内容不要改变。
05 · Bad Case
Bad Case 被拆成可定位的问题、原因、约束修正和前后结果,而不是一句“重新生成”。
问题诊断


只改
表情更好奇
保留
身份 / 项圈 / 背景
结果
可回退版本
06 · Evaluation
视觉理解看身份锁是否准确,文本看事实边界,图片看连续性,编辑看未指定区域是否稳定。
离线评测样例 · 20 个故事任务
| 评测维度 | 检查方法 | Mock 示例分 | 建议阈值 |
|---|---|---|---|
| 身份一致性 | 多角度参考图 + 角色标准图 | 94 | 90 |
| 不可变特征保留 | 鼻侧斑点 / 项圈 / 毛色分区 | 95 | 92 |
| 文图匹配 | 动作、情绪、角色数量 | 93 | 90 |
| 跨页画风一致 | 同一风格与连续性上下文 | 92 | 88 |
| 局部编辑服从 | 只改指定内容 | 91 | 87 |
07 · Architecture & boundaries
同一套页面和领域类型,通过服务端 Provider 工厂切换执行路径。API Key 仅在服务端读取。
AI_PROVIDER=mock本地年糕示例数据
本地角色图与六页插画
可控延迟与稳定质检
离线三分钟演示
AI_PROVIDER=googleGemini 多模态理解
结构化 JSON + Zod
Gemini 原生图片生成/编辑
失败明确提示与重试
密钥
只在 Route Handler 后方
状态
浏览器 IndexedDB 恢复
成本
图片调用必须主动点击
来源
示例 Mock 与真实 Google 明确隔离