Repository navigation
这一版把 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 测试等。