

























@@ -182,6 +182,7 @@ export function buildEmbeddedRunPayloads(params: {
182182assistantTexts: string[];
183183toolMetas: ToolMetaEntry[];
184184lastAssistant: AssistantMessage | undefined;
185+currentAssistant?: AssistantMessage | null;
185186lastToolError?: ToolErrorSummary;
186187config?: OpenClawConfig;
187188isCronTrigger?: boolean;
@@ -264,24 +265,28 @@ export function buildEmbeddedRunPayloads(params: {
264265const useMarkdown = params.toolResultFormat === "markdown";
265266const suppressAssistantArtifacts =
266267params.didSendDeterministicApprovalPrompt === true || hasSourceReplyPayload;
267-const lastAssistantStopReason = params.lastAssistant?.stopReason;
268+const nonEmptyAssistantTexts = params.assistantTexts.filter((text) => text.trim().length > 0);
269+const currentAssistant = params.currentAssistant ?? undefined;
270+const assistantForPayload =
271+currentAssistant ?? (nonEmptyAssistantTexts.length === 1 ? undefined : params.lastAssistant);
272+const lastAssistantStopReason = assistantForPayload?.stopReason;
268273const lastAssistantErrored = lastAssistantStopReason === "error";
269274const lastAssistantAborted = lastAssistantStopReason === "aborted";
270275const runAborted = params.runAborted === true || lastAssistantAborted;
271276const lastAssistantNeedsErrorSurface = lastAssistantErrored || lastAssistantAborted;
272277const errorText =
273-params.lastAssistant && lastAssistantNeedsErrorSurface
278+assistantForPayload && lastAssistantNeedsErrorSurface
274279 ? suppressAssistantArtifacts
275280 ? undefined
276- : formatAssistantErrorText(params.lastAssistant, {
281+ : formatAssistantErrorText(assistantForPayload, {
277282cfg: params.config,
278283sessionKey: params.sessionKey,
279284provider: params.provider,
280285model: params.model,
281286})
282287 : undefined;
283288const rawErrorMessage = lastAssistantNeedsErrorSurface
284- ? normalizeOptionalString(params.lastAssistant?.errorMessage)
289+ ? normalizeOptionalString(assistantForPayload?.errorMessage)
285290 : undefined;
286291const rawErrorFingerprint = rawErrorMessage
287292 ? getApiErrorPayloadFingerprint(rawErrorMessage)
@@ -333,17 +338,17 @@ export function buildEmbeddedRunPayloads(params: {
333338const reasoningText =
334339suppressAssistantArtifacts || runAborted
335340 ? ""
336- : params.lastAssistant && params.reasoningLevel === "on" && params.thinkingLevel !== "off"
337- ? extractAssistantThinking(params.lastAssistant)
341+ : assistantForPayload && params.reasoningLevel === "on" && params.thinkingLevel !== "off"
342+ ? extractAssistantThinking(assistantForPayload)
338343 : "";
339344if (reasoningText) {
340345replyItems.push({ text: reasoningText, isReasoning: true });
341346}
342347343-const fallbackAnswerText = params.lastAssistant
344- ? extractAssistantVisibleText(params.lastAssistant)
348+const fallbackAnswerText = assistantForPayload
349+ ? extractAssistantVisibleText(assistantForPayload)
345350 : "";
346-const fallbackRawAnswerText = resolveRawAssistantAnswerText(params.lastAssistant);
351+const fallbackRawAnswerText = resolveRawAssistantAnswerText(assistantForPayload);
347352const shouldSuppressRawErrorText = (text: string) => {
348353if (!lastAssistantNeedsErrorSurface) {
349354return false;
@@ -403,7 +408,6 @@ export function buildEmbeddedRunPayloads(params: {
403408const parsed = parseReplyDirectives(text);
404409return (parsed.mediaUrls?.length ?? 0) > 0 || parsed.audioAsVoice;
405410});
406-const nonEmptyAssistantTexts = params.assistantTexts.filter((text) => text.trim().length > 0);
407411const normalizedAssistantTexts = normalizeTextForComparison(nonEmptyAssistantTexts.join("\n\n"));
408412const normalizedRawAnswerText = normalizeTextForComparison(rawAnswerDirectiveState?.text ?? "");
409413const shouldPreferRawAnswerText =
@@ -418,7 +422,7 @@ export function buildEmbeddedRunPayloads(params: {
418422 ? normalizeReplyTextForComparison(fallbackAnswerSourceText)
419423 : "";
420424const shouldUseCanonicalFinalAnswer =
421-nonEmptyAssistantTexts.length > 1 &&
425+!lastAssistantNeedsErrorSurface &&
422426fallbackAnswerSourceText.length > 0 &&
423427normalizedFallbackAnswerSourceText.length > 0;
424428const hasAssistantTextPayload = nonEmptyAssistantTexts.length > 0;
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。