Skip to content

Latest commit

 

History

History
237 lines (186 loc) · 18.8 KB

File metadata and controls

237 lines (186 loc) · 18.8 KB

v0.11 大目标版本系列:笔记组与学习循环(v4 路线图 Phase 1-3 落地)

状态:代码已交付(2026-08-22,含 v0.11.4),真机验收待执行 依据:v4 路线图建设顺序规划(已裁决采纳)· pain-points-v4 §7.4/§7.5/§11 · 需求池 v0.11 区段(REQ-195~201) 设计文档:specs/2026-08-22-v0.11-note-group-learning-loop-design.md

一句话

两种地形,一个容器——结构在内容里的成为课程,结构在行为里的成为组,都被同一个学习循环接住。

系列总览

小版本 范围 交付内容
v0.11.0 笔记组基建·容器侧(REQ-195~198) note_groups 数据模型(terrain/kind/domain_tag/series_key)+ notes.group_id 幂等迁移;group_route 结构密度路由纯函数(加权投票三态,golden TDD);容器侧组化接线(会话→笔记自动归课程组/独立组/主题组);组侧栏 UI(过滤/路由理由可见/一键改判/笔记移动)
v0.11.1 feed 进料口(功能开关默认关) fragments 独立原料层(碎片不是笔记,身份诚实);feature_flags 开关机制(feed_capture 默认关,后端二次校验);碎片快速捕获(文本 + 剪贴板图片,解码验证落盘);DomainTag 自动归 feed 主题组;设置页开关 + 组侧栏捕获区
v0.11.2 学习循环统一(最大新建块) FSRS-6 调度器(fsrs crate,ADR-018;目标留存率 0.9);flashcards/review_logs/metrics_events 三表;组→闪卡本地规则生成(词汇表块术语卡 + 碎片多句卡,幂等查重);复习面最小化 UI(front→回忆→back→四档评分,提取优先,无 streak);北极星/过程指标埋点(card_reviewed/fragment_upgraded)+ learning_metrics 读数
v0.11.3 组结算机制(防沼泽仪式) settlement 双触发判据(≥50 条阈值 / ≥20 条且 ≥90 天周期);重复合并判据(字符 bigram 包含度 ≥0.7,贪心一对一,保留长文本);结算仪式(计划呈现→用户确认→执行:合并/归档/核心提炼笔记);settlements 留痕 + group_settled 埋点;归档不删除可恢复
v0.11.4(已交付 2026-08-22) 学习循环补齐 + feed 消费闭环 内容分型(N13 续:action 卡最小版,REQ-199)+ 周契约视图 UI(弹性承诺呈现层,REQ-200)+ feed 最小消费闭环(碎片生命周期 UI + 碎片卡徽标;开关默认关,REQ-201)
v0.11.5(规划 2026-08-22) 采集体验与笔记打磨(11 项) 档案采集中可改+自动重评+记忆机制修正 / 视频信息识别率增强(通用信号+B站试点)/ 窗口展开自动刷新 / 会话编号显示序号化 / 新颖度变化区域 / 水印过滤 A+B+C / 产物视图下线+精修懒自动化 / 精修工作台(前后对比)/ AI 输入剥离锚点 / 画面要点词汇表移出笔记 / 笔记页树形合并+大纲收起+缩略图+归组排查
v0.11.6(规划 2026-08-22) AI 平台化(三层) Provider 抽象(BYOK 多 Provider + 降级链 + 旧配置无感迁移)/ 能力声明化(chains 范式 JSON 化:prompt+协议+策略维度)/ 产出策略定制(档位预设 + 指令注入)/ 设置页 AI 配置重构(4 面板拆分·移除第三方余额卡片);充值系统远期留桩(ai_quota_* 隔离)
v0.11.7(规划 2026-08-22) 图文会话(截屏导入 + 跨链路体验同步) 第三采集动线「图文采集」:全屏框选截屏 → kind=photo 图文会话(OCR 全图识别 + 屏卡流 + 转笔记);sessions.kind 字段 + 列表徽标/详情空态;图文/实时采集互斥 + 24h 残留清扫;视频导入「去会话页」直达 + OCR 进度携带识别块数

关键决策与纪律

  • 绑定粒度从一开始就是"组"(v4 契约二):闪卡/复习/结算全部按组,不经历"会话级→再提升"返工。
  • 路由误判 ★★★★ 死法防御(REQ-198):信号冲突/低结构无领域诚实 NeedConfirm;路由理由 JSON 落组可见;一键改判 route_overridden=1(修改即记忆)。
  • feed 默认关(v4 §11.3):功能开关机制 + 后端命令层二次校验,Phase 2 验证前不默认启用。
  • 弹性承诺(路线图裁决 4):review_logs 无 streak 字段,欠账卡仅按 due_at 排序——不追债不清零(N10 归零暴政防御)。
  • 动机App化防御(★★★★★):复习面只有卡片与评分,零叙事元素;引擎先有真牙。
  • 指标从第一天记(v4 §8):metrics_events 随复习/升级/结算同批落库——Phase 4 门控判据(碎片升级率)数据开始积累。
  • FSRS 取代 SM-2(ADR-018):crate 引入成功,SM-2 兜底条件未触发,不保留双实现(调度接口稳定可后补)。

数据模型增量

note_groups(id, name, terrain, kind, domain_tag, source, series_key 唯一,
            route_reason JSON, route_overridden, created_at, updated_at)
notes.group_id            -- ensure_column 幂等,ON DELETE SET NULL
fragments(id, text, image_path, domain_tag, group_id, source,
          status active/archived, created_at)
flashcards(id, group_id 级联, note_id, fragment_id, front, back, kind,
           state_json, due_at, created_at)
review_logs(id, card_id 级联, rating, reviewed_at)      -- 无 streak
metrics_events(id, kind, payload_json, created_at)
settlements(id, group_id 级联, stats_json, created_at)

测试与验证

  • Rust 单测 1434 通过(新增 ~58:group_route golden 7 / db_note_groups 8 / note_group_assign 4 / feature_flags 4 / db_fragments 5 / scheduler 7 / card_generate 7 / db_flashcards 6 / db_settlements 2 / settlement 8)
  • cargo clippy --all-targets 零错误;前端 tsc + vite 构建通过、vitest 35 通过
  • 真机验收待执行(会话→组化→生卡→复习→结算全链路走查)

后续门控

  • Phase 4 测量层(显影报告/盲测仪器/常模库):以 fragment_upgraded 积累的 碎片升级率数据为启用前置,门控另议不预占版本号。
  • AI 闪卡生成(可选增强):复用 ai_client 授权/成本/审计全套,默认关,V1.0 评估。

v0.11.4 规划:学习循环补齐 + feed 消费闭环(2026-08-22 用户裁决立项)

状态:代码已交付(2026-08-22),真机验收待执行 用户裁决(2026-08-22):① feed 进入范围为最小消费闭环(三根柱子与测量层维持 Phase 4 门控);② 内容分型 + 周契约 UI + feed 闭环合并为单版本 v0.11.4 依据:pain-points v2 §8.1(内容分型 N13)· §8.2(弹性承诺 P31+N10 的呈现层)· v4 §7.4 契约二(两种来源共享同一学习循环)· §11.3(feed 默认关)· 差距检查(2026-08-22) 需求登记:需求池 v0.11 区段 REQ-199~201 交付实现摘要:card_generate 步骤信号分型(golden 5 例)/ week_contract 周聚合纯函数 (16 测)/ contracts 表 + upsert/status 命令 / delete_fragment + update_fragment_group + resolve_fragment_image 三命令(开关准入)/ WeekContractCard + FeedFragmentList + 复习面徽标

一、范围(三块)

1. 内容分型(N13 续)—— action 卡最小版

  • flashcards.kind 枚举扩展:fact / action(model 留接口不做)
  • 动作卡生成规则(纯函数,golden TDD):碎片文本含步骤语义信号 ("第一步/步骤/先…然后/做法"等)→ kind=action;front=动作名(首句), back=步骤清单(按句号/序号拆分);无步骤信号 → 维持 fact
  • 不做:动手闭环 UI(N12 暂停-操作-比对,practice_detect 接线另议)

2. 周契约视图 UI(弹性承诺呈现层)

  • contracts 表(幂等建表):group_id、week_start(周一零点)、target_days、 target_cards、created_at——用户声明本周契约,非打卡 KPI
  • 命令:upsert_week_contract(幂等覆盖本周)/ week_contract_status (本周承诺 vs 实际——review_logs 按周聚合纯函数)
  • 组面板展开区"周契约"卡:本周目标设定 + 完成进度 + 断签不清零视觉 + 最小可行日徽标(本周完成 3 卡即算成立,N9/N11 低谷生存的最轻形态)
  • 弹性承诺纪律不变:无 streak、无惩罚、欠账不追

3. feed 消费闭环(最小范围,用户裁决)

  • 新增 delete_fragment 命令(后端,带存在性校验);list_group_fragments / update_fragment_group(已建未接)接线
  • 组面板 feed 组展开区:碎片列表(文本预览 + 图片缩略,图片 resolve 复用 app_data_dir 先例)+ 删除/移出组操作 + 空态引导("捕获几条试试")
  • 复习面/卡片列表"碎片卡"徽标(前端 Flashcard.fragmentId 已有)

二、进入论证摘要(feed 最小闭环)

  • 半截体验:原料层已建无消费面——捕获后看不见/删不掉/动不了
  • 边际成本低:学习循环与结算按组实现且不区分地形——是接线不是新建
  • 门控死锁:碎片升级率数据只有真实走通闭环才有——不接通则 Phase 4 永不解锁
  • 纪律保持:开关默认关;零新界面(全部复用组面板/复习面/结算仪式); 单句碎片不出卡已防御;碎片→笔记自动升级不做(身份诚实)

三、边界(不做清单)

碎片→笔记升级 · 三根柱子(显影/时机/容器层)· 测量层基座(技能地图/盲测/常模)· feed 专属界面 · 碎片卡 AI 生成 · 动手闭环 UI · 社交见证结构

四、测试与验收

  • 纯函数:动作卡生成规则 golden / 周聚合纯函数(AAA)
  • 数据层:contracts CRUD / delete_fragment(内存库)
  • 命令:入参校验(id>0、target 有界、kind 白名单)
  • 端到端走查(REQ-146 批内):捕获→归组→生卡→复习→结算全链路

交付验证记录(2026-08-22)

  • card_generate 22 测通过(含 action 分型 golden 5 例:步骤元词/先然后成对/单然后不误判/ 单句含信号不出卡);week_contract 16 测通过(周一零点边界/跨年/聚合去重/最小可行日阈值)
  • cargo build + clippy --all-targets 零错误;前端 tsc + vite 构建通过、vitest 35 通过
  • 环境备注:cargo test 运行受阻(test harness exe 启动报 0xc0000139 STATUS_ENTRYPOINT_NOT_FOUND,旧 test exe 同样失败——2026-08-12 Windows 更新后 System32 出现内置 onnxruntime 1.17 的加载期兼容问题,与本版本代码无关); 纯函数层已用 rustc 独立编译验证全量通过,数据层/命令层测试编译通过待环境修复后补跑
  • 真机验收待执行(feed 开关开启 → 捕获 → 归组 → 生卡(含动作卡)→ 复习(碎片卡/动作卡 徽标)→ 周契约设定/进度 → 碎片删除/移出 → 结算全链路走查)

v0.11.5 交付:采集体验与笔记打磨(11 项,2026-08-22 用户裁决立项)

状态:代码已交付(2026-08-22),真机验收待执行 用户裁决(2026-08-22):11 项分四组逐项裁决——A 采集体验(1/2/11)· B 数据过滤(3/4/10)· C 会话页(5/6/7/8)· D 笔记页(9) 设计文档:specs/2026-08-22-v0.11.x-capture-notes-polish-design.md([ ] 已归档) 范围:v0.11 下小版本一次交付,不分多个版本

一、范围(四组 11 项)

A 组 · 采集体验

  1. 档案采集中可改 + 自动重评(含记忆机制修正):采集态 LiveProfileStrip 三维(形态/画面档/领域) 可点下拉热切换(复用 ProfileDetector 三下拉);新增 update_live_profile 命令 → 当前会话管线参数 热切(采样预算/信号权重/后处理规则),只影响后续采集;形态/领域每 2-3 分钟自动重评(与画面档 同 tick);记忆机制改"检测优先 + 记忆兜底 + 冲突以检测为准"(四象限:记忆命中+检测高置信同 kind→记忆生效;冲突→检测为准+标记可改;检测低置信→记忆生效;无记忆→纯检测)
  2. 视频信息识别率(C:通用信号增强 + B站适配试点):新增会话开头 30s ASR 开场白 → 领域关键词 信号(全平台受益);OCR 分区标签消费端完善;B站专用解析试点(固定标题形态 + 选集按钮 OCR → 集号/总集数)作为证据增强(命中才加权、不命中不惩罚)
  3. 窗口选择同步刷新:WindowSelectCard 展开浮层时自动 refreshWindows(旧列表先显、后台替换; 失败保留旧列表+提示)

B 组 · 数据与过滤

  1. 会话编号显示序号化:列表/详情展示编号 = 按时间序 rank(删除前面会话后新会话归位显示); 内部 id 永不变(外键/日志/缓存零风险);rank 按 created 序与排序模式解耦
  2. 新颖度比较域=变化区域:novelty 只对 grid_diff 判变单元格覆盖区域的 OCR 文本做重叠率比较 (固定版面文字不再稀释新内容——PPT 结构相同内容不同不再被过滤);阈值按画面档自适应 (rich 0.90 / 默认 0.85 / low 0.80)
  3. 水印过滤 A+B+C 全部落地:A bbox 接入 region_key(screens.rs/analysis.rs,数据已有); B 文本相似聚类(编辑距离 ≤2 归并——半透明水印 OCR 抖动漏检根因);C 区域级出现率检测 (区域稳定+文本近似不变→水印候选,与具体文本解耦)。会话 38 "万事如番茄LilLil" 回归

C 组 · 会话页

  1. 产物视图移除 + 课后精修懒自动化:三视图→两视图(原料/笔记预览);进入会话详情检测未精修 结构区域(table/formula/code)→ 自动后台精修 → 屏卡实时回填(幂等;模型缺失跳过+徽标提示); 后端保留三用途:结构精修存储/回读(屏卡徽标消费)、build/artifact_to_note 命令(AI 增强 V1.0 回归地基)、旧数据兼容
  2. 精修工作台(前后对比):独立大模态(≈80% 窗口)——并排双栏(左规则/右精修)+ 语义分组 diff(章节/段落 hunk,删除折叠可展开不隐藏)+ 同步滚动 + 章节锚点回跳 + 底部操作(重新生成/ 放弃/采纳落库-版本化);入口=笔记预览 AI 精修卡;VersionPanel 增"与当前版本对比"(复用 diff 引擎);hunk 级部分采纳不做(版本化兜底)。市场依据:Notion before/after + GitHub 语义分组 diff + Smart Diff 反模式清单
  3. AI 输入剥离时间戳锚点:精修请求前 strip 全部锚点(省 token + 防干扰);输出章节标题级重新 挂锚(F3 anchor_ref 跨片已有);规则版段落锚点保留;成本预估按剥离后字符数
  4. 画面要点/词汇表完全移出笔记(无开关):笔记不再含画面要点文本段与词汇表;会话详情可见 (原料视图屏卡已有 + 详情页新增术语表展示);笔记配图能力保留(AI 精修 image 块 + NoteImage
    • 缩略图改造)

D 组 · 笔记页

  1. 三问题一次收:①树形合并——组侧栏与笔记列表合并为单栏树(全部笔记根 + 组节点展开 叶子;组头保留计数/徽标/复习/改判;搜索/标签过滤退化为平铺结果)+ 大纲在阅读视图内可收起 (折叠为悬浮"📑"按钮);②自动归组排查——本机数据核实 group_id 落库率(多为空→路由信号 增强,与 2️⃣ 领域识别联动;非空→UI 感知优化:组树"新入组"高亮);③图像缩略图——默认 240px 缩略图 + 点击 ImagePreviewOverlay 原图

二、关键决策与纪律(硬约束)

  • 采集中档案热改只影响后续采集,不重算历史(停止后产物可按新档案重建——既有覆盖语义)
  • 编号只改展示层,数据层 id 永不变
  • 记忆冲突不自动改记忆(用户手动裁决不自动推翻);采集中重评同样走"检测优先"机制
  • 精修懒自动仅会话详情入口触发,不做采集时实时精修(防资源竞争);hunk 级部分采纳不做
  • 产物命令保留不删(AI 增强 V1.0 回归地基 + 历史数据兼容);画面要点/词汇表移出笔记无开关

三、边界(不做清单)

平台适配器全面铺开(仅 B站试点)· 采集时实时精修 · 精修 hunk 级部分采纳 · 记忆偏好衰减/过期 · 笔记内画面要点配置开关 · 产物视图 UI 保留 · 窗口列表定时轮询(仅展开时刷新)

四、测试与验收

  • 纯函数:记忆四象限决策矩阵 / 新颖度变化区域黄金用例(PPT 同构页) / 水印聚类+区域出现率 (会话 38 回归) / diff 章节分组 / 锚点剥离 / display_no rank
  • 数据层:术语表命令(内存库);精修幂等(已精修屏跳过)
  • 命令:update_live_profile 入参校验;热切换参数生效(注入 fake 管线状态)
  • 前端:树组件状态机(展开/折叠/过滤退化)/ 工作台状态机 / 缩略图渲染 / 大纲折叠
  • 手工验收:采集中改档案热切换生效;PPT 同构页不再被过滤;会话 38 水印被过滤;精修工作台全流程 (对比/采纳/版本回滚);窗口展开刷新;会话编号删除归位;自动归组落库率核实
  • golden 用例同步更新(note_filter_golden_tests 等大量依赖画面要点断言)
  • 环境备注:cargo test 受 0xc0000139 问题制约时(v0.11.4 记录),纯函数层 rustc 独立编译验证兜底

交付验证记录(2026-08-22)

  • 实现:17 commits(1c84640..68d8684)+ 文档基线提交;78 文件 +3929/-933
  • 测试:cargo test 1497 passed / 0 failed(app_lib_tests 目标可运行;app_lib 目标仍受 0xc0000139 制约——同为 onnxruntime 加载期问题);前端 tsc 零错误、vitest 43 通过、vite 构建通过
  • clippy:本次引入警告全部清零(map/if let/is_empty/数组字面量修复);既有警告未触碰
  • 终审(final code review):Approved——11 项全覆盖、跨任务集成一致、零回归;I-1 修复 (领域自动重评跳过用户手动覆写维度——用户裁决优先,68d8684)
  • 关键交付:采集态档案三维热切换+自动重评 / 记忆四象限机制 / display_no 序号化 / 新颖度变化区域+档位阈值 / 水印 bbox+聚类+区域出现率(会话38回归)/ 产物视图下线+ 精修懒自动 / 精修工作台(并排双栏+语义diff)/ 锚点剥离+章节回挂 / 画面要点词汇表移出+ 详情术语表 / 笔记页树形合并+大纲收起+缩略图 / 归组路由领域强前提 / 窗口展开刷新
  • 遗留:真机验收待执行(采集态改档案热切换、PPT 同构页、会话 38 水印、精修工作台全流程等)