Zurück zu Learnings

Learnings / Mit SearXNG entwickeln

Geben Sie Ihren Agenten einen Suchendpunkt, den Sie kontrollieren.

Wie wir SearXNG mit einem Agenten-Workflow verbunden haben, mit strukturierten Ergebnissen und einem expliziten Fallback, wenn die Suche fehlschlägt.

Der Grund

Eine Suchanfrage kann verraten, woran Sie gerade arbeiten.

Ein Agent, der nach Dokumentation sucht, kann Details aus der Aufgabe enthalten, die Sie ihm gegeben haben. Wir wollten eine Suchverbindung, die wir konfigurieren und überprüfen können, anstatt diese Wahl dem vom Agenten verwendeten Tool zu überlassen.

Wir haben eine selbst gehostete SearXNG-Instanz über ein kleines Skript mit dem Agenten verbunden. Es gibt uns die Kontrolle über diese Verbindung. Die Websuche bleibt dadurch nicht offline.

01 / Das Konzept

Machen Sie die Suche zu einem Teil des von uns betriebenen Stacks

Der Ausgangspunkt war das Suchtool, das unsere Agenten verwendeten. Eine Websuche sieht aus wie eine kleine Aktion, aber die Abfrage kann Projektnamen, technische Probleme oder aus einer Konversation kopierte Details enthalten. Wir wollten entscheiden, wohin diese Anfrage ging und wie die Ergebnisse zurückkamen.

Wir nutzten die bestehende quelloffene Metasuchmaschine SearXNG. Unsere Arbeit bestand in ihrer Anbindung. Dazu gehörten ein lokaler Dienst, ein Skript zum Abrufen der Ergebnisse und Anweisungen, mit denen der Agent dieses Skript verwenden kann.

Die Begleithandbücher zeigen dies mit OpenClaw. Das Suchskript kann auch einzeln getestet werden, sodass Sie den Dienst überprüfen können, bevor Sie einen Agenten einschalten.

02 / Das Problem

Selbstgehostet bedeutet nicht, dass die Abfrage zu Hause bleibt

SearXNG leitet Webanfragen an die von Ihnen aktivierten Suchmaschinen weiter und kombiniert deren Ergebnisse. Diese Engines empfangen weiterhin die Anfrage und sehen die Netzwerkadresse, die Ihr Server verwendet, um sie zu erreichen. Ein vertraulicher Name in der Abfrage bleibt vertraulich, nachdem er Ihren eigenen Server durchlaufen hat.

Die nützliche Unterscheidung ist die Kontrolle über den Vermittler. Wir können seine Konfiguration und die Art und Weise wählen, wie unser Agent eine Verbindung zu ihm herstellt. Wir müssen auch die Protokollierung in der umgebenden Infrastruktur überprüfen, einschliesslich aller Reverse-Proxys, anstatt davon auszugehen, dass durch die Ausführung der Anwendung selbst jeder Datensatz verschwindet.

Der eigene Betrieb bringt Pflichten mit sich. Wir warten den Dienst, und die angebundenen Suchmaschinen können Anfragen ablehnen oder ausfallen. Eine kostenlose, unbegrenzte oder anonyme Suche ist damit nicht versprochen. Die SearXNG-Dokumentation beschreibt das Projekt und seine Konfiguration.

03 / Wie es funktioniert

Von einer Agentenanfrage bis zu den Ergebnissen, die überprüft werden können

Ein Endpunkt für die Suchanfrage

Das lokale Setup führt SearXNG in einem Container aus. Der Agent ruft ein Shell-Skript auf, das die Abfrage an diese Instanz sendet. Das Skript verwendet eine konfigurierbare Serveradresse, sodass die Verbindung an einer Stelle definiert wird.

Agent → Suchskript → Ihre SearXNG-Instanz
                              ↓
                    Externe Suchmaschinen
                              ↓
Agent ← Titel, Links und Auszüge ← gebündelte Ergebnisse

Das Diagramm zeigt die Datenschutzgrenze: Der Agent ruft Ihren Dienst auf, aber der Dienst kontaktiert weiterhin externe Engines. Geben Sie keine Zugangsdaten oder privates Material in eine Abfrage ein, nur weil der erste Endpunkt lokal ist.

Strukturierte Ergebnisse statt einer Seite zum Durchsuchen

Wir aktivieren die JSON-Ausgabe in SearXNG. Das Skript fordert dieses Format an und wählt mit jq eine begrenzte Zahl von Ergebnissen aus. Es gibt deren Titel, URLs und Textauszüge zurück. Die API-Dokumentation durchsuchen beschreibt die Anfrageparameter und unterstützten Ausgabeformate.

Dadurch erhält der Agent Links, denen er folgen kann. Ein Ausschnitt ist nur ein Hinweis, nicht ausreichender Nachweis für jede Behauptung. Der Agent muss weiterhin relevante Quellen öffnen und prüfen, was sie sagen.

Geben Sie dem Agenten Anweisungen und testen Sie dann die Verbindung

Die OpenClaw-Anbindung verbindet search.sh mit einer Datei namens SKILL.md, die den Aufruf erklärt. Wir testen das Skript direkt, bevor der Agent es nutzt. So lässt sich ein Dienst- oder Konfigurationsfehler davon unterscheiden, dass der Agent die Anweisungen nicht befolgt.

Anweisungen allein hindern den Agenten nicht daran, ein anderes Suchwerkzeug zu verwenden. Wenn ein bestimmter Anforderungspfad erforderlich ist, müssen die verfügbaren Tools und ihre Berechtigungen dieser Anforderung entsprechen.

Machen Sie einen Fallback sichtbar

Die Anleitung zur Fehlerbehandlung ergänzt einen Wrapper, der auf verwertbare Ergebnisse prüft. Erhält er keine, gibt er die Markierung FALLBACK_TO_BRAVE aus. Der Wrapper ruft Brave nicht selbst auf. Der Agent braucht dafür ein konfiguriertes Ersatzwerkzeug und Anweisungen, wann er es nutzen darf.

Dies ist wichtig, da ein Fallback den Dienst ändert, der die Anfrage empfängt. Entscheiden Sie, ob dies akzeptabel ist, bevor Sie es aktivieren. Auch ein leeres Ergebnis und eine fehlgeschlagene Verbindung verdienen unterschiedliche Erklärungen; Beides sollte nicht als Nachweis dafür dienen, dass nichts existiert.

04 / Installation

Richten wir den lokalen Suchdienst ein

Sie benötigen Docker und Compose sowie curl, jq und openssl. Für den agentenspezifischen Teil kommt OpenClaw hinzu. Der Dienst braucht Internetzugang, um die Suchmaschinen zu erreichen.

Stellen Sie SearXNG bereit und überprüfen Sie zuerst seine JSON-Antwort. Erstellen Sie dann das Suchskript, testen Sie es vom Terminal aus und verbinden Sie den Agenten. Halten Sie den lokalen Endpunkt an den Loopback gebunden, es sei denn, Sie konfigurieren den Zugriff absichtlich von einem anderen Computer aus.

Die folgenden Anleitungen enthalten die Konfiguration und Befehle. Beginnen Sie mit den Installationsanforderungen, oder öffnen Sie den benötigten Abschnitt.

Verbinden Sie Ihre Agenten mit Ihrem eigenen Suchdienst.

Führen Sie SearXNG aus, überprüfen Sie die Ergebnisse und verbinden Sie den Agenten.

Alle Anleitungen