From dc692aa6f6a20da289f21c76da3cd0cc816ac45e Mon Sep 17 00:00:00 2001 From: Shakker Date: Mon, 25 May 2026 21:41:58 +0100 Subject: [PATCH] perf: avoid duplicate transcript idempotency scans --- extensions/codex/src/app-server/transcript-mirror.ts | 1 + src/config/sessions/transcript-append.ts | 9 ++++++--- src/config/sessions/transcript.ts | 1 + 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/extensions/codex/src/app-server/transcript-mirror.ts b/extensions/codex/src/app-server/transcript-mirror.ts index 4c5971aba5b..b91eef56273 100644 --- a/extensions/codex/src/app-server/transcript-mirror.ts +++ b/extensions/codex/src/app-server/transcript-mirror.ts @@ -186,6 +186,7 @@ export async function mirrorCodexAppServerTranscript(params: { const { messageId, message: appendedMessage } = await appendSessionTranscriptMessage({ transcriptPath: params.sessionFile, message: messageToAppend, + idempotencyLookup: idempotencyKey ? "caller-checked" : "scan", config: params.config, }); if (appendedMessage.role === "user") { diff --git a/src/config/sessions/transcript-append.ts b/src/config/sessions/transcript-append.ts index 6ef3448385c..b631883a841 100644 --- a/src/config/sessions/transcript-append.ts +++ b/src/config/sessions/transcript-append.ts @@ -241,6 +241,8 @@ type AppendSessionTranscriptMessageParams = { sessionId?: string; cwd?: string; useRawWhenLinear?: boolean; + /** Use only when the caller already checked this idempotency key under the session write lock. */ + idempotencyLookup?: "scan" | "caller-checked"; config?: OpenClawConfig; }; @@ -305,9 +307,10 @@ async function appendSessionTranscriptMessageLocked( ...(params.cwd ? { cwd: params.cwd } : {}), }); const idempotencyKey = readMessageIdempotencyKey(params.message); - const existing = idempotencyKey - ? await findTranscriptMessageByIdempotencyKey(params.transcriptPath, idempotencyKey) - : undefined; + const existing = + idempotencyKey && params.idempotencyLookup !== "caller-checked" + ? await findTranscriptMessageByIdempotencyKey(params.transcriptPath, idempotencyKey) + : undefined; if (existing) { return { ...existing, appended: false }; } diff --git a/src/config/sessions/transcript.ts b/src/config/sessions/transcript.ts index 8aece357ee5..ab96abc52f7 100644 --- a/src/config/sessions/transcript.ts +++ b/src/config/sessions/transcript.ts @@ -353,6 +353,7 @@ export async function appendExactAssistantMessageToSessionTranscript(params: { return await appendSessionTranscriptMessage({ transcriptPath: sessionFile, message, + idempotencyLookup: explicitIdempotencyKey ? "caller-checked" : "scan", config: params.config, }); },