一个面向长篇小说创作的 AI Native 开源项目。
当前开发主线:
Creative Hub + 自动导演开书 + 整本生产主链 + 写法引擎
这是一个面向长篇小说的 AI 生产系统。
它不再是“你写一句,AI补一句”的聊天模式,而是:
- 👉 从一个想法出发
- 👉 自动构建世界观、人物、剧情结构
- 👉 管理知识与设定(RAG)
- 👉 控制写作风格与叙事一致性
- 👉 最终生成完整章节甚至整本小说
如果你只是想直接下载安装并开始使用,优先从桌面版入口进入:
- 下载入口:GitHub Releases
- 最新版本页:Latest Release
- 建议优先下载
Setup.exe安装版;如果你不想安装,或者想放在 U 盘 / 临时目录里直接运行,再选择portable版本
很多 AI 写作工具的使用方式其实差不多:
- 你输入一句 Prompt
- 它回你一段正文
- 不满意就重试
- 写短篇还行,写长篇容易越写越散
这个仓库是“AI 导演式长篇小说生产系统”,而不是传统的写作聊天壳子。
它最核心的产品判断是:
- 目标用户优先是完全不懂写作的新手,而不是熟悉结构设计的资深作者。
- 优先解决“如何把整本书写完”,再逐步优化“写得多精巧”。
- AI 不只是一个补全文本的模型,而是参与规划、判断、调度、执行和追踪的系统角色。
如果你正在找的是下面这种项目,这个仓库会更值得关注:
- 想验证 AI 是否真的能参与整本小说生产,而不是只写单段文案。
- 想研究 AI Native Product、Agent Workflow、LangGraph 编排怎样落到真实创作业务。
- 想把世界观、角色、拆书、知识库、写法控制和章节生成串成一套稳定工作流。
- 可以从一句模糊灵感直接进入自动导演,不必先自己把世界观、主线、角色和卷纲全想完;系统会先整理项目设定、对齐书级 framing,再生成多套整本方向和对应标题组。
- 方案选择不再只是“满意就确认、不满意就整批重来”。如果第一轮方向不够准,可以继续生成下一轮;如果已经偏向某一套,也可以只让 AI 修这套方案,或者只重做这套的标题组。
- 自动导演创建时已经支持三种推进方式:
按重要阶段审核、自动推进到可开写、继续自动执行前 10 章。对应链路会把书级方向、故事宏观规划、角色准备、卷战略、节奏拆章和章节执行接成一条连续流程。 - 这条链路已经支持检查点恢复、现有项目接管、页内继续推进和换模型重试。到
chapter_batch_ready之后,不仅能直接进入章节执行,也可以继续让 AI 自动执行前 10 章的写作、审校和修复。 - 自动导演里的角色阶段也不再无条件把第一套阵容直接落库。现在会优先生成可直接进入正文的人物资产;如果角色名仍像功能位、缺少身份锚点或质量不够稳定,系统会停在角色审核点,而不是继续把坏阵容带进后续卷规划和拆章。
Creative Hub现在已经不只是一个聊天页,而是在往统一创作中枢收:对话、追问、规划、工具调用、执行状态和回合总结都在往这里并。- 系统里已经有了比较明确的 Planner、Tool Registry、Runtime、审批节点、状态卡片和中断恢复链路,说明这个项目现在关注的已经不是“AI 会不会写字”,而是“AI 能不能组织一条真实的创作工作流”。
- 如果你关心的是 AI Native Product 怎么落地,这一块已经不是零散按钮拼盘了,而是开始长出一套值得继续往下做的骨架。
- 单章运行时、章节执行和整本批量 pipeline 现在都在往同一条主链上收,不再是“这里一个试写入口,那里一个批量按钮”的割裂状态。
- 已经可以从结构化规划、章节目录和资产准备状态出发,启动整本写作任务,并持续查看当前阶段、失败原因和下一步建议。
- 它当然还不是那种完全不用管的一键出书机,但也已经不是“只能演示几张截图”的阶段了,至少主链是真的能往前推。
- 写法现在不再只是提示词里的一段长说明,而是可以保存、编辑、绑定、试写和复用的长期资产。
- 可以从现有文本里提取写法特征,并把原文样本一起保存下来,后面不是只能靠记忆去猜“当时那个味道到底怎么来的”。
- 提取出来的特征会沉淀成可见特征池,进入编辑页以后可以逐项启用、停用和组合,写法规则也会跟着同步重编译,便于后续试写、修正和整本绑定。
- 这意味着写法引擎现在已经开始真的参与生成、检测和修正链路,而不是一个摆在侧边栏里的概念功能。
- 世界观已经不只是大段设定文本,而是支持创建、分层设定、快照、深化问答、一致性检查和小说绑定的结构化资产。
- 角色体系也不再只是静态角色卡,已经开始往动态角色资产走,会把关系阶段、卷级职责、缺席风险和候选新角色一起带进后续规划与生成。
- 拆书结果可以继续发布到知识库,再回灌到续写、规划和正文生成;知识库本身也已经支持文档管理、向量检索、关键词检索和重建任务追踪。
- 换句话说,这一块现在已经开始像“长期记忆系统”,而不是做完一次设定就丢在那里的资料堆。
- 已经支持 OpenAI、DeepSeek、SiliconFlow、xAI 等多提供商配置,规划、正文、审阅这些链路可以按路由拆开配。
- 前后端已经完成 Monorepo 拆分,适合本地持续开发,也比较适合继续往 Prompt Registry、Workflow Registry 和 Runtime 这条路上扩。
- 默认使用 SQLite 就能把主链先跑起来;如果你要完整体验知识库 / RAG,再按需接 Qdrant 就行,不需要一上来就把所有基础设施堆满。
- 在小说创建页输入一句灵感,先让 AI 自动导演给出整本方向候选。
- 进入
项目设定,先把题材、卖点、目标读者感受和前 30 章承诺定下来。 - 用
故事宏观规划、角色准备和世界观资产,把整本主线、角色网和世界边界补到能写。 - 进入
卷战略 / 卷骨架决定怎么分卷,再到节奏 / 拆章把当前卷落到章节列表和单章细化。 - 按需绑定拆书结果、知识库文档和写法资产,让后续正文不只是靠一次性提示词。
- 进入
章节执行逐章写作、审计、修复,必要时回到卷工作台做再平衡和重规划。 - 想加速推进时,再启动整本生产任务,持续查看状态、失败原因和回灌结果。
- 开书定盘负责先把这本书“要写成什么样”说清楚,避免后面越写越散。
- 整本控制层和卷级规划层负责把长篇拆成可推进、可回看、可调整的结构,而不是一次性写死。
- 角色、世界观、写法、知识库和质量控制一起托住单章生成,让每一章都尽量还在同一本书里。
- 每写完一章,系统都会把新状态回灌回去,继续影响后续章节、卷级节奏和必要时的重规划。
完整历史更新见 docs/releases/release-notes.md。
章节执行会说明真正卡点并优先自动修复:当正文已经生成但漏掉本章必须兑现的伏笔、角色出场或目标变化时,系统会把这些缺口识别为章节义务问题,不再笼统显示为 chapter.draft.write 完成失败。
- 章节写作、接收闸门、修文和重规划会共用同一份章节义务合同,减少规划说一套、正文执行另一套的情况。
- 可局部补齐的义务缺口会进入自动补丁修复;章节职责过载或邻章分工失配时会归入重规划原因。
- 执行详情会展示根因、缺失义务、质量预算和质量待回收摘要,帮助判断系统是在自动修复、自动重排,还是带风险继续后续章节。
- 旧任务进入章节修复时会自动补齐新的章节义务上下文,避免历史运行记录因为缺少新字段而中断修复;资源不可用和逾期伏笔也会保留在修复提示里。
- 桌面客户端推进到
0.3.12,用于发布本次章节执行恢复、章节义务修复和结构化输出稳定性更新后的 Windows 客户端包。
自动导演“继续自动执行章节”会真正恢复章节批次:当任务停在第 2-10 章这类章节执行确认点时,点击继续会把章节范围授权带入后续恢复链路,不再只提示成功却停在原检查点。
- 如果恢复过程需要先同步章节执行合同或补齐结构化产物,系统仍会保留本次章节执行授权,随后继续进入正文生成、审校和修复。
- 如果上一批已经生成正文但留下质量提醒,点击继续会把这次确认用于放行当前提醒并启动剩余章节,不会反复停在同一个质量修复检查点。
- 如果章节批次停在需要重规划的确认点,顶部接管条会直接引导打开质量修复,而不是显示会空转的“继续自动导演”按钮。
- 任务详情和顶部接管条不会因为命令已执行但章节执行节点仍待确认而给出误导性的成功反馈。
自动导演章节修复不再被“应推进 payoff”困住:当章节进入本该触碰伏笔或读者承诺的窗口时,系统会把它作为写作职责处理,不再把生成前的紧急 payoff 状态直接判定为写后失败并反复要求重规划。
- 如果正文和审校已经显示章节可继续,系统不会因为同一个紧急 payoff 信号反复进入局部修复。
- AI-driver 模式遇到真正需要重规划的通知时会停在确认点,不会自动确认后马上重跑同一章。
章节接收和资产回灌对 AI 结构化输出更稳:当模型使用常见别名或旧字段形状时,系统会按结构化语义自动归一,减少因为枚举名、风险字段或关系字段不一致导致的重复 JSON 修复。
- 节奏、重复、中段铺垫等接收问题会归入正确的章节修复类别,不再因为字段名不一致反复触发结构化修复。
- 伏笔状态、风险信号、关系变化和新角色候选的常见别名会在 schema 层规范化,降低后台资产回灌失败率。
下面这组截图优先展示当前版本正在使用的单书工作流:从自动导演开书,到项目设定、故事宏观规划、角色准备、卷战略、节奏拆章、章节执行,再到质量修复,已经开始收成一条连续推进链,而不是一组彼此割裂的演示页。
统一承载对话、规划、工具执行和创作推进的创作中枢。
自动导演创建页现在会把一句灵感、导演起始参数、书级 framing、模型设置和运行方式收进同一面板;进入方向选择后,不只是给你两套整本方案,还会配套书名组选项、推荐理由和定向重做入口,适合先把这本书“该怎么开”定下来。
项目设定已经挂到单书工作台的连续流程里:左侧能直接看到当前步骤与整体进度,上方能看到 AI 接管状态,正文区则集中处理标题、简介、书级 framing、写法确认和本书真正会用到的世界边界。
故事宏观规划不再只是大段摘要,而是先把故事引擎、推进与兑现摘要、长期对立和前 30 章承诺压成后续可继承的书级引导层,先保证整本主线能推,再把卷级和章节级规划建在这套底盘上。
角色准备页现在更像角色工作台而不是角色表单:会先盘点目标区段的核心角色,再给出 AI 阵容方案、结构关系网和动态角色系统,减少开书后角色断档、功能位缺失和关系推进失速。
卷战略阶段已经开始显式区分“卷战略、卷骨架、节奏板、拆章节”四个阶段完成度。系统会先判断当前是不是已经具备继续推进条件,再生成卷战略建议、审查卷骨架,并把版本控制与影响分析收进同一页。
节奏 / 拆章现在把节奏段列表、批量细化、单章标题、摘要、章节目标和任务单放进同一工作区;可以按当前可见章节或指定范围连续细化,也可以对摘要和目标做局部 AI 修正,更适合连载网文式的持续推进。
章节执行页现在更像主写作工作台:左侧是章节卡片与下一步状态,中间是已保存正文和版本区,右侧则把执行计划、正文写作、审核、修复、状态同步和伏笔回填收在同一套动作面板里,适合逐章推进。
质量修复已经从零散按钮收成独立工作台:可以围绕当前章节执行审核、执行修复、生成钩子,并结合当前批次、质量阈值和 AI 输出继续往后处理,适合把“写完之后怎么稳住质量”也纳入主流程。
当一章已经写出正文后,还可以进入独立正文编辑器继续局部改写。正文修改页会把任务单、审计结果和修复链路继续挂在这章身上,避免用户在“主写作区”和“精修区”之间断掉上下文。
从这里进入开书、管理、编辑和整本生产。
把参考作品拆成结构化知识,再回灌给后续创作链路。
统一管理文档、索引、重建任务和检索能力。
世界观不再只是描述文本,而是能被绑定、检查和持续维护的结构化资产。
统一维护角色基础档案与小说内角色信息。
集中维护题材与类型资产,让故事规划、角色准备和正文生成共享同一套题材语言。
把推进模式、兑现方式和冲突边界收成可复用的流派模式资产,让整本书更容易保持读者预期。
批量生成、筛选和微调书名与标题方向,降低新手在开书命名阶段的试错成本。
统一管理写法资产、风格约束和反 AI 规则,让正文更像作品本身,而不是模板式补全文本。
查看拆书、知识库重建和其他后台任务的排队、执行与失败状态。
为不同能力配置不同模型,减少一套模型硬吃所有任务的成本。
- Node.js
^20.19.0 || ^22.12.0 || >=24.0.0推荐直接使用20.19.x LTS - pnpm
>= 10.6推荐直接使用仓库声明的pnpm@10.6.0 - 至少一组可用的 LLM API Key 也可以先把项目跑起来,再在页面里配置
- 如果你要完整体验知识库 / RAG,再额外准备可用的 Qdrant
pnpm install默认的 pnpm install 现在只准备 Web / Server 开发所需依赖,不会在首次安装时强制下载 Electron 桌面运行时。
- 如果你只是运行现有 Web / Server 开发流,到这里就够了
- 如果你要启动桌面端开发壳,首次运行
pnpm dev:desktop时会自动补拉 Electron 运行时 - 如果你想提前完成这一步,也可以手动执行:
pnpm run prepare:desktop-runtime桌面端运行时首次下载需要可访问 Electron 分发源的网络环境;如果你所在网络无法访问 GitHub Releases,建议先配置代理或镜像后再执行桌面端命令。
如果你在 Windows 上执行 pnpm install 时卡在 prisma preinstall,通常先检查这两类问题:
- Node 版本过低
Prisma 7 目前要求 Node
^20.19.0 || ^22.12.0 || >=24.0.0。如果你还在20.0 ~ 20.18,建议先升级到20.19.x LTS再安装。 script-shell被配置成了交互式 shell 如果全局npm/pnpm script-shell被设成了cmd.exe /k之类会保留提示符的形式,Prisma 的 lifecycle script 可能不会自动退出,看起来就像安装“卡死”在:node_modules/.../prisma>
可以先运行下面几条命令自查:
node -v
pnpm config get script-shell
npm config get script-shell如果 script-shell 返回的是带 /k 的 cmd.exe,建议删除这项配置后重新打开终端:
npm config delete script-shell
pnpm config delete script-shell然后重新执行:
pnpm install这个仓库通过 pnpm workspace 分别启动前后端,所以环境变量也是按子包读取的:
- 服务端运行在
server/工作目录,默认读取server/.env - 前端运行在
client/工作目录,默认读取client/.env/client/.env.local - 根目录
.env.example目前更适合当“总览参考”,不是pnpm dev默认读取的主入口
先复制服务端示例文件:
# macOS / Linux
cp server/.env.example server/.env
# Windows PowerShell
Copy-Item server/.env.example server/.env最少建议先确认这些项目:
DATABASE_URL默认就是本地 SQLite,可直接使用RAG_ENABLED如果你暂时不接知识库,建议先设为falseQDRANT_URL、QDRANT_API_KEY只有要启用 Qdrant / RAG 时才需要
注意:
OPENAI_API_KEY、DEEPSEEK_API_KEY、SILICONFLOW_API_KEY这类变量可以先留空- 项目启动后,也可以在页面中配置模型供应商和默认模型
大多数本地开发场景,其实不需要单独创建前端 env。
因为前端开发模式下默认会把 API 指到:
http(s)://当前页面 hostname:3000/api
这也包括“同一台机器启动服务,然后用局域网 IP 在别的设备上访问”的场景。
例如页面开在 http://192.168.0.37:5173,前端默认会自动把 API 指到:
http://192.168.0.37:3000/api
只有在这些场景下,才建议创建 client/.env:
- 前端和后端不在同一台机器
- 你想把前端显式指向别的 API 地址
- 你需要固定
VITE_API_BASE_URL
如果你已经复制了 client/.env.example,又发现浏览器请求都跑到了 http://localhost:3000/api,通常就是因为你把 API 显式固定死了。对同机 / 局域网访问,建议直接删除或注释掉 VITE_API_BASE_URL。
示例:
# macOS / Linux
cp client/.env.example client/.env
# Windows PowerShell
Copy-Item client/.env.example client/.env内容通常只需要:
# 同机 / 局域网访问时,通常不需要这一行
# VITE_API_BASE_URL=http://localhost:3000/api当前项目已经支持在页面里配置模型相关设置:
/settings配置供应商 API Key、默认模型、连通性测试/settings/model-routes给不同任务分配不同 provider / model/knowledge?tab=settings配置 Embedding provider、Embedding model、集合命名和自动重建策略
所以环境变量里的 OPENAI_MODEL、DEEPSEEK_MODEL、EMBEDDING_MODEL 等,更适合当作:
- 启动默认值
- 数据库里还没保存设置时的回退值
pnpm dev如果你已经复制好了 server/.env 和 client/.env,默认就是直接运行这一条。
不需要在首次启动前手动再执行 prisma generate、prisma db push 或 pnpm db:migrate。
默认情况下:
- 前端:
http://localhost:5173 - 后端:
http://localhost:3000 - API:
http://localhost:3000/api
首次启动服务端时,会自动执行 Prisma generate 和 db push。
只有在你自己修改了 Prisma schema,或者要处理正式迁移流程时,才需要手动使用 Prisma / 数据库相关命令。
建议第一次启动后先做这几步:
- 打开
http://localhost:5173/settings,至少配置一组可用的模型供应商 API Key - 打开
http://localhost:5173/settings/model-routes,检查各任务实际使用的模型路由 - 如果要启用知识库,打开
http://localhost:5173/knowledge?tab=settings,保存 Embedding / Collection 设置
如果你只是先体验主流程,其实可以先跳过 Qdrant,直接在 server/.env 里设:
RAG_ENABLED=false如果你要启用 Qdrant Cloud,可以按下面的最小流程来:
- 到 Qdrant Cloud 注册账号。
- 在
Clusters页面创建一个集群。 测试阶段用 Free cluster 就够了。 - 集群创建完成后,到集群详情页复制 Cluster URL。
- 在集群详情页的
API Keys中创建并复制一个 Database API Key。 这个 key 创建后通常只展示一次,建议立即保存。 - 把它们写入
server/.env:
QDRANT_URL=https://your-cluster.region.cloud.qdrant.io:6333
QDRANT_API_KEY=your_database_api_key- 启动项目后,再去
知识库 -> 向量设置页面选择 Embedding provider / model,并保存集合设置。
对这个项目来说,QDRANT_URL 建议直接填 REST 地址,也就是带 :6333 的地址。
如果你想手动验证连通性,可以用:
curl -X GET "https://your-cluster.region.cloud.qdrant.io:6333" \
--header "api-key: your_database_api_key"你也可以把集群地址后面拼上 :6333/dashboard 打开 Qdrant Web UI。
Qdrant 官方文档:
下面这些都不是首次启动 pnpm dev 的前置步骤:
pnpm db:seed
pnpm db:studiopnpm dev
pnpm build
pnpm typecheck
pnpm lint
# 仅在你开发/调整 Prisma schema 时再手动使用
pnpm db:migrate
pnpm db:seed
pnpm db:studio
pnpm --filter @ai-novel/server test
pnpm --filter @ai-novel/server test:routes
pnpm --filter @ai-novel/server test:book-analysis| 层级 | 技术 |
|---|---|
| 前端 | React 19、Vite、React Router、TanStack Query、Plate |
| 后端 | Express 5、Prisma、Zod |
| AI 编排 | LangChain、LangGraph |
| 数据库 | SQLite |
| RAG | Qdrant |
| 工程形态 | pnpm workspace Monorepo |
client/ React + Vite 前端
server/ Express + Prisma + Agent Runtime + Creative Hub
shared/ 前后端共享类型与协议
images/ README 与产品预览截图
scripts/ 启动和辅助脚本
docs/ 设计文档、阶段检查点、模块计划与历史归档
更细的文档分区说明可以看 docs/README.md。
Creative Hub负责统一创作中枢与 Agent 运行时体验Novel Setup / Director负责从一句灵感走到整本可写Novel Production负责整本生成主链Style Engine负责写法资产、特征提取、绑定和反 AI 协同Knowledge / Book Analysis / World负责长期上下文沉淀与回灌
当前最重要的不是继续堆零散功能,而是提高“小白把整本书写完”的成功率。
- 把自动导演、Novel Setup、整本生产主链进一步收拢成稳定闭环
- 让用户从一句灵感进入“整本可写”状态
- 降低新手在写法、世界观、角色和章节规划上的认知负担
- 提高整本一致性、节奏稳定性和人物成长质量
- 让写法资产、世界观约束、章节重规划和审阅反馈形成闭环
- 让系统更擅长“持续掌控整本书”,而不只是“生成某一章”
- 继续强化多阶段 Agent 协同
- 完善更自动化的生产调度、回合记忆和整本质量控制
如果你想反馈问题、交流使用体验,或者讨论自动导演、整本生产主链、写法引擎等方向,可以扫码加入 QQ 群。
如果你想参与这个项目,最有价值的贡献方向包括:
- 提升整本生产稳定性
- 改善新手开书体验和自动导演成功率
- 强化写法引擎、知识库回灌和世界观一致性链路
- 补充测试、错误回放和运行时可观察性
欢迎直接提 Issue 或 Pull Request。 提交 Pull Request 即表示你确认自己有权提交该内容,并已阅读且同意 CLA.md;如果包含第三方代码、素材、AI 生成内容或其他受许可证约束的内容,请在 PR 中明确说明来源和许可证。详见 CONTRIBUTING.md。
感谢提交修复 Pull Request 的贡献者 @ystyleb。
- 这是一个持续快速迭代中的 AI Native 创作系统,功能边界仍在演化。
- README 优先描述当前最值得体验、最能代表方向的能力,而不是列出全部历史实现细节。
- 如果你更关心阶段目标、优先级和后续优化计划,请直接查看 TASK.md。
本项目采用双许可证授权模式:
- 默认情况下,本项目基于 GNU Affero General Public License v3.0 (AGPLv3) 授权,详见 LICENSE;归属与附加说明见 NOTICE。
- 服务型商用:将本项目(或其修改版本)作为后端以 SaaS、托管或其他形式向第三方提供服务,须通过作者获取商业授权许可。
- 请遵守开源协议条款,并在适用场景下取得相应授权。
贡献说明:新贡献默认按 CLA.md 提交,可随项目按 AGPL-3.0-only 分发,并可纳入项目维护者另行提供的商业授权;详见 CONTRIBUTING.md。

























