From 2ee8c983c0fc187e667440d660f2c5afbb6a7b55 Mon Sep 17 00:00:00 2001 From: Kailigithub <12250313+Kailigithub@users.noreply.github.com> Date: Fri, 29 May 2026 11:12:38 +0800 Subject: [PATCH] fix(web): honor Hermes config-aware SEARXNG_URL lookup --- plugins/web/searxng/provider.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/plugins/web/searxng/provider.py b/plugins/web/searxng/provider.py index 043f6711c1b..6f747fc3f9d 100644 --- a/plugins/web/searxng/provider.py +++ b/plugins/web/searxng/provider.py @@ -31,6 +31,19 @@ from agent.web_search_provider import WebSearchProvider logger = logging.getLogger(__name__) +def _searxng_url() -> str: + """Return SEARXNG_URL from Hermes config-aware env, falling back to process env.""" + try: + from hermes_cli.config import get_env_value + + val = get_env_value("SEARXNG_URL") + except Exception: + val = None + if val is None: + val = os.getenv("SEARXNG_URL", "") + return (val or "").strip() + + class SearXNGWebSearchProvider(WebSearchProvider): """Search via a user-hosted SearXNG instance.""" @@ -44,7 +57,7 @@ class SearXNGWebSearchProvider(WebSearchProvider): def is_available(self) -> bool: """Return True when ``SEARXNG_URL`` is set.""" - return bool(os.getenv("SEARXNG_URL", "").strip()) + return bool(_searxng_url()) def supports_search(self) -> bool: return True @@ -56,7 +69,7 @@ class SearXNGWebSearchProvider(WebSearchProvider): """Execute a search against the configured SearXNG instance.""" import httpx - base_url = os.getenv("SEARXNG_URL", "").strip().rstrip("/") + base_url = _searxng_url().rstrip("/") if not base_url: return {"success": False, "error": "SEARXNG_URL is not set"}