mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 05:50:43 +00:00
fix(agents): distill replay content normalization
This commit is contained in:
@@ -40,7 +40,6 @@ import {
|
||||
type AssistantUsageSnapshot,
|
||||
type UsageLike,
|
||||
} from "../usage.js";
|
||||
import { log } from "./logger.js";
|
||||
import { dropThinkingBlocks } from "./thinking.js";
|
||||
|
||||
const INTER_SESSION_PREFIX_BASE = "[Inter-session message]";
|
||||
@@ -232,23 +231,15 @@ export function normalizeAssistantReplayContent(messages: AgentMessage[]): Agent
|
||||
let touched = false;
|
||||
const out = [...messages];
|
||||
for (let i = 0; i < out.length; i += 1) {
|
||||
const message = out[i] as (AgentMessage & { role?: unknown; content?: unknown }) | undefined;
|
||||
if (!message || message.role !== "assistant" || Array.isArray(message.content)) {
|
||||
const message = out[i];
|
||||
const replayContent = (message as { content?: unknown } | undefined)?.content;
|
||||
if (!message || message.role !== "assistant" || typeof replayContent !== "string") {
|
||||
continue;
|
||||
}
|
||||
if (typeof message.content !== "string") {
|
||||
log.warn(
|
||||
`normalizeAssistantReplayContent: repairing malformed assistant content ` +
|
||||
`(index=${i}, type=${typeof message.content})`,
|
||||
);
|
||||
}
|
||||
out[i] = {
|
||||
...(message as unknown as Record<string, unknown>),
|
||||
content:
|
||||
typeof message.content === "string"
|
||||
? [{ type: "text", text: message.content }]
|
||||
: [{ type: "text", text: "" }],
|
||||
} as AgentMessage;
|
||||
...message,
|
||||
content: [{ type: "text", text: replayContent }],
|
||||
};
|
||||
touched = true;
|
||||
}
|
||||
return touched ? out : messages;
|
||||
|
||||
@@ -1144,11 +1144,9 @@ export async function runEmbeddedAttempt(
|
||||
throw new Error("Embedded agent session missing");
|
||||
}
|
||||
const activeSession = session;
|
||||
if (typeof activeSession.agent.convertToLlm === "function") {
|
||||
const baseConvertToLlm = activeSession.agent.convertToLlm.bind(activeSession.agent);
|
||||
activeSession.agent.convertToLlm = async (messages) =>
|
||||
await baseConvertToLlm(normalizeAssistantReplayContent(messages));
|
||||
}
|
||||
const baseConvertToLlm = activeSession.agent.convertToLlm.bind(activeSession.agent);
|
||||
activeSession.agent.convertToLlm = async (messages) =>
|
||||
await baseConvertToLlm(normalizeAssistantReplayContent(messages));
|
||||
let prePromptMessageCount = activeSession.messages.length;
|
||||
abortSessionForYield = () => {
|
||||
yieldAbortSettled = Promise.resolve(activeSession.abort());
|
||||
|
||||
Reference in New Issue
Block a user