30 lines
1.6 KiB
Markdown
30 lines
1.6 KiB
Markdown
# 调研结论
|
||
|
||
## 用户可见现象
|
||
|
||
- 同一会话 `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`。
|
||
- 现有预览读取用于避免大文件完整解析,修复不应退化成无上限读取整个文件。
|