大概在两个月前的周末,我干了一件有点“不务正业”的事:用平时写代码的 AI Coding 工具,从零生成一份超过一万字的奇幻世界设定。工具是 GLM Coding Plan,配合一个 Vercel 系的 AI vibe coding 平台做交叉验证,断断续续跑了三个晚上,最后产出的材料足够支撑一部长篇或者一个跑团战役的前期设定。
这活儿听起来像是创意写作,真正做起来才发现,它本质上是一次工程实践:AI Coding 工具管理的不是代码,而是一套必须保持一致性的长文档系统。同样的多文件管理、同样的版本推进、同样的“跑一遍检查”的迭代逻辑,只是编译目标从程序变成了世界观。
我把完整过程、提示词思路、文件结构和踩坑记录全部整理出来。这篇实践记录对两类人最有用:一类是想做世界观设定、但总被“写着写着就前后矛盾”劝退的作者;另一类是手里握着 AI Coding 工具却只拿来写代码、想拓展一下用法边界的人。看完你大概也能理解,为什么我会说“设定工程化”这件事,比单纯让 AI 帮你写设定要靠谱得多。
1. 为什么是 AI Coding 工具,而不是单纯对话式 AI
1.1 世界观设定最大的敌人是“一致性”
写过设定的人都知道,纯创作的难点其实不在“想不出点子”,而在“记不住自己写过什么”。十万字的设定散落在十几篇笔记里,角色的瞳色改了三次,前文说“北境之王”后文变成“北地领主”,魔法体系从“元素论”滑向“灵魂论”又不交代原因——这些翻车现场,和代码里“变量改了名字却忘了全量替换”几乎是同一个问题。
过去我也试过直接用对话式 AI 帮我写设定。短篇、单个设定块没问题,但只要对话超过十几轮,AI 就开始出现典型的“上下文失忆”:它记得最后一次聊到的内容,却把两轮之前确定的事实悄悄改掉。比如我第一轮明确“这种生物没有雌雄之分,靠孢子繁殖”,到第八轮再问它的社会结构,AI 直接写出了“母性氏族”四个字。
而 AI Coding 工具从设计之初就为“长期一致性”而生:它要应对的是几万行代码、几十个文件、跨会话的持续修改。它天然具备读文件、跨文件检索、把老文件重新拉进上下文的能力。这些能力放在世界设定上,恰好精准命中“一致性”这个命门。换句话说,AI Coding 工具不是在“更有创意”,而是在“更记得住”。
1.2 AI Coding 工具比聊天窗口多出来的“工程感”
具体来说,我感受到的差异有四点。
第一,任务拆分和执行链的支持。AI Coding 工具会维护一个类似待办执行列表的结构,我给它一个“生成五大区域地理”的任务,它能拆出细项逐条推进,而不是像聊天窗口那样一次性吐一大堆然后等我继续追问。
第二,文件系统就是“长期记忆”。设定落地成 Markdown 文件放在项目目录里,下次会话直接指定文件路径就能继续,不需要像聊天记录那样去翻找。这种“外部化记忆”非常关键——AI 的上下文窗口是有限的,但文件是无限的。
第三,指令和约束可以被“固定”下来。项目里的 AGENTS.md、README 或者系统提示词,可以持续约束 AI 的风格、术语、禁忌,相当于给它上了长期人格锁。
第四,可回滚、可对比、可测试。每次生成都有 diff,改坏了可以退回上一个版本;一致性检查可以像跑测试一样反复执行。
这也是为什么我后来彻底放弃在聊天框里写长篇设定:聊天式 AI 适合头脑风暴,工程化生成必须交给 AI Coding 工具这类“长项目环境”。而且这里有一个额外的红利:AI Coding 工具的操作界面天然面向“打开项目、读文件、改文件”的循环,我作为创作者,守着这批设定义件,随时可以像查源码一样快速定位某一个设定的原始出处。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 搭建世界观“代码库”:从目录结构开始的工程化设计
2.1 我把设定拆成八个文件,灵感来自后端项目
第一次试验我偷懒,直接让它生成“一万字的设定”,结果得到一个又臭又长、前后矛盾、完全没法用的单文件。第二次我调整思路,把世界设定当成一个模块化项目来搭,文件结构是这样的:
text复制world/
├── 00_canon.md # 设定总纲:核心规则、术语表、不可违反的硬约束
├── 01_overview.md # 世界观总览:时代精神、基调、主要矛盾
├── 02_geography.md # 地理与气候:区域划分、关键地标、生态
├── 03_races.md # 种族与文明:各族特征、社会结构、彼此关系
├── 04_magic.md # 力量体系:来源、规则、代价、修行路径
├── 05_history.md # 编年史:重大事件时间线、纪元划分
├── 06_factions.md # 势力与组织:阵营、目标、地盘、领导者
└── 07_characters.md # 重要人物:身份、动机、与设定的绑定关系
这个结构跟后端服务的 controller、service、model 分层异曲同工:每个文件职责单一,改动只影响局部区块,查询时目标明确。AI 在生成某一个模块时,只需要读少数几个关联文件,不需要把整个世界设定全部加载进上下文,这对长文档的稳定性至关重要。
2.2 总纲文件相当于“数据库 Schema”
00_canon.md 是整个项目的核心,我要求 AI 把一切“硬规则”写在这里,其他所有文件提到这些规则时必须引用总纲,不允许自行发明。比如我给自己设定的架空世界定了这样一段总纲:
markdown复制# 设定总纲(不可违背)
1. 世界名:灰潮大陆。
2. 力量基础:灵潮,一种周期性涨落的神秘能量,周期固定为 27 天。
3. 硬约束:
- 灵潮只在“潮峰日”的 3 小时内可被直接吸收。
- 任何生物一生最多只可进行 7 次“潮印仪式”。
- 灵潮会扭曲时空,但不可复活死者。
4. 术语表:
- 潮印:人类对灵潮能量的身体烙印,共分七阶。
- 裂隙使:专职观测灵潮动向者的通称。
- 烬城:大陆中部的废弃巨人都市,禁止进入。
5. 禁用设定:
- 不允许出现“神”的明确存在,只允许“被误认为神”的古老存在。
- 不允许出现现代法律概念和现代道德评价。
这段总纲的效果立竿见影:AI 每次展开任何模块时,都会被要求先读总纲再动笔。它写地理时会记得灰潮周期影响潮汐与迁徙,写种族时会记得“不得出现明确的神”,写力量体系时能对上“七阶潮印”。这就像代码里定义了一个接口,所有实现都遵循同一个契约。
2.3 为什么不能把所有内容塞进一个文档
很多人的第一反应是:总纲、地理、编年史放一个 Markdown 不就行了,何必拆。我的答案是:拆文件不是给 AI 看的,是给上下文窗口和“排查翻车”用的。
单文件一旦超过两三万字,AI 在读取时要么截断,要么检索变慢、引用错位。拆成多个文件后,每个模块体量可控,AI 展开“种族”时只需要加载 00_canon.md 和 03_races.md,上下文压力小得多。更重要的一点是,出 Bug 时定位快——如果“烬城”设定出现了矛盾,我只需要在 02_geography.md 里搜这个词,而不是在一个巨型文档里大海捞针。内容一旦达到十万字级别,可检索性就是生命线,这一点等文字量上来的时候你自然会有体感。
3. 万字产出的完整工作流:内核—扩展—校验三步法
3.1 第一步:先定“内核”,不急着铺设定
很多人让 AI 写设定时上来就说“帮我写一个奇幻世界”,然后 AI 会给你一锅乱炖:巨龙、精灵、魔法学院、黑暗魔王全部给你堆上来。我这次的做法是先花一个晚上跟 AI 只聊一件事:这个世界的内核是什么。
我当时的对话是这么起头的:
text复制我要构建一个用于长篇奇幻小说的世界设定,目标最终有 1.5 万字左右。
先不要生成具体设定,只回答这三个问题:
1. 这个世界最独特的一到两个“高概念”是什么?
2. 这个世界里普通人每天的生活和一个关键场景是什么?
3. 世界的第一推动力(自然/力量/社会层面的根本规则)是什么?
AI 给出来的是:高概念“灵潮周期决定一切文明节奏”,普通人的场景“潮峰日城市万人空巷、人们爬到屋顶等待吸收灵潮”,第一推动力“灵潮的 27 天周期像一张看不见的潮汐表,所有权力、战争、农业都围绕它运行”。
这三个答案成为后面所有模块的种子。后来不管是写地理、写势力还是写历史,我都不断地要求“回扣这几个核心概念”。很多人觉得 AI 生成的设定“没有灵魂”、像素材拼贴,本质是少了这个先定内核的步骤。没有内核,再多的细碎设定只会互相消耗,最终变成一盒没有主题的乐高积木。
3.2 第二步:总纲先行,再按模块扩展,每轮只做一个模块
内核确定后,我先让 AI 把 00_canon.md 和 01_overview.md 写出来,自己通读一遍、删掉不喜欢的、补充硬约束。总纲定稿后,剩下的模块按依赖顺序逐个生成:地理、种族、力量体系、编年史、势力、人物。每轮生成时我都会在指令里追加相同的固定要求:
text复制要求:
1. 动笔前先读取 00_canon.md,输出的每个设定必须与总纲兼容,不得新增与总纲冲突的规则。
2. 本文件的目标篇幅为 2000~2500 字,结构自拟,但必须使用小标题和表格整理关键信息。
3. 每个小节末尾必须写出“与其他模块的关联”。
4. 如果遇到必须修改总纲才能成立的内容,停下来,写出冲突原因和建议修改方案,不要绕过去。
第 4 条是踩坑后才加的,后面会细说。这套流程让我真正体会到“数小时完成过去需要数周的工作”这句话的含义:过去手写一个大陆地理加气候生态,至少得花两个整天查资料、画地图、写地名;现在一个区域描述加一张生态表,AI 五分钟出初稿,我花半小时修订,效率不是一个量级。而且由于每个模块只做一次,AI 的注意力更集中,长篇设定的质量明显比一次性生成高出一截。
3.3 第三步:像跑测试一样做“一致性校验”
所有模块生成完后,我没有直接让它继续扩写,而是先安排了一轮特殊的检查:
text复制现在进入一致性审查模式。请通读 00_canon.md 以及 02、03、04、05 这四个文件,
找出所有与总纲冲突的地方,以及各个文件之间互相矛盾、重复或疑似命名不一致的内容。
以表格输出:问题位置 | 问题描述 | 建议修改方案。
这一轮查出了不少有意思的问题。比如 04_magic.md 里写了“潮印共八阶”,而总纲写的是七阶;02_geography.md 里一个高原的名字先后出现“碎霜台”和“霜碎台”两种写法;05_history.md 里某个王朝的灭亡年份比建国年份还早了二十年。这些问题如果放在聊天式 AI 里,几乎不可能被自查出来——因为上下文已经滚得很远,但 AI Coding 工具能主动重新读取全部相关文件做交叉比对。
我整理了一张问题复盘表,方便直观理解:
| 问题类型 | 具体表现 | 处理方式 |
|---|---|---|
| 规则冲突 | 总纲七阶潮印 vs 力量体系八阶 | 改力量体系,回读总纲后重写该段 |
| 名称漂移 | 碎霜台 / 霜碎台 | 统一为“碎霜台”,并加入总纲术语表 |
| 时间线错误 | 王朝灭亡早于建国 | 重排编年史,检查前后事件依赖 |
| 数量不一致 | 种族数量前后两处不一致 | 以总纲为准,删掉多余设定 |
| 风格突变 | 某段出现现代词汇 | 重写该段,强调禁用词清单 |
这轮“测试”的意义不亚于生成本身。就像代码要跑单元测试,设定稿也需要跑一遍“设定版 lint”。而且我强烈建议把审查结果表格留在项目里,它既是修改记录,也是下一次生成时给 AI 看的“此前发生过什么问题”。
3.4 第四步:把提纲式设定“转译”成可入文的场景
检查修完以后,初步的文字量大约在 9000 字左右,其中大量内容是提纲、列表、表格。这类内容做设定集可以,但直接用来写小说撑不起来。所以我额外加了一步“场景化转译”:挑几个关键设定,让 AI 用文学化笔触写一段 300 到 500 字的场景样例。
例如“民众在潮峰日等待吸收灵潮”的设定,我给出的指令是:
text复制基于 03_races.md 和 04_magic.md 的设定,写一个 400 字左右的场景:
一位 14 岁的少女在潮峰日参加人生第一次潮印仪式的市井片段。
要求:体现普通人生活气息,不能出现现代道德评价,
不得发明总纲中没有的新规则,如果可以,让描述中自然地出现
“潮汐表”“七阶”等设定词。
这一步产出的小场景后来被直接用作项目展示的“样章”,也让我确认设定本身是“可叙述的”,而不是一堆静态设定卡。很多 AI 设定稿最大的问题就是“看起来丰富,写起来无从下手”,场景化转译专门解决这个断层。毕竟设定是用来讲故事的,不是用来当百科词条供着的。
4. 踩坑实录:这类项目最容易翻车的五个地方
4.1 名字漂移:同一座城冒出三种叫法
这是最频繁出现的一类问题。原因很简单:AI 每次生成是基于当时上下文里的地名记忆,一旦某个词在上下文中出现频率变低,它会在新的段落里“即兴发挥”一个相似词。解决方式我前面提过两条:一是把所有关键名词收进总纲术语表,并在每次生成指令里强调“必须使用术语表原词”;二是在一致性校验时专门加一个步骤:“搜索所有专有名词,确认全文只存在一种写法”。实测下来,第二条比第一条更有效,因为再强的指令也压不住长上下文的遗忘,但一个明确的检索动作可以强制 AI 去全文扫描。
4.2 设定回退:越生成越“安全”,越没锋芒
AI 有很强的“稳妥倾向”,当我要求它把某个设定细化时,它往往会悄悄地把尖锐的设定磨圆。比如我原本设定“灵潮吸收成功率为三成,失败者将逐渐石化”,AI 扩写时竟然加了一句“但绝大多数失败者可以通过长期冥想缓解”,这等于把一个残酷设定软化成温和设定。
这种“设定回退”非常隐蔽,因为它不是明显冲突,而是把独特调性稀释掉。针对这个问题的办法是在总纲里加一个“风格压强”小节,明确写出禁忌与倾向:
markdown复制风格压强:
- 倾向残酷、具体、有代价的世界,拒绝温吞的安全设定。
- 所有力量必须有代价,所有代价必须肉体性或社会性可见。
- 禁止通过“其实可以有例外”来软化硬规则。
加了这段之后,AI 再也不敢轻易“网开一面”。你也可以根据自己的题材调整压强方向——如果你想要温情治愈系的世界,那压强就反着写,明确要求“冲突必须有和解的出口”。
4.3 “史诗调性”通胀:所有内容都喊打喊杀、大词满天飞
AI 生成的奇幻设定很容易陷入“全篇宏大叙事”的腔调:到处都是“古老预言”“黑暗低语”“宿命之战”。这种调性看第一段会觉得燃,看第十段就腻了。这个问题的解法不是训斥它,而是给它在宏大与日常之间做强制配比。我在每个模块的生成指令里都加了一句“每个模块必须包含至少 2 个关于普通人生计的细节,例如食物、货币、节日、交通方式”。这样反而让世界显得更真实——一碗灰潮季的粗燕麦粥,比一百次“宿命之战”更能建立沉浸感。
4.4 上下文窗口的“局部失忆”
AI Coding 工具虽然能读文件,但如果你在同一个会话里连续让它生成大量内容,它的输入上下文会越来越长,最终出现一种奇特现象:它在某一轮开始不再真正地“读”总纲,而是依赖短期记忆里的总纲印象。
我遇到过一次:明明总纲里写着灵潮是“周期性涨落、不可被凡人直接创造”,AI 在描写某个反派时却写他“从掌心制造出一团灵潮”。这不是设定漂移,是上下文几乎饱和后的失忆。解决办法很直接:分成多个短会话推进,每个会话开始的第一条指令永远是“先读取 00_canon.md 到上下文”,任务结束就开启新会话,不要在一棵树上吊死。这有点像写代码时每个模块单独编译,避免整个项目挤在一个编译进程里导致内存溢出。
4.5 字数注水:看起来一万字,实际信息量只有三千字
最后是最容易被忽略的:AI 生成的内容天然“注水”。它会用大量铺垫句、气氛描写、语义重复来凑字数。对此我建立了一套强制的信息密度要求:
- 每生成一个区域,必须给出“面积、气候、主要聚落、资源、冲突点”五个字段的具体值。
- 每个章节末尾必须有表格或列表,禁止纯散文堆砌。
- 只要是形容词段落,必须紧跟一个具体名词或数据。
用这套规则筛过以后,原本 11000 字的稿子压缩到 9000 字左右,但信息密度反而提升了。这也是我后来反复跟朋友说的:设定稿的字数统计不是目标,信息可检索、可引用、可复用才是目标。你要的是十万字等级的“世界操作系统”,不是十万字的“背景音乐”。
5. 这套“设定工程化”方法还能用在哪里
5.1 游戏策划案与跑团模组
如果你的目标是做 TRPG 战役模组,这套方法几乎可以无缝迁移。跑团模组恰恰需要“规则一致性”——NPC 姓名、地图地点、阵营关系、奖励物品,这些在多次跑团中只要错一次就会引发玩家质疑。把模组按“地图、NPC、遭遇、奖励”拆文件,总纲里放世界规则和判定规则,AI Coding 工具能成为你的专职世界助理,随时响应“这个村庄的酒馆老板认识谁”之类的查询。实测下来,模组的准备时间大约能压缩一半,而且因为总纲清晰,临时被玩家带偏方向时也更容易拉回主线。
5.2 长篇小说的设定墙与人设卡
写长篇最怕的是人物前后行为不一致、支线设定淹没主线。我试过把主角的名字、外貌、关键经历、说话习惯做成一个“角色档案文件”,写每一章之前先让 AI 读一遍再动笔。效果比“头脑里记着”靠谱太多。五万字之后,你不可能记起第三章节埋的全部伏笔,但文件记得。更妙的是,AI Coding 工具还能帮你做“伏笔追踪”:让它在总纲里维护一张伏笔状态表,哪些已埋、哪些已收、哪些快超时了,一目了然。这个能力放在纯聊天式 AI 里基本做不到,因为每次新会话它都是一张白纸。
5.3 非虚构项目的知识库整理
这套思路还可以用在更广的场景:产品说明书的版本管理、课程大纲的知识点交叉引用、播客选题库的标签体系……凡是需要“多处引用同一个事实”的内容,都可以用“总纲 + 分模块 + 一致性检查”来组织。AI Coding 工具本质上是一个帮你维护“长期一致性”的外置大脑,写代码只是它最成熟的用法,不是唯一用法。你甚至不需要会写代码,只需要会建文件夹、会写 Markdown,就能把一套内容项目交给它来维护。
我实际用下来最深的体会是:这套流程的价值不在“让 AI 替我写设定”,而在“让 AI 替我记得设定”。创作的灵感、判断、修改仍然全部由我把控,AI 负责的是那个最消耗意志力的部分——让一万字的内容前后不打架。最后再分享一个小技巧:每次启动新会话时,让 AI 先输出一遍它从总纲里读到的“三条最核心约束”,这能确认它真的读进去了,而不是嘴上答应。这个小检查花不了十秒钟,却能省掉后面一整晚的返工。
