mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-09 00:38:28 +00:00
fix: update totalTokens after compaction using last-call usage (#15018)
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: 9214291bf7
Co-authored-by: shtse8 <8020099+shtse8@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
This commit is contained in:
46
src/auto-reply/reply/session-run-accounting.ts
Normal file
46
src/auto-reply/reply/session-run-accounting.ts
Normal file
@@ -0,0 +1,46 @@
|
||||
import { deriveSessionTotalTokens, type NormalizedUsage } from "../../agents/usage.js";
|
||||
import { incrementCompactionCount } from "./session-updates.js";
|
||||
import { persistSessionUsageUpdate } from "./session-usage.js";
|
||||
|
||||
type PersistRunSessionUsageParams = Parameters<typeof persistSessionUsageUpdate>[0];
|
||||
|
||||
type IncrementRunCompactionCountParams = Omit<
|
||||
Parameters<typeof incrementCompactionCount>[0],
|
||||
"tokensAfter"
|
||||
> & {
|
||||
lastCallUsage?: NormalizedUsage;
|
||||
contextTokensUsed?: number;
|
||||
};
|
||||
|
||||
export async function persistRunSessionUsage(params: PersistRunSessionUsageParams): Promise<void> {
|
||||
await persistSessionUsageUpdate({
|
||||
storePath: params.storePath,
|
||||
sessionKey: params.sessionKey,
|
||||
usage: params.usage,
|
||||
lastCallUsage: params.lastCallUsage,
|
||||
modelUsed: params.modelUsed,
|
||||
providerUsed: params.providerUsed,
|
||||
contextTokensUsed: params.contextTokensUsed,
|
||||
systemPromptReport: params.systemPromptReport,
|
||||
cliSessionId: params.cliSessionId,
|
||||
logLabel: params.logLabel,
|
||||
});
|
||||
}
|
||||
|
||||
export async function incrementRunCompactionCount(
|
||||
params: IncrementRunCompactionCountParams,
|
||||
): Promise<number | undefined> {
|
||||
const tokensAfterCompaction = params.lastCallUsage
|
||||
? deriveSessionTotalTokens({
|
||||
usage: params.lastCallUsage,
|
||||
contextTokens: params.contextTokensUsed,
|
||||
})
|
||||
: undefined;
|
||||
return incrementCompactionCount({
|
||||
sessionEntry: params.sessionEntry,
|
||||
sessionStore: params.sessionStore,
|
||||
sessionKey: params.sessionKey,
|
||||
storePath: params.storePath,
|
||||
tokensAfter: tokensAfterCompaction,
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user