07.3 存储、遥测与横切基础设施

关注源码

  • src/utils/sessionStorage.ts
  • src/utils/toolResultStorage.ts
  • src/utils/fileStateCache.ts
  • src/utils/task/*
  • src/utils/telemetry/*
  • src/native-ts/*
  • src/migrations/*

存储系统为什么重要

这套产品不是纯内存聊天,所以必须持久化很多对象:

  • transcript
  • sidechain transcript
  • task output
  • tool result replacement 记录
  • file history / attribution snapshot
  • session metadata

这些能力大多落在 utils/sessionStorage.tsutils/task/*toolResultStorage.ts

toolResultStorage.ts 的角色

它负责处理“大工具结果不能一直塞在上下文里”这个问题,包括:

  • 结果持久化
  • 内容替换
  • budget 裁剪
  • replacement state clone/reconstruct

这使工具结果既能被引用,又不会无限占用 prompt。

fileStateCache 与 read cache

文件读取缓存被多处复用:

  • 主线程文件读取
  • compact 后 reinjection
  • forked agent cache sharing
  • session memory / suggestion fork

说明文件缓存不是一个局部优化,而是上下文与 cache-safe fork 的基础设施。

遥测是横切能力

utils/telemetry/*services/analytics/* 一起提供:

  • spans
  • counters
  • event logging
  • perfetto/beta tracing
  • plugin telemetry

很多运行时决策都内建 telemetry,而不是事后补埋点。

native-tsmigrations

  • native-ts 处理少量性能敏感或原生绑定能力。
  • migrations 负责 settings/state 的版本演进。

它们文件不多,但对长期维护非常关键。

设计上的关键点

1. transcript 与 task output 是系统级资产

很多 feature 都依赖这些持久化数据,所以它们被下沉到基础设施层。

2. 横切关注点被集中处理

日志、遥测、缓存、清理、快照都没有散在业务模块里,而是各有基础设施入口。

3. 支撑层决定系统可演化性

真正让系统能承载多模式、多工具、多智能体的,不只是 query.ts,而是这些横切基础设施是否稳固。