CarrotS Narrator · Android 原生客户端
CarrotS 生态下的剧本演绎引擎——以剧本(Script)为核心承载大纲、角色、章节与 AI 推演, 通过 OpenAI 兼容 API 实现导演决策、角色依次发言、旁白收尾的三阶段演绎流程。
Narrator 是 CarrotS 旗下的 Android 原生应用,定位为「剧本驱动的 AI 演绎客户端」。
应用以 Script(剧本)为顶层实体,向下串联大纲(Outline)、角色(Character)、章节(Chapter)、
推演(Deduction),并提供 AI 服务商配置、运行时主题切换、对话聚合与回收站等支撑能力。
应用采用 单 Activity + NavHostFragment 架构,底部 5 Tab 导航 + 侧边抽屉 + 子页面返回栈;
数据层使用 Room 数据库(scripts / ai_providers / dialogues 三表)与
文件系统(outline/{scriptId}/ 下分卷 / 章节 JSON)双轨持久化。
AI 调用封装为 AiService,支持 OpenAI 兼容 /chat/completions 的流式(SSE)与非流式两种模式。
导演决策→角色依次发言→旁白收尾的三阶段演绎循环,支持发言顺序链与人类/AI 角色混合。
Script / Outline / Character / Dialogue / AIProvider 五大实体,Room 持久化 + 文件分卷存储。
OpenAI 兼容 chat/completions,流式 SSE(含 reasoning_content 推理增量)与非流式双模式。
8 个内置主题 + 自定义主题,16 色 ThemeColors 数据模型,SharedPreferences 持久化激活主题。
剧本下挂多分卷、每卷多章节,章节级推演记录持久化到 outline/{scriptId}/{volumeId}/{chapterId}.json。
删除剧本进入回收站可恢复;跨剧本对话历史聚合展示,独立抽屉入口。
应用基于如下 AndroidX / 主流库构建(见 app/build.gradle.kts):
MainActivity 作为应用容器壳,由三部分组成:
┌──────────────────────────────────┐ │ ← │ ≡ 页面标题 标题栏 │ 顶层页 ≡,子页 ← 返回 ├──────────────────────────────────┤ │ │ │ Fragment 内容区域 │ ← NavHostFragment │ │ ├──────────────────────────────────┤ │ 剧本 │ 角色 │ AI │ UI │ 设置 │ ← BottomNavigationView └──────────────────────────────────┘ ← 左滑(或点 ≡) → 右侧抽屉 ┌──────────────────────┐ │ CarrotS Narrator │ │ 💬 对话 │ │ 📖 手册 │ │ 🗑️ 回收站 │ └──────────────────────┘
startDestination 改为 scriptFragment(剧本列表),
抽屉移除「主页」项。