diff --git a/src/main/tool-handlers-system.ts b/src/main/tool-handlers-system.ts index 3207da1..afc3af0 100644 --- a/src/main/tool-handlers-system.ts +++ b/src/main/tool-handlers-system.ts @@ -446,7 +446,10 @@ async function handleWebSearchSearxng( timeRange: string, _enhanceSnippets: boolean ): Promise { - const url = getSetting('searxng_url', 'https://search.metona.cn'); + const url = getSetting('searxng_url', ''); + if (!url) { + return { success: false, error: 'SearXNG API 地址未配置。请在 SearXNG 设置中填写 API 地址。' }; + } const engines = getSetting('searxng_engines', 'google,bing,duckduckgo,wikipedia'); const language = getSetting('searxng_language', 'zh-CN'); const safesearch = getSetting('searxng_safesearch', 1); diff --git a/src/renderer/components/searxng-modal.ts b/src/renderer/components/searxng-modal.ts index 03a30af..1e4fc5c 100644 --- a/src/renderer/components/searxng-modal.ts +++ b/src/renderer/components/searxng-modal.ts @@ -10,7 +10,7 @@ import { logInfo, logSuccess } from '../services/log-service.js'; /** 默认 SearXNG 配置 */ const DEFAULTS = { enabled: false, - url: 'https://search.metona.cn', + url: '', engines: 'google,bing,duckduckgo,wikipedia', language: 'zh-CN', safesearch: 1, @@ -113,7 +113,19 @@ export function initSearxngModal(): void { // ── 保存按钮 ── document.querySelector('#btnSaveSearxng')!.addEventListener('click', async () => { - searxngConfig.url = (document.querySelector('#searxngUrl') as HTMLInputElement).value.trim(); + const url = (document.querySelector('#searxngUrl') as HTMLInputElement).value.trim(); + if (!url) { + const { showToast } = await import('./toast.js'); + showToast('SearXNG API 地址不能为空', 'error'); + return; + } + if (!/^https?:\/\/.+/.test(url)) { + const { showToast } = await import('./toast.js'); + showToast('SearXNG API 地址格式不正确,需以 http:// 或 https:// 开头', 'error'); + return; + } + + searxngConfig.url = url; searxngConfig.engines = (document.querySelector('#searxngEngines') as HTMLInputElement).value.trim(); searxngConfig.language = (document.querySelector('#searxngLanguage') as HTMLSelectElement).value; searxngConfig.safesearch = parseInt((document.querySelector('#searxngSafeSearch') as HTMLSelectElement).value); diff --git a/src/renderer/index.html b/src/renderer/index.html index 01d2a24..f0c6105 100644 --- a/src/renderer/index.html +++ b/src/renderer/index.html @@ -732,7 +732,7 @@
- +

SearXNG 实例的根地址,无需带 /search 路径