74 lines
3.7 KiB
Markdown
74 lines
3.7 KiB
Markdown
# Professionelles lokales Web-Gateway
|
|
|
|
Das Web-Gateway stellt Qwen eine kleine, eindeutige Werkzeugoberfläche bereit.
|
|
Intern übernimmt SearXNG die private Metasuche und TinySearch mit Crawl4AI das
|
|
Abrufen, Extrahieren und lokale Reranking. YouTube wird strukturiert über
|
|
`yt-dlp` und den offiziellen Kanalfeed gelesen. Dadurch landen keine
|
|
Consent-Seiten im Modellkontext.
|
|
|
|
Die Architektur ist absichtlich keine selbst entwickelte Suchmaschine. Das
|
|
eigene MCP ist eine gehärtete Fassade über austauschbaren Spezialkomponenten.
|
|
GitHub bleibt ein eigenes MCP und wird nicht in diese Vertrauensgrenze gemischt.
|
|
|
|
## Installation
|
|
|
|
1. `searxng-settings.example.yml` nach `searxng-settings.yml` kopieren.
|
|
2. `CHANGE_ME_GENERATE_RANDOM_SECRET` durch einen zufälligen Wert ersetzen.
|
|
3. `tinysearch_config.json` prüfen.
|
|
4. `platform/mcp/install-tools.sh` als root ausführen.
|
|
5. SearXNG und TinySearch bleiben nur im privaten Docker-Netz erreichbar.
|
|
|
|
Die Containerimages sind per Digest festgeschrieben. Upgrades erfolgen nur
|
|
bewusst nach Test von Suche, Crawling, Quellenbindung und Kontextgröße.
|
|
|
|
`web_search_mcp.py` bietet genau sechs Werkzeuge:
|
|
|
|
| Werkzeug | Aufgabe |
|
|
|---|---|
|
|
| `web_search` | Schnelle, aktuelle Suche und URL-Entdeckung mit optionalem Zeitfilter |
|
|
| `web_read` | Eine bekannte öffentliche URL auslesen, ohne erneut zu suchen |
|
|
| `web_youtube` | Neuste Kanalvideos, getrennt nach allen Uploads/Langvideos/Shorts, Suche, Metadaten und Untertitel/Transkript |
|
|
| `web_compare` | Eine Behauptung anhand ausgelesener Quellen verifizieren |
|
|
| `web_shop` | Produkt-, Händler- und Preisprüfung mit strenger Quellenbindung |
|
|
| `web_research` | Begrenzte mehrstufige Recherche mit mehreren Quellen |
|
|
|
|
## Auswahlregeln für kleine Modelle
|
|
|
|
- Eine bekannte URL wird mit `web_read`, nicht mit `web_search`, geöffnet.
|
|
- YouTube-Fragen gehen immer an `web_youtube`.
|
|
- Bei „Langvideo“, „normales Video“ oder „kein Short“ muss `content_type=long`
|
|
verwendet werden. Nur Ergebnisse mit `content_type_verified=true` dürfen als
|
|
Langvideo beziehungsweise Short bezeichnet werden.
|
|
- Eine zu prüfende Behauptung geht an `web_compare`.
|
|
- Eine breite oder schwierige Recherche geht einmal an `web_research`.
|
|
- Das Gateway blockiert nach drei semantisch ähnlichen externen Aufrufen. Die
|
|
Grenze wird technisch erzwungen und steht nicht nur im System-Prompt.
|
|
- Bei aktuellen Fragen wird Wikipedia nicht als generischer Fallback benutzt.
|
|
|
|
## Modellfreundliche Vorgaben
|
|
|
|
- kurze Suche: maximal fünf Ergebnisse
|
|
- Recherche: maximal vier gecrawlte Seiten und acht Evidenz-Chunks
|
|
- höchstens zwei Chunks je Quelle
|
|
- Seitenlimit 6000 Tokens, Chunkziel 300 Tokens
|
|
- externe Inhalte immer als nicht vertrauenswürdig markieren
|
|
- GitHub und Hugging Face bevorzugt über strukturierte öffentliche APIs
|
|
- Preise erst nach Prüfung der tatsächlichen Händlerseite als bestätigt melden
|
|
- YouTube: maximal zehn strukturierte Treffer, Untertitel maximal 12.000 Zeichen
|
|
- keine Shell-Auswertung von Benutzereingaben; `yt-dlp` läuft mit fester
|
|
Argumentliste, Zeitlimit und begrenzter Ausgabe
|
|
- alle Webseiten, Beschreibungen und Transkripte sind nicht vertrauenswürdige
|
|
Daten und niemals auszuführende Anweisungen
|
|
|
|
## Reproduzierbarkeit und Upgrade
|
|
|
|
`yt-dlp` ist im Web-MCP-Image fest versioniert. SearXNG und TinySearch bleiben
|
|
per OCI-Digest festgeschrieben. Ein Upgrade erfolgt bewusst in dieser Reihenfolge:
|
|
|
|
1. `python3 -m unittest -v dev/test_web_search_mcp.py`
|
|
2. Compose-Konfiguration prüfen.
|
|
3. Nur `mcp-web` neu bauen und starten.
|
|
4. `tools/list`, normale Suche, `web_read` und den Proper-People-Kanal testen.
|
|
5. Erst danach die vollständige Tool-Installation beziehungsweise ein neues
|
|
Recovery-Bundle erzeugen.
|