+
+
+
+
+ ${_renderMessageTraceRecallCard(state)}
+
+
+ ${_renderMessageTraceExtractCard(state)}
+
+
+
+ `;
+}
+
+function _renderMessageTraceRecallCard(state) {
+ const injectionSnapshot = state.recallInjection || null;
+ const recallLlmRequest = state.recallLlmRequest || null;
+ const recentMessages = Array.isArray(injectionSnapshot?.recentMessages)
+ ? injectionSnapshot.recentMessages.map((item) => String(item || ""))
+ : [];
+ const triggeredUserMessage =
+ _extractTriggeredUserMessageFromRecentMessages(recentMessages) ||
+ _findMarkdownSectionContent(
+ _getLastDebugMessageContent(recallLlmRequest?.messages, "user"),
+ ["用户最新输入"],
+ );
+
+ if (!injectionSnapshot) {
+ return `
+
+
+ 触发来源
+ ${_escHtml(injectionSnapshot.sourceLabel || injectionSnapshot.source || "—")}
+
+
+ 触发钩子
+ ${_escHtml(injectionSnapshot.hookName || "—")}
+
+
+ 触发用户输入
+ ${_escHtml(triggeredUserMessage || "—")}
+
+
+ 选中记忆数
+ ${_escHtml(String(injectionSnapshot.selectedNodeIds?.length ?? 0))}
+
+
+ ${_renderMessageTraceTextBlock(
+ "最终注入文本",
+ injectionSnapshot.injectionText || "",
+ "这次没有生成可注入的记忆文本。",
+ )}
+ ${_renderDebugDetails(
+ "召回参考上下文",
+ recentMessages.length ? recentMessages.join("\n") : "",
+ )}
+ ${_renderDebugDetails(
+ "召回精排实际消息序列",
+ _stringifyTraceMessages(recallLlmRequest?.messages),
+ )}
+ ${_renderDebugDetails("原始注入快照", injectionSnapshot)}
+ `;
+}
+
+function _renderMessageTraceExtractCard(state) {
+ const extractLlmRequest = state.extractLlmRequest || null;
+ const extractPromptBuild = state.extractPromptBuild || null;
+
+ if (!extractLlmRequest && !extractPromptBuild) {
+ return `
+
+
+ 预设
+ ${_escHtml(extractPromptBuild?.profileName || extractPromptBuild?.profileId || "—")}
+
+
+ 模型路由
+ ${_escHtml(extractLlmRequest?.effectiveRoute?.llm || extractLlmRequest?.route || "—")}
+
+
+ 模型
+ ${_escHtml(extractLlmRequest?.model || "—")}
+
+
+ 消息条数
+ ${_escHtml(String(_normalizeDebugMessages(extractLlmRequest?.messages).length))}
+
+
+ ${_renderMessageTraceTextBlock(
+ "送去提取的对话正文",
+ dialogueText,
+ "这次没有捕获到提取用户提示词。",
+ )}
+ ${_renderDebugDetails("提取系统提示词(兼容视图)", systemPrompt)}
+ ${_renderDebugDetails("提取用户提示词(完整)", userPrompt)}
+ ${_renderDebugDetails(
+ "提取实际消息序列",
+ _stringifyTraceMessages(extractLlmRequest?.messages),
+ )}
+ ${_renderDebugDetails("提取 Prompt 组装快照", extractPromptBuild)}
+ `;
+}
+
+function _renderMessageTraceTextBlock(title, text, emptyText = "暂无内容") {
+ const normalized = String(text || "").trim();
+ return `
+