# 【生活娱乐赛道】入卷 —— AI 驱动的互动叙事平台,让每个人都能"拥有并改变一个叙事世界"
**标签**:`生活娱乐`
**赛道**:TRAE AI 创造力大赛 · 生活娱乐赛道
**作品形态**:Web 端正式产品(React + Express + TypeScript + 豆包大模型 SSE 流式叙事)
**体验方式**:本地启动前后端即可体验(后端 `http://localhost:3001` / 前端 `http://localhost:5173`),支持访客模式无需登录
-–
### 致评委与社区朋友
首先感谢 Trae 中国版团队与社区评委的辛勤付出。这是一个从"AI 玩具"走向"叙事引擎"的真实开发故事:项目初期我也曾以为"给 AI 一个对话框 + 一个世界设定"就能做出互动叙事,结果第一版 demo 翻车——AI 随意穿越视角、随机塞事件、叙事重复拖沓,用户 3 轮就出戏。这次初赛版本,我下定决心把 AI 关进叙事规则的笼子:叙事透镜后端逐句校验、六维质量门控、四维活力检测、因果链追踪、伏笔三层回收,并锁定了 5 个风格各异的官方世界。希望能给评委和社区朋友带来一种"卷入故事"的沉浸体验。
-–
### 一、项目基本信息
| 项目字段 | 内容 |
|—|—|
| 作品名称 | 入卷(RuJuan)—— AI 驱动的互动叙事平台 |
| 项目类型 | Web 互动叙事应用 / AI 内容生成 / 叙事沙盒 |
| 一句话简介 | 创作者构建世界,体验者沉浸式探索——用大模型替代固定剧情树,让每一次选择都真正改变故事走向,让每一个世界都成为可以被"卷入"的活生生的叙事空间。 |
| 作品形态 | Web 端正式产品,响应式设计,优先桌面浏览器,兼容移动端 |
| 技术栈 | React 18 + Vite + TypeScript + Zustand / Node.js + Express + TypeScript + SQLite / 豆包大模型 SSE 流式输出 |
| 浏览器要求 | Chrome / Edge / Safari / Firefox 及主流移动端浏览器 |
| 体验方式 | 本地启动前后端,访问 `http://localhost:5173` 即可体验 |
| 测试账号 | 手机号 `13900139000`,验证码 `123456`(也支持访客模式免登录体验) |
-–
### 二、Demo 简介
#### 2.1 是什么
入卷是一个 AI 驱动的互动叙事平台。用户以角色身份进入一个由创作者构筑的叙事世界,通过自然语言输入或选项点击做出行动决策,AI 引擎基于因果逻辑实时生成文学性叙事文本并推进故事。用户体验完整故事流程:
- 5 个风格各异的官方世界(历史 / 现代 / 仙侠 / 科幻 / 末世)
- 每轮 300-500 字流式叙事 + 3 选项分支(第 3 位固定为"保守观察型")
- 人物关系树、地点记忆碎片、物品叙事卡片、事件时间线等外显库可视化
- 撤回、断点续读、叙事回顾、小说导出、分享卡片等完整体验功能
#### 2.2 面向谁
- **资深小说阅读者**:不满足于被动阅读,有过"如果主角做了另一个选择会怎样"的念头
- **互动叙事爱好者**:厌倦了固定分支树和游戏化数值,想要真正的"在场感"
- **有创作欲望但缺乏能力的潜在创作者**:想用 AI 辅助"试玩"一个故事,验证其吸引力
- **AI 叙事能力的研究者**:关注大模型在长程因果一致性、视角约束、叙事节奏控制上的工程实践
#### 2.3 主要功能(推荐配截图说明)
1. **5 个官方世界沉浸体验**——大秦变法(历史偏移 0.7)/ 1990年代(现实历史)/ 归尘录(修仙)/ 灵能纪元(科幻)/ 灰烬重生(末世)
2. **SSE 流式叙事生成**——AI 逐 chunk 推送,前端按句渲染,每轮 300-500 字 + 3 选项
3. **叙事透镜后端校验**——规则引擎逐句校验视角一致性,禁止全知旁白、他者心理描写,违规单句调用 Flash 模型修正
4. **六维质量门控 + 四维活力检测**——重复率 / 场景跳跃 / 信息过载 / 空段 / 格式 / 换行滥用六维检测;事件密度 / 内容重复 / 冲突状态 / 因果链活跃度四维活力检测
5. **外显库可视化**——人物关系树、地点记忆碎片、物品叙事卡片、事件时间线,所有叙事元素自动归档
6. **伏笔三层追踪与回收**——明伏笔(必须回收)/ 暗伏笔(藏于环境)/ 引导性暗示,短/中/长三层
7. **撤回引擎**——有痕迹撤回(无限制)/ 抹除痕迹撤回(限 3 次,保护因果链完整性)
8. **断点续读 + 叙事回顾 + 小说导出**——150 字续读摘要、虚拟滚动选择路径可视化、TXT/MD/EPUB 导出
9. **访客模式零门槛体验**——无需注册,IndexedDB 本地存储,注册时自动迁移至服务端
10. **世界创建四路径**——选模板改参数 / 选骨架自由填 / AI 协作五阶段 / 改编现有世界
-–
### 三、Demo 创作思路
#### 3.1 灵感来源
作为资深小说阅读者,我无数次在阅读中产生"如果主角做了另一个选择会怎样"的念头。小说的同质化趋势也让我思考:AI 时代是否能让每个读者都拥有独一无二的叙事体验?入卷的灵感正来源于此——用 AI 的因果叙事能力,让用户成为故事的"在场者",而不是旁观者。
#### 3.2 想解决的痛点
在项目初期 demo 发布后,我亲自反复体验,发现了 4 个真实痛点:
| # | 痛点 | 真实体感 |
|—|—|—|
| 1 | **AI 视角穿越** | 第一版 AI 经常突然切到全知旁白,描写主角不在场的场景,3 轮就让人出戏。这是大模型的通病——它默认是"讲故事的人",而不是"角色感知的呈现者"。 |
| 2 | **叙事重复拖沓** | AI 偷懒生成相似段落,连续 5 轮环境描写无事件推进,用户感觉"故事没动"。 |
| 3 | **游戏化陷阱** | 互动叙事产品普遍用积分/成就/排行榜把叙事异化为任务系统,沉浸感被数值驱散。 |
| 4 | **分支树局限** | 传统互动小说分支有限且缺乏文学性,作者预设的分支远不如 AI 因果生成的自由度。 |
#### 3.3 为什么做这个方向
- **赛道契合度高**:生活娱乐赛道的核心是"真实价值",而叙事消费是最大的娱乐共性之一,小说读者群体庞大但缺乏"在场感"产品。
- **痛点真实**:以上 4 个痛点都是我亲自体验后无法忍受的,不是为参赛而虚构。
- **技术可行性强**:大模型 + SSE 流式 + 规则引擎校验,工程上可落地。
- **可延展性强**:从"体验者"到"创作者"的渐进式引导路径,天然形成内容生态闭环。
-–
### 四、核心功能与创新亮点
#### 4.1 叙事透镜后端校验(核心创新)
这是本项目与"AI 聊天框式互动叙事"最本质的区别。
**实现方式**:规则引擎(非 AI 调用),逐句校验视角一致性。
**校验规则**:
- **允许**:主角所见/闻/触/尝/嗅、内心想法/情绪/身体感受、观察他人表情动作做出的推测、从他人处听到的信息、回忆(需明确触发标记)
- **禁止**:全知旁白、他者心理描写、他处事件叙述、叙述者评论、他人视角切换、未标记的预知/闪回
**处理方式**:校验通过直接输出;校验失败仅对违规单句调用 Flash 模型修正(约 50-100 token),成本可控。
#### 4.2 因果逻辑 + 伏笔三层追踪(核心创新)
- **每个事件必须有清晰因果链**——禁止随机事件,每段叙事至少回答"为什么这件事会在这个时候发生?"
- **明伏笔**:用户主动发现并关注,必须追踪+回收,按层级分层(短期 3-10 轮 / 中期 10-25 轮 / 长期 25-50 轮)
- **暗伏笔**:藏于环境细节,记录档案但不强制回收,用户激活后转为明伏笔
- **引导性暗示**:即时性信息,帮助当前决策,不进入伏笔追踪系统
#### 4.3 历史偏移系统(核心创新)
**现实历史类世界**(大秦变法 / 1990年代)特有:
- 历史是默认走向,不是硬规范
- 用户的选择和行动必须对历史产生可见影响
- AI 不允许用巧合、外部力量强行让历史回归原轨道
- 小偏移随时间累积,可能导致历史重大分叉
- 后端检测 AI 试图维持历史原貌的模式,通过 Prompt 提醒遵守偏移规则
**偏移容忍度配置**:大秦变法 0.7(较大发挥空间)/ 1990年代 0.5(中等偏移)
#### 4.4 叙事节奏控制
- **开场钩子**(前 3 轮黄金窗口):第 1 轮打破日常、第 2 轮制造信息缺口、第 3 轮建立情感牵挂,前 3 轮不允许纯铺垫
- **情绪缺口规则**:80% 轮次留中等强度情绪缺口,10% 留强缺口(关键转折),10% 允许闭合(喘息)
- **三阶高潮结构**:情境顿悟(每轮至少一个)→ 小高潮(累积 3-5 轮 tension 后爆发,约 10-15 轮)→ 大高潮(多条关键冲突事件汇聚时触发,约 25-35 轮)
#### 4.5 反游戏化设计
**产品内核五大原则**(写在 PRD 第一章):
1. **叙事权威**——AI 决定"发生了什么",用户决定"做什么"
2. **叙事透镜**——只描述主角可感知的信息,渐进揭示
3. **因果逻辑**——每个事件必须有清晰因果链,禁止随机事件
4. **代价而非终局**——不存在 Game Over,错误选择导致负面后果但永远留下继续推进的可能性
5. **反游戏化**——不含积分、充值、虚拟货币、成就系统、排行榜、战斗系统
**不含**:HP/MP、任务列表、等级弹窗、积分体系、充值、虚拟货币、成就系统、排行榜、战斗系统。
**所有状态通过文学性叙事文本展现**,功能面板以"读者的笔记本"形态呈现。是叙事产品,不是游戏。
#### 4.6 AI 偷懒防护(四维活力检测)
| 维度 | 检测内容 | 响应 |
|—|—|—|
| 事件密度 | 最近 5 轮中 stateChanges 非空轮次 < 2 为偏低 | 轻度停滞(2 项异常)→ 温和 Prompt 提示 |
| 内容重复度 | 与最近 3 轮相似度 > 40% | 中度停滞(3 项异常)→ 加强引导 |
| 冲突状态 | 连续 5 轮无冲突事件标记为"安全区" | 重度停滞(4 项异常)→ 升级提示必须推进因果链 |
| 因果链活跃度 | 存在未回收明伏笔或待展开事件 | 检测器只提供 Prompt 引导,不直接生成或注入事件 |
#### 4.7 撤回引擎(跨章节级联回滚)
- **有痕迹撤回**:无限制,撤回行为记录在 undoHistory,AI 在叙事中反映世界痕迹
- **抹除痕迹撤回**:同一会话限 3 次,AI 叙事中完全不提及被撤回行为(保护因果链完整性)
- **跨章节边界级联**:撤回导致 Chapter.endRound 超出当前最大轮次时,自动截断 endRound 并标记 summary/checkpoint 为 stale
#### 4.8 双库架构
- **内置库**(AI 专用):完整因果链、世界状态、人物关系全貌——保证叙事质量和一致性
- **外显库**(用户可见):以"读者的笔记本"形态呈现已揭示信息——人物关系树、地点记忆碎片、物品叙事卡片、事件时间线
- **信息只能从内置库"揭示"到外显库**,模拟"人在世界中探索"的真实体验
-–
### 五、技术架构与选型
#### 5.1 技术栈
| 层级 | 选型 | 说明 |
|—|—|—|
| 前端核心 | React 18 + Vite + TypeScript + Zustand + React Router 6 | 响应式设计,优先桌面浏览器 |
| 后端 | Node.js + Express + TypeScript | SSE 流式输出 |
| 数据库 | SQLite | 轻量持久化,10 个迁移文件 |
| AI 模型 | 豆包大模型(Doubao Pro 32k) | 主调用叙事生成 |
| AI 辅助 | 豆包 Flash 模型 | 叙事透镜违规修正(50-100 token) |
| 前端本地存储 | IndexedDB | 访客模式数据存储 |
| 字体 | Noto Serif SC + Noto Sans CJK SC + Inter | 均 SIL OFL 免费商用 |
#### 5.2 关键技术实现
##### 5.2.1 SSE 流式叙事生成
后端逐 chunk 推送叙事文本,前端按句渲染,避免一次性等待。关键代码在 `backend/src/sse/narrative.stream.ts` 中,包含 4 处 `await setGenerating(false)` 在 finally 块中确保所有路径(成功/错误/超时/中止)都重置生成状态。
##### 5.2.2 叙事透镜规则引擎
规则引擎(非 AI 调用)逐句校验视角一致性,违规才调用 Flash 模型修正:
```typescript
// 校验流程:提取叙事内容 → 查询主角位置/状态 → 获取感知范围 → 逐句校验
// 关键词匹配 / 位置关联判断 / 视角一致性 / 能力边界检查
// 校验通过 → 直接输出
// 校验失败 → 仅对违规单句调用 Flash 版修正(约 50-100 token)
```
##### 5.2.3 历史偏移检测
后端检测 AI 试图维持历史原貌的模式,通过 Prompt 提醒 AI 遵守偏移规则:
```typescript
// 历史是默认走向,非硬规范
// 用户影响力必须反映,禁止强行回归
// 偏移累积效应,小偏移随时间累积可能导致历史重大分叉
// 后端检测历史刚性,通过 Prompt 提醒 AI 遵守偏移规则
```
##### 5.2.4 撤回级联回滚
跨章节边界撤回时,自动处理三个路径的 stale 标记:
- Chapter 数据:截断 endRound 并标记 summary 为"需刷新"
- Checkpoint:保留但标记为 `stale: true`,叙事回顾中灰显
- NarrativeSummary:标记为 `stale: true`
##### 5.2.5 全局 CSS 变量体系
所有视觉属性走 CSS 变量,零硬编码,主题切换一行生效。字体体系使用 Noto Serif SC(中文正文)+ Noto Sans CJK SC(标题)+ Inter(英文/数字),均 SIL OFL 免费商用。
#### 5.3 项目结构
```
backend/
├── src/
│ ├── config/ # 环境变量 + AI 配置集中管理
│ ├── controllers/ # 8 个业务控制器
│ ├── engine/ # 透镜引擎 + 叙事引擎 + 质量引擎 + 能量引擎
│ ├── middleware/ # 认证 + 错误 + 限流 + 校验
│ ├── models/ # 21 个数据模型
│ ├── repositories/ # 23 个数据仓库
│ ├── routes/ # 8 个路由模块
│ ├── seed/ # 5 个官方世界种子数据
│ ├── services/ # 30+ 业务服务(含 AI / 撤回引擎 / 伏笔 / 透镜等)
│ ├── sse/ # SSE 流式叙事
│ └── types/ # 类型定义
├── migrations/ # 10 个数据库迁移文件
└── db/rujuan.sqlite # SQLite 数据库
frontend/
├── src/
│ ├── api/ # 后端 API 调用
│ ├── components/ # 通用组件 + 叙事组件 + UI 组件
│ ├── hooks/ # useNarrativeStream 核心流式 Hook
│ ├── pages/ # NarrativePage / HomePage / WorldDetailPage 等
│ ├── types/ # 类型定义
│ └── utils/ # IndexedDB 管理等工具
└── vite.config.ts
```
-–
### 六、Trae AI 赋能开发全纪实(核心加分项)
本项目是人机协同开发(Human-AI Co-creation)的典型范例。Trae IDE 内置大模型作为"数字架构师与调试专家",在以下维度发挥了决定性作用。
#### 6.1 关键任务 Session 概览
以下为本次初赛版本开发过程中的关键任务,均在 Trae IDE 中完成:
| 序号 | 任务描述 | 关键产出 |
|—|—|—|
| ① | 5 P0 阻断修复(SSE 连接 / is_generating 状态 / 端口配置等) | 叙事流式输出稳定可用 |
| ② | is_generating 不重置修复(async setGenerating 未 await) | 4 处 finally 块全部 `await setGenerating(false)` |
| ③ | 叙事精简优化(100-500 字 + prompt 规则 + PRD 同步) | 后续轮次 < 50s + 300-500 字 |
| ④ | 重启失败 + 叙事回顾返回触发重新生成修复 | 已体验世界可正常重启 + 返回不触发重新生成 |
| ⑤ | 8 场景全场景修复(useNarrativeStream 状态管理) | 首次进入 / 续读 / 回顾返回 / 重启 / 刷新 / 重入 / 新世界 / 无效会话 |
| ⑥ | option 格式转换修复(string[] → NarrativeOption[]) | 叙事回顾返回 + 刷新 + 重入均正常显示选项 |
| ⑦ | 73 任务最终验证 | 29 项抽查 100% 通过 |
#### 6.2 开发关键步骤截图(不少于 3 张)
以下截图建议从 Trae IDE 实际开发过程中截取:
##### 截图 1:编写核心文档完成,进行第一步开发
1004334681163536:17d306859a7825fee4aa6565bfc28208_6a48b88273cad11f4c9d92b4.6a4a3be798d33abece483360.6a4a3be798d33abece48335e:TRAE Work CN.0.1.34.no_sid.no_ppe.T(2026/7/5 19:11:35)
##### 截图 2:大模型封装
1004334681163536:a670695d5785bb44976bf110808074af_6a48b88273cad11f4c9d92b4.6a4e2d6ba8c71964696c77a1.6a4e2d6ba8c71964696c779f:TRAE Work CN.0.1.34.no_sid.no_ppe.T(2026/7/8 18:58:51)
##### 截图 3:综合回归测试
1004334681163536:2400aff7de983cf6ab62eda86ee35ad9_6a48b88273cad11f4c9d92b4.6a5251094c482afee597b6e9.6a5251094c482afee597b6e7:TRAE Work CN.0.1.34.no_sid.no_ppe.T(2026/7/11 22:19:53)
##### 截图 4:73 任务最终验证报告
1004334681163536:ac3616e790f3feaab0b0deb0f3292f45_6a48b88273cad11f4c9d92b4.6a54dd5585f051185a361664.6a54dd5585f051185a361662:TRAE Work CN.0.1.34.no_sid.no_ppe.T(2026/7/13 20:43:01)
#### 6.3 Trae 在关键节点的赋能
##### 6.3.1 识破 is_generating 卡死根因
初版的最大问题是 chat 完成后无法继续操作——`is_generating` 卡在 1。Trae 定位到根因:`setGenerating` 是 async SQLite 操作,但 5 处调用都没有 `await`,导致 finally 块执行时数据库写入还未完成。统一加 `await` + try/catch 后彻底解决。
##### 6.3.2 8 场景状态管理统一
`useNarrativeStream` hook 在加载已有 rounds 时状态为空。Trae 分析了 8 个场景的路由逻辑,设计了 `initialContent` / `initialOptions` 参数 + `getLastRound` API 的统一方案,所有调用点自动受益,未来新增的 options 来源(重新生成、撤回、改编等)都不用单独处理。
##### 6.3.3 option 格式归一化
`getLastRound` 返回 `string[]` 但组件期望 `NarrativeOption[]`。Trae 在 useEffect 中统一做归一化,兼容两种格式,并在渲染层和点击层加防御性 fallback,即使后端返回异常也不会发 `undefined` 给后端。
##### 6.3.4 叙事精简 prompt 工程
AI 叙事动辄 1000+ 字,响应慢且体验拖沓。Trae 在 `prompt-builder.service.ts` 中加入【叙事长度】规则(后续轮次 300-500 字),配合 `.env.local` 的 `AI_NARRATIVE_MAX_TOKENS=1000` 兜底,实测后续轮次 < 50s + 300-500 字。
##### 6.3.5 PRD 与代码同步
所有修复都同步更新 PRD 文档(第 9.10 章叙事长度规则 + 第 23 章叙事生成参数表),确保文档与代码一致。Trae 在修改代码后主动提示更新对应文档章节。
-–
### 七、Demo 体验指南
#### 7.1 运行环境
- **启动方式**:本地启动前后端
- 后端:`npm run dev`(监听 3001 端口)
- 前端:`npm run dev`(监听 5173 端口)
- **推荐浏览器**:Google Chrome、Microsoft Edge、Safari 或主流手机浏览器
- **网络要求**:需联网(调用豆包大模型 API)
#### 7.2 API Key 配置说明(重要)
**出于安全考虑,提交版本已删除所有真实 API Key。评委/体验者需要自行申请并配置后才能完整体验叙事功能。**
##### 7.2.1 为什么需要 API Key
入卷的叙事生成依赖大模型 API(默认使用豆包大模型)。没有 API Key 时:
- 后端可以正常启动(仅 warn 提示)
- 前端页面可以打开,但****进入叙事页后无法生成叙事文本****(AI 接口调用失败)
##### 7.2.2 API Key 申请指引
**推荐方案:豆包大模型(火山引擎 Ark)**
1. 访问火山引擎控制台: 账号登录-火山引擎
2. 注册/登录火山引擎账号(支持手机号注册,新用户有免费额度)
3. 进入「模型推理」→「接入点管理」→ 创建接入点
4. 选择模型:**Doubao-pro-32k**(主模型,用于叙事生成)
5. 建议同时创建:**Doubao-pro-128k** 或 **Doubao-lite-32k**(辅助模型,用于透镜校验修正)
6. 在「API Key 管理」中创建 API Key,复制保存
**替代方案**:项目也支持 OpenAI 兼容接口(通过 `AI_PROVIDER=openai` 切换),但 prompt 针对豆包模型优化,建议优先使用豆包。
##### 7.2.3 配置步骤
**第 1 步:创建环境配置文件**
在项目根目录下创建 `.env.local` 文件(与 `.env.example` 同级)。
**第 2 步:填入配置**
```bash
# ===== 入卷 后端环境配置 =====
# ----- 服务配置 -----
PORT=3001
NODE_ENV=development
# ----- 安全配置(必填,启动时会校验) -----
JWT_SECRET=请修改为任意随机字符串
# ----- 数据库配置 -----
DB_PATH=./backend/db/rujuan.sqlite
# ----- AI 模型配置(必填) -----
AI_API_KEY=你申请的豆包 API Key
AI_BASE_URL=https://ark.cn-beijing.volces.com/api/v3
AI_PROVIDER=doubao
AI_MODEL=doubao-pro-32k
AI_LIGHT_MODEL=doubao-pro-32k
AI_MAX_TOKENS=1000
AI_TEMPERATURE=0.7
AI_TIMEOUT=60000
# 叙事场景参数(可选,建议按以下设置以保证体验)
AI_NARRATIVE_MAX_TOKENS=1000
# ----- CORS 配置 -----
CORS_ORIGIN=*
```
**第 3 步:验证配置**
启动后端,看到以下日志说明配置成功:
```
[INFO] [server] 服务已启动,监听端口: 3001 (env=development)
```
如果看到以下警告,说明 API Key 未配置或配置错误:
```
[warn] [config/ai] AI_API_KEY 未配置,AI 相关功能将不可用
```
##### 7.2.4 原始配置模板
项目根目录已提供 `.env.example` 模板文件,可参考其字段说明。**注意:`.env.example` 中的默认值是 OpenAI 配置,如使用豆包请按 7.2.3 的示例填写。**
##### 7.2.5 配置要求与注意事项
| 要求 | 说明 |
|—|—|
| **必填字段** | `AI_API_KEY`(豆包 API Key)、`JWT_SECRET`(JWT 密钥,任意随机字符串) |
| **模型要求** | 必须使用 **doubao-pro-32k** 或更高版本,不支持 lite 版(叙事质量不达标) |
| **Token 限制** | 建议保持 `AI_MAX_TOKENS=1000` / `AI_NARRATIVE_MAX_TOKENS=1000`,过高会导致响应变慢 |
| **安全要求** | `.env.local` 已在 `.gitignore` 中,不会提交到仓库;请勿将 API Key 提交到代码或贴在帖子中 |
| **费用说明** | 豆包大模型按 token 计费,单轮叙事约消耗 8K-16K token,新用户免费额度可体验约 50-100 轮叙事 |
| **替代模型** | 如需使用 OpenAI 兼容接口,设置 `AI_PROVIDER=openai` + 对应的 `AI_BASE_URL` 和 `AI_MODEL`,但叙事效果可能有所差异 |
##### 7.2.6 无 API Key 时的体验范围
如果没有 API Key,评委仍可体验以下功能:
-
首页 5 个官方世界卡片展示
-
世界详情页完整内容
-
叙事页 UI 框架(输入框、选项卡片样式、外显库面板等)
-
访客模式 UI(IndexedDB 本地存储逻辑)
-
叙事文本生成(需要 API Key)
-
撤回 / 重新生成(依赖叙事生成)
-–
### 八、Demo 体验指南(续)
#### 8.1 快速上手(评委第一体验路径)
**前置条件**:已按 7.2 配置好 API Key 并启动前后端。
1. **第一步**:访问 `http://localhost:5173`
2. **第二步**:点击"体验世界",选择任一官方世界(推荐先试"大秦变法"或"1990年代")
3. **第三步**:无需登录即可开始叙事(访客模式,数据存于 IndexedDB)
4. **第四步**:阅读开场叙事(流式渲染,每轮 300-500 字)
5. **第五步**:在 3 个选项中选择一个,或直接在输入框输入自然语言行动指令
6. **第六步**:AI 生成下一轮叙事,观察选项如何真正改变故事走向
7. **第七步**:点击右上角"菜单"查看外显库(人物关系树 / 事件时间线等)
#### 8.2 高级体验
##### 8.2.1 登录保存进度
- 点击"登录/注册",使用测试账号 `13900139000` / 验证码 `123456`
- 注册后自动迁移访客模式数据至服务端
- 支持断点续读、叙事回顾、小说导出、分享卡片
##### 8.2.2 撤回与重新生成
- 点击"菜单" → “撤回”,选择"有痕迹撤回"(无限制)或"抹除痕迹撤回"(限 3 次)
- 点击"重新生成"重新生成本轮叙事(仅重写 aiNarrative,状态字段不变)
##### 8.2.3 历史偏移体验
- 在"大秦变法"中做出偏离历史的选择(如拒绝商鞅变法方向)
- 观察 AI 是否强行让历史回归原轨(不应该)
- 体验偏移累积效应:小偏移随时间累积可能导致历史重大分叉
#### 8.3 体验验证清单
评委可对照以下清单快速验证 demo 是否符合承诺:
- [ ] 首页显示 5 个官方世界卡片
- [ ] 点击世界进入详情页,封面图与简介正常显示
- [ ] 点击"开始体验"进入叙事页,开场叙事流式渲染
- [ ] 每轮叙事 300-500 字 + 3 个选项(第 3 位为"保守观察型")
- [ ] 点击选项正常进入下一轮(无"缺少 user_input 参数"错误)
- [ ] 输入框可输入自然语言行动指令
- [ ] 访客模式 banner 显示"访客模式 - 你的体验数据仅保存在本地"
- [ ] F5 刷新后正确加载最后一轮内容 + 3 选项文本完整
- [ ] 叙事回顾返回后正确加载最后一轮(不触发重新生成)
- [ ] 控制台无 error 级别日志
-–
### 九、产品哲学
> 叙事本身就是奖励。
我们相信,真正打动人的不是"再玩一局就能升级"的焦虑,而是"这一次选择真的改变了故事"的沉浸。入卷不是游戏,是一个可以卷入的叙事空间。我们把 AI 关进叙事规则的笼子,让它服务于故事,而不是让故事迁就 AI 的随机性。
如果你也相信叙事的力量,欢迎入卷。
-–
### 十、后续迭代内容
以下功能已完成 UI 框架开发,但因时间限制尚未接入实际数据或完整逻辑,将作为下一阶段迭代重点:
| 功能 | 当前状态 | 后续计划 |
|—|—|—|
| **外显库数据同步** | UI 框架完整,当前显示演示数据 | 接入后端外显库 API,实现叙事过程中自动归档人物/地点/物品/事件 |
| **高亮名词解析** | UI 框架就绪 | 接入 AI 名词解析能力,点击高亮名词显示类型和摘要 |
| **叙事卡片分享** | UI 框架就绪 | 实现 1200×630px 卡片生成、下载、链接复制 |
| **小说导出** | 后端接口就绪 | 前端导出 UI + 润色功能集成 |
| **改编世界** | UI 框架就绪 | 接入后端改编 API,支持创建私有衍生世界 |
-–
**项目名称**:入卷(RuJuan)
**项目类型**:AI 互动叙事平台
**技术栈**:React + Express + TypeScript + 豆包大模型
**作者**:个人参赛
报名帖地址:【TRAE AI 创造力大赛报名】入卷 —— AI 驱动的互动叙事平台 - TRAE AI 创造力大赛 / 【大赛报名专区】 - TRAE 官方中文社区
文件下载地址:通过网盘分享的文件:AI叙事平台.zip
链接: 百度网盘 请输入提取码 提取码: mtpi











