RikkaHub 更新站
当前版本:2.2.118
发布时间:2026-07-04T14:17:01Z
更新清单:
https://rikkahub.puremilkchun.top/update.json更新内容
# Changelog
## [Unreleased]
### Release 275
- 修复书本记忆时间线维护只写入少量事件的问题:维护结果改为按事件 ID 对齐,避免标题轻微不一致导致落库失败
- “只补未标注”现在会尽量覆盖剩余未标注事件;模型漏返回时会使用同段/前序故事时间做保守兜底,保证时间线可排序
- 放宽时间线维护单段超时与输出长度,提高长时间线批量维护的稳定性
- 调整时间线维护进度文案,避免把事件维护误显示为“消息”维护
- Version bumped to 275 (`2.2.118`)
### Release 274
- 重要提醒:本版起 PM 版使用独立安装包身份,不再覆盖官方 RikkaHub;老 PM 用户请先在旧版本中导出备份,再下载安装新版 PM,并在新版中导入数据
- 修复 PM 版安装包会覆盖官方 RikkaHub 的问题,后续 PM 版可与官方版并行安装
- 优化书本记忆时间线的右侧快速刻度,收拢态减少误触,拖动时邻近刻度平滑展开
- 修正时间线浮动预览卡位置与宽度,避免遮挡主体内容或挤成单字宽度
- 时间修正入口改用时间选择组件,减少手动输入故事时间的成本
- 时间线页禁用横向翻页手势,降低拖动刻度时误触切页的概率
- Version bumped to 274 (`2.2.117`)
### Release 271
- 新增中度模式:5 个 Plan 并行生成 + Judge 选最佳方案 + 写作输出
- 简化澄清 Agent:移除结构化编辑、用户画像访谈、diff 审查等复杂功能,仅保留主动提问
- 中度模式排除 ask_user 工具,防止提问循环
- 统一故事推理深度为三档切换(轻度/中度/重度),移除独立的关闭开关
- Version bumped to 271 (`2.2.114`)
### Release 270
- 轻度模式修复:排除 ask_user 工具,防止生成后反复提问进入循环
- 轻度模式修复:先生成正文再事实审核,审核不通过则重新生成
- 重度模式 Planner prompt 优化:新增否定处理、视角切换、详细描写等指令
- 建立 promptfoo 提示词评估体系,覆盖 6 个 Agent(51 个测试用例,92% 通过率)
- 优化用户偏好分析 Agent(穿着偏差检测),通过率从 62.5% 提升至 100%
- Version bumped to 270 (`2.2.113`)
### Release 269
- 新增故事推理深度切换(轻度/重度),在模型与生成控制面板中可选
- 轻度模式:跳过规划循环,直接生成 + 并行事实审核,响应更快
- 重度模式:保留完整的规划→写作→审查→修订流水线
- 优化写作管线,移除冗余的聚焦步骤,减少一次 AI 调用
- Version bumped to 269 (`2.2.112`)
### Release 268
- 修复规划和写作过程状态偶发不显示的问题,状态流统一绑定真实会话,避免页面订阅到临时空状态
- 加载区由生成任务、处理状态和未完成工具共同驱动,避免 loading 状态瞬时不同步导致过程面板没有容器
- Planner / Workshop 状态更新时更稳定地露出底部过程区,同时避免生成结束后旧 trace 常驻
- Version bumped to 268 (`2.2.111`)
### Release 267
- 等待区工具展示回到原生工具链路,复用 `ChatMessageToolStep` 的图标、动画、批准按钮和结果弹层
- 聊天加载区镜像当前未完成工具,让用户等待时也能看到工具正在调用或等待批准
- Planner / Workshop 过程更新时主动露出底部加载区,避免剧情规划原始流藏在屏幕外
- Version bumped to 267 (`2.2.110`)
### Release 266
- Planner 闭环改为可见的原始流式过程,展示草案、审稿和修订轮次的真实模型输出
- 局部写作循环接入 FocusBuilder、DraftWriter、LocalCritic、RevisionWriter 和 ContinuityChecker 的流式片段
- 聊天加载动画下方的轨迹区改为动态原文窗口,保留阶段提示,同时显示正在生成的 JSON / 正文 / reasoning chunk
- Version bumped to 266 (`2.2.109`)
### Release 265
- 局部写作循环默认开启,并补齐 `enableLocalWritingWorkshop` 的 DataStore 读写,避免设置重启或恢复后静默回到传统生成流程
- 新增 V4 设置迁移,老用户和旧备份恢复时会自动启用局部写作循环
- 聊天加载动画下方新增局部写作循环实时轨迹区,展示 Planner 蓝图、聚焦、初稿片段、审稿、修订和连续性检查等过程摘要
- Version bumped to 265 (`2.2.108`)
### Release 262
- MCP 设置页顶部导入和新建入口补充明确中文语义,避免无描述图标按钮
- MCP 服务器滑动操作补充“取消删除 / 删除 MCP 服务器”语义,删除图标使用危险色
- MCP 服务器编辑、请求头删除、工具详情展开收起补充明确操作描述
- 搜索服务详情页删除入口使用危险色,和普通测试/编辑操作拉开层级
- Version bumped to 262 (`2.2.105`)
### Release 261
- 快捷消息列表的更多操作入口改为“快捷消息操作菜单”,避免复用技能页语义
- 技能列表的更多操作入口改为“技能操作菜单”,让读屏与自动化语义更准确
- TTS / ASR 供应商删除菜单项使用危险色,和编辑操作拉开视觉层级
- 保持快捷消息、技能、语音供应商的管理逻辑不变,仅优化操作表达
- Version bumped to 261 (`2.2.104`)
### Release 260
- 设置模型页的清除模型入口补充中文语义描述,避免无描述小图标按钮
- 模型覆盖配置的编辑/移除入口统一中文语义,移除操作使用危险色提示
- 错误卡片复制按钮、通用选择器展开按钮、主题列表操作补充明确 contentDescription
- 继续修正高频设置页和通用组件中的原型感细节,不改动业务逻辑
- Version bumped to 260 (`2.2.103`)
### Release 259
- 聊天消息搜索、模型选择、表情搜索等高频入口清理英文 contentDescription,统一为中文产品语义
- 用户头像和侧边栏昵称编辑入口补充明确操作描述,降低图标含义猜测成本
- 继续收敛全局通用组件中的原型感表达,不改动业务逻辑和生成流程
- Version bumped to 259 (`2.2.102`)
### Release 258
- 搜索服务列表的更多操作按钮补充明确语义,避免无描述图标按钮
- 搜索服务删除菜单项使用危险色,与编辑操作拉开视觉层级
- 供应商列表的清空搜索、导入、新增和拖拽排序入口补充中文语义描述
- 清理供应商页残留的英文 `Clear` contentDescription,统一为中文产品语义
- Version bumped to 258 (`2.2.101`)
### Release 257
- 供应商配置页的 API Key / Private Key 显示隐藏按钮补充明确语义,提升可访问性和自动化可测性
- 抽出统一的密钥显隐按钮,避免 OpenAI、Claude、Google 配置页重复实现不同语义
- Vertex AI Service Account JSON 导入按钮补充导入图标,与备份和资源导入入口保持一致
- Version bumped to 257 (`2.2.100`)
### Release 256
- 安全快照卡片的预览、恢复、导出、删除操作补充统一图标,降低纯文字操作造成的原型感
- 安全快照删除操作使用危险色,和预览、恢复、导出等普通操作拉开层级
- 安全快照刷新与恢复/删除确认弹窗同步使用图标化操作文案,提升操作语义一致性
- 助手提示词架构入口去除裸 `?` 字符,改为帮助图标加“说明”文案
- Version bumped to 256 (`2.2.99`)
### Release 255
- 书本记忆台的扫描、取消、重置、确认、拒绝和删除操作补充统一图标表达,降低纯文字按钮造成的误读
- 记忆维护操作区改为可换行布局,窄屏下不再把多个长操作硬挤在一行
- 用户画像删除操作使用危险色和删除图标,与普通确认/拒绝操作拉开层级
- 清理未使用的重置维护 UI helper,减少临时实现残留
- Version bumped to 255 (`2.2.98`)
### Release 254
- 聊天底部输入栏去除 `M`、`澄` 文字图标,改为语义明确的模型控制与澄清 Agent 图标
- 底部三个圆形操作按钮补充统一 contentDescription,提升无障碍语义和自动化可测性
- 聊天顶栏高频入口的英文占位描述改为中文产品语义:书架、书本纵览、退出预览和新建书本
- 保持原有聊天、模型选择、澄清 Agent 和生成流程不变,仅优化 UI 表达与入口语义
- Version bumped to 254 (`2.2.97`)
### Release 253
- Planner 内置“用户输入解释”第 0 步:先判断用户本轮输入是推进指令、角色台词、正文素材、剧情缩略稿还是澄清修正
- 输入识别器支持“某某说道 / 笑道 / 说着……”等自然中文小说句式,能把用户写下的台词和动作转成必须写入正文的执行合同
- Planner 审稿会检查 mustIncludeLines 是否逐项安排到 storyOutline,避免 Writer 从用户指定台词或动作之后续写
- 小写作循环的 Critic / Revision / 连续性检查器都会读取 Planner 执行合同,缺失用户指定内容时会打回修订
- 增加真实用例回归测试,覆盖“卢修斯说道……”和“卢修斯说着把……”这类输入语义分流场景
- Version bumped to 253 (`2.2.96`)
### Release 252
- Planner 最高优先级改为“先读懂用户本轮输入”,用户输入成为本轮生成的主文本源
- 明确记忆、角色卡、世界书和章节目标只能解释、支撑、约束用户输入,不能盖过用户输入
- Planner prompt 前置展示用户本轮输入和已识别输入约束,减少被资料包带偏的问题
- 审稿 Agent 增加用户输入一致性检查,要求 inputReading、storyOutline、requiredDramaticAction 和 expansionStrategy 都围绕用户输入展开
- 本地兜底审稿增加用户输入相关性判断,防止 Planner 看似通过但实际绕开用户本轮内容
- Writer 执行合同补充“用户本轮输入是正文主文本源”,进一步约束小写作循环
- Version bumped to 252 (`2.2.95`)
### Release 251
- 将 Planner 从保守执行器调整为“编剧导演型 Planner”,优先把用户简略输入转译为高质量写作蓝图
- Planner 新增用户输入解读、叙事功能、缩略稿扩写策略、叙事价值和细节预算字段
- 支持把用户输入识别为剧情缩略稿,并指导 Writer 保留关键经过、补足人物反应、场面张力和节奏过渡
- 将“每轮必须推进事件”改为“每轮必须产出叙事价值”,允许推进、蓄力、揭示、转折和回响等不同节奏
- 审稿 Agent 不再一味压缩和保守,重点检查规划是否有叙事价值、是否正确扩写用户缩略稿
- 本地兜底审稿会识别过度谨慎计划,Normal 模式下避免默认停在等待用户继续
- Version bumped to 251 (`2.2.94`)
### Release 250
- Planner 增加草案、审查、修订闭环,最多进行 2 次规划修订
- Planner 审查发现必须确认用户意图时,会进入现有澄清面板;用户回答后重新进入规划链路
- Planner 和审查阶段提高 reasoning 等级,提升剧情方向判断和用户输入语义遵从
- 本地写作循环接入 Planner 执行合同,避免小循环绕开规划直接写作
- 本地写作循环只注入当前回合相关角色状态,减少未出场角色误入规划或正文
- 压缩聊天底部状态气泡与输入栏间距,并让顶栏滚动背景保持透明
- Version bumped to 250 (`2.2.93`)
### Release 249
- 书本记忆台新增“人物”子项,角色卡作为书本记忆的一部分统一管理
- “人物”页复用角色卡原有新增、编辑、删除、全局更新和自定义更新能力
- 书本记忆“重置维护”改为可选择范围,支持单独重置关系、故事事件、场景、章节意图和用户画像
- 故事记忆查询工具 `lookup_character` 增加角色卡兜底,避免角色卡存在时仍返回“无记录”
- Version bumped to 249 (`2.2.92`)
### Release 248
- 小写作循环新增显性阶段状态:聚焦、初稿、审稿、修订、连续性检查和复查会显示在生成状态中
- 优化澄清 Agent 提示词:主动识别高价值澄清点,减少泛泛、装饰性或模型可自行承接的低价值问题
- 澄清 Agent 后台判断提高 reasoning 等级,用于更稳地判断用户在意点和关键决策风险
- Version bumped to 248 (`2.2.91`)
### Release 247
- 修复局部写作循环失败时可能把用户输入原样当作 AI 回复的问题
- 收紧 Draft Writer 上下文,降低长上下文把正文带偏的概率
- 强化用户输入为角色台词、动作或必须写入正文内容时的处理规则
- 连续性检查接入书本记忆摘要和角色卡状态
- FocusBuilder 改为中文提示词,并聚焦本轮唯一写作焦点
- 模型设置页新增“局部写作循环”开关
- Version bumped to 247 (`2.2.90`)
### Release 226
- 修复故事 Writer 仍把用户原文当成正文续写起点的问题:生成前会把最后一条用户输入包装为“写作意图 / 剧情素材”
- Writer 现在会被明确要求从当前场景开始,把用户输入自然容纳进正文,而不是从用户输入之后继续写
- 针对“角色台词 / 动作 / 情节片段”补充回归测试,确保 mustInclude 内容不会只被当作含义参考
- Version bumped to 226 (`2.2.69`)
### Release 225
- 优化剧情选项气泡的展开层:改为更宽、更高的纵向候选面板,长选项可读性更好
- 修复 AI 消息三点菜单内容过多时无法继续下滑的问题
- 书本记忆台增加“重置维护”入口,可清除当前书本扫描断点并重新维护记忆
- 增强用户输入语义识别,支持“很好很好,卢修斯说道,……”这类叙述式角色台词,并强制 Writer 从当前场景写入正文
- 收紧 Planner 给 Writer 的细节合同,减少无关微动作、光影和声响细节挤占剧情推进
- Version bumped to 225 (`2.2.68`)
### Release 224
- 收紧故事记忆写入质量:关系事实按“主体 + 对象 + 关系类型”去重合并,避免同一关系重复堆叠
- 修复故事记忆可能把普通场景事件标成过高重要度的问题,重大事件仍可保留高权重
- 过滤不属于用户画像的伪偏好,减少章节目标、角色状态和临时写作指令被塞进用户画像
- 当前场景可靠时,Planner 记忆检索优先限制在本轮相关人物和事件,降低未出场角色状态误入规划提示词的概率
- 澄清 Agent 现在会读取章节目标、当前场景、长期关系、关键事件和角色卡摘要,更像贴身编剧助理,而不是孤立问答框
- 澄清 Agent 的角色卡摘要改为当前回合相关筛选,避免未出场旧角色从剧情顾问上下文混入
- 标题生成增加系统级硬约束,减少输出解释、Markdown、书名号或“标题:”前缀
- 澄清 Agent 修改草案增加可测试安全护栏,避免误把正文/角色卡/记忆改成占位空值,或在未授权时大段重写正文
- 剧情选项生成过滤第二人称“你/你的/你们”式选项,统一改向第三人称角色行动建议
- 补齐回归测试,覆盖关系事实去重、高重要度事件收敛、画像过滤、选项后处理以及供应商分享/时间提醒当前行为
- Version bumped to 224 (`2.2.67`)
### Release 223
- 修复书本场景记忆的二次污染入口:当前回合不支持的场景人物不仅会从人物列表过滤,也会从场景摘要和物理状态摘要中移除
- 增强用户输入语义分流,支持“接下来某角色说:...”和“让某角色说:...”这类自然写法,并转成必须原样写入正文的角色发言约束
- Writer 输出协议新增硬约束:本轮写作合同中的“必须原样写进正文”内容不能只被概括或顺义续写
- 补充回归测试,覆盖场景摘要藏入无关角色、代角色发言识别和未知角色不误判
- Version bumped to 223 (`2.2.66`)
### Release 222
- 修复故事记忆更新时可能清空章节意图细节的问题:必经点、关键决策限制和待确认问题现在会保守合并,而不是被单轮 AI 草案覆盖
- 章节节奏字段不再被空草案抹掉,降低 Planner 吃到错误短期方向或缺失约束的风险
- 补充章节意图收敛单元测试,覆盖空草案保留旧必经点、去重合并和节奏保留
- Version bumped to 222 (`2.2.65`)
### Release 221
- 修复 Planner 返回空或解析失败时,UI 显示进入写作阶段但 Writer 实际没有收到 `story_plan` 的链路断点
- 引入统一的 `effectivePlannerOutput`,Planner 失败时也会生成默认执行合同并传给 Writer
- 选项 Agent 同步使用同一份兜底计划,避免 Planner 失败时三选项退回普通建议链路
- 降低故事模式在 Planner 弱输出或格式失败时整体退化为旧式单模型生成的概率
- Version bumped to 221 (`2.2.64`)
### Release 220
- 将 Planner 传给 Writer 的 `story_plan` 从普通提纲加固为“本轮写作执行合同”,明确事实层、角色卡和世界书只能服务本轮计划
- Writer 协议现在要求正文必须真实完成“本轮必须发生的戏剧动作”,并承接“本轮结尾落点”
- 降低事实层和角色状态喧宾夺主的风险,避免正文退化为场景、衣着、心理和设定复述
- 补充提示词结构测试,验证 `story_plan` 会序列化在风格层和事实层之前
- Version bumped to 220 (`2.2.63`)
### Release 219
- 修复澄清 Agent 的门控 key 未区分触发阶段的问题,避免用户输入前澄清处理后误跳过 PlannerReview 阶段的二次审查
- 澄清 Agent 的用户回答改为结构化规划指引,包含澄清问题、触发原因、来源阶段、回答内容和谨慎推进建议,再传给 Planner
- Planner 现在能更明确地看到用户刚确认的剧情约束,减少“澄清问了但正文没按澄清走”的情况
- 补充澄清指引单元测试,验证用户回答会被整理为可供 Planner 遵守的约束文本
- Version bumped to 219 (`2.2.62`)
### Release 218
- 将故事模式下的选项 Agent 从普通建议生成器收紧为“剧情选择设计器”,要求三条选项分别对应正面推进、试探周旋、暂缓转向
- 新增故事选项本地后处理:清理编号、项目符号和“自由输入”污染,并过滤“继续观察”等空泛选项
- 当模型生成的选项不足或过弱时,会基于 Planner 的核心戏剧问题、必须发生的戏剧动作和结尾落点生成三条兜底选项
- 补充故事选项后处理单元测试,覆盖编号清理、自由输入移除和弱选项兜底
- Version bumped to 218 (`2.2.61`)
### Release 217
- 修复 Planner 提示词可能被脏场景记忆污染的问题:场景状态里的当前人物必须由近期上下文或可靠角色卡触发支撑后才会进入提示词
- 收紧书本状态解析器中的当前场景人物来源,避免无关角色通过关系事实或故事事件检索被带入本轮规划
- 新增回归测试,覆盖“场景记忆误写秋张,但当前剧情没有秋张”时不应注入秋张状态的情况
- Version bumped to 217 (`2.2.60`)
### Release 216
- 新增故事 Agent 链路审计文档,记录澄清、规划、写作、选项、记忆更新和当前事实包解析器之间的真实数据流
- 补充故事模式角色卡触发回归测试,防止一字关键词误触发未出场角色进入规划提示词
- 验证完整姓名仍可正常触发角色卡,避免检索收紧后误伤正常角色注入
- Version bumped to 216 (`2.2.59`)
### Release 215
- 审计并修复故事 Agent 链路:澄清 Agent、剧情规划 Agent、写作 Agent、选项 Agent 与故事记忆之间的传递关系更清晰
- Planner 输出升级为导演卡,新增核心戏剧问题、必须发生的戏剧动作和结尾落点,减少正文写作陷入无效细节
- Writer 协议调整为优先服务剧情推进,衣着和心理只在变化、被注意到或影响互动时重点描写
- 收紧角色卡、关系事实和故事事件检索门槛,避免未出场角色或无关记忆被塞进规划提示词
- 澄清 Agent 改为贴身编剧助理语气,能承接用户的剧情担心、分析爆点风险并给出解释路线
- 修复澄清 Agent 产生的章节意图候选确认后没有真正写入的问题,并纳入撤销记录
- Version bumped to 215 (`2.2.58`)
### Release 214
- 新增书本当前事实包解析器:生成前会先收敛章节意图、场景、长期关系、相关事件和用户画像,减少记忆碎片直接塞进提示词
- 故事记忆审阅页新增“记忆收敛提示”和“近期用户倾向”,方便看到本轮真正影响生成的短期信号
- 用户画像候选写入改为更克制:只保留高置信、短小、可复用的偏好候选,降低候选画像过多过杂的问题
- 事件类型和关系类型新增本地归类,减少模型自由命名导致的记忆台混乱
- Version bumped to 214 (`2.2.57`)
### Release 213
- 移除底部状态气泡区域的背景板感,统一改为透明共享底区上的独立小气泡
- 将底部状态气泡不透明度调整到约 85%,并增强边框清晰度,避免过淡或边缘不明确
- 进一步压缩状态气泡与底部输入框之间的垂直间距,让底部 UI 更紧凑
- Version bumped to 213 (`2.2.56`)
### Release 212
- 将剧情推进选项合并进顶部状态气泡条,点击“剧情选项”气泡后再弹出三条纵向选项,减少底部纵向占用
- 底部输入区改为透明共享区域,移除状态气泡、剧情选项、输入框之间各自套的大块不透明背景
- 待审批/待确认类状态气泡排到最前,并使用橙色轻提示,便于优先处理
- 输入框扩展逻辑改为只跟随键盘可见状态,键盘收起后即使光标仍在也会恢复露出左侧按钮
- Version bumped to 212 (`2.2.55`)
### Release 211
- 重构聊天页顶部栏为胶囊式布局,将短期目标合并进顶部标题区域,避免目标栏偶发消失或遮挡正文
- 将剧情推进选项默认折叠为轻量入口,展开后纵向显示三条大横向选项,减少底部区域占用
- 调整底部跑道型输入框:聚焦或键盘弹出时收起左侧按钮并横向扩展,未输入时恢复显示按钮
- 减轻状态气泡背景透明度,降低世界书、角色卡、记忆等气泡对正文阅读的遮挡
- Version bumped to 211 (`2.2.54`)
### Release 209
- 修复聊天页短期目标顶栏偶发消失的问题,将目标栏固定到顶部栏下方显示
- 修复底部跑道型输入框右侧无法贴齐页面的问题
- 将章节推进操作改为纵向排列的大横向选项框,避免长选项横向挤出屏幕
- Version bumped to 209 (`2.2.52`)
### Release 206
- 结束章节流程改为“AI 生成章节名和摘要 -> 用户编辑确认 -> 再写入结束章节”,避免直接结束后无法调整章节名
- 章节确认阶段会锁定输入,防止用户在章节边界确认前继续推进剧情
- 回答或跳过主动澄清后会自动恢复本轮剧情生成,不需要用户重新发送消息
- Version bumped to 206 (`2.2.49`)
### Release 205
- 澄清 Agent 主动提问支持一次返回 1-3 个问题,每个问题提供 3 个选项和自由输入,不再拆成多次反复打断
- 主动澄清问题改为直接显示在聊天输入区上方的内联确认面板,用户无需进入额外详情页即可选择、补充或跳过
- 澄清 Agent 详情页改成更简洁的对话式面板:顶部只保留主动开关、推进模式、撤销和当前意图,底部使用跑道式输入提交修改指令
- Version bumped to 205 (`2.2.48`)
### Release 204
- 重构聊天页底部输入区:左侧改为三个圆形按钮,右侧改为更矮的跑道型输入框,发送按钮内嵌在输入框末尾
- 将模型选择、搜索开关和思考深度收纳到“模型与生成控制”弹窗,减少底部栏占用
- 将世界书、角色卡、记忆、剧情、澄清、章节等状态气泡移动到底部输入区上方,并增加独立背景以便和正文区分
- 将 3 个剧情行动选项移动到底部输入区上方;选项生成失败时提供 3 个本地兜底选项,避免剧情推进后没有可点选项
- 澄清 Agent 主动提问改为按单条用户消息节流:输入阶段或 Planner 阶段问过/跳过后,本条消息不再重复触发
- 澄清修改草案新增句子级 Diff 展示,并支持逐项选择应用或拒绝;澄清气泡显示本次修改的新增/删除句数
- 新增短期目标顶部公告条,支持快捷编辑和手动标记完成;章节气泡改为常驻并排在状态气泡第一位,可主动结束本章
- Version bumped to 204 (`2.2.47`)
### Release 203
- 将澄清 Agent 改为常驻剧情助理面板:点击气泡只打开面板,不再自动开启一次画像访谈
- 新增主动澄清门控:用户输入后与 Planner 规划后都会检查是否触碰用户在意点,必要时锁定输入并提问
- 新增正常推进 / 谨慎推进模式,澄清结果与谨慎推进粒度会进入 Planner,并兜底写入本轮写作目标
- 澄清面板新增通用“修改草案”能力:可针对 AI 正文、角色卡、故事记忆、动态世界书和下一步选项生成红/绿文字 diff,用户确认后才写回
- 澄清 Agent 已确认修改新增最近 3 次撤销能力,当前覆盖 AI 正文、角色卡、故事记忆、动态世界书、下一步选项、用户画像与章节意图
- 选项 Agent 生成 3 个行动选项时新增章节意图与用户画像输入,减少选项和当前书本目标脱节
- 故事协议下不再注入旧助手记忆;助手提示词页新增基础提示词写法说明
- Version bumped to 203 (`2.2.46`)
### Release 202
- 新增书本章节系统:记录章节编号、标题、摘要、目标、状态与边界
- 将聊天页右上角现有纵览入口接入当前书本记忆台,按当前书本和分支打开纵览
- 书本记忆台总览新增章节目录、当前章节目标设置和主动结束章节入口
- 章节目标达成后新增轻量“章节”气泡,由用户决定结束章节、继续、设置新目标或无目标继续
- Version bumped to 202 (`2.2.45`)
### Release 201
- 修复上下文压缩会替换书本可见历史的问题:压缩后原始消息仍保留在书本正文中
- 新增生成用书本上下文摘要存储,压缩摘要只作为模型生成辅助,不再伪装成用户消息
- 故事记忆全局扫描继续读取完整书本历史:归档原始消息与当前消息都会进入扫描来源,不受 Context Message Size 限制
- 加固全局扫描入口,避免只有归档历史时被当前消息检查错误跳过
- Version bumped to 201 (`2.2.44`)
### Release 200
- 将“用户在意点”升级为书本内多轮用户画像:新增画像分类、强度、置信度、适用场景、正反例、来源信号和候选/生效/拒绝状态
- 新增画像访谈 Agent:聊天页提供“画像”气泡,可多轮澄清用户真实意图,候选画像必须确认后才会生效
- 消息菜单中的“记住这个偏好”改为生成候选画像,不再直接污染正式画像
- 书本记忆台将“用户在意点”改为“用户画像”,支持查看候选画像并确认写入、拒绝或删除
- 生成前的画像注入改为少量 active 画像软约束,默认最多注入 5 条,候选/拒绝画像不参与生成
- Version bumped to 200 (`2.2.43`)
### Release 199
- 将故事记忆升级为书本级记忆系统:在事件、关系、场景之外新增章节意图和用户在意点两类轻量记忆
- 新增书本记忆事实组装器,生成前按章节方向、场景、关系、相关事件和用户在意点组织事实层注入
- 全局扫描进度改为按书本分支隔离,避免不同分支共用同一份断点记录
- 书本记忆台新增“时间线 / 章节意图 / 用户在意点”视图,总览页同步展示章节方向和偏好摘要
- 聊天消息操作菜单新增轻量反馈入口,可将整条消息标记为喜欢、不喜欢、重要设定或章节目标
- Version bumped to 199 (`2.2.42`)
### Release 198
- 将现有长篇对话产品化为“书本”心智:书架、书本工作台、资源库、全局设置的入口边界更清晰
- 将 `+` 面板中的旧“扩展”入口改为“书本工作台”,新增概览页签并优先展示角色卡、书本记忆和动态世界书
- 将全局“扩展管理”重命名为“资源库”,用于管理快捷消息、世界书模板、模式注入和 Skills 等可复用资源
- 调整助手详情中的“扩展”表述为“默认启用资源”,强调助手是叙事引擎而不是书本本身
- Version bumped to 198 (`2.2.41`)
### Release 197
- 修复部分第三方 OpenAI 兼容接口在接入 DeepSeek 风格模型时的兼容问题:关闭推理后不再错误发送 `reasoning_effort=none`,避免出现 `400 invalid_request_error`
- 为 OpenAI 兼容网关补上一层 `reasoning_effort` 请求体清洗,降低第三方 DeepSeek / 聚合渠道因参数不兼容导致的消息生成失败
- 补充针对该兼容场景的回归测试,覆盖通用 DeepSeek 风格网关与 `opencode.ai`
- Version bumped to 197 (`2.2.40`)
### Release 196
- 为文字冒险生成链路引入第一阶段 `2.5 Agent` 架构:新增剧情规划输入/输出模型,先规划再写作,再整理选项
- 聊天页新增“剧情”状态气泡,显性展示 `规划中 / 写作中 / 选项整理中 / 已完成 / 失败`
- 点击“剧情”气泡可审阅本轮规划输入与规划结果,降低剧情生成黑箱感
- 写作阶段新增 `story_plan` 提纲注入区块,让正文模型优先围绕本轮剧情提纲推进,而不是直接吞下同一份大杂烩上下文
- 故事模式下的建议选项改为优先基于本轮剧情提纲和最新正文整理 3 条建议,减少与当前剧情脱节的情况
- Version bumped to 196 (`2.2.39`)
### Release 195
- 将故事记忆提示词注入的相关事件检索上限从 6 条提高到 12 条
- 修复故事记忆扫描进度跟随完整分支路径变化的问题:同一对话新增消息后,已完成的扫描块仍可复用
- 将聊天气泡中的故事记忆事件计数文案改为“相关事”,避免误解为故事记忆总事件数
- Version bumped to 195 (`2.2.38`)
### Release 194
- 将应用显示名称改为 `RikkaHub PM`,不改变包名、签名和更新链路
- 优化故事记忆工作台排序:故事事件和场景快照按原对话消息顺序展示,而不是按记忆更新时间跳动
- Version bumped to 194 (`2.2.37`)
### Release 193
- Reworked Story Memory full scans to scan from newest conversation chunks toward older history, so recent context becomes available first
- Added persistent per-conversation/per-branch scan progress, allowing canceled or timed-out Story Memory scans to resume from completed chunks instead of starting over
- Changed Story Memory scan progress text to percentage-based display while keeping current/total details in the workbench
- Improved Story Memory event persistence so similar events are merged into existing records instead of creating near-duplicate story events on repeated scans
- Version bumped to 193 (`2.2.36`)
### Release 192
- Fixed the new feature guide dialog briefly flashing on later chat entries before the real settings state finished loading
- Kept the chat status bubbles visible above the input area as lightweight persistent feature indicators for lorebooks, character cards, and story memory
- Moved Story Memory full-conversation scanning into the shared chat session state so the chat input locks during scans, progress is visible from chat and the memory workbench, and scans can be canceled
- Version bumped to 192 (`2.2.35`)
### Release 191
- Added manual full-scan support for the current conversation's Story Memory
- Long conversations are scanned in chronological chunks, so memory rebuilding can cover more history than a single model context window
- The Story Memory workbench overview now includes a scan entry point with progress and completion/failure status
- Full scans reuse the existing scene state, long-term relationship, and story event persistence pipeline instead of creating a separate memory cache
- Version bumped to 191 (`2.2.34`)
### Release 190
- Fixed Story Memory branch filtering: current-branch event filtering now uses the active chat branch path instead of the incorrect legacy `[]` placeholder check
- Polished the Story Memory event page: renamed the event tab to a clearer Chinese label, replaced greyed-out disabled chips with readable lightweight tags, and added a proper empty-state hint for filtered results
- Expanded Story Memory review details to show scene-state fallback text plus richer relationship and event metadata
- Added a lightweight first-run feature guide dialog explaining character cards, story memory, dynamic lorebooks, and the recommended way to use them together
- Smoothed in-app update downloads so the visible progress no longer jumps backward when late progress callbacks arrive
- Version bumped to 190 (`2.2.33`)
### Release 189
- Moved Story Memory out of the global extensions hub and back into each conversation's own extension panel
- Story Memory workbench now opens in current-conversation scope when launched from chat extensions, matching the intended dialogue-level ownership model
- Version bumped to 189 (`2.2.32`)
### Release 188
- Added the first story-memory persistence layer with scene state, relationship facts, and story events so later UI can reuse durable memory data directly instead of regenerating a parallel cache
- Added story-memory update status into the chat runtime, including status bubble/review wiring and input locking while memory updates are still running
- Fixed the Room migration chain for existing installs by adding the missing `23 -> 24` migration and keeping the new story-memory tables on the `24 -> 25` path
- Hardened native vector extension loading so debug startup no longer crashes when the packaged sqlite extension library is absent on device
- Tightened relationship normalization and story-memory summaries so long-term relations stay shorter and less narrative during auto-maintenance
- Version bumped to 188 (`2.2.31`)
### Release 187
- Fixed a regression where character-card auto-update could clear `relationshipContent` when older freeform relationship text failed the new normalizer
- Relationship auto-update now preserves existing non-empty relationship text unless there is a valid normalized replacement
- Tightened keyword review writeback so rejected candidates no longer delete existing stable aliases/keywords and then get re-added in later rounds
- Added regression tests covering legacy relationship preservation and conservative keyword retention
- Version bumped to 187 (`2.2.30`)
### Release 186
- Snapshot preview now exposes character cards as a first-class top-level section alongside conversations, lorebooks, and settings
- Conversation preview stays focused on message history while full character-card inspection moves to the dedicated character-card tab
- Version bumped to 186 (`2.2.29`)
### Release 185
- Reworked destructive restore/import flows to always create a local safety snapshot first, forming a recoverable on-device timeline
- Added branch-aware safety snapshot metadata with configurable retention (`max count` + `dense count`) instead of the fixed 60/20 policy
- Added a new Safety Snapshot tab with timeline browsing, current-branch filtering, restore/export/delete actions, and explicit branch origin hints
- Added read-only snapshot preview so users can inspect conversation summaries, message history, conversation-level character cards, lorebooks, and settings before restoring
- Version bumped to 185 (`2.2.28`)
### Release 184
- Added scheduled automatic backup support on top of the existing backup system
- New backup settings can now run periodic background backups to either WebDAV or S3 using WorkManager
- Backup reminder page upgraded into a combined reminder + auto-backup configuration page
- Automatic backup reuses the existing backup item selection and updates the last-backup timestamp after success
- Version bumped to 184 (`2.2.27`)
### Release 183
- Fixed a critical character-card regression where placeholder values like `-` or blank model output could overwrite existing relationship / outfit / mental / dynamic content
- Added hard guards in auto-update, review writeback, and manual global refresh parsing so invalid placeholder values now preserve the previous card content
- Added regression tests covering placeholder-output protection
- Version bumped to 183 (`2.2.26`)
### Release 182
- Softened lorebook / character-card diff review rendering: removed heavy diff color blocks and switched to lighter grouped text with red old values and green new values
- Version bumped to 182 (`2.2.25`)
### Release 181
- Fixed in-app update refresh timing: the update card now re-checks the remote manifest when the app returns to foreground, avoiding stale version info after a new Cloudflare deployment
- Version bumped to 181 (`2.2.24`)
### Release 180
- Reworked character-card auto-update into a convergent state-merge flow so current outfit / mental / dynamic fields stay compact instead of growing turn after turn
- Added explicit high-risk review workflow for character-card updates, including keyword candidates, conflict fields, retry handling, and input locking during review
- Added review bubble UI verification and stronger mechanics tests for long-run state convergence, dirty-keyword filtering, and global keyword protection
- Version bumped to 180 (`2.2.23`)
### Story Prompt Architecture v1
- Added `StoryPromptProfile`, `StoryPromptSection`, and structured prompt builder for text-adventure prompting
- Added `互动式文字冒险叙述者` profile with layered engine rules, output protocol, style rules, scene facts, active characters, and lorebook facts
- Reworked prompt injection from long freeform blocks into structured fact-oriented sections for non-legacy story profile
- Assistant prompt page now lets users switch prompt architecture and fill the recommended core engine protocol
- Chat review sheets now expose the active engine/output/fact/character/lorebook summaries used in the current round
- Added a conversation-level master switch for character cards; disabling it now turns off injection and update flows together
- Character card custom refresh now supports the `关键词/别名` scope
- Replaced the in-app update feed with Puremilkchun's own Cloudflare Pages channel and added a local publish script for R2 + Pages
- About/share links now point to `https://rikkahub.puremilkchun.top/`
- Published a follow-up test build for the self-hosted updater flow
- Simplified the update card so the sidebar only shows a compact entry point and keeps full changelog details inside the sheet
- Update downloads now stay inside the app: tap to open detail sheet, download in-app with progress dialog, then install directly after completion
- Tightened the chat suggestion/status bubble spacing so the bubble row sits closer to the input area
- Made the sidebar update entry look actionable with clearer guidance text and an explicit "查看更新详情" button
- Added in-app install-permission guidance for updates: if Android blocks APK install, the app now offers a direct "去授权" action and lets the user continue installing after granting permission
- Bumped updater test release so devices already on `2.2.21` can immediately verify the in-app update flow again
- Version bumped to 179 (`2.2.22`)
### Character Card / Lorebook Review UI
- Chat page bottom status area changed from plain text rows to two lightweight bubbles: lorebook and character card
- Bubble click opens bottom-sheet review for the latest update summary
- Lorebook review sheet keeps revert entry point
- Character card review sheet distinguishes updated cards and newly created cards
- Sending the next message is now blocked while lorebook or character card updates are still running
### Character Card Expansion
- Character cards now include `relationshipContent`, `outfitContent`, `mentalContent`, and `dynamicContent`
- Character card editor and list view now expose all major dimensions
- Added per-card `AI 全局更新`
- Automatic updates read recent conversation context; manual global refresh reads a much longer history window
- Scan current conversation and global refresh now both report through the top-level character card update status
### Extension Panel Ordering
- Extension tabs now move non-empty sections to the front
- In-content priority is fixed as: character cards, lorebooks, quick messages, mode injections, skills
### Dynamic Lorebook — Search/Replace Update Mode
- Changed AI update logic from full content rewrite to search/replace edit blocks (`[{id, search, replace}]`)
- Added `applySearchReplaceEdits()` with exact match and whitespace-normalized fuzzy fallback
- Content shrinkage protection: rejects updates that reduce content by more than 60%
- No-op filtering: skips edits where search equals replace (after normalization)
- Simplified prompt with few-shot example for better flash model compatibility
- Limited entry content (1500 chars) and conversation context (6 messages / 4000 chars) to reduce prompt length
- Added diagnostic logging (`Log.i`) for troubleshooting update flow
### Dynamic Lorebook — Diff Review UI
- Status bar shows update count with "View" button
- `DiffReviewSheet` (ModalBottomSheet) displays each edit as red/green diff
- One-click rollback via `rollbackDynamicPromptUpdate()`
- `DynamicPromptUpdateStatus` changed from enum to sealed class with data-carrying `Updated` state
### Dynamic Character Card System
- New `CharacterCard` data model: `name`, `aliases`, `fixedContent` (personality/background), `dynamicContent` (mood/clothing/location), `keywords`
- Stored per-conversation in `Conversation.characterCards` (DB migration v21 → v22)
- Keyword-based triggering: only injects characters currently mentioned in conversation
- Converts to `RegexInjection` on demand, reusing existing `PromptInjectionTransformer` pipeline
- AI-driven updates via `CharacterCardUpdateHandler`: main model analyzes conversation, outputs structured JSON with content edits + keyword expansion + new character creation
- Auto-creates new character cards when new characters appear in conversation
- Auto-expands keywords: name parts (e.g. "达芙妮·格林格拉斯" → ["达芙妮", "格林格拉斯", "达芙妮·格林格拉斯"])
- "Scan All Conversations" button for bulk character card creation from full conversation history
### Character Card UI
- New "Character Cards" tab in extension selector panel
- View: shows name, profile, current state, keywords
- Edit dialog: modify name, fixed content, dynamic content, keywords
- Delete with confirmation
- Character card count included in extension badge
### CI/CD
- GitHub Actions workflow triggers on push to master
- Added Node.js + pnpm setup for web-ui build
- Added web-ui dependency installation step
### Infrastructure
- `.gitignore`: added `google-services.json` entries
- `DynamicPromptEdit.kt`: extracted pure functions (`EditBlock`, `parseDynamicPromptUpdates`, `applySearchReplaceEdits`, `normalizeWhitespace`, `mapNormalizedIndex`)
- `DynamicPromptEditTest.kt`: 26 unit tests covering parsing, exact/fuzzy matching, shrinkage protection, no-op filtering
- Version bumped to 163