Skip to content

Latest commit

 

History

History
31 lines (22 loc) · 3.53 KB

File metadata and controls

31 lines (22 loc) · 3.53 KB

ADR-026:AI 精修策略化与流式会话化

状态:已接受(2026-09-01,用户批准) 关联:spec([ ] 已归档) · REQ-245/246/247 · v0.11.6 策略层设计(2026-08-22,未实施)· ADR-010(AI 为增强层·本地兜底铁律)· ADR-016(密钥 DPAPI)

背景

精修提示词为固定模板(prompts/note_refine.json v2,build_system(profile) 无参),用户无法控制产出形态(例子密度/概念表达/口语保留/结论顺序);v0.11.6 策略层设计(strategy_dims/presets/ai_strategy.rs/设置偏好/任务覆盖)已批准但未实施;v0.16.1 任务对话化(REQ-241/242/230)只做到"完成后轨迹只读展示",精修请求本身走整包 chat_json + 任务轮询,无流式;AI 能力仅会话级,手写笔记无法精修。

决策

  1. 策略只改提示词,协议与校验零改动(v0.11.6 硬约束):维度/档位/意图声明进 prompts/note_refine.json v3(单一事实源,include_str 捆绑,golden 测试防漂移),指令文案在 JSON 中声明(可校准不进代码);ai_strategy.rs 纯函数只做解析/拼装/回退。
  2. 三层交互:目标层(书面 chips + 自由输入本地关键词映射,未命中诚实提示,不交裸 LLM)→ 档位层(4 档阶梯,L2=现状逐字节零变化)→ 旋钮层(6 维高级微调)。
  3. 红线:L3 允许表达改写(通俗转述/金句提炼/导语)但事实红线不动(不新增事实/术语数据原样/不确定保留原文);L4 只删不增;精修与知识补充仍严格区分;协议 schema 不随策略变化。
  4. 笔记级 AI:唯一入口=编辑态「🤖 AI」菜单(精修/知识补充/预留);阅读态用 AI 直接进入编辑态;输入=编辑器当前内容直接传参(未保存所见即所修);基线=当前笔记版;版本链(source=ai-refine)复用;新增 handwritten(笔记式)档案仅用于笔记级请求,采集端档案零改动。
  5. 精修流式会话化(B+ 档):Tauri IPC 流式通道(chat_stream 同机制),帧=progress/block_done/slice_failed/done;片级解析流(片完成 validate 后推渲染 markdown),不承诺中间态;协议强校验/失败回退/诚实降级原样;任务表语义(幂等/去重/成本/审计/重试/trajectory 终态落库)全保留——流式是呈现增强,不是替代任务语义;完成自动升工作台 + [回到会话][查看笔记] 双入口。
  6. 唯一协议改动:image 块前缀白名单化(session-images/ + notes-images/),向后兼容。

备选(否决)

  • 旋钮矩阵为主(用户裁决:保留为主交互)+ 无目标层 → 表达困难不解决
  • 块级增量 JSON 解析流(C 档)→ 增量解析状态机风险高,B+ 已满足体验,帧格式留升级桥
  • 可编辑提示词 / 裸 LLM 意图解析 → 破坏协议语义/黑盒回归
  • 阅读态双入口保留 → 维护两套状态,用户裁决并入编辑态
  • 多档同时生成对比 → 成本×2,YAGNI

后果

  • 正向:精修产出可到达(目标→档位→旋钮→预览→流式→溯源→回滚全链路);手写笔记获得与会话笔记同级的 AI 能力
  • 代价:prompt 组装签名变更(build_system 增 ResolvedDims)适配器/任务层透传;image 校验白名单化需回归;前端新增策略/流式两组组件
  • 兼容:旧 ai_settings.json 零迁移(serde default 回填 L2);旧任务/缓存解析不变;L2 行为逐字节回归守护