# 调研结论 ## 用户可见现象 - 同一会话 `bf88c202-711a-4f2f-b6e3-b29062f37b20` 刷新后归入 `fineui-web-mcp`。 - 点击后同一会话回到正确的 `上下游协同平台`。 - 后续 `session_list` 推送会再次把它归入错误分组。 ## 已证实根因 - 目标会话文件为 909402 bytes,超过默认 512KB 完整元数据解析阈值。 - 大文件路径通过 `readSessionPreview()` 读取头尾片段。 - `jsonStringFieldFromPreview()` 用正则匹配第一个同名键,不识别 JSON 层级。 - 文件中首次出现的 `cwd` 位于消息工具调用 `fastctx.run` 的参数内,值为 `/mnt/e/我的项目/MCP/fineui-web-mcp`。 - 真正的顶层 `cwd` 是 `/mnt/e/华电众信/2026/上下游协同平台`。 - 刷新使用错误的预览元数据;点击使用完整 JSON,因此出现往返漂移。 ## 代码边界 - 根因位置:`server.js` 的预览字段读取与 `loadSessionMetaFromFile()` 大文件分支。 - 消费链路:`sendSessionList()` → 前端 `session_list` 整批替换 → `groupSessionsByProject()`。 - 点击恢复链路:`handleLoadSession()` 完整解析 → `session_info` → `mergeSessionListSnapshot()`。 - 前端按收到的数据正确渲染,不属于本次修改范围。 ## 风险点 - 不能仅把顶层 `cwd` 移到 `messages` 前面,这依赖属性顺序且不能解决其他顶层字段误读。 - 必须覆盖字符串转义、嵌套对象/数组、头尾拼接边界、缺失字段和 `null`。 - 现有预览读取用于避免大文件完整解析,修复不应退化成无上限读取整个文件。