Merge pull request #2914 from pocharlies/fix/context-usage-server-total
fix(ui): stop the context meter from counting every internal round-trip
This commit is contained in:
@@ -87,6 +87,7 @@ import { getRuntimeKey } from "@/lib/runtime-switch"
|
||||
import { clearLastActiveSession, persistLastActiveSession, readLastActiveSession } from "./last-session-cache"
|
||||
import { persistWorktreeTopology, readPersistedWorktreeTopology } from "./worktree-topology-cache"
|
||||
import { rememberRuntimeLiveStatus } from "./runtime-live-memory"
|
||||
import { contextTokensFromBreakdown } from "@/stores/utils/tokenUtils"
|
||||
|
||||
export type { AttachedFile }
|
||||
|
||||
@@ -1174,7 +1175,7 @@ export const useSessionUIStore = create<SessionUIState>()((set, get) => ({
|
||||
const messages = getSyncMessages(sessionId)
|
||||
if (messages.length === 0) return null
|
||||
|
||||
type AssistantTokens = { input: number; output: number; reasoning: number; cache: { read: number; write: number } }
|
||||
type AssistantTokens = { total?: number; input: number; output: number; reasoning: number; cache: { read: number; write: number } }
|
||||
let lastTokens: AssistantTokens | undefined
|
||||
let lastMessageId: string | undefined
|
||||
for (let i = messages.length - 1; i >= 0; i--) {
|
||||
@@ -1182,7 +1183,7 @@ export const useSessionUIStore = create<SessionUIState>()((set, get) => ({
|
||||
if (msg.role !== "assistant") continue
|
||||
const tokens = (msg as { tokens?: AssistantTokens }).tokens
|
||||
if (!tokens) continue
|
||||
const total = tokens.input + tokens.output + tokens.reasoning + (tokens.cache?.read ?? 0) + (tokens.cache?.write ?? 0)
|
||||
const total = contextTokensFromBreakdown(tokens)
|
||||
if (total > 0) {
|
||||
lastTokens = tokens
|
||||
lastMessageId = msg.id
|
||||
@@ -1192,7 +1193,7 @@ export const useSessionUIStore = create<SessionUIState>()((set, get) => ({
|
||||
|
||||
if (!lastTokens) return null
|
||||
|
||||
const totalTokens = lastTokens.input + lastTokens.output + lastTokens.reasoning + (lastTokens.cache?.read ?? 0) + (lastTokens.cache?.write ?? 0)
|
||||
const totalTokens = contextTokensFromBreakdown(lastTokens)
|
||||
const thresholdLimit = contextLimit > 0 ? contextLimit : 200000
|
||||
const percentage = contextLimit > 0 ? Math.round((totalTokens / contextLimit) * 100) : 0
|
||||
const normalizedOutput = outputLimit > 0 ? Math.round((lastTokens.output / outputLimit) * 100) : undefined
|
||||
|
||||
Reference in New Issue
Block a user