mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-08 22:28:27 +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:
@@ -1,37 +1,123 @@
|
||||
import { describe, expect, it, vi } from "vitest";
|
||||
import {
|
||||
applyPiCompactionSettingsFromConfig,
|
||||
DEFAULT_PI_COMPACTION_RESERVE_TOKENS_FLOOR,
|
||||
ensurePiCompactionReserveTokens,
|
||||
resolveCompactionReserveTokensFloor,
|
||||
} from "./pi-settings.js";
|
||||
|
||||
describe("ensurePiCompactionReserveTokens", () => {
|
||||
describe("applyPiCompactionSettingsFromConfig", () => {
|
||||
it("bumps reserveTokens when below floor", () => {
|
||||
const settingsManager = {
|
||||
getCompactionReserveTokens: () => 16_384,
|
||||
getCompactionKeepRecentTokens: () => 20_000,
|
||||
applyOverrides: vi.fn(),
|
||||
};
|
||||
|
||||
const result = ensurePiCompactionReserveTokens({ settingsManager });
|
||||
const result = applyPiCompactionSettingsFromConfig({ settingsManager });
|
||||
|
||||
expect(result).toEqual({
|
||||
didOverride: true,
|
||||
reserveTokens: DEFAULT_PI_COMPACTION_RESERVE_TOKENS_FLOOR,
|
||||
});
|
||||
expect(result.didOverride).toBe(true);
|
||||
expect(result.compaction.reserveTokens).toBe(DEFAULT_PI_COMPACTION_RESERVE_TOKENS_FLOOR);
|
||||
expect(settingsManager.applyOverrides).toHaveBeenCalledWith({
|
||||
compaction: { reserveTokens: DEFAULT_PI_COMPACTION_RESERVE_TOKENS_FLOOR },
|
||||
});
|
||||
});
|
||||
|
||||
it("does not override when already above floor", () => {
|
||||
it("does not override when already above floor and not in safeguard mode", () => {
|
||||
const settingsManager = {
|
||||
getCompactionReserveTokens: () => 32_000,
|
||||
getCompactionKeepRecentTokens: () => 20_000,
|
||||
applyOverrides: vi.fn(),
|
||||
};
|
||||
|
||||
const result = ensurePiCompactionReserveTokens({ settingsManager });
|
||||
const result = applyPiCompactionSettingsFromConfig({
|
||||
settingsManager,
|
||||
cfg: { agents: { defaults: { compaction: { mode: "default" } } } },
|
||||
});
|
||||
|
||||
expect(result).toEqual({ didOverride: false, reserveTokens: 32_000 });
|
||||
expect(result.didOverride).toBe(false);
|
||||
expect(result.compaction.reserveTokens).toBe(32_000);
|
||||
expect(settingsManager.applyOverrides).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("applies explicit reserveTokens but still enforces floor", () => {
|
||||
const settingsManager = {
|
||||
getCompactionReserveTokens: () => 10_000,
|
||||
getCompactionKeepRecentTokens: () => 20_000,
|
||||
applyOverrides: vi.fn(),
|
||||
};
|
||||
|
||||
const result = applyPiCompactionSettingsFromConfig({
|
||||
settingsManager,
|
||||
cfg: {
|
||||
agents: {
|
||||
defaults: {
|
||||
compaction: { reserveTokens: 12_000, reserveTokensFloor: 20_000 },
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
expect(result.compaction.reserveTokens).toBe(20_000);
|
||||
expect(settingsManager.applyOverrides).toHaveBeenCalledWith({
|
||||
compaction: { reserveTokens: 20_000 },
|
||||
});
|
||||
});
|
||||
|
||||
it("applies keepRecentTokens when explicitly configured", () => {
|
||||
const settingsManager = {
|
||||
getCompactionReserveTokens: () => 20_000,
|
||||
getCompactionKeepRecentTokens: () => 20_000,
|
||||
applyOverrides: vi.fn(),
|
||||
};
|
||||
|
||||
const result = applyPiCompactionSettingsFromConfig({
|
||||
settingsManager,
|
||||
cfg: {
|
||||
agents: {
|
||||
defaults: {
|
||||
compaction: {
|
||||
keepRecentTokens: 15_000,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
expect(result.compaction.keepRecentTokens).toBe(15_000);
|
||||
expect(settingsManager.applyOverrides).toHaveBeenCalledWith({
|
||||
compaction: { keepRecentTokens: 15_000 },
|
||||
});
|
||||
});
|
||||
|
||||
it("preserves current keepRecentTokens when safeguard mode leaves it unset", () => {
|
||||
const settingsManager = {
|
||||
getCompactionReserveTokens: () => 25_000,
|
||||
getCompactionKeepRecentTokens: () => 20_000,
|
||||
applyOverrides: vi.fn(),
|
||||
};
|
||||
|
||||
const result = applyPiCompactionSettingsFromConfig({
|
||||
settingsManager,
|
||||
cfg: { agents: { defaults: { compaction: { mode: "safeguard" } } } },
|
||||
});
|
||||
|
||||
expect(result.compaction.keepRecentTokens).toBe(20_000);
|
||||
expect(settingsManager.applyOverrides).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("treats keepRecentTokens=0 as invalid and keeps the current setting", () => {
|
||||
const settingsManager = {
|
||||
getCompactionReserveTokens: () => 25_000,
|
||||
getCompactionKeepRecentTokens: () => 20_000,
|
||||
applyOverrides: vi.fn(),
|
||||
};
|
||||
|
||||
const result = applyPiCompactionSettingsFromConfig({
|
||||
settingsManager,
|
||||
cfg: { agents: { defaults: { compaction: { mode: "safeguard", keepRecentTokens: 0 } } } },
|
||||
});
|
||||
|
||||
expect(result.compaction.keepRecentTokens).toBe(20_000);
|
||||
expect(settingsManager.applyOverrides).not.toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user