Un assistant qui cherche sur le web vous donne sa réponse, pas les pages qu’il a lues. Le 14 août 2026, un modèle chargé de rédiger un rapport à partir de pages déjà collectées a lancé de lui-même douze recherches sur le web. Aucune n’apparaissait dans le rapport, et une partie de la réponse venait de pages que personne n’avait collectées. Seul l’enregistrement de tous les événements émis par le modèle les a révélées.
L’outil présenté ici garde sur votre disque les pages dont dépend un rapport, et interdit au modèle qui le rédige d’en chercher d’autres. Il ne cherche pas à trouver plus de pages qu’un assistant de recherche web. À quoi il sert, et à quoi il ne sert pas →
Avant le nom, la preuve
Une commande et sa sortie réelle, relevée le 15 août 2026 sur
https://example.com avec Dinoer 1.0.0 et le guide en version 1.6. La sortie
est abrégée : la réponse complète contient aussi des statistiques du DOM,
la durée de chaque action et le compteur de navigation. Les clés sont en
français parce que le programme les nomme ainsi.
/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"}}
La sortie ne contient aucune image : Dinoer n’en produit jamais. Sans
--guide-version, le programme répond {"succes": false, "erreur": "guide_non_lu"} et ne fait rien d’autre : un agent doit avoir lu le guide et
en citer le numéro de version avant d’agir sur une page.
Pourquoi ce verrou →
Ce qu’est Dinoer
Dinoer interroge des sources publiques, enregistre sur votre disque les pages qu’il collecte, et fait rédiger par un modèle un rapport fondé sur ces seules pages. La liste des sources, en fin de rapport, est écrite par Dinoer, pas par le modèle.
C’est une dérivation de Diwall, un outil d’automatisation de navigateur pour modèles de langage qui travaille sur des captures d’écran. Dinoer a retiré toute cette couche : ni capture, ni numérotation Set-of-Mark, ni modèle de vision. Il lit une page comme du texte : le DOM, l’arbre d’accessibilité, le texte nettoyé. Il fonctionne sous Debian 13 et Ubuntu 24.04 ; le paquet a été installé et exécuté sur un Raspberry Pi 4 doté de 8 Go de mémoire.
Requête → découverte par SearXNG → collecte HTTP légère
→ navigateur réel seulement pour les pages qui l'exigent
→ rédaction par un LLM délégué → rapport Markdown daté et sourcé
Ce qu’il ne fait pas mieux Un assistant de recherche web adossé à des moteurs commerciaux, avec compte et cookies, trouve des pages qu’une instance SearXNG sans authentification n’atteint pas. Mesuré le 14 août 2026 : la mesure →
Le corpus est la garantie, pas la réponse
Chaque page retenue par une campagne est écrite dans collecte.jsonl ;
chaque tentative, réussie ou non, dans operations.jsonl. Le rapport est
rédigé à partir de collecte.jsonl seulement : à chaque appel, Dinoer retire
au modèle ses outils websearch et webfetch. Une ouverture subsiste : le
modèle garde bash, et l’un d’eux a déjà atteint le web par curl.
Ce que cela couvre, et ce que cela ne couvre pas →
{"id_campagne": "concerts-finistere-2026-07-28",
"cibles": [{"type": "query", "valeur": "concerts finistere sud ete"}]}
Un manifeste n’exige que ces deux clés. campagne.py --manifeste manifeste.json collecte les pages, avec une pause entre deux requêtes, puis
rédige le rapport. Lancer une campagne →
Rubriques
- GuidesInstaller Dinoer, le lancer, mener une campagne de recherche, écrire des scénarios, mettre en place le répertoire chiffré. Chaque guide donne des commandes à taper.
- RecettesLes problèmes rencontrés avec le cœur de navigation, classés selon ce que vous observez, chacun avec sa cause et sa solution.
- PerceptionCe qu'un modèle de langage peut percevoir d'une page web quand rien n'est rendu en image : des connaissances générales, utiles même si vous n'installez jamais Dinoer.
- Cas d'usageQuatre types de tâches, ce que Dinoer fait pour chacune et où il s'arrête, avec des résultats datés quand il y en a.
- ArchitectureLe déroulement d'une campagne de recherche, et ce qui sort de votre machine par quelle porte, avec le fichier du code derrière chaque ligne.
- JournalDes relevés datés : le journal de développement, et ce qu'une campagne réelle a pu atteindre par une découverte sans authentification.
- AgentsLe point d'entrée des modèles de langage : deux fichiers à la racine du domaine, le verrou qui arrête un agent qui n'a pas lu le guide, et deux règles à connaître d'abord.
- Le projetD'où vient Dinoer, ce qu'il a gardé et ce qu'il a retiré, comment une mesure du 14 août 2026 a restreint ce qu'il affirme de lui-même, et qui le construit.