NovelForge 是一款具备数百万字级长篇创作潜力的 AI 辅助写作工具。它不仅是编辑器,更是一套集世界观构建、结构化内容生成于一体的解决方案。
长篇创作中,维持一致性、保证可控性、激发持续灵感是最大的挑战。为此,NovelForge 围绕四大核心理念构建:模块化的 “卡片”、可自定义的 “动态输出模型”、灵活的 “上下文注入” 与保证一致性的 “知识图谱”。
-
📚 动态输出模型 (Dynamic Output Models)
- 告别传统手写 JSON 约束! 基于 Pydantic 构建,你可以通过可视化界面自由定义任何创作元素(角色、场景、大纲)的结构。AI 的每一次生成都将被强制校验,确保输出是你想要的精确格式,这是实现高度结构化与可配置性的基石。
-
✨ 自由上下文注入 (@DSL)
- 通过简单的
@
语法,你可以将项目中的任何卡片、任何字段、任何集合,按需注入到提示词中。无论是“当前角色的所有仇人”、“上一卷的所有场景”,还是“所有等级大于5的宝物”,复杂的上下文检索都只是一行表达式的事,为实现复杂创作逻辑提供了无限可能。
- 通过简单的
-
🧠 知识图谱驱动 (Knowledge Graph)
- 为解决长篇创作中最棘手的一致性问题(如角色关系、称呼、立场变化),NovelForge 集成了 Neo4j。在创作过程中,系统能自动或手动提取文本中的人物关系与动态信息。在生成后续内容时,这些结构化的“事实”将被动态注入,显著减少 AI 幻觉,确保角色行为符合其人设与过往经历。
-
❄️ 雪花式创作流程 (Snowflake Method Inspired)
- 该项目借鉴了经典的“雪花创作法”,引导你从“一句话梗概”开始,逐步扩展到大纲、世界观、蓝图、分卷、章节,最终到正文。所有这些步骤都以独立的“卡片”形式存在,并以树形结构组织,让你的整个创作世界一目了然。
-
🛠️ 高度可配置与可扩展
- 从 AI 模型参数、提示词模板,到卡片类型、内容结构,项目中几乎每一个环节都允许用户深度自定义,你可以打造一套完全属于自己的创作工作流。
- 前端 (Frontend): Electron, Vue 3, TypeScript, Pinia, Element Plus
- 后端 (Backend): FastAPI, SQLModel (Pydantic + SQLAlchemy), Uvicorn
- 数据库 (Database): SQLite (核心数据), Neo4j (知识图谱)
无论你是想直接体验,还是参与开发,都可以轻松开始。
这是运行知识图谱功能的必要前提。
- 请下载并安装 Neo4j Desktop,推荐版本 5.16 或更高。
- 下载地址: Neo4j Desktop
- 安装后,创建一个本地数据库实例,并确保其处于运行状态。默认连接信息可在
.env
文件中配置。
1. 后端 (Python / FastAPI)
# 克隆仓库
git clone <your-repo-url>
cd NovelForge/backend
# 安装依赖
pip install -r requirements.txt
将backend/.env.example文件修改为.env
# 运行后端服务
python main.py
2. 前端 (Node.js / Electron)
# 进入前端目录
cd ../frontend
# 安装依赖
npm install
# 启动开发服务器
npm run dev
定期打包发布版本,无需配置开发环境,开箱即用。
- 前往项目的 Releases 页面下载最新的便携版压缩包 (
.zip
或.7z
)。 - 解压到任意位置。
- (重要) 运行前,请先确保 Neo4j Desktop 中的数据库实例已启动。
- 进入解压后的文件夹,找到
backend
目录,按需编辑.env
文件以配置数据库连接。 - 运行
backend/NovelForgeBackend.exe
启动后端服务。 - 返回上一级,运行
NovelForge.exe
启动主程序。
-
配置大语言模型 (LLM)
推荐使用Gemini 2.5Pro级别的LLM进行创作
-
创建项目与预设卡片
-
自顶向下,填充核心设定
-
进入章节创作
虽然 NovelForge 提供了一套推荐的创作流程,但其真正的强大之处在于高度的灵活性。你可以完全抛开预设,利用以下工具,组合出专属于你自己的创作体系。
注意,尽量新增模型而不是修改已存在模型结构,避免和已有数据冲突。
- 所有 AI 功能的背后都是可编辑的提示词模板。你可以在这里修改预设模板,或创建全新的模板。
- 知识库注入: 支持通过
@KB{name=知识库名称}
语法,在提示词中动态引用“知识库”内容,为 AI 提供更丰富的背景信息。
这是 NovelForge 的特色。它允许你在提示词模板中,用 @
符号精确地引用项目中的任何数据注入为上下文。
- 按标题引用:
@卡片标题
或@卡片标题.content.某个字段
- 按类型引用:
@type:角色卡
(所有角色卡) - 特殊引用:
@self
(当前卡片),@parent
(父卡片) - 强大的过滤器:
[previous]
: 获取同级的前一个卡片。[previous:global:n]
: 获取全局顺序(树状先序)中最近的n个同类型卡片。[sibling]
: 获取所有同级兄弟卡片。[index=...]
: 按序号获取,支持表达式,如$self.content.volume_number - 1
。[filter:...]
: 按条件过滤,如[filter:content.level > 5]
或[filter:content.name in $self.content.entity_list]
。
- 字段级别选中: 可选中整个卡片数据,也可以单独选中卡片的字段。
NovelForge/
├── backend/ # FastAPI 后端
│ ├── app/
│ │ ├── api/ # API 路由
│ │ ├── db/ # 数据库模型与会话
│ │ ├── schemas/ # Pydantic 数据模型
│ │ └── services/ # 核心业务逻辑
│ └── main.py # 入口
│
└── frontend/ # Electron + Vue3 前端
└── src/
├── main/ # Electron 主进程
├── preload/ # 预加载脚本
└── renderer/ # Vue 渲染进程
└── src/
├── components/ # Vue 组件
├── services/ # 前端服务
├── stores/ # Pinia 状态管理
└── views/ # 页面视图
NovelForge 目前仍处于迭代的早期阶段,作者深知该项目在创作流程、一致性维持、 UI 设计、交互体验等方面还有巨大的改进空间。
最好的工具源于社区的智慧。无论你是创作者还是开发者,都真诚地欢迎你:
- 在 Issues 中提出宝贵的功能建议或反馈问题。
- 分享你对创作流程的独到见解。
- 增强知识图谱注入: 实现更智能、更自动化的关系与事实注入机制,进一步降低 AI 幻觉。
- 优化创作流程: 提供更灵活、更强大的流程编排与引导功能,适应不同的创作风格。
- 提升交互体验: 持续打磨 UI/UX,使其更直观、更高效,减少不必要的操作。