webnovel-writer 对话写作技法体系:从 CSV 知识库到 reference_search 按需检索的实战指南

发布时间:2026/9/17 20:33:50
webnovel-writer 对话写作技法体系:从 CSV 知识库到 reference_search 按需检索的实战指南 webnovel-writer 对话写作技法体系从 CSV 知识库到 reference_search 按需检索的实战指南【免费下载链接】webnovel-writer基于 Claude Code 的长篇网文辅助创作系统解决 AI 写作中的「遗忘」和「幻觉」问题支持 200 万字量级 连载创作。项目地址: https://gitcode.com/GitHub_Trending/we/webnovel-writer导读本指南围绕 webnovel-writer 中「对话写作」知识的存储与检索体系展开该项目将原dialogue-writing.md的正文整体迁移进了结构化 CSV 知识库写作技法.csv并配套 BM25 检索工具 reference_search.py 实现按需加载。读完本文你将掌握对话类技法条目WT-001/WT-005/WT-009/WT-018/WT-047/WT-051/WT-074的完整内容、CSV 列结构与写法规范、检索命令的实际用法以及这些知识如何在webnovel-write写章流程的 Step 2 起草阶段被自动触发调用。一、为什么对话写作知识从 Markdown 迁移到了 CSV在仓库webnovel-writer/skills/webnovel-write/references/writing/dialogue-writing.md中文件正文只剩下一段迁移说明本文件内容已迁移到 CSV写作技法运行时通过reference_search.py --table 写作技法检索对话相关行如 WT-001/WT-005/WT-009/WT-018/WT-047/WT-051/WT-074。此处不再维护正文历史见 git。这是一次有意的知识架构调整。根据 references/csv/README.md 的说明项目把「条目库、模板库、规则清单、高频误区与正反例集合」这类适合条目化的知识沉淀进 CSV而「流程规范、方法论总纲、审查 schema、项目硬约束、AI 味润色指导」继续保留在独立 md 文件中。对话写作技法属于典型的高频、可枚举、带正反例的知识因此被整体条目化。这样做的三个直接收益BM25 字面召回率更高中文网文场景下用户或模型的查询词与 CSV 中「关键词」「意图与同义词」两列精确匹配比全文扫描 md 更稳。返回可直接执行的上下文CSV 每条都带大模型指令列检索命中后可直接拼进模型提示词无需二次提炼。运行时按需加载webnovel-writeskill 在起草阶段遇到「多角色对话→写作技法」等触发条件时才检索对应表避免把全部参考知识一次性塞进上下文。二、检索入口reference_search.py 的命令行用法对话写作技法全部以行为单位存放在 写作技法.csv 中运行时通过 reference_search.py 检索。该脚本是一个独立 CLI 工具支持按技能、题材、表过滤并对候选行做 BM25 打分排序。2.1 完整参数说明参数必填说明示例--skill是按适用技能列过滤write/plan/init等--skill write--query是BM25 检索关键词--query 去水词对话--table否锁定单个 CSV 表不含.csv后缀--table 写作技法--genre否按适用题材列过滤支持平台标签与 legacy 别名--genre 现言--max-results否返回条数上限默认 5--max-results 3--csv-dir否覆盖 CSV 目录默认自动定位到references/csv--csv-dir /path/to/csv脚本输出 JSON外层 envelope 包含status/message/data其中data.results每条含编号、表、分类、层级、适用题材、内容摘要、大模型指令等字段。当--csv-dir不存在时返回status: error与error.code CSV_DIR_NOT_FOUND不会抛异常崩溃。2.2 对话知识检索实战命令# 检索对话声线差异写作技法表 python -X utf8 scripts/reference_search.py --skill write --table 写作技法 --query 角色说话怎么区分 # 检索去水词对话测试用例验证 WT-005 可命中 python -X utf8 scripts/reference_search.py --skill write --table 写作技法 --query 去水词对话 # 带题材过滤检索潜台词WT-074 仅适用于现言/古言 python -X utf8 scripts/reference_search.py --skill write --table 写作技法 --query 替身文潜台词 --genre 现言 # 跨表检索不指定 --table 时扫全部表 python -X utf8 scripts/reference_search.py --skill write --query 对话 潜台词注意仓库统一用-X utf8保证中文参数与输出的编码正确在 skill 运行时环境CLAUDE_PLUGIN_ROOT中脚本路径写作${SCRIPTS_DIR}/reference_search.py见 webnovel-write/SKILL.md 的 CSV 检索段落。2.3 检索的筛选与打分逻辑从 reference_search.py 的search()实现可以看到完整流水线表加载load_tables()按需加载table.csv文件以 UTF-8 with BOM 编码读取encodingutf-8-sig。双层过滤先按适用技能_skill_matches与适用题材_genre_matches过滤候选行适用题材会先经genre_taxonomy的resolve_canonical_genre归一化——例如--genre 都市日常会解析为 canonical 的都市战神赘婿也会归入都市。BM25 打分查询词与文档词项分别做 tokenize_tokenize每张表可按search_cols配置对「关键词、意图与同义词、核心摘要、详细展开」等列赋予不同权重然后计算 IDF 与 BM25 分数降序取max_results条。结果格式化每条结果输出大模型指令作为可直接拼给模型的执行指令内容摘要优先返回核心摘要列。一个容易踩的坑对话类条目也可能命中plan技能。以 WT-047、WT-051、WT-074 为例其适用技能列为write|plan说明这些技法同时服务写章与大纲规划两个阶段如会议戏的沉默者调度在大纲阶段就应预留。三、对话写作技法条目全解七条核心知识这是本次迁移的核心资产。以下 7 条编号、技法名、适用场景、毒点、正反例全部取自 写作技法.csv可直接作为写作时的执行参考。3.1 WT-001 声线差异化适用题材全部大模型指令优先区分角色的身份、情绪和关系再分配词汇、句长和潜台词不要只改称呼。核心摘要多角色对话要靠词汇、句长、语气和潜台词拉开差异避免全员同一书面腔。人物声线差异可以从礼貌程度、句式长短、口头习惯、攻击方式和回避信息的方式上稳定体现。适用场景多角色连续对话、冲突对话、试探性对话。毒点所有角色都说同样的完整书面句只有称呼不同。正例「你先说结论。」他敲了敲桌面语气短硬。「前辈若愿意听完我再解释来龙去脉。」女子答得很稳。反例「你先说结论。」他说。「前辈如果愿意听完我再解释来龙去脉。」她说。两个人都像同一个作者在说话。3.2 WT-005 去水词冲突对话适用题材全部大模型指令删掉不推进关系和情节的寒暄把台词集中到冲突、地位差和潜台词上。核心摘要高信息量对话要去掉空转寒暄让每一句都在传递态度、关系变化或情节推进。可先判断本场对话的目标再保留能体现地位差、情绪压力和隐藏诉求的台词其他内容尽量压缩。适用场景谈判、对峙、摊牌、审问。毒点人物一直绕圈寒暄或重复解释读者看完不知道关系和局势发生了什么。正例「结论。」他连杯子都没碰视线落在她手里的文件上。「可以签但你得先告诉我你昨晚为什么绕过我去见他。」反例「你来了。」「嗯我来了。」「你今天还好吗」「还好你呢」一整段都在寒暄没有推进。3.3 WT-009 动作锚点式多人对话适用题材全部大模型指令每次发言都绑定动作、视线或位置变化让说话顺序和心理活动可追踪。核心摘要多人对话要靠动作锚点、沉默者反应和句式差异维持清晰不要只靠连续引号。越是四人以上场面越要让插话、观察、打断和沉默承担信息功能否则场面会迅速糊成一团。适用场景会议、谋划、审讯、群像争执。毒点所有人只轮流说台词沉默角色完全消失读者分不清发言者。正例他说完把杯子扣在桌上最角落里一直不作声的人却忽然抬眼看向门口。反例甲说一句乙说一句丙说一句丁说一句台词像排队点名。3.4 WT-018 黑话点缀式对白适用题材全部大模型指令黑话只点缀关键名词并通过上下文让读者自然理解不要把对白写成术语墙。核心摘要圈层语言的作用是增加职业感和地域感少量点缀比通篇堆砌更有沉浸效果。警察、钱、同伙、仇家等高频词最适合做黑话替换再配一两个自然例句就足够建立圈层气味。适用场景帮派谈判、黑市交易、街头混混、组织内部交流。毒点一段话塞满十几个新词没有上下文解释所有角色都说同一种黑话。正例「烟雾子刚扫过两条街今晚别碰亮片。」他说得含糊跟在后头的新人才后知后觉地点了点头。反例全段对白充满生词却没有任何语境帮助读者理解。3.5 WT-047 沉默角色调度法适用技能write|plan适用题材全部大模型指令在多人对话里专门追踪沉默者的动作和视线他往往比正在说话的人更能释放危险信息。核心摘要沉默的声音往往最值钱因为读者会本能地追问他为什么不说他在观察什么。汗、停顿、抿唇、看门口、避开视线这些都能让沉默者成为伏笔和暗流的承载器。适用场景群像会议、审讯、团队分工、家庭对峙。毒点沉默角色像空气只顾台词忘了行为线所有人都在说导致信息过载。正例大家还在争论路线只有最角落那个人始终没抬头指节却把纸杯捏出了裂纹。反例四个人说了三页台词第五个人像被作者遗忘了一样完全消失。3.6 WT-051 表层目的与潜台词双轨适用技能write|plan适用题材全部大模型指令每段对话先明确表层目标和暗层目标让人物嘴上说的和真正想得到的东西保持张力。核心摘要有潜台词的对话不是故作含糊而是让表层交流和真实博弈同时发生。问候可以是在试探玩笑可以是在逼供道谢可以是在划边界关键是每句台词后面都能对照一个真实目的。适用场景旧情重逢、权谋试探、谈判、家庭对峙。毒点潜台词全靠读者猜台词和人物目标无关所有人都绕圈不推进信息。正例他问她最近睡得好吗真正想确认的却是她是不是还在吃那种会让手发抖的药。反例两个人全程说谜语谁也不表达信息读者只剩困惑。3.7 WT-074 信息差潜台词法适用技能write|plan适用题材现言|古言大模型指令潜台词要基于信息不对称让角色说表面话时同时暴露隐瞒、试探或逃避。核心摘要替身文对话的刺痛来自双方都没把真相说满却已经被细节扎到。旧称呼、停顿、改口、避开名字和突然转移话题都是高效潜台词工具。适用场景替身文、误会期、冷战、追妻对话。毒点所有话都直白解释沉默没有信息潜台词读不出具体指向。正例「你喜欢这个颜色」她问。他顿了顿说「以前有人喜欢。」这句「以前」比名字更伤人。反例「你把我当替身我很伤心。」潜台词被直接说穿张力消失。值得注意的题材约束WT-074 是这 7 条中唯一限定题材的条目现言、古言其余六条均标注「全部」。这意味着带--genre 玄幻检索时 WT-074 会被过滤掉这是 CSV 条目按题材精细化路由的典型例子。四、写作技法表的列结构与数据规范对话技法条目所在表为写作技法.csv其列结构在 references/csv/README.md 中有专门说明列名说明技法类型对话、情感、场景、节奏等技法名称技法名称如「声线差异化」「动作锚点式多人对话」适用场景适用写作场景常见误区高频误区即「毒点」正例正向示例反例反向示例连同全表共享的通用列一条完整的对话技法条目实际包含 14 列编号、适用技能、分类、层级、关键词、意图与同义词、适用题材、大模型指令、核心摘要、详细展开、技法类型、技法名称、适用场景、常见误区、正例、反例。几个必须遵守的规范要点编码所有 CSV 使用UTF-8 with BOM代码侧以utf-8-sig读取。分隔符列表型字段适用技能、关键词、意图与同义词、适用题材统一用|旧的逗号分隔仅作迁移兼容由代码侧_MULTI_VALUE_SPLIT_RE兼容解析测试test_legacy_comma_delimiters_remain_compatible覆盖该场景新增条目禁止再写逗号。长文本拆分单字段不超过 200 字超出拆为核心摘要高权重召回与展示与详细展开补充说明不堆放触发词。适用题材枚举只允许 15 个 canonical 值都市、玄幻、仙侠、奇幻、科幻、历史、悬疑、游戏、古言、现言、幻言、年代、种田、快穿、衍生或全部番茄子分类、套路名、调性标签一律禁止写入该列。手动迁移CSV 内容迁移只允许人工手动修改禁止脚本批量转换或自动抽取新增条目后需运行scripts/validate_csv.py校验。五、检索原理与测试验证5.1 从检索结果反推条目设计reference_search.py返回的每条结果都带大模型指令字段这是「检索命中后直接拼给模型的执行指令」。对比上面的条目内容可以看到设计闭环关键词与意图与同义词负责召回核心摘要负责结果展示与高权重打分大模型指令负责执行正例/反例负责兜底示范。任何一条对话技法都能独立支撑一次「该不该这么写、怎么写、写崩了什么样」的完整判断。5.2 测试用例佐证仓库在 scripts/tests/test_reference_search.py 中为检索体系提供了系统验证与对话技法直接相关的包括test_prompt_derived_dialogue_query_hits_new_writing_technique--query 去水词对话必须命中 WT-005验证了「基于 prompt 补充的对话技法应可被检索」。test_emotion_query_hits_writing_techniques_table--query 情感描写 心理命中 WT-002说明写作技法表是跨分类对话、情感等的综合技法库。test_skill_write_genre_xuanhuan_returns_nr001_not_nr002验证--genre题材过滤确实生效。test_result_has_required_fields验证每条结果必须包含编号、表、分类、层级、适用题材、内容摘要、大模型指令七字段。test_validate_csv_zero_errors运行validate_csv.py后当前 CSV 数据零错误。此外TestGenreCanonical系列用例验证了题材归一化--genre 都市日常会解析为都市古风世情归古言西方奇幻归奇幻resolve_genre(武侠)归历史——这保证了用户输入平台标签或 legacy 叫法时对话技法检索不落空。六、在 webnovel-write 写章流程中的运行时接入对话写作技法的实际消费场景是webnovel-writeskill 的起草阶段。根据 webnovel-write/SKILL.md 的「CSV 检索Step 2 按需」段落触发条件新角色→命名规则战斗→场景写法多角色对话→写作技法情感描写→写作技法高频桥段→场景写法。也就是说当 Step 1 context-agent 产出的写作任务书表明本章含多角色对话或情感描写时Step 2 起草前主流程会执行python -X utf8 ${SCRIPTS_DIR}/reference_search.py --skill write --table {表名} --query {关键词} --genre {题材}其中--genre取自.webnovel/state.json的project_info.genre保证题材过滤与整本书一致。命中后返回的大模型指令与正反例直接进入起草上下文实现「按步骤、按需加载参考资料」的硬规则——这正是当初把对话写作知识从 md 迁入 CSV 的最终目的让每一句对话写作建议都能在需要它的那一刻被精准检索到。七、延伸阅读与使用建议若要为对话技法补充新条目如新的潜台词工具请遵循 references/csv/README.md 的规范人工编辑写作技法.csv随后运行python scripts/validate_csv.py --csv-dir references/csv --format json校验最后用reference_search.py验证召回。对话技法不是孤立存在的它与 场景写法.csv战斗/对话场景的写法模式、人设与关系.csv角色互动模式同属 write 技能的按需知识面起草时可组合检索。想验证本地检索行为可直接运行 test_reference_search.py 中的对话相关用例或对照本文第二节的命令逐条执行观察大模型指令与正反例如何随查询词变化。一句话总结对话写作知识在 webnovel-writer 中已不再是静态文档而是一套「CSV 条目化 BM25 按需检索 skill 触发条件」的动态知识系统掌握reference_search.py的用法与这七条对话技法条目就等于同时掌握了「怎么写好对话」和「系统如何在写作时找到这些方法」。【免费下载链接】webnovel-writer基于 Claude Code 的长篇网文辅助创作系统解决 AI 写作中的「遗忘」和「幻觉」问题支持 200 万字量级 连载创作。项目地址: https://gitcode.com/GitHub_Trending/we/webnovel-writer创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考