Skip to content

OpenFicM 0.11.0

Latest

Choose a tag to compare

@tioners tioners released this 08 Oct 17:49

OpenFicM 0.11.0

新增:错误重试可配置、任务可取消、整库备份,以及十余处稳定性修复

本版实现 GitHub issue #4,并从一次全面代码审查中修掉了搜索、覆盖、导入、下载等链路上的多处隐患。

错误重试与超时:可配置(issue #4)

此前请求失败的重试次数、429 限流与 5xx 服务器错误的重试策略、超时后是否重发都是写死的,遇到网络不稳或供应商限流时只能干等。

现在“设置 → 连接”里新增:

  • 请求超时:单轮请求的等待上限(10 秒到 5 分钟可调)。
  • 请求失败重试次数:网络错误等一般失败的重试上限(1–5 次,默认 3)。
  • 服务器错误重试次数:5xx 错误的重试上限(1–3 次,默认 2)。
  • 限流重试次数:HTTP 429 的重试上限(1–3 次,默认 1)。
  • 超时后自动重发:默认关闭。开启后超时的请求会按上面次数重发;对计费供应商而言一次超时可能被计成多次调用,开启前请确认。

所有重试间隔沿用原有的指数退避;设置读取带 30 秒缓存,不会在每次请求时反复查库。

智能体任务:可取消、不再带入失败记录

  • 发送按钮在任务运行中变为红色的“停止”按钮,点一下立即中止本轮智能体(模型请求与工具调用链路上都已接入取消信号)。
  • 切换到其他作品时,旧作品的进行中任务自动中止,避免它继续写旧作品的章节。
  • 此前失败的任务消息仍会留在会话记录里,但不会再被当作上下文发给模型——避免模型把上次失败的工具调用当成范例模仿。
  • 长会话截取历史时,如果窗口起点落在 assistant 消息上会向前修剪到最近一条 user 消息,避免模型看到没有用户提问开头的“半截对话”。

章节搜索:中文按子串命中

全文检索表用的是 SQLite FTS5 的 unicode61 分词器,不为中文分词,所以“林雨晴”三个字搜“雨晴”搜不到。现在查询里只要含中文,就直接走 LIKE 子串匹配;纯英文查询仍走 FTS,且 FTS 查不到时回退到 LIKE,保证“作者觉得明明写过却搜不到”的情况不再出现。

章节与角色/世界书编辑:拒绝清空式误操作

  • write_chapter 与 edit_chapter 拒绝空白正文,从源头堵住“模型手滑把整章清空”的事故;如需删除整章,必须先与用户确认。
  • edit_chapter 覆盖前会先把当前已保存的正文快照一份草稿,再写入新内容,再快照新稿——即使中途出错也能从草稿里找回旧版本。
  • edit_character 拒绝把角色设定改成空白;edit_world_entry 拒绝把条目内容改成空白。

文风蒸馏:双击不再开出两个任务

“开始蒸馏”按钮此前只靠 store 状态判断任务是否已存在,从点击到状态落库之间有一个窗口期,快速双击会同时起两个蒸馏任务。现在改用同步的 AbortController 互斥:第一下点击立刻占位,第二下点击直接返回。

EPUB 参考书:缺章拒绝导入

部分 EPUB 的 manifest(文件清单)与 spine(阅读顺序)不一致,解析失败的章节此前会被静默跳过,导致参考书缺章但用户不知情。现在只要有一个章节解析失败,整个导入会被拒绝并明确提示“缺 N 章,为避免得到缺章的参考书已取消导入”。

备份:一键导出整库,删作品前可先备份

  • 设置 → 通用 → 新增“导出全部数据备份”:把 SQLite 数据库(作品、章节、角色、世界书、会话)与文风库文件打成一个 zip,经系统分享面板保存到任意位置。
  • 写作页删除作品的确认弹层里新增“先备份再删除”选项,点一下先触发上面那个备份流程,再回到删除确认。

Hugging Face 模型下载:主站失败自动走镜像

模型下载此前只连 huggingface.co,国内网络环境下经常失败。现在下载失败会自动换 hf-mirror.com 重试,两个源共用同一份 SHA-256 校验,下到一半切换源不会留下半截文件。

版本对齐

app.json、package.json 与 android/app/build.gradle 三处版本号此前不一致(0.10.3 / 0.10.3 / 21 与 10),本版统一为 0.11.0 / versionCode 22。

兼容性

  • 沿用 0.7.0 起的正式签名证书,可直接覆盖升级。
  • applicationId com.openfic.mobile,versionCode 22,minSdk 28,仅 arm64-v8a。
  • 不涉及数据结构与迁移,升级不影响任何本地作品数据。