返回 DeepSeek-Reasonix
TURN_NAVIGATION_VALIDATION.md
根目录 / docs / TURN_NAVIGATION_VALIDATION.md
1 # 完整轮次导航验证记录
2
3 ## 后续缺陷检查
4
5 追加检查修复了以下问题:
6
7 - 分页失败曾被其他成功页覆盖,重试也未重新读取失败页。现在按页保留错误并重试失败范围。
8 - 重叠刷新曾令慢请求不断失效。现在同一会话共享正在进行的刷新,并在完成后合并处理更新信号。
9 - 返回最新曾未参与统一窗口请求归属校验,也未将读者取消信号传到加载入口。现在本地、远程
10 返回最新均接受当前交互校验;后发目标或已挂载轮次点击可使旧请求失效,取消不显示网络错误。
11 - 缺少目录能力时,活动标记曾用绝对轮次号定位已加载列表。现在使用该列表内的相对位置。
12
13 补充确定性测试覆盖分页错误保留、同切面重试、慢刷新去重、新切面与旧分页回包竞争、
14 返回最新与后发目标窗口竞争。Chromium 和 Electron 增加“返回最新等待期间点击已挂载轮次”
15 的实际事件回归,验证旧回包不能替换正文或恢复尾部跟随。
16
17 本轮前端完整回归、类型检查、Hooks lint、仓库 lint 和生产构建均通过。
18 变基到最新 `main-v2` 后,启动原始体积实测 2049.5 KiB,门槛按既有 Linux
19 生产者差值校准为 2049.7 KiB;压缩体积和其他预算保持不变。
20
21 验证基线:`8ad1f01bdfb6c7a47e115335909654b51eceb82f` 加本工作区未提交改动。
22 本记录描述本地实现与验证,不代表 GitHub CI、安装包发布或人工原生平台验收。
23
24 ## 实现与边界
25
26 - 新目录从持久化 locator 的可见轮次和版本区间读取摘要,独立于正文驻留窗口。
27 - 本地 Desktop、远程 Desktop 与 Serve 使用 `history-outline-v1`;旧对端保留已加载轮次导航。
28 - 固定切面分页,128 轮一页,每会话最多六页,全 renderer 摘要预算 8 MiB。
29 - 正文直接以消息身份请求 32 条窗口,维持默认三页驻留;删除连续寻找目标的翻页循环。
30 - 新点击、读者接管、会话替换与普通翻页共享取消/请求归属检查;挂载等待最多五秒。
31 - 返回最新先安装最新窗口,再恢复尾部跟随。
32 - 未修改模型输入、提示词、工具定义或权威会话日志格式。
33
34 索引兼容性与计划有一处调整:两个可选查询索引采用幂等事务安装,不增加派生 schema
35 版本。现有旧读取器拒绝更高 schema 版本,因此增加 migration 版本反而会破坏旧读取器
36 兼容性。测试验证版本仍为 10、缺失索引可以恢复、查询计划使用索引。
37
38 启动包共享请求协调代码在当前基线增加约 2.8 KiB(0.134%);目录 UI 和跳转协调
39 模块仍按需加载。当前基线实测为 2049.5 KiB,门槛为 2049.7 KiB。
40 压缩体积、单 chunk、CSS、语言包和正文驻留预算未扩大。
41
42 ## 自动验证
43
44 以下命令在对应模块目录运行;测试使用临时会话与模拟服务,不访问用户生产会话。
45
46 | 范围 | 验证 |
47 | --- | --- |
48 | Go 根模块 | `go test ./internal/session ./internal/transcript ./internal/control ./internal/serve` |
49 | 目录并发检查 | `go test -race ./internal/session ./internal/serve -run TestHistoryOutline` |
50 | Desktop 独立模块 | `go test ./... -run 'HistoryOutline\|HistoryWindow\|HostCommand\|Contract'` |
51 | 前端 | `pnpm test:typecheck`、`pnpm lint:hooks`、`pnpm test:transcript` |
52 | 构建 | `pnpm build`,包含单滚动写入、应用分层、主题变量和生产预算检查 |
53 | 仓库 | `go run ./tools/repolint`、`git diff --check` |
54 | 既有浏览器回归 | `CHAT_BROWSER=chromium node bench/chat-transcript.mjs` |
55 | 新目录浏览器回归 | `node bench/turn-outline.mjs` |
56 | 新目录 Electron 回归 | `node bench/turn-outline.mjs --electron` |
57
58 浏览器命令需将 `PLAYWRIGHT_BROWSERS_PATH` 指向本机已安装的 Playwright 浏览器缓存。
59 可设置 `REASONIX_OUTLINE_EVIDENCE` 指定 JSON 与截图输出目录,默认位于系统临时目录下
60 的 `reasonix-turn-outline-evidence`。
61
62 持久化测试覆盖首末页、追加后的固定切面、摘要编辑、撤回后的重新编号与空目录、
63 索引查询计划及旧 schema 兼容。远程测试覆盖独立能力协商、规范会话身份、切面参数
64 和网络错误;网络失败不会伪装成缺少能力。
65
66 生产 Follow v2 接线回归分别覆盖本地与远程:六轮会话只加载一轮正文,仍展示六个标记;
67 首轮、中间轮、末轮各请求一次窗口。测试不手动注册目录 Store。额外强制两种竞争顺序:
68 旧翻页晚于目标安装返回,以及目标晚于后发翻页返回,确认旧结果不能覆盖新窗口。
69 事务测试还覆盖读者接管、连续点击、切面重试、保持原消息身份和确定性挂载超时。
70
71 ## Chromium 与 Electron 证据
72
73 两种宿主均完成 25,000 轮会话的第 1、10,001、25,000 轮跳转,初始正文仅一轮。
74 前三次跳转各一次正文定位读取,没有中间正文页读取。断言导航标记不超过 52 个,
75 摘要条目不超过 768 个,正文条目不超过 96 个。
76
77 两种宿主还覆盖悬停预览、Home/End/Enter、明暗主题、700 像素窄窗口、延迟请求期间
78 鼠标滚轮接管、切换会话后旧回包,以及从旧窗口返回最新。页面错误记录为空。
79 导航条活动标记采用直接定位;不会因平滑移动经过中间范围而发出线性数量的摘要请求。
80
81 Electron 使用隔离、隐藏的真实 Electron 窗口,输入由 Playwright 注入。它验证了
82 Electron renderer 的实际事件和布局,但不是发布安装包验收,也未取得人工操作
83 macOS/Windows 原生滚动条拖动的证据。该项原生平台证据仍未完成,不以浏览器结果替代。
84
84 lines MARKDOWN