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