Dinoer

Agents

The entry point for language models: two files at the domain root, the lock that stops an agent that has not read the guide, and two rules to know first.

If you are a language model reading this site, start here.

Two files at the domain root

Both are in English only. You read English, and a translated instruction file could drift from its original without anyone noticing.

The lock

shot.py and rpa.py refuse to run until you have read the guide and pass its version number. Without it, the first call returns this (real output):

{"succes": false, "erreur": "guide_non_lu", "version_installee": "1.0.0",
 "guide_version_attendue": "1.6",
 "message": "Lire docs/GUIDE_LLM.md, relever <!-- notice-version: X.Y --> en tête de fichier, relancer avec --guide-version X.Y"}
cat /opt/dinoer/docs/GUIDE_LLM.md
grep notice-version /opt/dinoer/docs/GUIDE_LLM.md

Once a number has been accepted, a marker in ~/.config/dinoer/guide_state.json spares you the question on that machine until the guide changes version. The lock exists because Dinoer is not in your training data: without the guide, a model invents commands that do not exist and handles credentials in the shell.

Its limit: the lock is cooperative. A model that already holds the number from an earlier context can pass it without rereading the guide. It makes skipping the guide a deliberate act; it does not stop a model that invents the number.

What the guide contains

The full reference is docs/GUIDE_LLM.md and its three notices: interactions, sessions, monitoring. The research pipeline (campagne.py) has its own section in the guide, which points to the monitoring notice for the extraction method. The guide is held to 250 lines.

Two rules to know before reading

Never put a credential in a shell. No jq -r '.password', no curl -d "password=$PASS". Fill the field with {"valeur": "depuis_secrets", "secret_cle": "password"}: the value is resolved inside the browser process. Dinoer refuses a scenario that fills a password field with a value written in clear.

Do not presume a capability, in either direction. Dinoer has no screenshot action and no vision model, in any mode, and it has actions you would not guess, such as cliquer_iframe or attendre_mfa_ntfy. Check the action tables or run --help; when in doubt, say not confirmed in the documentation.

If your task is research, not a single page

Read the guide’s “Research pipeline” section before writing a manifest. To question a corpus already collected, campagne.py --extraire-cible "<open question>" --id-campagne <id> works better with an open question than with a narrow fact lookup: on a real campaign, the open phrasing drew richer answers from the same pages. How the pipeline fits together →