Files
cc-web/.planning/codex-rollout-history-merge/findings.md

1.7 KiB
Raw Blame History

调研发现

  • server.js 中 resolveSessionHistory 位于约 4489 行,session_info、session_history_chunk、resume_session_result 多处复用。

  • lib/codex-rollouts.js 是 native rollout 解析入口,需结合 server.js 的持久化写入路径分析。

  • public/app.js 已有 renderMessages 与 reconcileRenderedSessionMessages,前端存在重连/历史刷新竞态相关逻辑。

  • codebase-memory 项目 home-cc-web 索引状态为 ready(8208 nodes / 19300 edges)。

  • 工作区存在用户已有未提交改动:lib/ccweb-mcp-server.js、scripts/ccweb-message-reply-unit.js,本任务不触碰。

  • 2026-09-21:db04e08 已删除全量 native 替换,但 merge 的数值 baseIndex 回退仍不可靠;messagesEquivalent 不支持 codexAppTurnId 与 native turnId 跨来源对齐。

  • 前端 prepend/reconcile 仍以相同下标跳过不同 ID,缓存也会按下标覆盖不同消息。

  • sessions/35394008-4f0c-43c0-a481-b622d9e6b884.json 本机暂未找到,不能假装完成迁移。

  • 自动回传使用 buildCrossConversationReplyAutoRunText 的“子对话回传已返回……”包装,需与“来自……”投递包装分别精确识别;两者均不能作为普通用户消息。

  • response_item 中存在 AGENTS/environment 等用户角色上下文;有 event_msg.user_message 时以事件为权威,仅从匹配 response 补充 ID。

  • done 原来不携带持久化助手身份,结束后的本地 stream 与刷新消息无法去重;现已将最终消息及合并后下标通过 done 传递。

  • 新迁移能力通过已认证 WebSocket 在服务端同步检查/备份/写入;单文件提供 --migrate-session-history 入口,默认预览,--apply 写入。