export function analyzeOptimizedPromptMerge( originalText: string, optimizedPrompt?: string, hiddenPromptPrefix = "", ) { const prompt = optimizedPrompt?.trim() || ""; const trimmedOriginal = String(originalText || "").trim(); const normalizedOriginal = hiddenPromptPrefix && trimmedOriginal.startsWith(hiddenPromptPrefix) ? trimmedOriginal.slice(hiddenPromptPrefix.length).trim() : trimmedOriginal; const hasOriginalDemand = normalizedOriginal.length > 0; const hasOriginalInOptimized = hasOriginalDemand && (prompt.includes(normalizedOriginal) || normalizedOriginal.includes(prompt)); return { prompt, normalizedOriginal, hasOriginalDemand, hasOriginalInOptimized, }; } export function buildOptimizedPromptPreview(params: { originalText: string; optimizedPrompt?: string; hiddenPromptPrefix?: string; }): string | undefined { const { prompt, normalizedOriginal, hasOriginalDemand, hasOriginalInOptimized } = analyzeOptimizedPromptMerge( params.originalText, params.optimizedPrompt, params.hiddenPromptPrefix || "", ); if (!prompt) return undefined; const normalizedPrompt = prompt.replace(/\s+/g, " ").trim(); if (!normalizedPrompt) return undefined; if (hasOriginalDemand && !hasOriginalInOptimized) { return [ `- 核心目标:${normalizedOriginal.replace(/\s+/g, " ").trim()}`, `- 优化提示词:${normalizedPrompt}`, ].join("\n"); } return `- ${normalizedPrompt}`; } export function buildDirectAgentExecutionPrompt(params: { originalText: string; optimizedPrompt?: string; hiddenPromptPrefix?: string; fallback?: string; }) { const originalText = String(params.originalText || "").trim(); const optimizedPrompt = String(params.optimizedPrompt || "").trim(); const hiddenPromptPrefix = String(params.hiddenPromptPrefix || ""); if (!optimizedPrompt) { return `${hiddenPromptPrefix}${originalText || params.fallback || ""}`.trim(); } const { normalizedOriginal, hasOriginalDemand, hasOriginalInOptimized } = analyzeOptimizedPromptMerge(originalText, optimizedPrompt, hiddenPromptPrefix); return hasOriginalDemand && !hasOriginalInOptimized ? [ hiddenPromptPrefix.trim(), `【核心目标(必须优先满足)】${normalizedOriginal}`, `【执行优化细节】${optimizedPrompt}`, ] .filter(Boolean) .join("\n\n") .trim() : `${hiddenPromptPrefix}${optimizedPrompt}`.trim(); }