diff --git a/src/main/tool-handlers-system.ts b/src/main/tool-handlers-system.ts index d5dd3d0..b5238ac 100644 --- a/src/main/tool-handlers-system.ts +++ b/src/main/tool-handlers-system.ts @@ -455,6 +455,8 @@ async function handleWebSearchSearxng( const safesearch = getSetting('searxng_safesearch', 1); const cfgTimeRange = getSetting('searxng_time_range', ''); const effectiveTimeRange = timeRange || cfgTimeRange; + const cfgMaxResults = getSetting('searxng_max_results', 20); + const effectiveMaxResults = Math.min(maxResults, cfgMaxResults); const format = getSetting('searxng_format', 'json'); const isHtml = format === 'html'; @@ -487,8 +489,8 @@ async function handleWebSearchSearxng( if (isHtml) { const html = await resp.text(); const text = htmlToText(html); - const truncated = maxResults > 0 && text.length > maxResults * 500; - const content = truncated ? text.slice(0, maxResults * 500) + '\n...(已截断)' : text; + const truncated = effectiveMaxResults > 0 && text.length > effectiveMaxResults * 500; + const content = truncated ? text.slice(0, effectiveMaxResults * 500) + '\n...(已截断)' : text; sendLog('success', `🔍 SearXNG HTML 完成`, `${text.length} 字符`); return { success: true, @@ -516,7 +518,7 @@ async function handleWebSearchSearxng( unresponsive_engines?: Array<[string, string]>; }; - const rawResults = (data.results || []).slice(0, maxResults); + const rawResults = (data.results || []).slice(0, effectiveMaxResults); if (rawResults.length === 0) { return { success: false, error: 'SearXNG 未返回任何结果,请尝试其他关键词或调整搜索引擎配置' }; } @@ -552,7 +554,7 @@ async function handleWebSearchSearxng( weight: 80, reachable: true, })), - maxResults, + effectiveMaxResults, false, engineStats );