Files
2026-08-07 10:54:08 +08:00

1.6 KiB
Raw Permalink Blame History

调研结论

用户可见现象

  • 同一会话 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。
  • 现有预览读取用于避免大文件完整解析,修复不应退化成无上限读取整个文件。