目录

一、团队进度总结

二、团队核心工作

(一)AI 角色对话全链路落地

1.三层解耦架构搭建

2.高精度角色智能体实现

3.SSE 流式打字机效果

4.阅读场景深度融合

(二)阅读器核心体验深度优化

1.自然语义分页机制

2.稳定可靠的进度管理

3.跨章节连续阅读

4.性能与体验优化

(三)阅读生态体系全面完善

1.阅读商城核心功能

2.严谨的业务规则与防刷机制

3.多模块数据互通

(四)系统架构与安全全面加固

1.统一接口与代码规范

2.多层权限与安全防护

3.全链路异常兜底机制

三、关键技术难点与解决方案

四、团队开发心得


一、团队进度总结

       本阶段是项目从 “基础功能搭建” 向 “核心能力突破” 的决胜阶段,团队围绕 “AI 智能化、阅读流畅化、生态完整化” 三大核心目标,全员全栈攻坚,顺利完成全部既定开发任务,无功能延期、无重大线上问题。

       截至本阶段结束,平台已实现五大核心里程碑:

  1. AI 角色对话全链路落地:支持流式打字机输出、多轮上下文记忆、深度思考模式、沉浸式角色扮演,打通 Vue3+Spring Boot+FastAPI 三层架构

  2. 阅读器核心体验重构:完成自然分页、稳定进度恢复、跨章节连续阅读三大优化,彻底解决长文本阅读卡顿、进度漂移问题

  3. 阅读成长体系闭环:上线阅读商城,实现阅读打卡、书币获取、称号兑换、流水查询全流程,与阅读日历、悬浮计时器数据互通

  4. 多场景 AI 融合:将 AI 对话嵌入阅读器,支持选中文本上下文提问、角色 / 作者双视角切换,实现 “边读边问” 沉浸式体验

  5. 系统架构全面加固:完善权限校验、异常兜底、接口规范,建立多层安全防护体系,系统稳定性与可维护性大幅提升

       目前平台已具备完整的产品形态与核心竞争力,所有核心功能均达到演示标准,可随时进行全流程体验与验收。

二、团队核心工作

       本阶段团队采用 “模块负责人制 + 跨模块协同” 的协作模式,每个核心模块由专人牵头负责全栈开发,关键节点集中攻坚,既保证了开发效率,又实现了能力互补。

(一)AI 角色对话全链路落地

1.三层解耦架构搭建

       采用 “前端交互层 + 后端中转层 + AI 能力层” 的分层架构,职责清晰、解耦性强:

  • Vue3 前端:负责角色选择、消息输入、流式渲染、交互体验

  • Spring Boot 后端:负责 JWT 权限校验、请求转发、日志记录、异常兜底

  • Python FastAI 服务:负责动态 Prompt 构造、大模型调用、上下文管理、流式输出

       该架构将大模型相关逻辑完全隔离在 Python 层,后续更换模型供应商或调整 AI 策略时,无需修改前后端业务代码,扩展性极强。

2.高精度角色智能体实现

       构建了完整的 Role Agent 体系,确保 AI 回复贴合人设、上下文连贯:

  • 统一角色配置:设计标准化 JSON 角色配置格式,存储角色名、身份、性格、口头禅、背景故事,支持按书籍 / 章节动态加载

  • 结构化 Prompt 工程:将提示词拆分为身份指令、人设详情、上下文约束、输出格式四段,明确禁止 AI 暴露自身身份,强制遵守角色语气与认知边界

  • 滑动窗口上下文管理:最多保留最近 10 轮对话,自动裁剪最早记录防止 Token 溢出;区分用户与 AI 消息,严格保持对话顺序

  • 双模式对话支持:通过动态调整 temperature 与 max_tokens 参数,实现快速回复(响应快、简洁)与深度思考(内容丰富、逻辑性强)两种模式

3.SSE 流式打字机效果

       基于 Server-Sent Events 协议实现流畅的打字机效果,彻底解决长回复等待问题:

  • 前端流式解析:使用原生 Fetch API 读取二进制流,逐片解码、解析 JSON、实时拼接内容,模拟逐字输出效果

  • 后端零拷贝透传:Java 层直接使用 HttpServletResponse 原生输出流,读一行发一行,不缓存完整响应;Python 层异步调用大模型 API,边生成边转发

  • 中间件兼容优化:添加X-Accel-Buffering: no响应头,禁用 Nginx 缓存,避免数据被批量推送导致打字机效果失效

4.阅读场景深度融合

       将 AI 对话能力无缝嵌入阅读器,打造沉浸式伴读体验:

  • 支持选中当前页文本作为上下文提问,AI 回答严格围绕选中内容展开

  • 提供角色与作者双视角切换,满足剧情讨论与创作分析不同需求

  • 对话历史与阅读进度绑定,切换章节时自动保留对应对话记录

(二)阅读器核心体验深度优化

       阅读器是阅读平台的灵魂,由衣洪达负责,针对长文本阅读的三大痛点 —— 渲染卡顿、进度不准、阅读不连续,进行了全面重构与优化

1.自然语义分页机制

       摒弃传统整章滚动渲染,采用 “字符数近似 + 自然断点” 的分页策略:

  • 先对后端返回的 HTML 内容进行标准化清洗,去除无关标签、统一换行格式、合并冗余空白

  • 设定每页基础字符容量,在接近目标长度时,优先寻找句号、感叹号、换行符等语义断点

  • 避免句子、段落被强行截断,大幅提升阅读流畅度与舒适度

2.稳定可靠的进度管理

       彻底放弃传统的页码保存方案,采用chapterId + charOffset作为唯一进度标识:

  • 将进度与文本内容绑定,而非分页结果,不受字体大小、行高、窗口尺寸变化影响

  • 分页时记录每页的startOffsetendOffset,恢复进度时通过字符区间快速定位目标页

  • 翻页、切章、离开页面时自动保存进度,无需用户手动操作

3.跨章节连续阅读

       实现无缝跨章节翻页,打造无断点阅读流:

  • 当用户在章节最后一页向后翻时,自动预加载下一章内容并跳转到第一页

  • 当用户在章节第一页向前翻时,自动跳转到上一章最后一页

  • 章节切换时保留阅读样式与进度状态,用户感知不到明显中断

4.性能与体验优化

  • 按需生成分页结果,仅渲染当前页内容,首屏加载时间缩短 60% 以上

  • 支持字号、行高、主题模式动态调整,修改后自动重新分页

  • 添加翻页动画、进度条提示,提升交互质感

(三)阅读生态体系全面完善

       在前期阅读日历、悬浮计时器的基础上,完成阅读商城与成长体系的开发,构建 “阅读 - 打卡 - 获币 - 兑换” 的完整闭环,激励用户持续阅读。

1.阅读商城核心功能

       实现四大核心模块,覆盖用户阅读成长全流程:

  • 书币钱包:展示用户当前书币余额、今日阅读时长、连续打卡天数

  • 每日打卡:当日阅读满 10 分钟即可打卡,获得基础奖励 + 阅读加赠 + 连续里程碑奖励(3 天 / 7 天 / 30 天)

  • 称号商城:展示可兑换的专属称号,支持用书币购买,已拥有称号自动标记

  • 书币流水:记录所有书币增减记录,展示变动原因与时间,支持分页查询

2.严谨的业务规则与防刷机制

       设计多重防护,保证系统公平性与数据一致性:

  • 数据库添加唯一约束(user_id, calendar_date),防止重复打卡

  • 书币变更使用全局唯一ref_key做幂等性控制,避免重复扣币或赠币

  • 设置单日阅读时长封顶、查询区间最大 800 天,防止恶意刷取书币

  • 所有涉及余额变更、数据写入的操作均添加事务控制,保证原子性

3.多模块数据互通

       与前期开发的阅读辅助功能深度联动:

  • 直接读取阅读日历模块的vr_reading_daily_stat表数据作为打卡依据

  • 悬浮计时器统计的专注时长同步计入每日阅读总时长

  • 阅读成就与称号系统打通,完成特定阅读目标可解锁专属称号

(四)系统架构与安全全面加固

       团队统一规范,对全系统进行架构优化与安全加固,提升系统稳定性、安全性与可维护性。

1.统一接口与代码规范

  • 所有接口遵循 RESTful 设计规范,统一返回格式{code, msg, data}

  • 完善参数校验,所有入参均做合法性检查,非法请求直接拦截

  • 严格执行文件隔离策略,每个模块独立维护自己的前端、后端、AI 文件,最大限度避免代码冲突

  • 统一代码风格与命名规范,添加必要注释,提升代码可读性

2.多层权限与安全防护

  • 基于 JWT 实现统一鉴权体系,普通用户与管理员权限完全隔离

  • 所有敏感接口均添加登录状态与角色校验,防止越权访问

  • 对高频接口(如阅读时长上报、AI 对话)添加滑动窗口限流,防止恶意刷接口

  • 大模型 API 密钥仅保存在 Python 服务端,绝不暴露到前端

3.全链路异常兜底机制

       建立三层异常处理体系,保证系统在任何情况下都不会崩溃:

  • 前端:捕获所有接口错误,展示友好提示,自动恢复页面状态

  • Java 后端:添加全局异常处理器,统一返回标准化错误信息

  • Python AI 服务:添加离线兜底逻辑,即使大模型调用失败,也能返回可读的提示信息

三、关键技术难点与解决方案

       本阶段开发过程中,团队遇到了多个技术难点与业务挑战,通过集中讨论、反复测试、代码重构,逐一攻克所有问题,沉淀了宝贵的实战经验。

  • SSE 流式传输格式嵌套问题:初期使用 Spring Boot 自带的 SseEmitter 组件实现流式输出时,由于该组件会自动拼接data:前缀与标准换行符,而上游 Python AI 服务返回的数据已经自带完整 SSE 标准格式,两层封装叠加后前端最终接收数据变为data: data: {...},出现格式嵌套错误,导致 JSON 解析失败,流式打字机效果完全失效。解决方案是彻底废弃 SseEmitter 组件,直接使用 HttpServletResponse 原生输出流透传原始数据,不做任何二次格式封装,仅补全标准换行符,保证 SSE 协议纯净统一,彻底解决格式冲突问题。

  • 角色人设频繁跑偏问题:AI 经常跳出角色身份,用通用助手口吻回复,无法保持稳定的角色扮演状态。解决方案是重构结构化 Prompt,将人设拆分为 “身份 + 性格 + 语气 + 禁忌” 四部分强化约束;在每轮对话前都重新带入完整人设,不依赖模型自身记忆;明确禁止 AI 提及自身是 AI、解释设定或脱离角色发言,大幅提升人设稳定性。

  • 阅读进度恢复不准确问题:传统页码保存方案受分页规则调整、字体大小变化、行高修改等因素影响,用户保存的页码下次打开时往往对应错误内容,进度漂移严重。解决方案是采用chapterId + charOffset作为唯一进度标识,将进度与文本内容本身绑定,而非某一次的分页结果;分页时记录每页对应的字符起始与结束偏移量,恢复进度时通过字符区间快速定位目标页,彻底解决进度漂移问题。

  • 重复打卡与书币异常问题:并发操作下可能出现重复打卡、重复扣币或赠币的情况,导致数据不一致。解决方案是在数据库层面添加唯一约束(user_id, calendar_date),从根本上防止同一天重复打卡;书币变更操作使用全局唯一ref_key做幂等性控制,相同请求多次提交只会执行一次;所有涉及余额变更的操作均添加事务注解,保证 “写流水 + 更新余额” 的原子性。

  • 多轮对话上下文溢出问题:对话轮数过多时,Prompt 长度会超过模型的 Token 限制,导致模型调用失败。解决方案是实现滑动窗口上下文管理,最多保留最近 10 轮对话,超过则自动删除最早的 2 轮;同时压缩对话格式,去除多余空白字符与无关信息,最大限度减少 Token 占用。

  • Nginx 缓存导致流式失效问题:生产环境中 Nginx 默认会缓存后端响应,导致流式数据被批量攒在一起发送,打字机效果变成 “瞬间弹出一大段文字”。解决方案是在响应头中添加X-Accel-Buffering: no显式禁用 Nginx 缓冲,同时设置Cache-Control: no-cacheConnection: keep-alive,保证数据实时推送。

  • 大模型调用不稳定问题:网络波动、接口超时、模型服务不可用等情况会导致页面卡住或报错。解决方案是添加超时重试机制,单次请求超时后自动重试 1 次;实现多层离线兜底逻辑,Java 后端和 Python AI 服务均有降级返回,即使大模型完全不可用,也能返回友好的提示信息;前端添加加载状态与超时提示,避免页面无响应。

四、团队开发心得

       本阶段是项目开发以来技术挑战最大、收获最多的一个阶段,我们不仅完成了核心功能的落地,更对大模型应用开发、全栈协作、产品体验有了深刻的理解。

       第一,大模型应用开发的核心是工程化,而非算法。对于应用型项目来说,我们不需要自己训练模型,关键在于如何通过 Prompt 工程、上下文管理、流式传输、异常兜底等工程化手段,将大模型的能力稳定、可靠地封装成产品功能。一个好的 AI 产品,70% 取决于工程化能力,30% 取决于模型本身。

       第二,分层架构是复杂系统的基石。Vue3+Spring Boot+FastAPI 的三层架构,让前端专注交互、后端专注业务与安全、AI 服务专注模型能力,职责清晰、解耦性强。这种架构不仅提升了开发效率,也便于后续扩展与维护 —— 即使未来更换大模型供应商,也只需要修改 Python 层,不会影响前后端业务代码。

       第三,产品体验藏在每一个细节里。无论是阅读器的自然分页、AI 的打字机效果,还是打卡的二次确认、进度的精准恢复,这些看似微小的细节,直接决定了用户的使用感受。做产品不是堆砌功能,而是把每一个核心场景的体验做到极致,让用户用得舒服、用得流畅。

       第四,全栈能力是团队协作的基础。本阶段每个人都负责了从前端到后端再到 AI 的完整闭环,这让我们能够站在全局视角思考问题,减少了沟通成本与联调时间。同时,严格的文件隔离与代码规范,保证了多人协作的顺畅,整个阶段几乎没有出现严重的代码冲突。

       第五,异常处理是系统稳定性的生命线。大模型调用存在天然的不确定性,网络波动、接口超时、参数错误随时可能发生。只有建立多层异常兜底机制,让系统在任何情况下都能给出友好的反馈,而不是崩溃或白屏,才能打造出真正可用、可靠的产品。

       当然,我们也认识到存在的不足:部分 AI 功能的响应速度还有提升空间,阅读器的样式自定义还不够丰富,阅读商城的商品种类还比较单一。这些问题我们会在后续阶段持续优化。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐