基于 AI 小说工坊项目从零搭建 RAG + Agent 系统的完整记录。

一、项目背景与目标

1.1 项目定位

AI 小说工坊 —— 一个面向长篇创作场景的智能助手,核心能力:

1.2 创作痛点分析

典型创作闭环:

1.3 产品形态定位

产品形态上,前端采用 移动优先 的「创作 / 书架 / 书库 + 全屏阅读」结构,接近常见阅读类 App 的信息架构,而不是单页堆功能的编辑器。


二、整体架构

2.1 核心架构设计

系统分为三层:浏览器 SPA、业务后端、外部 AI 与存储。

flowchart TB
subgraph client [用户端]
SPA[Vue 单页应用]
end

subgraph backend [业务后端]
API[REST 与流式接口]
Write[写作与归档服务]
Files[章节文件服务]
Ingest[文档入库服务]
Search[混合检索服务]
Agent[写作 Agent]
Tools[检索工具]
end

subgraph storage [存储与模型]
Disk[(草稿与正文文件)]
Vector[(向量数据库)]
Embed[嵌入模型]
LLM[写作大模型]
end

SPA --> API
API --> Write
API --> Files
API --> Ingest
Write --> Agent
Agent --> Tools
Tools --> Search
Search --> Vector
Write --> Files
Files --> Disk
Ingest --> Vector
Ingest --> Embed
Agent --> LLM
两条「真相来源」要分开理解:
类型 作用 特点
章节文件 当前可编辑的草稿、已定稿正文 人类可读、可 diff、是编辑与发布的源
向量知识库 角色设定、历史章节语义片段 供 Agent 检索,不替代完整章节文件
写作时:文件负责「这一章全文是什么」,向量库负责 「和哪些设定、哪些前文有关」。

三、后端:Spring Boot + LangChain4j

3.1 整体架构设计

后端是常规的 Controller → Service → 集成层 结构,核心能力集中在几块。

3.2 章节与文件管理

章节以 命名文件 形式落在配置的存储目录下,适合个人创作与小团队,不依赖关系型数据库做正文存储。

3.3 写作与流式输出

创作入口对接 写作 Agent(LangChain4j),支持: 流式路径里还会推送「状态」类事件(例如检索中),便于前端展示进度,而不是长时间无反馈。

3.4 Agent 与 RAG 工具

写作 Agent 挂载 工具(Tool),典型能力是 按关键词检索知识库: 检索结果格式化为提示片段,供模型续写时参考。工具层对检索失败做了 文案级降级(例如库不可用时提示模型基于已有上下文继续),避免整条链路硬中断。

3.5 提交归档流水线

用户「提交」一章后,大致顺序: 这样下一章写作时,角色库与文章库都能被检索到,连贯性比「只把上一章全文塞进 prompt」更可持续。

3.6 书库与异步入库

除写作产生的归档外,还支持 主动导入: 大文件上传可走 异步任务 + 轮询进度,避免 HTTP 长时间阻塞。

3.7 外部依赖(概念)

配置通过 Spring 配置文件与环境变量管理 API 密钥与模型名,便于换环境。

四、前端:Vue 3 轻量 SPA

4.1 技术栈选择

技术栈刻意保持简单:Vue 3 + Vue Router + TypeScript + Vite,无 Pinia、无重型 UI 框架。

4.2 信息架构设计

模块 职责
创作 章节名 + 创作指令,触发流式生成,完成后跳转书架
书架 草稿 / 正文切换,章节列表;移动端为文字按钮列表 + 底部类型切换
书库 角色与文章的导入、任务状态、删除等
阅读 全屏阅读,无底部主导航;编辑、提交、写下一章、上传角色、目录与更多操作
旧书签路径(如历史上的阅读入口)通过路由 重定向到书架,避免升级后链接失效。

4.3 与后端的协作

4.4 UI 设计要点

当前复杂度主要集中在 阅读页:阅读、编辑、流式生成、提交、角色上传轮询等仍集中在一个大组件里,是后续重构的主要对象。

五、一次完整用户旅程

5.1 用户流程分析

sequenceDiagram
participant U as 用户
participant F as 前端
participant B as 后端
participant A as 写作Agent
participant V as 向量库
participant D as 章节文件

U->>F: 填写指令并创作
F->>B: 流式写作请求
B->>A: 生成章节
A->>V: 工具检索设定与前文
V-->>A: 检索片段
A-->>B: 流式正文
B-->>F: SSE token
B->>D: 保存草稿
U->>F: 阅读并修改
F->>B: 保存草稿
U->>F: 提交定稿
B->>D: 转为正文
B->>V: 摘要与正文入库
B->>V: 角色信息同步

六、优点

6.1 核心优势分析


七、缺点与局限

7.1 当前限制


八、改进方向(按优先级)

8.1 短期(稳定上线)

8.2 中期(可维护)

8.3 长期(产品化)


九、适合谁参考

9.1 目标受众


十、小结

10.1 项目总结

这不是「聊天框里写小说」的 Demo,而是一条 可反复迭代的创作流水线:Agent 负责写,向量库负责记,文件系统负责存,前端负责移动场景下的读写与提交。架构清晰、依赖现代但组件数量可控;下一步价值主要在 部署规范、阅读页拆分、权限与作品维度,而不是再堆一个大模型。


附录:仓库结构(概念)

11.1 项目结构说明

部分 说明
后端服务 Spring Boot,提供章节、聊天流式、入库等 API
前端应用 Vue 3 单页应用,构建为静态资源,可部署在站点子路径下
章节数据 配置目录下的草稿与正文文件
向量数据 独立向量数据库中的角色库与文章库
本地开发时:分别启动后端与前端开发服务器,由前端开发工具将 API 请求代理到后端。生产环境建议静态与 API 同域反代。