Skip to content

Vela v0.2.7

Choose a tag to compare

@github-actions github-actions released this 11 Oct 09:54
· 3 commits to master since this release

新增

  • 拆书创作系统(第一期:拆书分析):参考小说现在可以逐章分析,结论落项目数据库(新增 book_analyses 表,迁移到 v9)。每章产出基础信息(人物/地点/物品/关键事件)、剧情结构(核心事件、目标、行动、阻碍、升级、解决、转折、结果、对后续影响)、八项叙事技巧(开头钩子、冲突建立、信息释放、人物推动、期待制造、结尾悬念、章节衔接、节奏控制)、人物档案(身份/目标/动机/性格/关系/变化/利益冲突)、伏笔与悬念、以及「结论 + 原文出处 + 可信度」。结论按 原文事实 / 模型推测 / 无法判断 三档标注,模型推测不会被当成已确认事实。界面在拆书页新增「拆书分析」页签:可分析未完成章节、只重试失败章节、只分析勾选章节,随时可停止(已完成的结果全部保留),重复点击不会重复消耗模型额度(已有结果的章节默认跳过,重跑请显式点「重新分析」),单章失败不中断整批;分析结果可编辑(概要、关键事件、技巧备注)与删除,并可一键回看来源章节原文。章节正文按 token 预算截断处理,整本书不会一次性发给模型。
  • 拆书创作系统(第二期:剧情重构 / 正文生成 / 事实联动 / 相似度检查):拆书页签补齐为「参考小说 / 拆书分析 / 剧情重构 / 正文生成 / 一致性检查 / 相似度报告」六步链路。
    • 剧情重构:选参考章节的分析结论 + 填创作目标/阶段/预期冲突/排除项 + 勾选要借鉴的叙事技巧,生成可编辑的原创大纲(新增 plot_outlines 表)。送进模型的参考材料里,参考作品的人物名一律换成「角色甲/乙」,并可选「只借鉴技巧,不看具体情节」——此时连事件序列都不提供,只留技法观察与结构骨架。生成后每个节点都能改、能上下调序、能增删、能单独重生成(regenerateBeat),并给出「相对参考改了哪些东西」的原创性说明;如果大纲里出现了参考作品的人名,会直接提示「这是换名照搬的痕迹」。
    • 正文生成:以大纲节点为单位逐段生成(不是整章一次性生成,避免输出上限截断),每段都能手动改、单独重写;生成前注入作者的小说设定 + 与本段相关的 Canon(时间线/人物状态/剧情线/筛选过的事实)+ 前文结尾。「存为草稿」走草稿版本机制,永远新建一版,不覆盖已有正文——作者在编辑器里确认后才谈替换。
    • 事实库联动:生成后一键跑现有的一致性闸门,结论翻译成作者能用的三档——无明显冲突 / 需要作者确认 / 明确冲突;同时用现有本地提取器把新稿里的候选事实登记为待确认(tentative),重复陈述自动跳过,不经作者确认不会进正式事实库。
    • 相似度报告:新增 similarity_reports 表与本地算法(不为了算相似度去调模型):连续重复片段(12 字起报,40 字以上判高风险,并给出两侧具体位置)、近重复句(2-gram Dice,逐句比对)、以及情节层——大纲节点与参考章节的事件/冲突对应度(用包含度而不是 Dice,避免长节点被长度差摊薄)、参考作品人名是否原样出现。依据不足时给「无法判断」,不硬凑分数;通用题材与常见结构的相似不计入,报告明确写出「风险等级只是提示,不是法律结论」,并附每条的具体位置与修改建议。报告落库,可回看历史。
  • 地图与空间关系:新增 canon_locations 表(迁移到 v8,只加表不动数据)与「故事圣经 → 地图」分区。登记地点名、所属区域、控制势力、与别处的距离、怎么去与大概要多久;改完即存、可删(带 id 更新,改名不会留下旧行)。这些内容会进入 Canon 上下文(写作提示词里多一段「【地点与空间关系(人物移动需符合距离与通行方式)】」),把「A 到 B 有多远、怎么去」写进提示词,人物就不会在没有车马或传送手段的情况下突然出现在千里之外——地点连续性检查只能事后发现,这里是事前约束。与物品流转、境界阶梯一样,地图只登记不自动推断:距离与耗时属于作者的设定,猜错比不记更糟。
  • 境界阶梯:新增 canon_realms 表(迁移到 v7,只加表)与「故事圣经 → 境界」分区。作者维护一张由低到高的境界表——阶数、境界名、能做到什么、做不到什么与代价、突破条件;改完即存、可删(带 id 更新,改名不会留下旧行)。阶梯会进入 Canon 上下文(写作提示词里多一段「【境界阶梯(越级需有条件 · 突破需交代价)】」),用来约束战斗、越级与突破的描写。只登记规则、不做自动推断:「谁现在是什么境界」仍由角色状态负责。
  • 物品流转台账:新增 canon_item_events 表(迁移到 v6,只加表不动数据)与「故事圣经 → 关键事实」里的「物品流转」区块。可以登记某件道具在第几章被谁获得 / 转交 / 丢失 / 损毁 / 消耗,登记错了能直接删。台账会进入 Canon 上下文(写作提示词里写成「- 炭笔:第3章 获得(顾野) → 第20章 消耗:画引火纹烧掉了」),模型在动用道具前先看它还在不在谁手上,避免道具凭空出现或消失。台账只做登记、不做自动推断——道具去向属于「作者说了算」的信息,猜错比不记更糟。
  • 大纲偏差分类:定性审稿的「大纲偏离」维度现在要求模型同时给出分类——已完成 / 未完成 / 偏差 / 遗漏 / 合理创新 / 冲突。审稿报告在该维度上方显示六类计数,每条观察带分类标签,并写明「偏离不等于错误」:creative 是大纲没规定但合理的发挥,deviated 才是与蓝图明显不符。分类解析做了保守归一化(识别不到就当没给分类,不会乱猜;「与设定冲突」优先于「已完成」,不会被误判成完成)。
  • 场景文风:写稿提示词把「作者本章微操指导」明确成「场景风格 + 本章微调」——战斗场景重动作与距离、探索场景重环境与线索、日常场景重互动与生活感,也可以要求本章更快/更慢、减少心理独白、增加对话、强化环境压迫感;并说明它与全书文风的叠加关系(本章要求优先于全书风格,两者都不得违背 Canon 与全局禁忌)。变量说明与中英俄界面文案同步更新。
  • 修改影响分析:写回时按正文里出现的「证据短语」把「本章沿用了哪些既有事实」记入新表 canon_fact_usage(迁移到 v5),于是「改前文」的影响面变成了一次精确的反向查询,不需要再检索或调用模型。重写某一章后,如果本次改动让某条事实消失、而后面有章节引用过它,定稿日志会直接列出「哪条事实 → 影响哪些后续章节」,按引用章节数分「高 / 中」两档,并明确提示只报告、不会自动改后续章节。事实原文没变时不算影响;重新定稿会删掉旧事实再重建(id 会变),引用关系会自动迁移到新记录上,不会因为重复定稿把依赖图弄丢。判断依据刻意保守(只用证据短语或事实原句精确匹配),宁可漏记也不误记。
  • 伏笔台账:剧情线表新增「类型(剧情线 / 伏笔)」与「预计回收阶段」两列(迁移到 v4,老库自动加列,未标记的仍按剧情线处理)。故事圣经的剧情线分区会显示类型徽标,可一键在「剧情线 / 伏笔」之间切换;标为伏笔后可填写预计回收阶段(自由文本,例如「中期」),已回收的伏笔也会显示当初登记的阶段。伏笔带着类型与预计回收阶段一起进入 Canon 上下文(写作提示词里会写成「伏笔 名称(… 预计回收:中期)」),模型不会再把它当普通支线随便推进或遗忘。
  • 生成前上下文预览:写稿时会把这次实际注入的每一段(故事架构 / Canon 动态段 / 本章信息 / 后续章节预告 / 上一章结尾 / 知识库检索 / 全局要求 / 本章微操指导 / 文风)连同字数、token 估算、条目数与来源整理成结构化数据,显示在「AI 输出」面板顶部,可折叠。列表类段落给出计数明细(时间线 N · 角色状态 N · 剧情线 N · 事实 N);知识库没检索到内容、提示词超出预算、架构被截断、第 1 章不注入上一章结尾等情况会明确标出。数据在步骤开始时就挂到运行上,生成过程中即可查看,不必等章节写完,也不用再翻日志。
  • 事实库新增「作者确认」:AI 从正文提取的事实默认标记为未确认(事实页显示「待确认」徽标),作者逐条或一键确认后才算过目;确认一条暂定事实会同时把它提升为「有效」。事实表新增 confirmed_at / updated_at 两列与 canon_fact_history 变更历史表,数据库迁移走既有的 user_version 机制(老库自动加列,数据不动,可重复执行)。事实页支持按「全部 / 待确认 / 冲突 / 已确认」筛选、标记争议与废弃、查看变更历史。
  • 新增长篇小说回归样本集 samples/novel-regression/:5 个场景(神态套话与万能副词、清单式罗列与模板转折、段尾总结旁白、句式单调、人物认知),每个带章纲、前情、已确认事实、人工核对清单,以及「应被检出 / 不应被检出」的两段示例文本。能机器判定的部分由 src/services/__tests__/novel-regression.test.ts 在 CI 跑(只用本地规则,不调用模型);语义层面的判断走 README 里的人工清单与指标对照表。

改进

  • 大纲偏差可以一键写回:定性审稿的「大纲偏离」里,标记为偏差或合理创新的观察下面多了「写回大纲」按钮。展开后按观察内容预填一句话(可以直接改),确认即追加到本章的「作者微操指导」——写稿时按最高优先级注入,所以下次重写这一章会顺着确认后的方向走,而不是又被旧蓝图拉回去。只追加、不覆盖原有规划(蓝图里的章纲、关键事件一字不动),走的是剧情调整那条通路,留前后对照、可在剧情调整记录里撤回。冲突、遗漏、已完成、未完成这四类不出现这个入口:它们分别属于设定冲突和进度问题,硬「确认方向」会把问题掩盖掉。这一项补上了需求文档里「偏差不等于错误、支持更新大纲」的后半句。

  • 模型的「上下文窗口」与「单次输出上限」拆成两个字段。以前模型配置里只有一个「最大 Tokens」,它同时被当成窗口和输出上限用,再乘 2.5 猜输入预算:填 128K 窗口的模型被当成 32K 用(该喂的上下文被无谓截断),填了真实窗口的模型在写作时又会撞上一个凭空固定的预算。现在「上下文窗口(Tokens)」填服务商公布的窗口大小,「单次输出上限(Tokens)」填一次回答最多写多少(留空则沿用旧算法,老配置行为一字不变)。窗口填 131072、输出填 8192 时,输入预算才是真实的 122880,而不是猜出来的 20480;输出上限仍然收敛到服务商能接受的安全值(≤32768),窗口填得再大也不会把单次请求撑到几百万 token。

  • 写作、去 AI 味修订、阶段 1/2 拆解、章节要点写回、逆向推演、Skill 调用、整章修稿、剧情调整这些路径的 token 预算,全部改为按上面两个字段推导;「助手改正文」与 Agent 循环发给服务商的 max_tokens 也改为优先用「单次输出上限」。旧配置(只填一个数字)走的是原来那套算法,行为不变。

  • 写稿日志与「本次上下文」预览里的 token 预算不再是写死的 28000,而是本次实际使用的模型算出来的值——以前不管用什么模型都显示 28000,既看不出模型差异,也会在大窗口模型上误报「超出预算」。

修复

  • 定稿写回几乎抽不到东西,导致故事圣经长期是空的:写回原本只有一套关键词启发式——正文段落里出现「冲/斩/逃/发现/拿到…」这类硬编码动作动词才算一个事件,事实必须匹配「X 是 Y」「X 位于 Y」这类句式,且 X 必须是角色卡里的名字。正常文学写法几乎不命中:实测 19 章定稿下来,时间线只有 3 条(还是句子片段)、事实 0 条、伏笔 0 条,只有章节摘要(来自模型的「章节要点」)和 7 条角色状态进了库。现在写回优先解析定稿时已经生成的「结构化章节要点」(剧情节点 → 时间线、角色动态 → 角色状态、新增设定 → 候选事实、[埋] → 伏笔、[钩] → 章末悬念),要点缺失或解析不出内容时才退回原来的关键词启发式。同样不额外调用模型。用同一批真实要点预演:19 章可抽出事件 87 条、角色状态 18 条、候选事实 47 条、伏笔 29 条。
  • 要点里解析出的候选事实一律记成待作者确认(tentative),与既有事实冲突的会照旧标成「冲突」等作者处理,不会自动当成已确认事实。
  • 新增「补写圣经数据」:故事圣经页右上角一键处理「已定稿但时间线/角色状态/事实都没有痕迹」的章节——用这些章节的已定稿正文 + 章节要点 + 角色卡 + 蓝图重跑一遍写回。不改正文、不额外调用模型;要点里确实没有可用条目时会明说,而不是假装成功。