别再重复扫描 Claude Code 的转录记录
别再每次重新扫描 Claude Code 的全部记录了
转录监控器可以频繁轮询而不变得昂贵。问题本身不在于定时器,而在于把整个存档当作每次触发的热路径。当开发者积累了数月的 Claude Code 历史记录,每次重新打开每个转录文件、从每个文件里解析尾部内容,会让稳定状态下的工作量与存档大小成正比。这还会带来正确性问题:尾部可能从 JSON 行的中间开始,较早的完成证据可能盖过较新的交接,多个会话可能被压缩成一个全局答案。
将发现与摄取分开
使用轻量级的发现遍历来保留文件标识、大小和修改时间。只有新文件或发生变更的文件才应进入解析队列。对于已知的转录文件,应从其上次完整的字节偏移处继续读取,而不是从头重新读取。
感知追加的游标需要五种行为
- 对每个转录文件保留上次完整偏移量
- 当文件增长时,只读取追加的范围
- 将不完整的尾行带到下一次读取中
- 检测文件截断或替换,安全地重新启动
- 为确切会话保留最新的语义证据
只有恢复正确的时候,游标才是一种优化。较小的文件、发生变更的标识或无效的连续读取,应该触发有限范围的重建,而不是静默丢弃记录。
保持状态语义独立于 I/O 节省
少读几个字节并不意味着可以猜测。保留提供者和会话标识,比较有序的时间戳,区分工作、等待、你的回合、错误、完成和过时证据。静默描述新鲜度,但不能证明成功完成。
衡量指标
测量:检查的文件数、读取的字节数、解析失败数、队列深度和扫描耗时。用大型存档进行测试。健康的稳态开销应随变更文件和追加字节而增长,而不是与总历史记录成正比。
Agent Island
Agent Island 是一个免费、开源的状态伴侣工具,适用于 macOS 和 Windows 上的 Claude Code 和 Codex。它读取本地会话记录,显示状态和「你的回合」提醒,无需 Agent Island 账户,也不会将会话数据上传到 Agent Island。
停止重复扫描每个 Claude Code 转录记录
我协助运营 Agent Island;这里有份详细的工程指南:高效监控大型 Claude Code 转录存档。