Posez une question à un assistant augmenté par la recherche et il vous fournira une réponse. Ce qu’il ne vous fournit pas, c’est le corpus qu’il a réellement consulté pour la produire — et le 14 août 2026, une expérience réelle a prouvé que cet écart n’était pas théorique : avec la possibilité de « planifier avant d’extraire », un modèle délégué a effectué douze recherches web en direct, invisibles dans le texte final, et a répondu à partir de pages qui n’avaient été collectées par personne.
C’est le problème que Dinoer cherche à résoudre, et non celui pour lequel il existe afin de gagner en volume. Ce sur quoi Dinoer est réellement en compétition →
Avant le nom, la preuve
La commande ci-dessous est celle que vous taperiez. La sortie est réelle et a été capturée le 15 août 2026, contre https://example.com, en utilisant le chemin d’appel réel (shot.py, Dinoer 1.0.0, guide-version 1.6). Elle est abrégée : la réponse réelle contient plus de données, notamment des statistiques DOM, une latence par action et un compteur de navigation respectueuse. Les clés sont en français parce que l’outil lui-même les nomme ainsi — ce n’est pas une traduction inachevée.
/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"}}
Aucun PNG nulle part dans cette sortie. Pas parce qu’il aurait été retiré avant publication — parce qu’aucun n’a jamais été produit. --guide-version n’est pas une décoration. Sans lui, vous obtenez {"succes": false, "erreur": "guide_non_lu"} et rien d’autre ne se passe — c’est ainsi qu’un agent prouve avoir lu le guide avant de toucher une cible réelle. Pourquoi ce verrou existe →
Ce qu’est Dinoer
Dinoer explore un grand nombre de sources publiques et compile à partir de celles-ci un signal sourcé et vérifiable, le tout sur un matériel aussi modeste qu’un Raspberry Pi 5.
C’est une version dérivée de Diwall (automatisation visuelle des navigateurs pour les LLM), dont toute la couche de perception a été supprimée : aucun instantané, aucun ensemble de marqueurs, aucun modèle de vision, jamais. Dinoer ne regarde jamais une page ; il la lit : DOM, arbre d’accessibilité, texte de la page nettoyé.
Requête → découverte SearXNG → collecte HTTP légère
→ escalade vers un vrai navigateur uniquement pour les pages qui en ont besoin
→ synthèse par un LLM délégué → rapport Markdown daté et sourcé
Ce sur quoi il ne concurrence pas Un assistant de recherche généraliste avec des moteurs authentifiés et basés sur des cookies a une portée structurelle qu’une instance SearXNG locale et non authentifiée n’a pas — ce qui est mesuré directement, et non supposé. La mesure →
Le corpus est la garantie, pas la réponse
Chaque affirmation dans un rapport Dinoer est attribuable à une page réellement collectée
et enregistrée sur le disque (collecte.jsonl/operations.jsonl) — sans aucune dépendance
de ce que le moteur de recherche tiers a fait lors de la production de la réponse.
opencode.jsonc empêche le modèle délégué d’utiliser ses propres outils websearch/webfetch,
quel que soit le répertoire depuis lequel OpenCode est lancé ; une vérification directe du flux d’événements complet du modèle pendant la synthèse, et non
seulement de son texte final, a permis de détecter la fuite de 12 appels mentionnée ci-dessus, et a confirmé la correction.
{"id_campagne": "concerts-finistere-2026-07-28",
"cibles": [{"type": "query", "valeur": "concerts finistere sud ete"}],
"sujet_synthese": "concerts and festivals, south Finistère, summer 2026"}
C’est la majeure partie d’une véritable déclaration. campagne.py --manifeste manifeste.json
le reste s’occupe de tout : collecte respectant les quotas, puis un rapport synthétisé dont vous pouvez retracer l’origine jusqu’à chaque source utilisée.
Rubriques
- GuidesInstallez-le, exécutez-le, lancez une campagne de recherche, écrivez vos propres scénarios, configurez le répertoire chiffré. Tout ici est une commande que vous pouvez taper.
- RecettesLes problèmes réels liés au cœur du navigateur, classés par la situation dans laquelle vous vous trouvez. Écrits après avoir rencontré le problème, et non avant.
- PerceptionQu'est-ce qu'un modèle de langage perçoit réellement d'une page web lorsque rien n'est jamais rendu sous forme d'image ? Connaissances générales, utiles même si vous n'installez jamais quoi que ce soit.
- Cas d'usageÀ quel point cela va réellement loin, illustré par quatre cas concrets. Preuves de portée, et non tutoriels pour un outil tiers.
- ArchitecturePourquoi Dinoer est conçu de cette manière : ce qu'il garantit, ce qu'il refuse et quelles sont ses limites – limites déjà réduites sur la base de preuves réelles.
- JournalPrivilégier les données factuelles plutôt que les affirmations : ce qui a changé, ce que l'expérience nous a réellement appris, et comment le positionnement du projet lui-même a été redéfini sur la base de preuves.
- AgentsPoint d'entrée de la machine : llms.txt, instructions.md, et la règle unique qui vous arrêtera si vous l'omettez.
- Le projetUne version dérivée d'un outil d'automatisation de navigateur, réduite à une seule question : la recherche effectuée par un agent peut-elle être considérée comme fiable, et pas seulement rapide ? Ceci a été testé directement, et le résultat du test n'a pas correspondu aux attentes de cette version dérivée.