
EmaoNovel:最早的叙事工程探索
这是什么
EmaoNovel 是我最早的叙事工程探索。它是一个写作技能,通过声明式规则文件 + Git 版本管理 + 断点续写来帮助创作长篇小说。它不是一个独立的程序,而是一个 AI 可以读懂的技能文档集——AI 根据这些文档来理解你的项目、遵守你的规则、按你的流程工作。
今年重新审视它,发现它的规则系统和项目管理思路对 pi-narrative-engine 的构建阶段有直接的参考价值。
核心工作流
EmaoNovel 定义了 8 个命令,每个命令触发 AI 执行特定行为:
项目初始化
AI 检测当前目录下是否存在作品项目。如果不存在,问用户作品名和一句话定位,创建最小骨架:
作品名/
├── README.md # 作品名 + 一句话定位
└── 正文/ # 空目录,等待第一章
然后 git init,记录初始 commit。
整理设定
用户把零散的设定素材丢给 AI,AI 从素材中提取信息,归入四个设定文件:
作品名-作品定位.md(类型、尺度、感情线、CP、结局)作品名-世界观设定.md(世界观体系、规则)作品名-角色设定.md(角色档案,表格+分类)作品名-剧情大纲.md(分章/分阶段剧情)
首次 feed 从零散素材中生成这四个文件,后续 feed 将新素材合并进已有文件。
写正文
AI 加载剧情大纲、所有规则文件、参考文风之后,按约束生成正文,写进 正文/第X章.md。生成后执行检查清单——对话格式、段落长度、禁止词、敏感词、术语一致性、文风匹配,逐项核对。
断点续写
每次存档时,AI 在正文末尾写入断点标记:
<!-- 断点:第X章第Y节 | 日期 -->
下次续写时,AI 定位最后一个断点标记,回顾标记前 500 字上下文,从断点处继续生成。
其他命令
- 修订:用户说"把门派改成学院",AI 全局搜索受影响文件,列出清单,确认后批量替换
- 删除:两步确认后执行,同时清理其他文件中的关联引用
- 进度:查询当前章节位置、总字数、最近 5 条 commits
规则系统
规则以 Markdown 文件存储,AI 按顺序加载。10 个规则文件:
| 文件 | 用途 |
|---|---|
总规则.md |
AI 行为准则、加载顺序、优先级、禁止事项、违规处理 |
版本管理规则.md |
Git 策略 |
结构规则.md |
目录结构、输出格式、文风规范、断点规范 |
内容规则.md |
角色关系约束、剧情红线、世界观一致性、术语统一 |
自定义规则.md |
用户扩展入口 |
禁止词库.md |
硬拦截词汇,输出前检测到则拒绝输出 |
敏感词库.md |
软提醒词汇,输出但附带警告 |
参考文风.md |
参考文本 + 7 维度文风拆解 |
检查清单.md |
四个关键节点的逐项自检清单 |
规则变更日志.md |
每次规则变更的记录 |
优先级
总规则 > 禁止词库 > 敏感词库 > 版本管理 > 结构规则 > 内容规则 > 自定义规则。同名规则冲突时,高优先级覆盖低优先级。
智能路由
用户增加规则时不需要指定放哪个文件。AI 根据自然语言内容自动识别:
| 用户说 | AI 写入 |
|---|---|
| "禁用'卧槽'" | 禁止词库.md → 自定义禁止词 |
| "短句为主,不超过20字" | 结构规则.md → 文风规范 |
| "男二不得与女主单独相处" | 内容规则.md → 角色关系约束 |
| "不写悲剧结局" | 内容规则.md → 剧情红线 |
| "这个世界没有复活术" | 内容规则.md → 世界观一致性 |
| "灵力不能写成法力" | 内容规则.md → 术语统一 |
上下文管理
AI 通过文件系统管理所有上下文,而非依赖运行时的记忆窗口:
- 项目元信息:
README.md(每次对话开始时加载) - 设定文件:四个设定文件(写正文/修订时加载)
- 规则:
.rules/目录(按顺序分层加载) - 断点上下文:正文末尾标记前 500 字(续写时加载)
规则系统采用分层按需加载,而非一次性全部加载。必加载的只有总规则 + 禁止词 + 敏感词,其他规则根据当前操作按需加载,避免上下文膨胀。
对 pi-narrative-engine 的参考
EmaoNovel 解决的是"构建阶段"的问题——怎么做项目初始化、怎么管理设定文件、怎么积累规则、怎么保持上下文。而 pi-narrative-engine 解决的是"引擎阶段"的问题——事件→扩散循环、角色代理交互、世界图管理。
两者天然互补:
| EmaoNovel 做的事 | pi-narrative-engine 可以借鉴 |
|---|---|
| 项目目录结构 | 工作目录机制(每个故事独立目录) |
| 规则文件加载顺序 | 渲染前自检 + 写入后自检 |
| 智能路由(用户说→自动写入对应文件) | 语义层意图分类(五种操作路径) |
| 断点标记(存档/恢复) | 世界图状态的保存和回退 |
| 禁止词/敏感词双层拦截 | 渲染器输出前的规则过滤 |
| 优先级链 | 扩散冲突的解决机制 |
| 规则变更日志 + Git 双轨制 | 世界图的版本化更新(非破坏性) |
本文由 AIGC 调研生成,仅做研究笔记和参考,真实性需要自行考证。