diff --git a/scripts/searxng/settings.yml b/scripts/searxng/settings.yml new file mode 100644 index 0000000..2eedcab --- /dev/null +++ b/scripts/searxng/settings.yml @@ -0,0 +1,73 @@ +# SearXNG 配置(Cyrene v2「网络搜索」的兜底后端) +# +# 用途:给 plugins/tools/io 的 web-search 工具提供一个**本机可达**的搜索端点, +# 不依赖任何第三方 API key。它不是 Cyrene 自己的监听端口(不碰「单端口」红线), +# 而是像 docker `cyrene-pg` 一样的**外部服务**。 +# +# 起法(宿主机可达,必须发布端口;后端跑在宿主机上而不是 compose 内网): +# ⚠️ 宿主端口用 **38471**(不常见,避免与其它项目撞车);容器内部仍是 8080,宿主机看不到它。 +# docker rm -f cyrene-searxng 2>/dev/null +# docker run -d --name cyrene-searxng --restart unless-stopped \ +# -p 38471:8080 \ +# -v "D:/Project/Code/Uni/Cyrene_v2/scripts/searxng/settings.yml:/etc/searxng/settings.yml:ro" \ +# searxng/searxng:latest +# 自检(必须能拿到非空 results 且 unresponsive_engines 为空,否则 web-search 工具等于没接): +# curl -s "http://127.0.0.1:38471/search?q=test&format=json" | head -c 200 +# curl -s "http://127.0.0.1:38471/search?q=%E6%B5%8B%E8%AF%95&format=json" | python -c "import sys,json;d=json.load(sys.stdin);print(len(d['results']), d['unresponsive_engines'])" +# +# ⚠️ 三处关键(少任何一处都会「能返回 JSON 但结果是空的」): +# 1) search.formats 必须含 json —— 默认只给 html; +# 2) server.limiter: false —— 限流器会以「请求过频/非浏览器」为由拒掉 API 调用; +# 3) **引擎必须按本机网络可达性裁剪**:默认引擎集(google/duckduckgo/brave/qwant/ +# startpage/wikipedia…)在**这台机器的网络下全部超时**(2026-10-05 实测), +# 既不产出结果、还每次白等 3 秒超时 ⇒ 关掉它们、只留国内可达的 +# (baidu / bing / sogou / 360search / quark)。 +use_default_settings: true + +server: + secret_key: "cyrene-v2-searxng-local-fallback-6f3a9c1d" + limiter: false + image_proxy: false + +search: + formats: + - html + - json + # 中文为主:让 SearXNG 按查询自动选语言(默认 auto,这里显式写清意图) + default_lang: auto + # 只跑可达引擎后,2 秒足够;留一点余量避免偶发慢请求被判超时 + max_page: 1 + +outgoing: + request_timeout: 6.0 + max_request_timeout: 10.0 + +engines: + # ---- 本机可达且真在产出(2026-10-05 实测):只留这两把 ---- + - name: bing + disabled: false + - name: sogou + disabled: false + # ---- 实测不可用:一律关掉(留着只会每次白等 3–6 秒,还让 unresponsive_engines 充满噪音)---- + # 360search → timeout;baidu → Suspended: CAPTCHA;quark → CAPTCHA + # google/duckduckgo/brave/qwant/startpage/wikipedia/wikidata → ConnectTimeout(本机网络不可达) + - name: baidu + disabled: true + - name: 360search + disabled: true + - name: quark + disabled: true + - name: google + disabled: true + - name: duckduckgo + disabled: true + - name: brave + disabled: true + - name: qwant + disabled: true + - name: startpage + disabled: true + - name: wikipedia + disabled: true + - name: wikidata + disabled: true