Repository navigation
Releases: Kimcop-kc/vela
Release list
Vela v0.2.8
这一版把 0.2.7 之后的三轮改造一起发了:长篇记忆系统增强、分层记忆与精准检索、全局 UI/UX 改造(含写作流水线)。
新增
- 长篇记忆系统增强:定稿写回现在会提取角色的知识(谁知道了什么)、目标与关系变化,供「知识越权」检查使用;新增空提取检测(抽不到东西时明确报出,而不是当成「提取成功但没内容」);事实引用匹配从「证据/原句精确子串」扩成三级策略(证据短语 → 原句 → 关键词重叠),改前文的影响分析不再大面积漏记;事实注入改为按优先级排序(不再只取最近 30 条,早期关键设定不会被挤掉);新增上下文注入清单(这一章实际注入了哪些段落、条目数、被截断与被排除的原因,可审计);压缩摘要改为独立存储(不再写
chapter_number = -1污染时间线查询);摘要提取改用关键词打分;事实提取句式覆盖扩展(世界规则、能力限制、势力关系等)。 - 分层记忆与精准检索:故事圣经新增「记忆检索」分区——统一检索入口,覆盖事实 / 时间线 / 角色当前状态 / 角色状态历史 / 剧情线与伏笔 / 物品流转 / 章节摘要 / 分卷(阶段)记忆;每条命中给出命中原因、来源章节与段落、是否仍有效、与谁冲突,并可回看原文段落。配套补齐:角色状态写回时留历史链(可按章回溯伤势/境界)、事实落库时记录原文段落定位、新增分卷/阶段记忆并在生成时注入、角色别名/称谓参与检索与解析。空查询不再返回全部 canon。
- 写作流水线(拆书 → 正文生成页新增面板):把「大纲 → 场景计划 → 分段正文」按章节保存为流水线任务,中途关闭程序后可以恢复,不必从头再来。
- 全局 UI/UX 改造(审计 A 阶段 + 实施 B–G 阶段):设计令牌收口为单一来源、5 套主题统一;编辑器新增纸稿模式与专注模式、阅读设置(字号/行距/字体);主框架布局重整(侧栏在窄窗口自动收起);业务页面逐页统一;组件一致性整理(手写胶囊徽章改为
Badge、调色板类清零并改用语义色、z-index 收口到七层规范);补齐键盘快捷键与可访问性(对话框描述、焦点管理);新增 Storybook 主题同步与「强调色底上不得写死text-white」等守门测试。 - 提示词体系模块化:内置提示词从单个巨型文件拆成
src/services/prompts/(注册表 + 按域拆分的 builtin 模板),并提供提示词来源提示(内置 / 全局自定义 / 项目自定义)。原有的全局与项目级自定义提示词(~/.vela/prompts/、{项目}/.vela/prompts/)行为不变。 - IPC 通道白名单守卫:主进程按白名单校验渲染进程可调用的通道;白名单与通道契约互为编译期校验(漏一个就编译不过),避免「通道存在但被守卫拦掉」这类问题。
- 新增
tools/theme-preview(主题预览截图 + 对比度校验脚本,npm run theme:preview/npm run theme:contrast);新增.gitattributes统一行尾(根治不同机器检出后「整个文件都被改过」的假 diff)。
修复
- 定稿写回在有「章节要点」时角色知识恒为空:要点路径生成的角色动态不含
knowledge,现在会把启发式提取到的知识并集进去,知识越权检查不再没有数据。 - 待确认事实之间的矛盾不会被标注:冲突标注原先只在「一方已经是 contradicted」时才比对,现在所有配对都交给保守的冲突判定,检索结果里能看到「与谁冲突」。
- 章节范围过滤只对事实和时间线生效,剧情线等类型会漏出范围外条目;现在各类型都按范围过滤。
- 无别名的角色无法被检索解析(
getCharacterAliases只收录有别名者)。 - 拆书删除不再被知识库清理拖死:以前是先逐章去 LanceDB 删、最后才删档案文件,知识库一旦卡住或报错,删除就永远不返回(界面上就是「点了没反应」)。现在先删档案(界面列出拆书的依据),知识库清理改为逐章尽力而为、每章带 8 秒超时,失败只计入「没清理掉」的计数并在提示里说明,不让整个删除失败;重复删除同一本书也不再报错。
- 补齐若干类型与组件一致性问题(原生
<select>残留、手写徽章、硬编码 z-index、硬编码颜色),并新增源码级守门测试防回归。
改进
- 拆书导入与向量重建有了全局进度:进度以前是发起它的那个面板自己记的,一离开拆书页就什么都看不到,任务像「消失」了。现在进度存进全局状态、由标题栏统一显示——任何页面都能看到当前阶段(读取 / 分章 / 生成向量 / 写索引 / 保存)、进度条与已处理条目数,并且可以随时点「停止」;任务结束后短暂显示结果再自动收起。
- 向量重建改为分批生成向量、逐批回报进度(以前是一次调用闷头跑完、最后整表重写,看起来就是卡死);中途停止时不会把半成品写进知识库,原库保持可用。
- 拆书导入支持中断:停止后已入库的章节保留,并如实说明拆到第几章。
- 提示词按预算自动裁剪:以前提示词超出模型窗口时只打一条「已超出上下文预算」的警告,请求照样发出去。现在会按重要性从低到高真的削——知识库检索 → 后续章节预告 → 上一章结尾 → 故事架构(先整段省略,丢一段不够就把当前这段按句子边界截断并写明省略了多少字)。Canon 段与本章信息是保护段,只计数不裁剪;只剩它们还超预算时会如实提示。裁掉了什么会写进工作流日志,「本次上下文」预览里也会多一条说明。Canon 段内部仍由「本章资料包」按优先级裁剪,两者不重复。
测试
- 新增 17 个测试文件:记忆检索分层与精准召回、写作流水线(含验收)、schema 迁移、IPC 通道白名单、canon-store IPC、章节上下文包与预览、草稿状态、审稿修复、时间性 canon、组件与 store 测试等。
Vela v0.2.7
新增
- 拆书创作系统(第一期:拆书分析):参考小说现在可以逐章分析,结论落项目数据库(新增
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),与既有事实冲突的会照旧标成「冲突」等作者处理,不会自动当成已确认事实。 - 新增「补写圣经数据」:故事圣经页右上角一键处理「已定稿但时间线/角色状态/事实都没有痕迹」的章节——用这些章节的已定稿正文 + 章节要点 + 角色卡 + 蓝图重跑一遍写回。不改正文、不额外调用模型;要点里确实没有可用条目时会明说,而不是假装成功。
Vela v0.2.6
改进
- 编辑器选中文本的 AI 操作(润色 / 扩写 / 续写 / 对话)全面加强:
- 硬约束:只改表达、不改事实(人名、设定、能力、位置、伤势、物品、已发生事件、人物关系),保持视角/人称/文风一致,不做与要求无关的改写。
- 自动带上选区前后的上下文(前 400 字 / 后 200 字,标注为「仅作参考、不要改写」),改写在语境里更贴,续写不再凭空开始。
- 「续写」改为把结果插入到选区之后,不再覆盖原文;按钮文案在「替换 / 插入」之间随动作切换。
- 生成中可「停止」(真正中断请求并保留已生成部分),完成后可「重新生成」;关闭预览也会中断请求。
- 预览面板新增「补充要求」输入框:可临时追加一条额外指令(如「再克制一点」「少用排比」),回车即按新要求重新生成。
- 精修类动作(润色 / 扩写 / 对话)走「精修」用途模型,续写走「生成」用途模型,和设置页的用途绑定一致。
- 生成时关闭模型思考,各动作的提示词分别细化(润色保长度、扩写不加情节转折、续写只推进当前场景、对话区分角色语气)。
- 新增「去 AI 味」动作:针对 8 类 AI 痕迹(模板化转折、清单式罗列、神态/内心套话、万能副词堆叠、句长过于均匀、对白标签单一、排比式说明、段尾总结)做语义改写,长短句交错、用动作代替宣告,不新增情节、不改动事实。
- 「润色」提示词同步加入反 AI 腔要求(避免排比成串、段尾总结与高频套话)。
- 选区 AI 预览新增「对比 / 结果」切换:默认用逐词对比标出改了什么(新增绿底、删除红底加删除线),并给出「N 处改动 · +X / -Y 字」的统计,不用整段替换也能看清改了哪些字。「续写」是新增内容,不存在可对比的原文,仍只显示结果。
- 选区 AI 预览新增「逐条」视图:每处改动单独列出(原文 → 改写)并可逐个勾选,「全选 / 全不选」一键切换;点「替换所选」只把勾选的改动写回去,未勾选的位置保持原文——满意的部分采纳、不满意的部分留原样,不必整段替换。
- 对比只在生成结束后计算(流式过程中每来一段都重算会拖慢预览),文本超过 2 万字时退化为「整段替换」标记,不会把界面拖住。
- 差异对比统一成一套内核(
services/text-diff):选区润色的逐词对比与整章修稿的三栏合并共用同一份实现。段落级对齐算法从合并组件原样搬移(逐行比对确认 DP 与权重一行未改,行为不变),并补了回归测试锁住对齐结果。 - 整章修稿的三栏合并现在会在变更块内部标出「改了哪几个字」:原稿侧删除线、修稿侧加色;相似度太低(相当于整段重写)的变更块不做逐词标注,避免满屏彩色反而看不清。
- 删除两个从未被任何地方引用的死文件(
DiffViewer/MonacoDiffViewer),项目里只剩一套真正在用的对比实现。 - 助手改正文不再弹窗确认:
revise_story(联动调整剧情)与rewrite_draft(改写整章正文)都改成直接写入。改正文时工具会自动声明,不必再由模型记得设置edit_written_text,也不会再因为漏设而整次失败。防误改的约束仍在仓储层:已定稿/归档正文不可覆盖、读到写入之间内容被改过会重读重试、整次要么全写要么不写;每次改动都记录前后内容,可用「剧情调整记录」里的 id 撤回。 - 修复本地向量模型(Ollama 等)完全不生效的问题:以前用「有没有 apiKey」判断要不要做向量化,本地推理不填密钥就被当成「没有向量模型」——导入时不写向量、检索时也不算查询向量,语义检索永远退化成关键词匹配(本地向量模型等于白配)。现在按 provider / 能力判断(Ollama 或声明了向量能力的模型即可用),并且空密钥不再发送空的
Authorization头;导入、拆书、检索三条路径一并修正。 - 内置「去 AI 味」方法升级为 Humanizer-zh v2.5.1 的中文小说改编版:在原有的「先判断再动手」框架上,并入它的 29 条模式清单(意义膨胀、宣传腔、模糊归因、挑战展望模板、权威措辞、积极结论、否定式排比、三段式、同义词循环、系动词回避、虚假范围、被动与无主语、滑尾分析、预告式语句、AI 高频词、过度限定、填充短语、破折号等)、五条核心原则(删填充 / 拆公式 / 变节奏 / 信读者 / 删金句)与交稿前自检清单。改编为精简版(约 2.4k 字)以控制按段注入的 token 成本,保留小说最该盯的三类:神态套话、万能副词堆叠、段尾总结旁白。想要带完整示例的原版,把它的
SKILL.md放到~/.vela/skills/de-ai-tone/SKILL.md(并把开头name:改成de-ai-tone)即可整体替换内置方法。来源与 MIT 许可见THIRD-PARTY-NOTICES.md。 - 选区 AI 的「去 AI 味」动作同步补上 Humanizer 的其余模式:意义膨胀与广告腔、否定式排比与系动词回避、权威措辞与填充语、破折号滥用与 emoji/粗体/英文引号。
- 去 AI 味改写的分段预算改为按方法实际长度动态预留:方法来自可替换的 Skill,用户可能换成任意长度的 SKILL.md,写死预留(2500)会在换成长方法后把单次请求撑爆。
- 拆书列表的向量状态改为按知识库现状实时判断(原来存的是导入当时的快照,之后在知识库页补过向量也不会变,会出现「明明补好了还写着仅全文检索」)。文案同步改为「仅全文检索(未生成向量)」——原来的「未配置 Embedding 模型」在配了本地模型却没生成向量时会误导。
修复
- 修复选中文本的 AI 操作会把模型思维链(
<think>…</think>)带进预览、点「替换」时写进正文的问题;并补上onDone/onTruncated,长选区被截断时保留已产出内容而不是直接报「生成失败」,同时给出截断提示,避免把不完整的改写替换进正文。 - 修复气泡菜单的定位:紧贴窗口边缘时会溢出编辑器可视区;现在按实测尺寸做水平贴边,上方空间不足时改在选区下方展开,高面板也不会被窗口裁掉。
- 修复预览面板打开后把光标点回编辑器,会导致后续选中再也弹不出 AI 菜单的问题(现在会放弃该次预览并中断后台请求)。
- 修复写作第 1 章时提示词里「本章信息 / 后续章节蓝图 / 作者微操指导」三段没有被赋值的问题:模型收到的提示词里只有
{{chapter_info}}这类占位符,等于既没有本章章纲、也没有后续大纲约束,开篇容易跑偏。现在第 1 章与后续章节一样会注入这三段内容(这几段此前被误划进「非首章」分支)。 - 修复整章「AI 修稿」的「文风要求」一直没有注入(提示词里残留
{{writing_style}})的问题,精修不再缺少文风锚点。 - 提示词构建新增兜底:模板里任何未被赋值的
{{变量}}都会从提示词中移除,不再让模型把占位符当作正文内容;同时在工作流日志里明确提示是哪个提示词、哪些变量没赋值(主要用于发现自定义提示词里写错变量名)。 - 新增回归测试:校验每个提示词调用点都给模板变量赋了值,且构建结果不残留占位符。
- 修复知识库关键词检索:查询里只要出现一个单引号(或百分号、下划线这类 LIKE 通配符),拼出来的
text LIKE谓词就会失效,检索整体报错并静默返回空——写作时等于完全没有知识库上下文。现在改为先把查询拆成最多 8 个安全关键词(单引号、%、_、反斜杠一律剔除,词长与会话数都有上限),再用 OR 组合匹配。 - 修复带章节范围的知识库检索会把关键词条件顶掉的问题:
where()是覆盖式调用,第二次调用会把LIKE条件替换成纯章节范围,于是返回该范围内的任意文本块。现在拼成一个(关键词 OR …) AND (章节范围)谓词。 - 知识库检索结果改为按命中关键词数排序,相关度按命中比例给出(此前固定 0.5,界面上看不出差别);若过滤条件本身失效,会退化为本地匹配而不是直接返回空。
- 修正
vector-store头部注释:中文检索并非 BM25 全文检索,而是 DataFusionLIKE模糊匹配。 - 助手改写「已写正文」改为请作者确认:
revise_story只在本次真的动正文时才弹确认,作者同意后才落盘;整章改写rewrite_draft在开始执行前也会先确认。以前靠模型自己记得设置edit_written_text,漏设就整次失败。 - 剧情调整支持用章节号定位草稿:以前
draft只能用内部草稿编号,编号猜错就是「内容不存在」,整次调整白跑。现在编号不是草稿 id 时会退化为「该章最新的草稿」(编号本身就是草稿 id 时行为不变),调整记录里存的也是解析后的真实编号,撤回不会找错目标。 - 「内容不存在」现在会列出当前真正可用的内容(草稿编号与对应章节、已有蓝图的章节、已登记角色),助手可以自己改对,不必再让作者手动排查。
- 读到写入之间作者又保存过导致的「已有更新」不再整次失败:会自动重读最新版本重试一次;如果目标片段确实已经对不上,仍然整次不写,并明确提示需要重新读取。
- 修复整章「AI 修稿」把模型附带的说明写进正文的问题:以前只有「审稿驱动修稿」会剥离【修复说明】【待作者确认】,整章修稿这条路径只剥离了思维链,于是说明段落会被当成正文写进修订稿、出现在 diff 里(自定义修稿提示词要求在结尾附【待作者确认】时尤其明显)。现在两条路径共用同一套剥离逻辑,说明会被收集并在日志里提示,不会进入正文;如果模型只返回了说明、没有正文,直接报错不做无意义保存。
- 整章「AI 修稿」的内置提示词补上去 AI 腔要求(禁止清单式罗列、排比式设定倾泻、段尾总结、神态/内心套话、万能副词堆叠、对白标签单调,要求长短句参差、金句最多 1 句),并明确「说明请放在正文之后、用【修复说明】或【待作者确认】开头」——这样与用户自定义提示词的要求一致,不会被当成正文。该约束写在内置模板的 systemSuffix 里,即使覆盖了自定义修稿提示词也依然生效。
- 修复合并窗口的一个显示缺陷:变更块两侧行数不同(段落合并 / 拆分)时,逐词高亮会串行取到另一侧的内容,现在按「每一侧」分别切分行。
Vela v0.2.5
性能
- 定性审稿改为「审稿摘要持久化」:每次完整审稿后把既有章节时间线浓缩、需持续追踪的伏笔与仍在观察的事项单独存库;下一章审稿只注入摘要 + 摘要之后的增量 Canon + 当前章正文,不再每次重读全书时间线。
- 审稿摘要绑定 Canon 指纹;章节解除定稿或重置会改变底层设定时,对应摘要自动失效,下一章审稿回退到完整重建,避免沿用过期事实。
改进
- 移除定性审稿的「完整 / 快速」手动切换,改为按摘要自动增量加载,兼顾速度与全书连续性。
- 定稿自动登记角色时会过滤「黑衣男子」「瘦高汉子」这类临时称呼,不再污染角色卡,并在日志中提示跳过了几个。
- 长篇项目的全书梗概改为按当前章节取相关片段:有「第N章/卷」标记时截取邻近章节,没有标记时保留开头与结尾,写到中后期不再只看到开头。
- 写作提示词去掉重复注入:知识库片段、文风要求、全局写作指导只经模板的对应变量出现一次,不再同时出现在 Canon 段。
- 定性审稿新增分段进度与失败汇总日志,能看出卡在第几段、哪几段失败。
- 渲染进程新增全局异常与未处理 Promise 拒绝落盘,偶发崩溃更好定位。
- 生成预算的输出上限收敛到 32768,与服务商硬上限和 provider 侧钳制保持一致。
- 写作/审稿上下文改为按需注入:架构、世界观、角色架构、梗概的注入上限整体下调;动态部分只注入当前章节聚焦的角色状态、事实、时间线与剧情线,主角/对手以及近 5 章内有变动的条目始终保留。RAG 检索从 5 条降到 3 条、每条 800 字。
- 写作新增上下文占用日志(架构/Canon 字数与 token 估算),可以直接看到每次省了多少。
- 全书梗概的章节标记识别支持中文数字(第十二章/第一百零五章),拆书生成的梗概也能取到当前章节附近的片段。
- 蓝图角色列表里的描述性短语(如「周德布下的街面眼线」)会先解析成已登记角色名,再用于按需注入,不会把整句短语当名字。
- 写作提示词新增反 AI 味硬性规则:禁止清单式罗列("第一条……第二条……")、禁止解释性总结句、禁止排比式设定倾泻、控制金句密度(全章最多 1 句)、结尾不点题;内置模板同步补强。
- 内置 AI 痕迹检测从 3 类扩到 8 类:新增清单式罗列、神态/内心套话(眸中闪过 / 嘴角勾起 / 心中暗道)、万能副词堆叠(缓缓 / 淡淡 / 微微)、对白标签单调(说道 / 淡淡道)、转折/递进模板(然而就在这时 / 殊不知);审稿报告与去 AI 味修订都会带上这些标记、量化指标和修订方向。
- 写稿新增写前校验:章节蓝图里出现
{章纲目标}、第N章、待补等占位符时会直接阻断写稿并提示先补齐;章纲缺失/过短只提示、不阻断,避免把占位文本当真实剧情喂给模型。 - 新增 canon 记忆状态:事实条目带
status(active / outdated / contradicted / tentative)。定稿写回时会保守检测可能互相矛盾的事实,把双方标记为contradicted并在日志提示,内容不改写、不删除;outdated的事实不再注入提示词,contradicted/tentative注入时带标记。另提供db:canon-fact-mark-status供后续界面或 Agent 调整状态。
修复
- 紧急修复:定稿后处理「章节剧情要点 / 角色状态更新」因
max_tokens越界报错的问题;不再把模型配置里的上下文窗口误当成输出上限发送,未显式指定时交给服务端默认值,显式指定时夹到安全上限。 - 修复写作与审稿在长篇项目上「卡住」的问题:全书梗概/世界观等架构字段会按上下文预算截断后再注入,避免提示词从数千 token 膨胀到十万级导致单次生成耗时数十分钟。
- 知识库检索结果注入提示词时按条截断,避免单个超长片段撑爆上下文。
- 流式请求新增空闲超时看门狗:服务商长时间不返回数据时主动中断并提示,不再无限期卡在「调用 AI」。
- 修复 Canon 写回因
characterDeltas[].after.character缺失而整批校验失败的问题:现在用 delta 顶层的角色名兜底,单条异常不再拖垮整章写回。 - 写稿改为支持截断续写:正文撞到模型输出上限时在断点继续,而不是整章判失败。
- 后处理不再重试 4xx 客户端错误(参数非法、鉴权失败、模型不存在、余额不足),避免白白重试多次。
- 服务商报错改为可读提示:余额不足、鉴权失败、模型不存在、
max_tokens越界、域名解析失败等会给出明确原因与处理建议。 - 修复 AI 审稿跑几十分钟且结果解析失败的问题:审稿改为关闭模型思考、把单次输出上限压到 8192,JSON 被截断时自动续写补齐;同时让智谱/火山等服务商的
thinking:disabled真正生效(之前只对 deepseek 生效,导致审稿一直在默认思考模式下空转)。 - 定性审稿同样关闭思考、压低单段输出上限并接入截断续写,减少长时间空转与「输出撞上限」导致的分段失败。
- 修复「截断后续写」把章节写到目标两倍长的问题:正文写到目标字数的 95% 就不再续写,避免 3000 字的章节被续成 5000-8000 字。
- 修复两个合并弹窗缺少无障碍描述(
DialogDescription)产生的控制台警告。 - 修复渲染窗口关闭或渲染进程崩溃后,主进程仍向已销毁的帧发送流式数据、刷出成百上千条
Render frame was disposed日志的问题:发送前会检查帧是否可用,并在窗口关闭/渲染进程崩溃时自动中止进行中的 LLM 请求,避免刷屏日志和继续消耗 token。 - 修复同一章被写出两个同版本草稿的问题:双击或重复派发写稿时会在同一秒并发启动两个同名工作流,各自算出版本号 1。现在同名工作流在运行中会忽略重复启动。
- 修复「审稿驱动修稿」把【修复说明】【待作者确认】等元信息当成正文写进修订稿、出现在 diff 里的问题:现在只把【修复后正文】写进修订稿,说明段落剥离后放到日志。
- 修复模型「用量上限/安全体验模式」类 429(如智谱
SetLimitExceeded)被误判为可重试、且提示不明确的问题:现在不再重试,并直接提示到服务商模型激活页调整或关闭「安全体验模式」,或改用其他模型。
Vela v0.2.4.1
修复
- 修复向量索引把 embedding 维度写死为 2048 的问题,现在会自动适配模型实际维度,例如
bge-m3的 1024 维。 - 移除火山方舟内置的无效
doubao-embedding推荐,避免一键配置生成不可用的向量模型。 - 修复中文 TXT 小说按 UTF-8 强制读取导致拆书乱码的问题,现在自动识别 UTF-8、UTF-16、GB18030 和 Big5 编码。
Vela v0.2.4
新增
- 新增项目快照:可在设置中手动创建、恢复和删除本地快照,恢复前会自动备份当前状态。
- 快照覆盖小说数据库、项目提示词、拆书档案和知识库索引,默认保留最近 20 个快照。
- Agent 配置修改支持
dry_run=true预览,并统一进入剧情调整记录,可从历史面板整批撤回。 - 提示词自定义保存新增版本历史,每次覆盖或恢复默认前自动留档,可从设置中恢复旧版本。
- 新增故事圣经看板,统一汇总全书架构、角色状态、时间线、剧情线和关键事实,并支持全文筛选。
- 草稿箱支持解除定稿和永久删除;解除定稿只能从最后一章开始倒序执行,永久删除会同步清理关联修稿与审稿记录。
- 草稿箱支持把整章重置为“未生成”:保留章节蓝图,删除该章所有草稿、修稿、审稿、定稿投影和后处理记录,并只允许从最后一章开始倒序重置。
- 定稿前自动保存动态设定快照;解除定稿或重置章节时,会恢复角色动态状态、章节要点、时间线、事实、剧情线和摘要,避免回滚后残留定稿产生的“幽灵设定”。
- 新增内置持久化日志系统:主进程、界面、工作流和崩溃日志统一记录,支持级别与关键字筛选、导出、打开日志目录和清理。
构建
- Release 更新说明改为从
CHANGELOG.md对应版本章节自动提取,不再使用 GitHub 自动生成的提交汇总。 - 修复发布任务未检出仓库导致找不到 Release 说明脚本的问题。
性能
- 编辑器、知识库、拆书、审稿、大纲和合并视图改为按需加载,降低应用启动时的首屏包体。
- 拆书导入改为流式读取与拆章,并显示读取、拆分、向量化和入库进度,导入大文件时窗口保持响应。
- 拆书章节正文改为分页读取;超大章节不再一次性读取并渲染全部文本,完整复制和文风分析按块读取并主动让出事件循环。
修复
- 修复项目级自定义提示词只在打开设置页后才加载的问题;打开项目和工作流启动前现在都会确保全局与项目提示词已生效。
- 明确提示词优先级为「项目自定义 > 全局自定义 > 内置默认」,未设置用户版本时始终使用内置默认。
- 修复草稿箱删除失败的问题:旧入口只尝试归档且未按数据库草稿 ID 操作,现在普通草稿可直接永久删除。
- 修复大型拆书文件读取卡死的问题;无章节标题的长文件继续按单章处理,但预览与读取不会再一次性阻塞界面。
- 修复章节蓝图与“创作新章节”里的章节定位选项不一致问题,旧数据中的“开篇/结局/过渡”等写法会自动归一化。
- 修复模型流式请求遇到
ECONNRESET等瞬态断连时直接失败的问题;连接建立阶段和无输出阶段会自动退避重试。
Vela v0.2.3
构建
- 发布流程改为仅响应
v*版本标签;普通分支构建只上传 Actions Artifact,不再覆盖已有 Release。 - 发布前强制校验标签版本与
package.json一致,并新增类型检查、单元测试和 ESLint 质量关卡。 - 性能基准测试与常规测试分离,避免共享 CI 机器的负载抖动造成误报;本地可用
npm run test:perf单独运行。 - 标签构建显式禁用 electron-builder 隐式发布,正式 Release 统一由独立发布任务创建。
修复
- 清理现有 TypeScript / ESLint 问题,使质量关卡首次接入即可稳定通过。
性能
- Agent 流式正文按短时间窗口合并更新,减少每个 token 都触发的整页重渲染。
- 对话持久化改为合并写盘,生成结束时立即落盘,避免流式过程中反复序列化并写入整份会话。
- 移除渲染、IPC 和项目保存热路径上的调试日志,避免日志本身拖慢大项目操作。
- Agent 消息列表和工具栏改为按需订阅与记忆化渲染,输入区不会再随正文输出反复刷新。
- 章节蓝图编辑改用字段级差异判断,避免每次输入都序列化整组章节。
Agent 能力
update_config支持一次修改多项小说配置,并接受常用中文别名和旧版field/value调用。- 补全故事结构配置的读取、校验、保存与撤回链路。
- Agent 可直接打开设置、项目、知识库、拆书、角色、任务、日志、模型调用、导出和导入模块。
- 打开编辑器不再要求确认,并强化系统提示词中的模块调用规则,避免把明确任务退还给作者手动完成。
- 项目内文件写入改为直接执行,路径仍限制在当前项目内;模型密钥配置继续保留确认。
- 设置窗口改为固定工作区尺寸,切换模型、编辑器、提示词等页面时不再改变弹窗高度或排版。
Vela v0.2.2
这一版把界面整体重做,同时让完全不懂模型配置的新用户,第一次打开就能把模型接上。
全新界面(深海主题)
- 新增「深海」主题并设为默认:深海军蓝配青色强调,标题栏可一键切换深海 / 深空 / 深色 / 浅色 / 纸感五套配色。
- 页面重排:欢迎页、书籍总览、知识库总览、设置、审稿报告、Agent 输入区等信息层级更清楚。
- 可停靠面板:模型调用 / 日志 / 任务面板默认停靠在左侧「项目结构」下方,不再悬浮遮挡中间编辑区;底部面板默认高度 38% 降到 28%,写作区更宽。
- 细节打磨:列表错峰入场、按压缩放回弹、数字等宽对齐;焦点环、光标、滚动条、选区都跟随主题;系统开启「减少动态效果」时自动降低动画。
- 可读性:四套主题的正文 / 次要文字 / 弱化文字对比度均不低于 4.5:1。
一键配置模型
- 粘贴 API Key(模型名、接口地址可一起粘)自动识别服务商、拉取真实模型列表,并一次性写好模型池、默认模型与用途绑定。
- 首次启动检测到没有模型时自动弹出配置向导;Agent 新增 configure_model 工具,也可以直接用自然语言让它帮你配。
- API Key 只保存在本机
~/.vela/models.json,不会上传到任何服务器。
下载
| 平台 | 安装包 |
|---|---|
| Windows 10 / 11 (x64) | Vela-0.2.2-Windows-x64-Setup.exe(安装版)、Vela-0.2.2-Windows-x64-Portable.exe(免安装) |
| macOS Apple 芯片 (M 系列) | Vela-0.2.2-macOS-arm64-Installer.dmg |
| macOS Intel 芯片 | Vela-0.2.2-macOS-x64-Installer.dmg |
安装提示
- Windows:安装包没有代码签名,SmartScreen 提示时点「更多信息」→「仍要运行」。
- macOS:没有 Apple 公证,首次打开请右键点应用选「打开」;若提示「已损坏」,在终端执行一次:
xattr -dr com.apple.quarantine /Applications/Vela.app完整更新日志
https://github.com/Kimcop-kc/vela/blob/master/CHANGELOG.md
如果觉得好用,欢迎点一个 Star 支持一下,也欢迎把使用中的问题和新功能想法反馈给我(微信 / QQ 见仓库首页)。
Vela v0.2.1
Vela v0.2.1 自动构建(Windows x64 / macOS x64 / macOS arm64)