diff --git a/index.js b/index.js index ce68037..e4d460a 100644 --- a/index.js +++ b/index.js @@ -270,6 +270,9 @@ function getRuntimeDebugState() { taskPromptBuilds: {}, taskLlmRequests: {}, injections: {}, + messageTrace: { + lastSentUserMessage: null, + }, maintenance: { lastAction: null, lastUndoResult: null, @@ -301,6 +304,17 @@ function recordInjectionSnapshot(kind, snapshot = {}) { }; } +function recordMessageTraceSnapshot(patch = {}) { + const state = touchRuntimeDebugState(); + const previous = state.messageTrace || { + lastSentUserMessage: null, + }; + state.messageTrace = { + ...previous, + ...cloneRuntimeDebugValue(patch, {}), + }; +} + function recordGraphPersistenceSnapshot(snapshot = null) { const state = touchRuntimeDebugState(); state.graphPersistence = cloneRuntimeDebugValue(snapshot, null); @@ -326,6 +340,7 @@ function readRuntimeDebugSnapshot() { taskPromptBuilds: state.taskPromptBuilds, taskLlmRequests: state.taskLlmRequests, injections: state.injections, + messageTrace: state.messageTrace, maintenance: state.maintenance, graphPersistence: state.graphPersistence, updatedAt: state.updatedAt, @@ -1308,6 +1323,15 @@ function recordRecallSentUserMessage(messageId, text, source = "message-sent") { source, at: Date.now(), }); + recordMessageTraceSnapshot({ + lastSentUserMessage: { + text: normalized, + hash, + messageId: Number.isFinite(messageId) ? messageId : null, + source, + updatedAt: new Date().toISOString(), + }, + }); // 注意:不再在 MESSAGE_SENT 阶段清空 pendingRecallSendIntent / // pendingHostGenerationInputSnapshot / transactions。 diff --git a/panel.js b/panel.js index de40131..5ea8f37 100644 --- a/panel.js +++ b/panel.js @@ -2689,6 +2689,7 @@ function _getMessageTraceWorkspaceState(settings = _getSettings?.() || {}) { panelDebug, runtimeDebug, recallInjection: runtimeDebug?.injections?.recall || null, + messageTrace: runtimeDebug?.messageTrace || null, recallLlmRequest: runtimeDebug?.taskLlmRequests?.recall || null, recallPromptBuild: runtimeDebug?.taskPromptBuilds?.recall || null, extractLlmRequest: runtimeDebug?.taskLlmRequests?.extract || null, @@ -2741,7 +2742,11 @@ function _renderMessageTraceRecallCard(state) { const recentMessages = Array.isArray(injectionSnapshot?.recentMessages) ? injectionSnapshot.recentMessages.map((item) => String(item || "")) : []; + const lastSentUserMessage = String( + state.messageTrace?.lastSentUserMessage?.text || "", + ).trim(); const triggeredUserMessage = + lastSentUserMessage || _extractTriggeredUserMessageFromRecentMessages(recentMessages) || _getLastDebugMessageContent(recallLlmRequest?.messages, "user"); const hostPayloadText = _buildMainAiTraceText(