mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-09 07:47:39 +00:00
Config: expose Pi compaction tuning values (openclaw#21568) thanks @Takhoffman
Verified: - pnpm install --frozen-lockfile - pnpm build - pnpm check - pnpm test:macmini Co-authored-by: Takhoffman <781889+Takhoffman@users.noreply.github.com>
This commit is contained in:
@@ -4,7 +4,13 @@ export const DEFAULT_PI_COMPACTION_RESERVE_TOKENS_FLOOR = 20_000;
|
||||
|
||||
type PiSettingsManagerLike = {
|
||||
getCompactionReserveTokens: () => number;
|
||||
applyOverrides: (overrides: { compaction: { reserveTokens: number } }) => void;
|
||||
getCompactionKeepRecentTokens: () => number;
|
||||
applyOverrides: (overrides: {
|
||||
compaction: {
|
||||
reserveTokens?: number;
|
||||
keepRecentTokens?: number;
|
||||
};
|
||||
}) => void;
|
||||
};
|
||||
|
||||
export function ensurePiCompactionReserveTokens(params: {
|
||||
@@ -32,3 +38,60 @@ export function resolveCompactionReserveTokensFloor(cfg?: OpenClawConfig): numbe
|
||||
}
|
||||
return DEFAULT_PI_COMPACTION_RESERVE_TOKENS_FLOOR;
|
||||
}
|
||||
|
||||
function toNonNegativeInt(value: unknown): number | undefined {
|
||||
if (typeof value !== "number" || !Number.isFinite(value) || value < 0) {
|
||||
return undefined;
|
||||
}
|
||||
return Math.floor(value);
|
||||
}
|
||||
|
||||
function toPositiveInt(value: unknown): number | undefined {
|
||||
if (typeof value !== "number" || !Number.isFinite(value) || value <= 0) {
|
||||
return undefined;
|
||||
}
|
||||
return Math.floor(value);
|
||||
}
|
||||
|
||||
export function applyPiCompactionSettingsFromConfig(params: {
|
||||
settingsManager: PiSettingsManagerLike;
|
||||
cfg?: OpenClawConfig;
|
||||
}): {
|
||||
didOverride: boolean;
|
||||
compaction: { reserveTokens: number; keepRecentTokens: number };
|
||||
} {
|
||||
const currentReserveTokens = params.settingsManager.getCompactionReserveTokens();
|
||||
const currentKeepRecentTokens = params.settingsManager.getCompactionKeepRecentTokens();
|
||||
const compactionCfg = params.cfg?.agents?.defaults?.compaction;
|
||||
|
||||
const configuredReserveTokens = toNonNegativeInt(compactionCfg?.reserveTokens);
|
||||
const configuredKeepRecentTokens = toPositiveInt(compactionCfg?.keepRecentTokens);
|
||||
const reserveTokensFloor = resolveCompactionReserveTokensFloor(params.cfg);
|
||||
|
||||
const targetReserveTokens = Math.max(
|
||||
configuredReserveTokens ?? currentReserveTokens,
|
||||
reserveTokensFloor,
|
||||
);
|
||||
const targetKeepRecentTokens = configuredKeepRecentTokens ?? currentKeepRecentTokens;
|
||||
|
||||
const overrides: { reserveTokens?: number; keepRecentTokens?: number } = {};
|
||||
if (targetReserveTokens !== currentReserveTokens) {
|
||||
overrides.reserveTokens = targetReserveTokens;
|
||||
}
|
||||
if (targetKeepRecentTokens !== currentKeepRecentTokens) {
|
||||
overrides.keepRecentTokens = targetKeepRecentTokens;
|
||||
}
|
||||
|
||||
const didOverride = Object.keys(overrides).length > 0;
|
||||
if (didOverride) {
|
||||
params.settingsManager.applyOverrides({ compaction: overrides });
|
||||
}
|
||||
|
||||
return {
|
||||
didOverride,
|
||||
compaction: {
|
||||
reserveTokens: targetReserveTokens,
|
||||
keepRecentTokens: targetKeepRecentTokens,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user