mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 18:00:54 +00:00
fix: pin embedded harness selection per session
This commit is contained in:
@@ -87,6 +87,7 @@ export type StatusArgs = {
|
||||
groupActivation?: "mention" | "always";
|
||||
resolvedThink?: ThinkLevel;
|
||||
resolvedFast?: boolean;
|
||||
resolvedHarness?: string;
|
||||
resolvedVerbose?: VerboseLevel;
|
||||
resolvedReasoning?: ReasoningLevel;
|
||||
resolvedElevated?: ElevatedLevel;
|
||||
@@ -269,6 +270,14 @@ const formatFastModeLabel = (enabled: boolean) => {
|
||||
return "Fast";
|
||||
};
|
||||
|
||||
const formatHarnessLabel = (harnessId: string | undefined) => {
|
||||
const normalized = normalizeOptionalLowercaseString(harnessId);
|
||||
if (!normalized || normalized === "pi" || normalized === "auto") {
|
||||
return null;
|
||||
}
|
||||
return normalized;
|
||||
};
|
||||
|
||||
const readUsageFromSessionLog = (
|
||||
sessionId?: string,
|
||||
sessionEntry?: SessionEntry,
|
||||
@@ -744,6 +753,7 @@ export function buildStatusMessage(args: StatusArgs): string {
|
||||
`Runner: ${runnerLabel}`,
|
||||
`Think: ${thinkLevel}`,
|
||||
formatFastModeLabel(fastMode),
|
||||
formatHarnessLabel(args.resolvedHarness),
|
||||
textVerbosity ? `Text: ${textVerbosity}` : null,
|
||||
verboseLabel,
|
||||
traceLabel,
|
||||
|
||||
@@ -6,6 +6,7 @@ import {
|
||||
resolveAgentModelFallbacksOverride,
|
||||
} from "../agents/agent-scope.js";
|
||||
import { resolveFastModeState } from "../agents/fast-mode.js";
|
||||
import { selectAgentHarness } from "../agents/harness/selection.js";
|
||||
import { resolveModelAuthLabel } from "../agents/model-auth-label.js";
|
||||
import {
|
||||
resolveInternalSessionKey,
|
||||
@@ -52,6 +53,7 @@ export type BuildStatusTextParams = {
|
||||
contextTokens?: number;
|
||||
resolvedThinkLevel?: ThinkLevel;
|
||||
resolvedFastMode?: boolean;
|
||||
resolvedHarness?: string;
|
||||
resolvedVerboseLevel: VerboseLevel;
|
||||
resolvedReasoningLevel: ReasoningLevel;
|
||||
resolvedElevatedLevel?: ElevatedLevel;
|
||||
@@ -131,6 +133,30 @@ function formatSessionTaskLine(sessionKey: string): string | undefined {
|
||||
return parts.length ? `📌 Tasks: ${parts.join(" · ")}` : undefined;
|
||||
}
|
||||
|
||||
function resolveStatusHarnessId(params: {
|
||||
cfg: OpenClawConfig;
|
||||
provider: string;
|
||||
model: string;
|
||||
agentId: string;
|
||||
sessionKey: string;
|
||||
sessionEntry?: SessionEntry;
|
||||
}): string | undefined {
|
||||
try {
|
||||
const selected = selectAgentHarness({
|
||||
provider: params.provider,
|
||||
modelId: params.model,
|
||||
config: params.cfg,
|
||||
agentId: params.agentId,
|
||||
sessionKey: params.sessionKey,
|
||||
agentHarnessId: params.sessionEntry?.agentHarnessId,
|
||||
});
|
||||
const id = normalizeOptionalLowercaseString(selected.id);
|
||||
return id && id !== "pi" ? id : undefined;
|
||||
} catch {
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
|
||||
function formatAgentTaskCountsLine(agentId: string): string | undefined {
|
||||
const snapshot = buildTaskStatusSnapshot(listTasksForAgentIdForStatus(agentId));
|
||||
if (snapshot.totalCount === 0) {
|
||||
@@ -286,6 +312,16 @@ export async function buildStatusText(params: BuildStatusTextParams): Promise<st
|
||||
agentId: statusAgentId,
|
||||
sessionEntry,
|
||||
}).enabled;
|
||||
const effectiveHarness =
|
||||
params.resolvedHarness ??
|
||||
resolveStatusHarnessId({
|
||||
cfg,
|
||||
provider,
|
||||
model,
|
||||
agentId: statusAgentId,
|
||||
sessionKey,
|
||||
sessionEntry,
|
||||
});
|
||||
const agentFallbacksOverride = resolveAgentModelFallbacksOverride(cfg, statusAgentId);
|
||||
const { buildStatusMessage } = await loadStatusMessageRuntime();
|
||||
const explicitThinkingDefault =
|
||||
@@ -319,6 +355,7 @@ export async function buildStatusText(params: BuildStatusTextParams): Promise<st
|
||||
resolvedThink:
|
||||
resolvedThinkLevel ?? explicitThinkingDefault ?? (await resolveDefaultThinkingLevel()),
|
||||
resolvedFast: effectiveFastMode,
|
||||
resolvedHarness: effectiveHarness,
|
||||
resolvedVerbose: resolvedVerboseLevel,
|
||||
resolvedReasoning: resolvedReasoningLevel,
|
||||
resolvedElevated: resolvedElevatedLevel,
|
||||
|
||||
Reference in New Issue
Block a user