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

1.8 KiB

修复大会话预览 cwd 误读

背景

大会话文件超过 CC_WEB_SESSION_META_FULL_PARSE_MAX_BYTES 后,侧栏列表使用头尾预览和正则提取元数据。当前正则会命中消息或工具调用中的第一个嵌套 cwd,导致会话在刷新后归入错误项目;点击会话完整解析后又恢复,形成归组漂移。

目标

让大会话的列表元数据只读取 JSON 顶层字段,保证刷新、点击和后续状态推送的项目归属一致。

范围

  • 修改 server.js 中大会话预览元数据读取逻辑。
  • 为嵌套 cwd 位于顶层 cwd 之前的场景增加自动化回归。
  • 保持小文件完整解析路径、会话加载路径和前端归组逻辑不变。

非目标

  • 不修改项目分组 UI 或 CSS。
  • 不新增前端缓存、列表版本号或乱序抑制逻辑。
  • 不迁移、改写或清理现有会话文件。
  • 不通过调整 JSON 属性顺序掩盖问题。

验收标准

  1. 大文件预览中即使消息工具参数先出现 cwd=/home/fineui-web-mcp,列表仍返回顶层 cwd=/home/上下游协同平台。
  2. 嵌套 projectName、字符串内容中的伪键和转义字符不污染顶层元数据。
  3. 顶层字段缺失或为 null 时维持现有安全降级语义。
  4. 顶层 cwd 位于尾部预览、嵌套 cwd 位于头部预览时仍返回顶层值。
  5. 顶层字段跨预览截断边界时安全降级;头尾片段不能被错误拼接为伪 JSON 字段。
  6. 不无上限读取完整大会话文件。
  7. node scripts/regression.js --target session-preview-metadata、完整回归、语法检查和差异检查通过。

约束

  • 保持实现小而可审计,避免引入新的 JSON 解析依赖。
  • 异常处理不能让一个损坏会话阻断整个 session_list。
  • 代码注释使用简体中文,只解释必要的边界与原因。