# 补齐定位列表的完整历史索引 ## 目标 让“定位”列表展示当前会话的全部用户消息,即使聊天区只保留最近 45 条用于显示;旧消息只进入定位索引,不重新插入聊天 DOM,也不额外占用聊天滚动空间。 ## 阶段 | 阶段 | 状态 | 验收标准 | |---|---|---| | 1. 核对定位列表与历史分页的数据链路 | complete | 明确当前定位数据仅来自 DOM,并确认可复用的历史分页响应 | | 2. 补充完整定位索引的失败回归 | complete | 回归能证明隐藏旧消息时定位列表仍应获得完整用户消息 | | 3. 增加独立的定位历史索引缓存 | complete | 打开定位列表时可按页读取完整历史,且不改变聊天消息 DOM | | 4. 支持旧消息定位加载与滚动 | complete | 点击未渲染旧消息会按消息索引加载所需页并滚动到目标 | | 5. 运行定向回归、语法和差异检查 | complete | 定向回归、JS 语法检查、git diff --check 全部通过 | | 6. 清理临时记录并交付修改结果 | complete | TODO CSV 删除,明确完整列表与聊天空间隔离的实现和验证结果 | ## 机器可读阶段状态 ### Phase 1:核对定位列表与历史分页的数据链路 **Status:** complete ### Phase 2:补充完整定位索引的失败回归 **Status:** complete ### Phase 3:增加独立的定位历史索引缓存 **Status:** complete ### Phase 4:支持旧消息定位加载与滚动 **Status:** complete ### Phase 5:运行定向回归、语法和差异检查 **Status:** complete ### Phase 6:清理临时记录并交付修改结果 **Status:** complete ## 关键决策 - 不改变聊天区“最近 45 条 + 手动回看”的显示策略。 - 不把定位列表的完整历史通过隐藏 DOM 塞进消息滚动区;旧消息只保存在轻量索引对象中。 - 复用 `load_history_page` 的现有分页协议,新增请求标识分支,避免与用户点击“查看更早消息”的聊天分页互相抢状态。 ## 错误记录 | 错误 | 尝试 | 处理 | |---|---|---| | 定向历史回归按预期失败:缺少 `currentOutlineHistoryState` | 1 | 证明旧实现没有独立定位索引;已补充失败契约后进入实现 | | 全量回归提取历史处理器时报 `activeOutlineHistoryRequest is not defined` | 1 | 为现有历史处理器回归夹具补充独立定位状态和合并函数桩;随后全量回归通过 |