news 2026/9/30 15:39:37

AI-Novel-Writing-Assistant技术栈全解析:React+Express+Prisma+LangGraph的Monorepo架构

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AI-Novel-Writing-Assistant技术栈全解析:React+Express+Prisma+LangGraph的Monorepo架构

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)。三步启动:

  1. 克隆仓库:git clone https://gitcode.com/gh_mirrors/ai/AI-Novel-Writing-Assistant
  2. 安装依赖:pnpm install
  3. 启动全部服务: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 Monorepo5 个子包,类型层 shared 统一
前端React 19 + Vite 7 + Plate富文本编辑 + Agent 对话原生支持
后端Express 5 + Prisma 7双数据库适配,桌面/服务器通吃
AILangChain + LangGraph图式编排 4 大阶段 Agent 工作流
RAGQdrant + 向量化 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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/30 15:36:11

U-Boot设备模型解析:board_init_r中的dm骨架搭建与probe机制

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/30 15:34:54

线性回归实现时间序列预测:Matlab完整代码与实战

做时间序列预测,很多人一上来就选LSTM、ARIMA这类“看起来高级”的模型。但真到了实际工程和科研论文里,线性回归(LR)这个被低估的老模型反而经常被我当成第一根探针。它训练快、可解释、几乎不需要调参,还能当复杂模型的baseline。最近看到一…

作者头像 李华
网站建设 2026/9/30 15:34:51

软件测试面试高频题解析:从理论到项目实战

面试这件事,我见过太多人把精力花错了地方。背了一堆八股文,结果面试官一句“说说你印象最深的一个Bug”就卡壳了。也有不少人简历写得花团锦簇,一到项目追问环节就露馅。做软件测试这些年,我面试过别人,也被别人面试过…

作者头像 李华
网站建设 2026/9/30 15:32:21

AI辅助测试用例生成全流程:提示词、审核与避坑指南

平时测试工作里,最耗时间的是什么?我干了不少年,答案很固定,不是写自动化脚本,也不是搭环境,而是设计测试用例。需求一多,边界条件一杂,脑子就转不动。后来我开始把这一块交给AI辅助…

作者头像 李华
网站建设 2026/9/30 15:31:39

庖丁解牛chown -R:CI/CD文件权限管理全攻略

我到现在还收藏着一条命令:chown -R deploy:deploy /www/wwwroot/cicd。不是因为它多高明,而是因为当年我第一次在CI/CD服务器上遇到权限问题时,就是靠抄这一条命令活下来的。可当时我并不真正懂它,跑了几天之后问题反复出现&…

作者头像 李华
网站建设 2026/9/30 15:30:21

Spring AI Function Call实战:让大模型学会调用外部工具

最近好几个朋友来问Spring AI里Function Call到底怎么用,尤其是从 Spring AI 1.0 GA 版本开始,API做了不少调整,网上的教程又良莠不齐,照着抄经常跑不通。这个系列前面已经聊了模型接入、Prompt 模板、RAG、结构化输出&#xff0c…

作者头像 李华