# AI 小说创作工作台 / AI Novel Production Engine 一个面向长篇小说创作的 AI Native 开源项目。
当前开发主线:
Creative Hub + 自动导演开书 + 本书世界上下文 + 整本生产主链 + 写法引擎
这是一个面向长篇小说完成度的 AI 生产系统,不是普通的"你写一句、AI 补一句"聊天壳子。
它的核心做法是:
适合完全不懂写作的新手走完一本长篇,也适合研究 AI Native 应用、Agent Workflow、LangGraph 编排和长链路任务的开发者参考。
如果你只是想直接下载安装并开始使用,优先从桌面版入口进入:
Setup.exe 安装版;如果你不想安装,或者想放在 U 盘 / 临时目录里直接运行,再选择 portable 版本很多 AI 写作工具的使用方式其实差不多:你输入一句 Prompt,它回你一段正文,不满意就重试。写短篇还行,写长篇容易越写越散。
这个仓库是"AI 导演式长篇小说生产系统",核心产品判断是:
如果你在找下面这类项目,这个仓库会更值得关注:
项目设定,先把题材、卖点、目标读者感受和前 30 章承诺定下来。故事宏观规划、本书世界 和 角色准备,把整本主线、舞台边界和角色网补到能写。卷战略 / 卷骨架 决定怎么分卷,再到 节奏 / 拆章 把当前卷落到章节列表和单章细化。章节执行 逐章写作、审计、修复,必要时回到卷工作台做再平衡和重规划。完整历史更新见 docs/releases/release-notes.md。
本次版本把 0.3 系列累积的 70 个改动整合发布,覆盖自动导演稳定性、章节生成上下文对齐、拆书深度档案、RAG 性能与召回质量、漫画与短剧改编工作台、公开介绍站和文档体系。
snake_case 阶段 key,统一使用「灵感对齐」「卷骨架」等中文名;技术别名对照表保留在自动导演阶段全景末尾供开发者查阅查看完整更新历史:docs/releases/release-notes.md
下面这组截图优先展示当前版本正在使用的单书工作流:从自动导演开书,到项目设定、故事宏观规划、角色准备、卷战略、节奏拆章、章节执行,再到质量修复,已经开始收成一条连续推进链,而不是一组彼此割裂的演示页。
统一承载对话、规划、工具执行和创作推进的创作中枢。

自动导演创建页现在会把一句灵感、导演起始参数、书级 framing、模型设置和运行方式收进同一面板;进入方向选择后,不只是给你两套整本方案,还会配套书名组选项、推荐理由和定向重做入口,适合先把这本书“该怎么开”定下来。




项目设定已经挂到单书工作台的连续流程里:左侧能直接看到当前步骤与整体进度,上方能看到 AI 接管状态,正文区则集中处理标题、简介、书级 framing、写法确认和本书真正会用到的世界边界。

故事宏观规划不再只是大段摘要,而是先把故事引擎、推进与兑现摘要、长期对立和前 30 章承诺压成后续可继承的书级引导层,先保证整本主线能推,再把卷级和章节级规划建在这套底盘上。

角色准备页现在更像角色工作台而不是角色表单:会先盘点目标区段的核心角色,再给出 AI 阵容方案、结构关系网和动态角色系统,减少开书后角色断档、功能位缺失和关系推进失速。

卷战略阶段已经开始显式区分“卷战略、卷骨架、节奏板、拆章节”四个阶段完成度。系统会先判断当前是不是已经具备继续推进条件,再生成卷战略建议、审查卷骨架,并把版本控制与影响分析收进同一页。

节奏 / 拆章现在把节奏段列表、批量细化、单章标题、摘要、章节目标和任务单放进同一工作区;可以按当前可见章节或指定范围连续细化,也可以对摘要和目标做局部 AI 修正,更适合连载网文式的持续推进。

章节执行页现在更像主写作工作台:左侧是章节卡片与下一步状态,中间是已保存正文和版本区,右侧则把执行计划、正文写作、审核、修复、状态同步和伏笔回填收在同一套动作面板里,适合逐章推进。

质量修复已经从零散按钮收成独立工作台:可以围绕当前章节执行审核、执行修复、生成钩子,并结合当前批次、质量阈值和 AI 输出继续往后处理,适合把“写完之后怎么稳住质量”也纳入主流程。

当一章已经写出正文后,还可以进入独立正文编辑器继续局部改写。正文修改页会把任务单、审计结果和修复链路继续挂在这章身上,避免用户在“主写作区”和“精修区”之间断掉上下文。

从这里进入开书、管理、编辑和整本生产。

把参考作品拆成结构化知识,再回灌给后续创作链路。

统一管理文档、索引、重建任务和检索能力。

世界观不再只是描述文本,而是能生成世界骨架、维护世界手册,并绑定为每本小说自己的本书世界上下文。

统一维护角色基础档案与小说内角色信息。

集中维护题材与类型资产,让故事规划、角色准备和正文生成共享同一套题材语言。

把推进模式、兑现方式和冲突边界收成可复用的流派模式资产,让整本书更容易保持读者预期。

批量生成、筛选和微调书名与标题方向,降低新手在开书命名阶段的试错成本。

统一管理写法资产、风格约束和反 AI 规则,让正文更像作品本身,而不是模板式补全文本。

查看拆书、知识库重建和其他后台任务的排队、执行与失败状态。

为不同能力配置不同模型,减少一套模型硬吃所有任务的成本。

^20.19.0 || ^22.12.0 || >=24.0.0
推荐直接使用 20.19.x LTS>= 10.6
推荐直接使用仓库声明的 pnpm@10.6.0pnpm install
默认的 pnpm install 现在只准备 Web / Server 开发所需依赖,不会在首次安装时强制下载 Electron 桌面运行时。
pnpm dev:desktop 时会自动补拉 Electron 运行时pnpm run prepare:desktop-runtime
桌面端运行时首次下载需要可访问 Electron 分发源的网络环境;如果你所在网络无法访问 GitHub Releases,建议先配置代理或镜像后再执行桌面端命令。
如果你在 Windows 上执行 pnpm install 时卡在 prisma preinstall,通常先检查这两类问题:
^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/.envclient/ 工作目录,默认读取 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:
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:5173http://localhost:3000http://localhost:3000/api首次启动服务端时,会自动执行 Prisma generate 和 db push。
只有在你自己修改了 Prisma schema,或者要处理正式迁移流程时,才需要手动使用 Prisma / 数据库相关命令。
建议第一次启动后先做这几步:
http://localhost:5173/settings,至少配置一组可用的模型供应商 API Keyhttp://localhost:5173/settings/model-routes,检查各任务实际使用的模型路由http://localhost:5173/knowledge?tab=settings,保存 Embedding / Collection 设置如果你只是先体验主流程,其实可以先跳过 Qdrant,直接在 server/.env 里设:
RAG_ENABLED=false
如果你要启用 Qdrant Cloud,可以按下面的最小流程来:
Clusters 页面创建一个集群。
测试阶段用 Free cluster 就够了。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:studio
```bash pnpm dev pnpm build pnpm typecheck pnpm lint
pnpm db:migrate pnpm db:seed pnpm db:studio pnpm --filter @ai-novel/server test pnpm --filter @ai
$ claude mcp add AI-Novel-Writing-Assistant \
-- python -m otcore.mcp_server <graph>