Skip to content

Agent Timeline v0.7.5

Choose a tag to compare

@github-actions github-actions released this 31 Jul 10:40
· 7 commits to main since this release

修一个把同一场对话摊成好几个「项目」的分组缺陷。用户报的现象是「消息不及时、时间有问题」——
实际时间戳分秒无误,是命令被挂到了别的项目组里、在原来那组找不到,于是把一条措辞相近的旧命令
当成了自己刚发的那条。Windows 先落地,macOS 复现确认后同轮跟进对齐。

修复(Windows)

  • claude 会话的项目名钉在「会话启动目录」,不再跟着 cwd 漂。原规则取每条记录 cwd
    末段目录名,而一场会话里的 cwd 会被 subagent、工具调用里的 cd 改写:实机会话从仓库根
    启动后 cwd 依次漂到 tools/harness-governanceuikit_uiautomation_midscene
    hawk_agent-rsmeeting-hawkhawk_server一场对话被摊成 7 个「项目」,同一个
    仓库在全库里裂成 8 组。改后只认本文件第一条 cwd,之后的漂移只用于「是不是摘要器自己的
    会话」判定。语义是按会话在哪儿起的分组——直接在子目录里起的会话仍然自成一组;
  • 断点续读回头补读文件头ClaudeParser.FirstCwd + PinProjectFromHead,与
    CodexParser.EnsureMeta 同构)。否则项目名会钉在「重启恢复那一刻恰好在哪个子目录」,
    比漂移更难查。头扫描封顶 256 KB,不为一个显示名整读 20 MB 的会话文件;
  • 一次性回填存量节点TimelineCoordinator.BackfillProjectPins,marker
    AppSettings.ProjectPinBackfillVersion)。解析器改规则只对新节点生效,历史仍是裂的。
    回填与实时解析共用 FirstCwd 同一口径,否则回填完再跑一轮又会改回去;只 UPDATE project
    一列、不碰唯一键,重跑幂等;源文件已删除或读不出 cwd 的保持原样,不猜。在建窗之前
    同步跑完,否则本次启动看到的还是旧分组;
  • 其余通道不受影响:codex 的 cwd 取第一条 session_meta(本就只应用一次),
    grok / kimi / zcode 取目录名,都不存在会话中途漂移。

验证(Windows)

  • Core 冒烟 442 → 451:漂移不改组、续读补读文件头、FirstCwd 在缺文件时返回 null,
    以及回填的三条(改对、源文件没了不动、重跑幂等);
  • 真实库实机(改动前整份备份 db/-wal/-shm/settings):项目归属回填完成:129 个节点改挂到 会话启动目录,8 个碎组并回一组,条数 1428+67+32+15+7+5+2+1 = 1557 与实测逐个相等;
    35 个 claude 源文件回填耗时 0.84 s,本次启动零 WARN / 零 ERROR。

修复(macOS)

  • 同一缺陷,独立复现确认后对齐:本会话自身的真实语料cwd 就漂过——
    agent-timelineagent-timeline/macos.../Sources/AgentTimeline
    agent-timeline/windows,回填前真实库对应节点分落 agent-timeline\|85macos\|2
    AgentTimeline\|1 三组。规则与验证同 Windows(项目名钉在会话启动目录、断点续读补读
    文件头封顶 256 KB、存量回填 version-gated 一次性迁移),实现路径不同:
    ClaudeParser.firstCwd 头部扫描 + ParsedFileContext.projectPinned 兜底、
    AppDelegate.backfillProjectPinsIfNeeded。顺手把项目名派生换成早已存在但从未被这条
    路径调用过的 ParserSupport.projectName(fromCwd:fallback:)(统一走反斜杠归一化+空白
    兜底,与 win ParserUtil.ProjectNameFromCwd 同口径)。只改 claude:复核确认 codex/
    grok/kimi/zcode 都不存在中途漂移。

验证(macOS)

  • swift test 95 → 98(漂移不改已钉住的项目名、firstCwd 忽略漂移只认文件头、
    makeContext 靠头部扫描钉住——覆盖断点续读场景);
  • 真实库实机(改动前整份备份 db/-wal/-shm/defaults):回填日志
    项目归属回填完成:9 个节点改挂到会话启动目录,9 = macos(2)+AgentTimeline(1)+ harnessloop(5)+android(1) 逐项对上;claude 节点总数回填前后不变(226 → 226,只是
    重新分组);项目筛选下拉里四个幽灵组消失;手工清零 marker 强制重跑确认幂等
    (结果逐字段相同、无新变更)。