fix command compression token estimate (#751)

This commit is contained in:
ekko
2026-05-15 14:10:49 +08:00
committed by GitHub
parent 3d49f778fb
commit 84e98cfb5e
2 changed files with 26 additions and 8 deletions
@@ -66,6 +66,24 @@ export async function buildDbHistory(
}).filter((m): m is ChatMessage => m !== null)
}
export function estimateSnapshotAwareHistoryUsage(
sessionId: string,
history: ChatMessage[],
): { messageCount: number; tokenCount: number } {
const snapshot = getCompressionSnapshot(sessionId)
const messages = snapshot
? [
{ role: 'user', content: SUMMARY_PREFIX + snapshot.summary },
...history.slice(snapshot.lastMessageIndex + 1),
]
: history
const usage = estimateUsageTokensFromMessages(messages)
return {
messageCount: messages.length,
tokenCount: usage.inputTokens + usage.outputTokens,
}
}
export async function buildCompressedHistory(
sessionId: string,
profile: string,
@@ -210,12 +228,13 @@ export async function forceCompressBridgeHistory(
const upstream = getUpstream(profile).replace(/\/$/, '')
const apiKey = getApiKey(profile) || undefined
const beforeUsage = estimateUsageTokensFromMessages(history)
const totalTokens = beforeUsage.inputTokens + beforeUsage.outputTokens
const beforeUsage = estimateSnapshotAwareHistoryUsage(sessionId, history)
const totalTokens = beforeUsage.tokenCount
bridgeLogger.info({
sessionId,
profile,
historyMessages: history.length,
snapshotAwareMessages: beforeUsage.messageCount,
bridgeProvidedMessages: Array.isArray(_messages) ? _messages.length : 0,
tokenEstimate: totalTokens,
snapshotAware: true,