AI-Novel-Writing-Assistant技术栈全解析:React+Express+Prisma+LangGraph的Monorepo架构
【免费下载链接】AI-Novel-Writing-Assistant面向长篇小说创作的 AI Native 开源系统,用 Agent、世界观、写法引擎、RAG 和整本生产工作流,帮助新手从一句灵感走到完整小说。AI-native engine for end-to-end novel creation — from idea to full chapters, with structured planning, worldbuilding, and agent-driven workflows.项目地址: https://gitcode.com/gh_mirrors/ai/AI-Novel-Writing-Assistant
AI-Novel-Writing-Assistant(AI 小说创作工作台)是一个面向长篇小说创作的 AI Native 开源系统,它用 Agent 编排、世界观管理、写法引擎和 RAG,帮助新手从一句灵感走到完整小说。这篇文章带你完整解析它的技术栈:基于 pnpm workspace 的 Monorepo,前端是 React 19 + Vite 7,后端是 Express 5 + Prisma 7,AI 层由 LangChain + LangGraph 驱动 Agent 工作流,向量检索则交给 Qdrant。
一、pnpm Workspace 下的 Monorepo 全景
整个仓库由 pnpm-workspace.yaml 声明为 pnpm 多包工作区,包含 5 个子包,各包之间通过workspace:*互相引用:
| 子包 | 职责 | 核心技术 |
|---|---|---|
client/ | Web 前端工作台 | React 19 + Vite 7 + Tailwind CSS |
server/ | 后端 API + AI 运行时 | Express 5 + Prisma 7 + LangGraph |
shared/ | 前后端共享类型 | TypeScript + zod |
site/ | 公开介绍/文档站 | Vite 静态站点 + 预渲染 |
desktop/ | Windows 桌面版 | Electron 35 + electron-builder |
这种结构的好处是:shared/里的类型定义(如 shared/types/novel.ts)被前后端共同引用,一次改类型,两端同步生效;desktop/则直接打包server和client的产物,做成"开箱即用的本地版"。
二、前端 client:React 19 + Vite 7 的现代化组合
前端的依赖清单在 client/package.json 中,几个关键选型:
- React 19 + Vite 7:基础框架与构建工具,路由由
vite-plugin-pages约定式扫描client/src/pages/自动生成 - Zustand + TanStack Query:前者管理轻量全局状态(如 client/src/store/llmStore.ts),后者负责服务端数据缓存与请求编排
- Plate.js:专业富文本编辑器内核,支撑章节正文的所见即所得编辑
- Recharts + D3:渲染张力曲线、章节节奏等可视化图表
- @langchain/langgraph-sdk + assistant-ui:前端直连 LangGraph Agent 运行时,实现对话式创作中枢
前端 API 层按领域拆分(如 client/src/api/novel.ts、client/src/api/drama.ts),与后端路由一一对应,结构清晰。
三、后端 server:Express 5 + Prisma 7 双数据库
服务入口是 server/src/app.ts,标准的 Express 应用装配:cors+helmet+morgan中间件,随后集中挂载 40 多个/api/*路由——从/api/novels(小说主链)、/api/novels/director(自动导演)到/api/rag(向量检索)、/api/tasks(任务中心),全部在一个入口文件中一目了然。
Prisma 的双数据库策略是后端最有意思的设计:
- 生产环境:server/src/prisma/schema.prisma 使用 PostgreSQL
- 本地/桌面端:
schema.sqlite.prisma使用 SQLite(better-sqlite3适配器)
也就是说,零配置的桌面用户用 SQLite 单文件数据库,服务器部署则切换到 PostgreSQL,同一套 Prisma 模型层无需改动。Schema 中定义了章节生成状态机(planned → drafted → reviewed → repaired → approved)、流水线任务状态、RAG 作业类型等 4000 多行数据模型,是整本书生产状态的"事实来源"。
四、LangGraph Agent 编排:AI 如何"导演"一整本书
这是整个项目的灵魂所在。server/src/graphs/下有四张 LangGraph 图,分别编排不同阶段的 Agent 工作流:
- novelOutlineGraph.ts:大纲规划
- worldBuildingGraph.ts:世界观构建
- characterDesignGraph.ts:角色设计
- writingFormulaGraph.ts:写法公式
围绕这些图,server/src/agents/目录有 46 个 Agent 实现,server/src/prompting/目录沉淀了 150+ 个受治理的提示词模板。后台的DirectorWorker(server/src/workers/directorWorker.ts)负责推进"自动导演"长链路:从一句灵感出发,依次完成方向确认 → 世界观 → 角色 → 卷战略 → 章节执行 → 质量修复,每一步都有检查点,可暂停、可恢复、可接管。
创作中枢界面则把 Planner、工具注册表、审批节点和回合状态收敛进同一个对话式工作台:
五、RAG 向量检索与任务中心
RAG 层由 Qdrant 向量数据库承担(部署配置见 infra/docker-compose.qdrant.yml),server/src/services/rag/中的 RAG Worker 负责把拆书结论、章节摘要、角色时间线等资产分块、向量化并写入 Qdrant,支持 chunk hash 去重与召回追踪(retrieval trace)。
任务中心负责长链路任务的排队与恢复,任务列表、执行进度、多步状态一目了然:
六、如何本地跑起来
环境要求:Node.js ≥ 20.19 与 pnpm ≥ 10.6(见根目录 package.json)。三步启动:
- 克隆仓库:
git clone https://gitcode.com/gh_mirrors/ai/AI-Novel-Writing-Assistant - 安装依赖:
pnpm install - 启动全部服务:
pnpm dev—— 会并行拉起 shared 编译、Express 后端(端口 3000)和 Vite 前端(端口 5173)
更详细的部署说明可参考 docs/public/installation.md 与 docs/public/flow/end-to-end-production.md,架构深度文档见 docs/public/interactive-architecture.md。
总结
| 层 | 技术选型 | 一句话点评 |
|---|---|---|
| 架构 | pnpm Monorepo | 5 个子包,类型层 shared 统一 |
| 前端 | React 19 + Vite 7 + Plate | 富文本编辑 + Agent 对话原生支持 |
| 后端 | Express 5 + Prisma 7 | 双数据库适配,桌面/服务器通吃 |
| AI | LangChain + LangGraph | 图式编排 4 大阶段 Agent 工作流 |
| RAG | Qdrant + 向量化 Worker | 拆书与章节资产长期可召回 |
AI-Novel-Writing-Assistant 的技术栈选型清晰地服务于产品目标:让"写完一整本书"这件事变成一条可暂停、可恢复、可追溯的工程化流水线。无论是想体验 AI 长篇创作的新手,还是研究 Agent Workflow 落地的开发者,都值得深入看看这套架构。
【免费下载链接】AI-Novel-Writing-Assistant面向长篇小说创作的 AI Native 开源系统,用 Agent、世界观、写法引擎、RAG 和整本生产工作流,帮助新手从一句灵感走到完整小说。AI-native engine for end-to-end novel creation — from idea to full chapters, with structured planning, worldbuilding, and agent-driven workflows.项目地址: https://gitcode.com/gh_mirrors/ai/AI-Novel-Writing-Assistant
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考