返回 DeepSeek-Reasonix
contextSessionCache.ts
根目录 / desktop / frontend / src / lib / contextSessionCache.ts
1 import type { ContextInfo, ContextPanelInfo, WireUsage } from "./types";
2
3 // contextSessionCache picks the session-cumulative cache hit/miss pair for the
4 // panel's session average. The shared ContextInfo is refreshed after every
5 // usage event and also drives StatusBar, so prefer it over the panel's
6 // independently throttled snapshot. Panel telemetry remains the all-sources
7 // fallback for callers without live context; executor-only wire counters only
8 // bridge the pre-refresh gap. The pair always comes from one source so the
9 // computed rate never mixes scopes.
10 export function contextSessionCache(
11 info?: Pick<ContextPanelInfo, "sessionCacheHitTokens" | "sessionCacheMissTokens"> | null,
12 context?: Pick<ContextInfo, "cacheHitTokens" | "cacheMissTokens">,
13 usage?: Pick<WireUsage, "sessionCacheHitTokens" | "sessionCacheMissTokens">,
14 ): { hit: number; miss: number } {
15 const ctxHit = context?.cacheHitTokens ?? 0;
16 const ctxMiss = context?.cacheMissTokens ?? 0;
17 if (ctxHit + ctxMiss > 0) return { hit: ctxHit, miss: ctxMiss };
18 const infoHit = info?.sessionCacheHitTokens ?? 0;
19 const infoMiss = info?.sessionCacheMissTokens ?? 0;
20 if (infoHit + infoMiss > 0) return { hit: infoHit, miss: infoMiss };
21 return { hit: usage?.sessionCacheHitTokens ?? 0, miss: usage?.sessionCacheMissTokens ?? 0 };
22 }
23
23 lines TYPESCRIPT