Dinoer

Ein Assistent, der im Web sucht, liefert Ihnen seine Antwort, nicht die Seiten, die er gelesen hat. Am 14. August 2026 sollte ein Modell einen Bericht aus bereits gesammelten Seiten schreiben und startete dabei von sich aus zwölf Websuchen. Keine davon war im Bericht zu sehen, und ein Teil der Antwort stammte von Seiten, die niemand gesammelt hatte. Erst die Aufzeichnung aller Ereignisse, die das Modell ausgab, machte sie sichtbar.

Das Werkzeug auf dieser Website hält die Seiten, auf denen ein Bericht beruht, auf Ihrer Festplatte fest und verbietet dem Modell, das ihn schreibt, weitere abzurufen. Es versucht nicht, mehr Seiten zu finden als ein Web-Suchassistent. Wofür es da ist, und wofür nicht →

Vor dem Namen der Beweis

Ein Befehl und seine echte Ausgabe, aufgenommen am 15. August 2026 gegen https://example.com mit Dinoer 1.0.0 und Guide-Version 1.6. Die Ausgabe ist gekürzt: Die vollständige Antwort enthält außerdem DOM-Statistiken, die Dauer jeder Aktion und den Navigationszähler. Die Schlüssel sind französisch, weil das Programm sie so benennt.

/opt/dinoer/venv/bin/python3 /opt/dinoer/shot.py \
  --url https://example.com --a11y --guide-version 1.6
{"succes": true, "http_status": 200,
 "a11y_tree": "- heading \"Example Domain\" [level=1]\n- paragraph: This domain is for use in documentation examples…\n- paragraph:\n  - link \"Learn more\":\n    - /url: https://iana.org/domains/example",
 "boussole": {"titre_page": "Example Domain", "dernier_code_http": 200,
              "respect": {"actions_executees": 0, "duree_totale_ms": 2910}},
 "etat": {"pret_a_agir": true, "niveau_confiance": "eleve"}}

Die Ausgabe enthält kein Bild, denn Dinoer erzeugt nie eines. Ohne --guide-version antwortet das Programm {"succes": false, "erreur": "guide_non_lu"} und tut sonst nichts: Ein Agent muss den Guide gelesen haben und dessen Versionsnummer angeben, bevor er auf einer Seite handeln kann. Warum diese Sperre →

Was Dinoer ist

Dinoer durchsucht öffentliche Quellen, speichert die gesammelten Seiten auf Ihrer Festplatte und lässt ein Modell einen Bericht nur aus diesen Seiten schreiben. Die Quellenliste am Ende des Berichts schreibt Dinoer, nicht das Modell.

Es ist ein Fork von Diwall, einem Werkzeug zur Browser-Automatisierung für Sprachmodelle, das mit Bildschirmaufnahmen arbeitet. Dinoer hat diese Schicht vollständig entfernt: keine Aufnahme, keine Set-of-Mark-Nummerierung, kein Vision-Modell. Es liest eine Seite als Text: das DOM, den Barrierefreiheitsbaum, den bereinigten Text. Es läuft unter Debian 13 und Ubuntu 24.04; das Paket wurde auf einem Raspberry Pi 4 mit 8 GB Arbeitsspeicher installiert und ausgeführt.

Anfrage → Suche über SearXNG → leichte HTTP-Erfassung
        → echter Browser nur für Seiten, die ihn brauchen
        → Bericht durch ein delegiertes LLM → datierter Markdown-Bericht mit Quellen

Was es nicht besser kann Ein Web-Suchassistent mit kommerziellen Suchmaschinen, Anmeldung und Cookies findet Seiten, die eine SearXNG-Instanz ohne Anmeldung nicht erreicht. Gemessen am 14. August 2026: die Messung →

Der Korpus ist die Garantie, nicht die Antwort

Jede Seite, die eine Kampagne behält, wird in collecte.jsonl geschrieben, jeder Versuch, erfolgreich oder nicht, in operations.jsonl. Der Bericht entsteht nur aus collecte.jsonl: Bei jedem Aufruf entzieht Dinoer dem Modell die Werkzeuge websearch und webfetch. Eine Lücke bleibt: Das Modell behält bash, und eines hat darüber schon per curl das Web erreicht. Was das abdeckt und was nicht →

{"id_campagne": "concerts-finistere-2026-07-28",
 "cibles": [{"type": "query", "valeur": "concerts finistere sud ete"}]}

Ein Manifest braucht nur diese beiden Schlüssel. campagne.py --manifeste manifeste.json sammelt die Seiten, mit einer Pause zwischen zwei Anfragen, und schreibt dann den Bericht. Eine Kampagne starten →

Wie Dinoer eine einzelne Seite liest →

Bereiche