让学习工作台真正好用:Keyset 分页、直接导航与可恢复保存
语言: English | 简体中文
发布日期:2026-10-21
我通过 keyset 分页替代全量审阅队列,加入原文搜索、记录直达和可以恢复未知结果的问题保存流程,改善 FLH 的日常使用。
结果:在 1,543 个可审阅 unit 的隔离 fixture 中,首次响应从约 821 KB 缩减到 27 KB。 学习者能够返回上次审阅位置、找到旧问题,并直接输入新问题。
先建立负载,再选择优化
验证 fixture 包含 1,000 条记录、3,000 个知识单元、500 个 Concept,其中 1,543 个可审阅。不触碰个人数据,就能测量读取并遍历完整流程。
原全量队列返回 821,246 bytes,本地记录的五次中位延迟为 109.8 ms;50-unit 页返回 26,967 bytes、3.3 ms。这是单机合成测量,明确成果是首次加载无需传输全部队列。
使用稳定顺序,而非数组偏移
队列按 entry ID、ordinal、unit ID 排序。Cursor 表示最后一个 key,from_unit_id locator 从有界位置恢复,数据库读取 limit + 1 行判断下一页。
适格规则保持一致。两页之间完成决策的 unit 会从后续页消失;排在 cursor 前的新单元需重启队列才能看到。界面明确说明当前是完整队列还是局部窗口,不把已加载数当总数。
测试比较了多种 page size 的完整遍历与 legacy 列表,覆盖重新抽取及固定旧版本,顺序相同,每个适格单元只出现一次。
搜索学习者真正写过的文字
搜索使用参数化 SQLite substring,只查 original_input / original_context。Unicode lowercasing 忽略大小写,但重音与 normalization 保持精确;%、_ 是普通字符。
它与 state filter、cursor 分页组合,不搜索生成解释,也不在浏览器中只过滤已加载页。旧查询的迟到响应被丢弃。
把保存问题做成默认入口
统一 intake 接受问题和可选上下文,复用 learning_capture_v1 与幂等 capture endpoint,保存为 unanalyzed。分析和抽取仍是单独操作,JSON 导入也保留。
最难的是保存没有响应。丢响应不能证明没存入,因此界面保留 capture identity,提供回执查询和显式逐字重放。修改成新尝试前,要先核对或明确离开旧尝试。
已确认保存的记录,即使被当前 filter 排除或列表刷新失败,也能直接打开。这种细节决定用户能否信任保存按钮。
我的交付
这项工作结合 SQL、HTTP 兼容性、React 状态与有控制的测量。重点是操作之间的转换:导航后返回 unit、在页末完成决定、处理迟到搜索响应,以及恢复未知保存结果。
实现与验证结合 AI 编码工具,由我负责合同和审查。详细 fixture、测量及回归证据如下。
实现 PR #118 · 分页与搜索 · 问题输入 · 工作流 fixture
- 标题: 让学习工作台真正好用:Keyset 分页、直接导航与可恢复保存
- 作者: Sirui Liu
- 创建于 : 2026-10-21 12:00:00
- 更新于 : 2026-10-25 12:00:00
- 链接: https://vanquisher.world/zh-CN/2026/10/21/flh-daily-workflow/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。