ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

AI小说创作助手实战:用角色卡与记忆回填解决长篇小说上下文漂移

AI小说创作助手实战:用角色卡与记忆回填解决长篇小说上下文漂移 简介这款基于大语言模型的智能小说创作助手面向需要高效产出长篇故事的作者、编剧及AI应用学习者可解决设定前后矛盾、剧情连贯性不足、伏笔难以管理等痛点。包内共163个文件以77个Python脚本实现核心生成与审校逻辑33个TypeScript和8个TS组件构成可视化前端辅以JSON配置文件、SQL数据库及Docker部署支持整包约4.02MB目录划分清晰便于定制与二次开发。目前已有99人学习下载。资源集成小说设定工坊、智能章节生成、状态追踪系统、语义检索引擎与自动审校机制支持世界观架构、角色设定、剧情蓝图、长程上下文维护及本地知识库参考操作界面覆盖配置、生成、审校全流程可帮助写作者快速搭建个人创作工作台也适合作为大模型落地写作场景的实践范例。1. AI小说创作助手不替你写但让卡文的你一小时出三千字先抛个反直觉的结论市面上那些号称“一键生成小说”的工具绝大多数连三千字的章节都撑不过去因为它们的本质还是通用聊天AI聊三句就忘了主角叫什么。而这个基于 AI 的小说创作助手 zip 包拆开之后你会发现它把小说生产拆成了“角色卡、世界观档案、章节模板、记忆回填”四个模块核心思路不是让 AI 替你写而是让 AI 变成你手底下那个记性好、写得快、但需要你不断纠偏的枪手。它适合三类人卡在开篇三万字写不下去的网文作者做短剧或剧本杀需要大量出稿的编剧助理以及想拿长篇小说做 AI Agent 练手的技术爱好者。这份资源解决的核心问题只有一个——让 AI 在保证设定一致性的前提下持续产出可用的草稿而不是每次生成都像失忆一样从头开始。2. 从解压到跑通先分清包里哪些是工具、哪些是素材2.1 zip 里的典型目录结构哪些文件能动、哪些别碰手上这份 zip 解压后的标准结构是这样的入口脚本、配置文件、提示词模板库、角色设定档案区、输出目录外加一个依赖清单。第一次拿到手先别急着跑花五分钟把目录过一遍搞清楚哪部分是程序、哪部分是素材。目录/文件作用建议main.py 或 app 入口程序主入口负责调度生成流程不要改除非你懂 Pythonconfig.json模型地址、密钥、默认采样参数按需修改这是主要配置位prompts/存放章节生成、角色设定、世界观等提示词模板可以改但改前先备份memory/角色卡、世界观档案、章节进度摘要每本书的核心资产多备份output/自动生成的稿件输出目录随意读写sample_chapters/示例章节与文风参照文本新手模仿用可直接删requirements.txtPython 依赖列表安装环境用这里最容易踩的坑是有人一上来就把 prompts 里所有模板改得面目全非结果跑出来的东西四不像。我一般会先把原版跑通一遍确认字节码层面没问题再动模板。记住一个原则程序是框架提示词是方向盘角色卡是刹车三者分工不同别混着改。2.2 配置文件模型端点、密钥与默认参数打开 config.json里面会有一组看起来像下面这样的配置。核心字段就四个base_url 决定请求发到哪里去api_key 是鉴权凭证model 指定用哪个模型其余都是生成参数。{ base_url: https://your-endpoint.example.com/v1, api_key: sk-xxxxxxxxxxxxxxxx, model: your-model-name, temperature: 0.8, top_p: 0.9, max_tokens: 2000, repetition_penalty: 1.1, stream: false }这段配置的逻辑是工具通过 OpenAI 兼容接口调用模型服务所以 base_url 只要指向任何一个兼容接口即可不管是云端服务还是本地部署的大模型都行。我自己的习惯是优先接本地模型服务草稿阶段不上公网手稿数据不落地第三方网络断了也能继续干活。api_key 从你使用的模型服务商控制台获取本地部署的话填个占位符就能跑。temperature 默认 0.8 是“偏创造但不至于乱来”的档位写小说起稿够用如果生成玄幻脑洞我会拉到 0.95但后续稳定续写时一定降回 0.7 上下。2.3 第一次运行用一条命令生成你的第一段AI小说跑通全流程最直接的方式是创建一个新项目并让它生成第一章试稿。命令行模式下的典型操作是这样的python main.py new \ --title 雾港迷踪 \ --genre 悬疑 \ --protagonist 法医周沉女32岁冷静寡言 \ --seed 收到一封没有署名的信信里只有一张十年前的停尸房照片 \ --out output/chapter_001.md这条命令的意图是新建一本叫《雾港迷踪》的悬疑小说主角是法医周沉用一个场景种子作为开篇钩子输出路径指定到 output/chapter_001.md。参数里最关键的是 seed它决定了 AI 第一段话往哪个方向跑——给的信息越具体出来的开头越不容易跑偏。跑完之后去 output 目录看一眼生成文本正常情况下你会得到八百到两千字不等的章节草稿里面有场景、有对话、有悬念钩子。如果只吐了一百字就没动静多半是 max_tokens 设小了或者模型服务端限流先去查这两处别急着怪工具。第一次跑通的意义只有一个确认从 zip 到生成的全链路是通的之后你才有资格谈创作。3. 用角色卡和世界观档案构建创作语境AI Agent 的落地玩法3.1 为什么通用聊天式 AI 写不长上下文漂移你可能试过在通用聊天 AI 里这么干让它写第一章写得还行让它写第二章居然把第一章主角的名字改了到第三章它忘了主角是个法医开始写她飞檐走壁。这不是模型笨是上下文漂移——每轮对话窗口有限AI 只记得最近几千字的内容早期的设定早就被挤出去了。小说这种动辄几十万字的文本对 AI 来说是典型的“超长任务”不做外部记忆铁定翻车。所以这份工具包的思路是不把小说塞进对话框里聊而是把小说拆成可复读的档案文件——人物卡、世界观、章节摘要——每次生成新内容时程序自动把这些档案和当前章节一起组装进请求。说白了这就是一个简化版的 AI Agent模型是大脑档案文件是外部记忆main.py 是调度器。这也是“AI Agent”这个热词在这类创作工具里最实在的落地场景——不是一个玄乎的agent概念而是记忆、调度、工具调用三件事的工程化拼装。3.2 角色卡写法把“人设”变成可执行数据结构角色卡是这个工具的命根子。写得好不好直接决定生成出来的角色是“有辨识度的人”还是“一堆形容词的堆砌”。以主角周沉为例一份能用的角色卡长这样{ name: 周沉, nickname: 周姐同事私下称呼, identity: 雾港市公安局法医, age: 32, appearance: 中短发常年穿灰色冲锋衣左手腕有一道旧疤, traits: [冷静, 观察力极强, 不擅表达, 对尸体有职业性冷淡], speech_pattern: 语速慢常用短句极少使用语气词, goal: 查出十年前的停尸房旧案真相, conflict: 她的父亲是该案嫌疑人而她坚信父亲无罪, secrets: 每晚噩梦里反复出现停尸房的那张照片 }这段 JSON 的逻辑是把“性格”拆成 traits、speech_pattern、goal、conflict、secrets 五个维度让 AI 在不同场景下都有明确的参考锚点。字段不是越多越好六到八个字段足够——太多字段反而会让模型在长文本里抓不住重点。speech_pattern 特别重要它管住角色的“嘴”是防止所有角色说话一个味儿的核心手段。还有两个细节nickname 一定要写死AI 特别喜欢自己乱起昵称appearance 里写一个标志性特征就够比如“左手腕的旧疤”后续章节里 AI 会反复调用这个特征来强化人物记忆。写完角色卡之后放到 memory/ 目录下生成章节时程序会自动加载。3.3 世界观档案设定一致性不是靠灵感是靠文件世界观档案解决的问题是为什么前二十章的城市叫“雾港”到三十章突然变成了“雾都”。小说世界的名物、地名、力量体系、时代背景这些专有名词是模型最不敏感的东西你不写死它就自由发挥。一份合格的设定档案同样用 JSON 写{ world_name: 雾港, geography: 沿海工业城市常年大雾旧港区已废弃, time_period: 架空的近现代汽车与手机存在但互联网不普及, power_system: 无超自然力量一切案件基于法医学与物证, important_locations: { 市局法医中心: 周沉的办公室三楼东侧, 旧停尸房: 废弃十年的地下层案发核心场景 }, forbidden_elements: [玄幻, 灵气, 起死回生, 外星科技] }这里的关键是 forbidden_elements——明确告诉 AI 什么不能出现。悬疑小说里如果突然冒出修仙元素整个世界观直接崩塌提前写死可以省掉大量后期改稿。此外 important_locations 里的细节描述越具体越不容易被 AI 改写比如“三楼东侧”这种坐标感强的描述AI 会倾向于原样保留。一个实用技巧是每当你发现 AI 在某处自由发挥得很离谱就在档案里补一条对应的限制这叫“用文件给人脑和 AI 立规矩”比在对话里反复纠正高效得多。3.4 章节循环设定、生成、归档当你把角色卡和世界观档案都建好章节生产就进入了循环模式先读档案再生成章节然后把章节末尾的剧情状态点固化成新的进度摘要写回 memory 目录。这个循环里最容易被忽略的动作是“归档”——很多人写完一章就急着生下一章结果下一章的 AI 完全不知道上一章发生了什么剧情就断了。我自己的实操顺序是生成章节 → 通读一遍 → 在章节开头用三句话写清“当前剧情位置” → 存成 chapter_state.md → 再跑下一章。这个过程每次花费不到两分钟但能让 AI 在几十章之后仍然记得上一场戏的落点。这部分的本质是把“创作”和“记忆”分开管理创作交给模型记忆交给文件各干各的互不干扰。4. 章节生成与风格控制提示词模板和采样参数双管齐下4.1 章节提示词模板让 AI 知道“这一段到底要干什么”很多人在提示词里写“请写一个精彩的章节”然后抱怨输出平庸。问题不在模型在于指令太含糊——精彩是什么标准节奏快是精彩悬念足是精彩对话机锋也是精彩你只给一个词AI 只能猜。一份能用的章节生成模板通常长这样【当前剧情位置】 上一章结尾周沉在旧停尸房地板夹层里发现一张烧了一半的登记表表上出现了已故法医的签名。 【本章目标】 周沉通过鉴定登记表上的笔迹确认签名是伪造的从而把嫌疑人范围缩小到当年能接触到这份表的三人之一。 【必须出现的元素】 - 灰扑扑的停尸房灯光 - 周沉用便携放大镜观察纸张纤维的动作 - 她在心里对比记忆中父亲笔迹的细节 【不许出现】 - 任何超自然现象 - 突然插入与本案无关的支线 【文风参照】 - 短句为主对话干脆 - 场景描写不超过三段 - 避免“他的心咯噔一下”这类陈词滥调 【结尾状态】 本章结束时必须留下一句悬念那三人中的某个人正在不远处的暗处观察她。这个模板的用意是把“写一章”拆成六个子指令每个子指令管一个维度AI 就不需要猜你要什么了。当前剧情位置防止衔接断裂本章目标锁定推进方向必须出现的元素保证意象和物件不飘走不许出现做边界约束文风参照管语言质感结尾状态确保每章都有钩子。其中本章目标这一项最重要——如果没有它AI 很容易写出一章“哪都挺好但剧情原地踏步”的水文。它是这六个字段的支点其他字段都是防守项。4.2 采样参数表温度、top_p、重复惩罚怎么组合才不翻车参数组合对产出质量的影响在长文本创作里比对话场景大得多。这里给一组我自己调出来的参照值按创作阶段区分使用场景temperaturetop_prepetition_penaltymax_tokens说明快速起稿/脑洞探索0.950.951.02000扩散性好但容易跑偏只用于初期正常章节续写0.80.91.12000均衡档写大部分章节都用它大纲转正稿/稳定输出0.70.851.151500收敛性强适合需要严格按大纲走的时候这三个参数的分工需要理解清楚temperature 控制随机性越大越“发散”top_p 控制候选词池的取舍本质上也是收敛或发散repetition_penalty 单独惩罚重复用词专门治 AI 的习惯性句式复制。很多人只调 temperature发现调到 0.9 反而语句混乱这是因为 top_p 和 repetition_penalty 没跟着动。如果你发现模型开始车轱辘话来回说把 repetition_penalty 从 1.0 提到 1.15 往往比降 temperature 更有效。另外 max_tokens 别贪大一次生成两千字是质量与稳定性的平衡点非要一次性生成五千字后半段基本都是在注水。4.3 三种常用的生成模式续写、改写、扩写工具包里的生成入口通常支持三种模式命令参数不一样适用场景也完全不同。三种模式各有适用场景选错了就会得到一堆需要推翻重写的东西。python main.py continue --ref memory/chapter_state.md --seed 周沉发现了签名疑点 --out output/chapter_002.md python main.py rewrite --file output/chapter_001.md --focus 强化结尾悬念 --out output/chapter_001_rw.md python main.py expand --file output/chapter_002.md --target 1200 --segment 周沉在实验室比对笔迹 --out output/chapter_002_exp.md第一条是续写语义是“基于当前剧情位置围绕一个触发点继续推进”它把上一章结尾的状态文件作为上下文传入保证剧情连贯。第二条是改写目标是锁定局部强化或修正比如觉得结尾悬念不够足就只动那部分其他不动。第三条是扩写把某一段细节从五句话拉长到一千字适合场景描写需要铺开的场合。三条命令在参数上的关键差异是续写吃的是状态文件改写吃的是单一章节扩写吃的是段落定位。新手最容易犯的错是用续写来处理“上一章写崩了”的情况——写崩了应该先改而不是硬往下续不然错误会持续滚雪球。5. 避坑指南AI 小说实战中的五个常见翻车点5.1 角色性格飘移冷静法医突然变成恋爱脑现象前三章里周沉说话干脆、行动利落到第七章她开始对着嫌疑人脸红心跳、说话带语气词人设彻底崩掉。原因上下文窗口有限早期章节里的性格设定被挤出模型视野AI 只看到最近几章的内容自然顺着最近的语境发挥。解决在每次生成章节前强制加载角色卡把 traits 和 speech_pattern 放进 system prompt同时每生成三到五章回读一遍角色卡看 AI 的发挥是否偏离了锚点跑偏就立刻在记忆档案里追加一条标注比如“周沉不会对陌生人流露私人情绪”然后用改写模式把跑偏的段落修正回来。5.2 语气词和句式重复刷屏全篇都在“深吸一口气”现象生成的章节里“他深吸一口气”“她眼神一凝”“他的嘴角勾起一抹冷笑”这类句式每隔几百字就出现一次阅读体验极其廉价。原因repetition_penalty 太低或者为 0模型在长文本里会自发地复制自己刚才用过的句式尤其对动作描写这种“安全牌”句式依赖严重。解决把 repetition_penalty 调到 1.1 到 1.15 区间同时在提示词的“不许出现”字段里显式声明禁止重复的句式模板如果仍有漏网之鱼用改写命令的 focus 参数定位到出现句式的区域直接把那句改写成具体动作比如“他深吸一口气”改成“他把领口拽松了些”。5.3 剧情断点上一章还在停尸房查案下一章突然出现在海边散步现象两章之间剧情衔接不上角色行动没有连续动机像是两篇独立短篇被强行拼在一起。原因生成续写章节时没有把上一章结尾状态传进去AI 只凭当前触发词自由发挥不知道上一场戏的落点。解决养成维护 chapter_state.md 的习惯每章结尾用三句话记录“当前人物位置、当前剧情悬念、下一步指向”续写时用 continue 命令并显式指定 ref 参数指向这个文件。我见过的最离谱的一个翻车案例是有人写了二十章之后发现第十五章的主角还在第一章的案发现场原因就是连续跳过状态维护AI 直接把人挪回去了。5.4 专有名词漂移雾港变成雾都旧停尸房变成地下诊所现象地名、建筑名、道具名在连续生成的长文本里逐渐变形先是“雾港”变“雾港市”然后变成“雾都”最后彻底成了另一个城市。原因模型对专有名词的记忆很不稳定尤其在多章节长文中容易将相似词汇混同替换。解决在角色卡和世界观档案里建立“专有名词清单”把不可变的地名、人名、物名集中维护每次生成前由程序自动注入每周或每十章跑一遍名词一致性校验脚本。下面这段脚本可以帮你快速筛出可疑替换import os, re CANONICAL_NAMES [雾港, 周沉, 旧停尸房, 法医中心, 登记表] for root, _, files in os.walk(output): for f in files: if not f.endswith(.md): continue path os.path.join(root, f) text open(path, encodingutf-8).read() for name in CANONICAL_NAMES: # 用正则匹配那些“形似但非同”的变体写法例如雾港市、雾都 pattern name[:2] r[^\s。]{0,4} variants set(re.findall(pattern, text)) if any(v ! name and name in v for v in variants): print(f{f}: {name} 疑似被写成 - {variants})这段代码的思路是遍历 output 目录下所有章节 md 文件用正则匹配每个规范名词前两个字的相似变体如果发现包含规范名词前缀但不是它本身的写法就打印出来。跑完之后你会看到类似“雾港 - 雾都市”这样的警告然后直接去对应章节定位修改。这个脚本是我每本书写到十万字左右必跑一遍的流程虽然简陋但能拦住大多数低级的专有名词漂移。5.5 生成即折旧不加修改的稿子直接发出去读者一眼看出是 AI 文现象所有章节都是“标准得很好看”的文本信息密度低、情绪平淡、人物对话一个腔调读者评论区直接开骂。原因提示词模板和采样参数都太“平均”没有注入具体的文风约束模型自然倾向产出安全无风险的文本。解决把 chapter_state.md 的“文风参照”写得更具体——不要写“文风优美”要写“对标某某作家的冷峻短句风格”“对白要求至少三句内出现一次交锋”把三个采样参数按 4.2 节的对照表重新设置如果一段文字怎么调都救不回来果断自己上手重写那段再拿重写段作为新章节的文风参照让 AI 模仿。6. 进阶人机改稿闭环让 AI 记住你改过的每一处到这里你已经能批量产出了但批量产出不等于成品。真正拉开业余工具和写作工作台差距的是一个你大概率没意识到的步骤——把人工改稿的结果回填给 AI。绝大多数人用这类工具的习惯是AI 生成 → 自己改 → 直接用然后跑下一章。但下一章生成时AI 根本不知道你上一章改了什么它还是按照旧版的理解在写于是你每一章都要重新纠正它一次。解法是建立一个“人改回填”闭环当你人工改完某一章后花一分钟在工具里记录这次修改的核心意图并把这条记录写入记忆档案让后续章节读取。具体操作分为三步第一步改稿时带着问题读——这章里哪些地方是你觉得 AI 写得不对、需要改的第二步把修改归纳成一条可执行的指令比如“主角周沉的说话方式改成更冷的短句禁止使用疑问句”“案件线索必须指向停尸房不展开码头支线”第三步把这条指令追加到 memory/ 目录下的修订记录文件里并在生成下一章时显式引用它。如果你用的版本支持命令行参数可以这样操作python main.py revise \ --lesson 周沉说话用短句不表达情绪本案所有线索收敛回旧停尸房 \ --apply-to subsequent-chapters \ --confirm这条命令的作用是把一条“修订教训”写入记忆系统并声明它对后续所有生成章节生效。参数里最关键的是 apply-to它决定了这条教训是只影响下一章还是影响整本书剩余部分——多数情况下选后续全部章节因为人的语言习惯一旦拉回正轨就不该再跑回去。这里有个实战经验供参考修订记录写得太泛没用比如“不要啰嗦”就是句废话写得太细也没用比如“第三段删除‘她沉默片刻’”只会让 AI 不知道怎么泛化。好的修订记录是一条“规则”不是一条“补丁”它描述行为边界而不是修补单点缺陷。从那以后我每次开新书都强制走一遍固定流程建角色卡 → 写世界观档案 → 跑三章试稿核对设定一致性 → 再进入正常生成。生成过程中每章必维护 chapter_state.md每十章必跑专有名词校验脚本每次人工改稿必把教训回填进记忆。这套流程看着繁琐但它在三十万字的长篇里帮我省下的改稿量远比前期多花的那几分钟多得多。希望帮到你。本文还有配套的精品资源点击获取
返回列表