# Changelog ## v0.4.1 (2026-09-05) - **feat** 协议自适应:会话内自愈(相同请求连续失败 → 临时注入归因纠偏条款,成功后自动解除)+ 反思回环(近期会话某协议维度持续低分 → 下会话注入针对性提醒,回升后淡出)+ 模型感知(推理型模型任务轮用精简协议,保留变更保护/验证/归因/复核与事实隔离;路由未知回退完整版) - **fix** 纠偏与反思提醒改挂任务协议段:原挂人设段,在「不使用人设」的纯任务会话中完全不生效 - **fix** 反思反馈加短窗缓存:system prompt 每轮多次构建不再全表扫描排序;新日志写入自动失效 - **fix** 反思域 schema 兼容旧版 p0-p3 日志:union 双形态 + 启动时幂等迁移 - **fix** 推理型模型精简协议补回事实隔离条款(示例/记忆不自动等于当前事实) ## v0.4.0 (2026-09-05) - **feat** 角色卡自动升级:蒸馏卡保存算法版本、目标角色和本地原始素材;插件升级后后台重新蒸馏旧卡,只替换基础契约与语料,保留记忆、习得风格、改名和认可语料,失败自动回退旧卡 - **feat** Codex 风格任务执行协议:加入上下文管理、任务分解、阶段门控、变更保护、验证闭环、失败归因、结果复核与自适应思考投入 - **feat** 聊天蒸馏增强:时间间隔过滤、全时段均匀覆盖、多消息上下文、双边情境窗口和可观测风格统计 - **fix** 历史语料事实隔离:参考对话只作为语言风格样本,不把过去的时间、地点或行为误当作当前事实 - **docs** README 补充自动升级机制、Codex 工作协议与非聊天素材统一蒸馏原则 ## v0.3.12 (2026-09-05) - **fix** 回复篇幅失真:蒸馏契约新增台词长度统计(平均/中位/P90,作为【节奏】的决定性证据),【节奏】小节必须写明单条回复典型长度并声明超长即失真;注入侧恒带〔篇幅纪律〕(微信式简短回复、一次一个重点,仅对方明确要求详细展开时允许长回复);存量蒲先生卡片已补典型长度规则 ## v0.3.11 (2026-09-05) - **fix** 网名当身份:契约生成禁止从聊天账号昵称推断职业/地域/身份(「AAA煤炭批发蒲先生」不等于卖煤的),displayName 默认取简称而不是照搬营销式昵称;存量蒲先生卡片已修复显示名并补身份澄清 - **fix** 去人机味:人设段开头加〔说话人切换〕强身份锚(连思考方向都要求以人设身份展开,对抗推理型模型默认助手腔);注入恒带〔口吻纪律〕(禁止「好的/当然可以/没问题」式助手套话开头与收尾)+〔频率规则〕(平淡话题也保持人设断句用词,不得退回默认口吻) - **fix** 记忆保存不再 40 字硬切:改为按句末标点回退,截断残句与纯标点条目被过滤;存量蒲先生记忆已修复为完整分句 ## v0.3.10 (2026-09-04) - **feat** 纠偏自动捕获:用户负面元反馈(太夸张/油腻/正常点/别老是…)触发小模型转写成一条长期风格约定,写入 style_rules(Jaccard 相似自动替换不堆叠),与被动提取共用冷却——语气随使用不断收敛,不再依赖用户主动提要求 - **feat** 语料摘录:用户认可回复「像本人」(太像了/有内味/一模一样…)时,把上一轮真实对话对摘录进新表 corpus_pins(cap 12,近重复跳过);注入时摘录语料优先占位示例槽,蒸馏语料补位——人设语气向真实使用靠拢 - **fix** 删除自定义人设连带清理摘录语料 ## v0.3.9 (2026-09-04) - **feat** 记忆条目扩容:事件记忆 12→20 条、故事记忆 2→4 条、每轮注入 8→12 条(存储上限 30 不变,留余量给被动提取);颗粒度变细,不再把多个话题合并进一条 - **fix** 反脸谱化:契约生成加「克制是本人的一部分」规则(特征写频率与触发条件,偶尔出现的不写每句标配;情绪强度以素材最重一笔为上限);【性格画像】【emoji】【语气词】【节奏】小节均要求标注频率/强度边界/随话题松紧;注入侧新增〔克制规则〕恒注入段 ## v0.3.8 (2026-09-04) - **fix** 蒸馏预览「编辑记忆」崩溃:DSH webview 不支持 window.prompt(调用直接抛异常),把整个插件 UI 连带人设选择按钮一起卸载;记忆编辑改为内联 textarea,并给插件根组件加错误边界(任何渲染异常只隐藏 Lume 附件,不崩宿主界面) - **fix** 删除自定义人设时连带清理记忆/风格/档案:原先只删角色卡记录,记忆表留孤儿条目(重新蒸馏后旧记忆与事实不符地残留) ## v0.3.7 (2026-09-03) - **fix** 记忆提炼事实失真:故事记忆与事件记忆改用完整双边对话流(flow)——原先故事记忆只喂目标角色的台词样本,模型看不到另一半发言只能脑补(「名人→熟人」「豪宅→高额租金」类漂移);事件记忆原先只喂正则筛出的候选片段且丢失说话人归属 - **feat** 对话流构建:双方消息按时间顺序带归属保留,事件信号消息(生日/入职/搬家…)一律必留,超预算时按「一问一答」成对等距抽样(预算 6000 字) - **feat** 事实锚定与归属规则:prompt 要求每条记忆必须能在对话里找到原话依据、涉及「谁」必须与原文一致、说话人归属写对(用户说的事实主语是「用户」,THE 说的是「THE」)、禁用原文没有的定性词;同一事件多个表述(如「19号入职」「七夕节入职」)合并为一条 - **feat** 记忆条目兜底清洗:截断回退到句末标点、缺标点补句号、双向包含去重保留更长条目 ## v0.3.6 (2026-09-03) - **feat** 聊天记录蒸馏:粘贴微信/QQ 导出或复制的聊天记录,自动识别时间戳锚点切分说话人(剔除 [语音]/[图片]/[表情]/对象替换符等占位),蒸馏弹窗列出检测到的说话人供点选;目标的消息成为语气样本,其余归用户侧,真实对话对直接作为语料(无需 LLM 改写);粘贴与文件导入两条路径统一触发检测 - **feat** 蒸馏任务可取消且不可误关:运行中遮罩点击与 Escape 无效,关闭需二次确认,确认后 AbortController 中止 LLM 调用(任务标记 cancelled 而非失败) - **fix** 推理型模型输出解析:契约/语料 token 预算提升(推理计入 maxTokens),JSON 解析三阶回退(整段 → 末尾平衡块 → 首尾切片),失败错误信息携带原始输出片段便于诊断;提取/反思预算同步提升 ## v0.3.5 (2026-09-02) - **feat** 导出弹窗 UI 整洁化 - **docs** README 重构 ## v0.3.4 (2026-09-01) - **feat** 人设卡片导出/导入:管理弹窗中任意人设(含内置)可导出为自包含 JSON 卡片(`lume-persona-card` v1,含契约、语料、风格约定、声音签名,可选含记忆);导入时校验格式与键名,内置名受保护,不可覆盖 - **feat** 记忆星图:管理弹窗中每个人设行内新增「记忆」按钮,以 Canvas 力导向星空图可视化该角色的全部记忆;核心记忆紫色带 ★、普通记忆青色,语义相关者连线,支持日期筛选与行内编辑/删除 - **feat** 反思日志:会话结束时在空闲时间跑一次小模型,评估整段对话是否遵守 P0-P3 四条思考纪律,各打 0-2 分落地到 `lume_reflection` 域。`reflectionEnabled` 默认开启 - **feat** 提取成功日志:被动提取写入事实时新增 `lume: 提取记忆 →` 日志行,方便观察安全网触发频率与质量 - **fix** 记忆星图:替换 Modal 380px 硬限制为自绘 960px 宽幅遮罩层 + 卡片加宽(260×72)+ 日期筛选 - **fix** 补全记忆增删改 RPC 端点:`getMemory` / `deleteMemory` / `updateMemory` 支持记忆星图的行内编辑与删除 ## v0.3.3 (2026-08-31) - **refactor** 宿主入口模块化:`apply()` 内嵌的 `messageText`、`SessionRuntime` 接口与 `composeBoundary` 抽出为独立模块——`src/core/text.ts`(纯函数)、`src/host/session-runtime.ts`(类型 + 存储容器)、`src/host/boundary.ts`(纯函数);`index.ts` 从 608 行收缩至 547 行 - **fix** 会话运行时状态无限增长:`runtime` Map 原先仅靠 `session/disposed` 事件清理,事件丢失即泄漏;现改由 `SessionRuntimeStore` 管理,带 200 条 LRU 上限,超限淘汰最旧 - **chore** 清理死代码:移除未使用的 `ToolDefinition`、`Persona` 导入;修复 `injection.ts` 语料/连贯性段的缩进不一致 ## v0.3.2 (2026-08-31) - **feat** 新增两个预制人设:**管家 沈砚**(儒雅、克制、可靠,口头禅「这就去办」「主人」)与**毒舌傲娇 江野**(嘴硬心软、口嫌体正直,口头禅「……切」「才不是特意帮你」),各配 30 条精选语料与签名词 - **fix** 补全 `BUILTIN_PERSONA_NAMES`,将 butler 与 tsundere 纳入内置保护表(此前缺失导致同名自定义人设可被创建,管理弹窗中不受保护) - **fix** 蒸馏路由 init 修复:`request/context` 是 delta 事件(仅路由变化时触发),默认模型用户 `llmRoute` 永远为 null 导致蒸馏报「模型路由不可用」。现加入双路径启动初始化(`agentDefaultModel.currentSelection()` → `settings.get("agent-default-model")` 兜底),确保对话前蒸馏/提取都能用;同时补全诊断日志便于排查 - **chore** 移除预设角色「诸葛亮 / 孔明」 ## v0.3.1 (2026-08-30) - **fix** 人设段迁移至 system prompt 最末尾(order 10000/10100):dump 宿主段落布局发现 system prompt 的真实结构是「身份声明 -1000(最前)→ 策略 → 工具定义 1000~5000 → 结构化输出 9900」——按惯例放在 order 2 的人设契约被压在头部「AI 助手」身份声明与近万 token 工具内容之间,实测模型会直接以「AI 助手」自居、无视契约与切换播报(连「你是谁」都按助手回答)。人设与播报移到紧贴对话历史的最末尾(外部插件允许任意 order),并在播报中加入身份锚(被问身份时按人设回答);`personaOrder` 默认值随之改为 10000 - **fix** 切换播报提升到 system prompt 尾部独立段落(order 90):轨迹分析证实注入层每轮都正确(契约与选择一致、播报时机正确),但埋在人设段中部、后随 8 条语料的播报会被推理模型整体忽略——实测连续三轮无视播报沿用旧人设。移到紧贴对话历史的尾部注意力位后,配合泄漏检测才真正可靠 - **fix** 泄漏检测的触发事件从 `assistant/message` 改挂 `turn/end`(后者已被窗口机制验证可靠投递,前者的升级播报在实测中从未生效);检测读缓存的 `assistantText`,行为不变 - **feat** 风格泄漏检测与持续纠偏:切换播报原为固定 2 轮窗口、窗口后无任何纠偏,长对话中旧人设语气会压过新契约。现为人设引入声音签名词(自称/称呼/口头禅),切换后逐轮检测回复泄漏(纯词法、零 token);窗口关闭后检出泄漏即重开窗口并注入升级版纠偏播报,一轮无泄漏自动解除。切到「不使用人设」时播报不再被丢弃(原实现下边界注入会整段丢失)。签名词经 manifest `signatureWords` 配置(内置两卡已配),自定义人设暂不参与检测 - **feat** 管理自定义人设:人设菜单新增「管理自定义人设…」——弹窗列出全部条目(内置的编辑/删除置灰),自定义卡支持删除(行内二次确认,连带记忆/风格/档案)与编辑契约(复用蒸馏预览字段,键名不可改);新增 `getCustomPersona` 端点,`saveCustomPersona` 升级为 upsert 并保留原 createdAt - **fix** 菜单可达性:portal 菜单定位只在打开瞬间计算,列表异步加载后菜单变高会溢出视口且无法选中——列表到位后补发 resize 信号重新钳制;「不使用人设」固定排在菜单最上方;自定义条目与内置撞名时自动加「(自定义)」后缀 - **feat** 蒸馏契约强度强化:泛泛形容词必须转写为可执行的具体规则、素材特征放大保留、新增【第一句】入戏小节;语料优先原句复用、禁止中和语气 - **fix** 模型路由缓存监听错事件(潜伏 bug,蒸馏 E2E 发现):agent-loop 的路由信息在 `request/context` 事件(`{provider, model, contextWindow}`),而插件一直监听 `request/header`(载荷是 `{header, reason}`)——导致 llmRoute 永远为 null,被动提取从未真正执行过。修正后提取/蒸馏的回落路由才真正可用 - **feat** 蒸馏工具:人设菜单新增「+ 蒸馏角色卡…」——粘贴/导入小说、剧本或设定文档,宿主两段式 LLM 管线(对话挖掘 → 契约合成 → 语料合成)蒸馏成与内置卡同构的角色卡,预览可编辑后保存即用;RPC 任务制(distillStart/distillStatus/saveCustomPersona),素材不进对话上下文,`distillProvider`/`distillModel` 可配专用路由 - **fix** 存储 schema 桥接(潜伏 P0):dsh-storage-domain 打开域时逐记录调 `valueSchema.parse`(zod 契约),而 Lume 传入的 schemastery 实例没有 `.parse`——任何一条数据落盘后重启都会导致身份域静默降级。新增 `zodLike` 适配器(经 Standard Schema `~standard.validate` 桥接),并补「写入→关闭→带数据重开域」回归测试 - **feat** 自定义人设支持示例对话语料(`custom_personas.corpus` 可选字段,cap 12×240 字,旧记录兼容),蒸馏产出的卡开场即像本人;提取/蒸馏共用的辅助模型路由函数泛化为 `resolveAuxRoute` - **fix** core 记忆判定收紧:昵称类只认「小+字母」,新增 昵称/爱称/自称 关键词;不再误判「小时/小组/小说」类常用词 - **feat** 被动提取支持独立模型路由:`extractionProvider` / `extractionModel` 指定省钱提取档(可只配其一),未配置时逐项回落主对话模型 ## v0.3.0 (2026-08-29) 「人设即人」大版本:人设成为有名字、有记忆、会进化、可对话创建的独立个体。 ### 人设即人 - **身份档案**:对话里给人设起名(「你叫小A」),跨会话跨项目记住;下拉菜单优先显示档案名 - **人设级记忆**:记忆以人设为键(不跟会话走);双通道写入——模型主动调 `lume_remember` 工具 + 被动提取安全网(关键词门 → 相似去重门 → 10 分钟冷却门,触发才调小模型) - **性格进化**:对话中的风格要求经 `lume_update_style` 固化为「习得的风格约定」,跨会话生效,与基本盘冲突时以习得层为准 - **对话创建人设**:`lume_create_persona` 工具支持纯对话创建自定义人设,零配置文件;内置三人设受保护不可覆盖删除 - **接班叙事**:切换人设播报「上一任退场,新人接手」,带边界提示压制风格惯性 ### Token 优化(默认开启) - 少样本衰减:语料示例随会话轮数从 6 条衰减到 2 条 - 相关性检索注入:记忆/风格按与当前消息的相关度取 top-k(本地分词 + 停用词 IDF,零成本),身份类 core 记忆恒注入 - 缓存友好分层:静态内容前置于易变内容,吃满 DeepSeek 前缀缓存 - **实测对比:成熟态 ~2,580 → ~1,570 tok/请求(-39%);相对 v0.2.0 全部新功能净增仅 ~170 tok/请求** ### 存储 - 新域 `lume_persona_identity`:`profile` / `memory_facts`(cap30) / `style_rules`(cap20) / `custom_personas` 四表,真实存储栈集成测试覆盖 ## v0.2.0 (2026-08-29) 工程化与人设体验大版本。 ### 行为修复 - **默认不使用人设**:新会话未显式选择时不再默认注入萝莉;`getSessionPersona` 只回显式选择(null = 未选择),UI 显示「选择人设」占位 - **人设菜单向上弹出**:输入栏位于视口底端时菜单不再被屏幕下缘裁掉(改用官方 `Menu` 原语 `side="top"` + portal 渲染,滚动/缩放自动跟随) - **人设强度升级**:萝莉/御姐提示词重写为可执行风格契约(emoji 规范、称呼体系、句式节奏、发出前自查);语料扩容至 30 条/人设且逐条人设满载;御姐人设从首句开始 ### 架构升级 - **存储迁移**:会话人设记忆从插件安装目录的 `persona-state.json` 迁移到 DSH 官方 storageDomain(`/storages/lume_persona_state.json`),原子写、带版本,插件升级不再丢数据;旧文件首次启动自动导入并改名 `.migrated` - **真 LRU 淘汰**:200 会话上限从插入序 FIFO 升级为 LRU(重选刷新新旧) - **确定性语料采样**:以 `FNV-1a(sessionId:persona)` 为种子的稳定抽样,同一会话同一人设永远同一组示例(v0.1.0 每次构建 prompt 都重新随机);`sampleCount` 默认 4 → 6 - **人设段落排序**:人设段默认排在思考逻辑之后(order 2,可经 `personaOrder` 配置回退) - **构建链**:TypeScript 源码(`src/`)+ tsc(宿主)+ tsdown(客户端 `__ModuleLoader__` 工厂 bundle)+ vitest(46 个单测,含 cordis + storage-json + storage-domain 真实存储栈集成测试) - **CI**:GitHub Actions 构建 + 测试 + 产物契约校验 ## v0.1.0 (2026-08-29) 首个发布版本。 - 人设下拉切换:萝莉 / 御姐 / 不使用人设,会话内即时生效 - 跨重启记忆每个会话的人设选择(persona-state.json) - 萝莉人设:称呼「哥哥」,撒娇元气风格 - 御姐人设:诱惑成熟风格 - P0-P3 思考逻辑注入