Config/Compaction: expose safeguard preserve and quality settings

This commit is contained in:
Rodrigo Uroz
2026-02-24 16:32:36 +00:00
parent 50de45fbc9
commit 64fd3a3176
6 changed files with 74 additions and 0 deletions

View File

@@ -82,6 +82,9 @@ export function buildEmbeddedExtensionFactories(params: {
maxHistoryShare: compactionCfg?.maxHistoryShare,
contextWindowTokens: contextWindowInfo.tokens,
model: params.model,
recentTurnsPreserve: compactionCfg?.recentTurnsPreserve,
qualityGuardEnabled: compactionCfg?.qualityGuard?.enabled,
qualityGuardMaxRetries: compactionCfg?.qualityGuard?.maxRetries,
});
factories.push(compactionSafeguardExtension);
}

View File

@@ -2,6 +2,8 @@ import type { AgentMessage } from "@mariozechner/pi-agent-core";
import type { Api, Model } from "@mariozechner/pi-ai";
import type { ExtensionAPI, ExtensionContext } from "@mariozechner/pi-coding-agent";
import { describe, expect, it, vi } from "vitest";
import type { OpenClawConfig } from "../../config/config.js";
import { buildEmbeddedExtensionFactories } from "../pi-embedded-runner/extensions.js";
import {
getCompactionSafeguardRuntime,
setCompactionSafeguardRuntime,
@@ -368,6 +370,39 @@ describe("compaction-safeguard runtime registry", () => {
model,
});
});
it("wires quality guard retries from config and clamps safeguard runtime usage", () => {
const sessionManager = {} as unknown as Parameters<
typeof buildEmbeddedExtensionFactories
>[0]["sessionManager"];
const cfg = {
agents: {
defaults: {
compaction: {
mode: "safeguard",
recentTurnsPreserve: 99,
qualityGuard: { maxRetries: 99 },
},
},
},
} as OpenClawConfig;
buildEmbeddedExtensionFactories({
cfg,
sessionManager,
provider: "anthropic",
modelId: "claude-3-opus",
model: {
contextWindow: 200_000,
} as Parameters<typeof buildEmbeddedExtensionFactories>[0]["model"],
});
const runtime = getCompactionSafeguardRuntime(sessionManager);
expect(runtime?.qualityGuardMaxRetries).toBe(99);
expect(runtime?.recentTurnsPreserve).toBe(99);
expect(resolveQualityGuardMaxRetries(runtime?.qualityGuardMaxRetries)).toBe(3);
expect(resolveRecentTurnsPreserve(runtime?.recentTurnsPreserve)).toBe(12);
});
});
describe("compaction-safeguard recent-turn preservation", () => {