Découvertes thématiques · VisiDog CLIThematic guides · VisiDog CLI

L'observabilité : chaque tour laisse sa traceObservability: every turn leaves a trace

Pendant qu'un agent travaille, une histoire se déroule sans vous : un modèle qui répond, des outils qui tranchent, un navigateur qui vieillit, un réseau qui peut ramer. L'observabilité garde cette histoire — chaque tour et chaque étape tracés en local, onze vues pour tout relire, neuf règles qui reconnaissent les anomalies, et des exports sobres qui ne quittent rien sans votre geste.While the agent works, a story unfolds without you: a model answering, tools deciding, a browser aging, a network that can drag. Observability keeps that story — every turn and every step traced locally, eleven views to read it all back, nine rules that recognize anomalies, and lean exports that leave nothing without your gesture.

L'observabilité, en deux motsObservability, in two words

On ne fait pas avancer un chantier en ouvrant ses organes. L'observabilité de VisiDog ne s'installe pas : elle veille déjà. Chaque tour est consigné, chaque étape est mesurée, et tout reste dans le navigateur — dans une base locale propre à la session. Vous ne voyez rien, sauf quand vous le demandez.

You don't move a build forward by opening up its engines. VisiDog's observability installs nothing: it already watches. Every turn is recorded, every step is measured, and it all stays in the browser — in a local base kept for the session. You notice nothing, unless you ask.

Deux gardes-fous organisent tout. La neutralité, d'abord : la collecte ne modifie jamais le dialogue envoyé au modèle ni les résultats des outils, elle observe en spectateur. Et la sobriété. Noms, durées, verdicts, tailles, codes, compteurs : la trace parle de mécanique, pas d'intimité. Le contenu du dialogue reste au magasin des sessions, et les secrets sont expurgés avant d'écrire quoi que ce soit.

Two guard rails organize everything. Neutrality first: the collection never modifies the dialogue sent to the model nor the tools' results; it watches from the side. And leanness. Names, durations, verdicts, sizes, codes, counters: the trace speaks mechanics, not intimacy. Dialogue content stays in the session store, and secrets are expurgated before anything is written.

La vie d'une traceA trace's life

Tout commence pendant un tour normal : l'agent avance, un outil répond, le navigateur prend son élan, l'inférence part en réseau. Chacun de ces mouvements laisse une empreinte mesurée — des spans qui relient un tour à ses étapes, des durées monotones, une file locale qui tient bon à la reprise. L'enregistreur consolide tout, un run après l'autre, sans déranger le reste du chantier.

It all starts during a normal turn: the agent moves on, a tool answers, the browser takes its stride, inference sets out over the network. Each of those motions leaves a measured imprint — spans tying a turn to its steps, monotonic durations, a local queue that holds up through recovery. The recorder consolidates everything, one run after another, without disturbing the rest of the build.

Pendant le tour, tout se mesureWhile the turn runs, it all gets measured l'IA avance, les outils répondent, le navigateur et l'inférence suiventthe AI moves, tools answer, the browser and inference follow Le tour et ses étapesThe turn and its steps chaque étape, chronométréeeach step, timed Les outilsThe tools verdicts et tailles de sortieverdicts and output sizes Le navigateurThe browser Long Tasks, mémoire, ressourcesLong Tasks, memory, resources L'inférenceInference premier fragment, tentatives HTTPfirst fragment, HTTP retries L'enregistreur isolé consigne toutThe isolated recorder logs it all file locale, durées monotones ; deux sessions ne se mélangent jamaisa local queue, monotonic durations; two sessions never mix La base locale du navigateurThe browser's local base tours, étapes, journaux, erreurs, anomalies — quotas par sessionturns, steps, logs, errors, anomalies — quotas per session rien ne quitte le navigateurnothing leaves the browser sauf export expliciteexcept an explicit export Onze vues, neuf règles d'anomaliesEleven views, nine anomaly rules lecture pure : les preuves s'affichent, rien ne décidepure reading: evidence shows up, nothing decides
Schéma 1 — La vie d'une trace : mesurée à la source, consignée en local, relue dans les vues.Diagram 1 — A trace's life: measured at the source, logged locally, re-read in the views.

Concrètement, chaque tour porte son identité de trace et chaque span son parent, résolu dans la même session : un lien qui pointe dehors n'existe pas. Deux niveaux de collecte cohabitent : metrics garde les compteurs du tour, de l'inférence, du navigateur ; full ajoute les détails des outils, des domaines, des journaux et du réseau. La session appartient à son runtime : deux sessions parallèles ne partagent ni tours, ni spans, ni compteurs.

Concretely, every turn carries its trace identity and every span its parent, resolved within the same session: a link that points outside does not exist. Two collection levels cohabit: metrics keeps the counters of the turn, inference and browser; full adds the details of tools, domains, logs and network. The session belongs to its runtime: two parallel conversations share neither turns, nor spans, nor counters.

Les onze vues d'analyseThe eleven analysis views

Deux icônes restent visibles à gauche du badge de mode : l'icône d'activité active ou arrête la collecte de la session affichée, et l'icône de tableaux de bord ouvre les vues. Même quand la collecte est éteinte, l'historique conservé reste lisible. Aucune commande n'est nécessaire pour ces deux gestes.

Two icons stay visible to the left of the mode badge: the activity icon starts or stops collection for the displayed session, and the dashboards icon opens the views. Even when collection is off, the kept history remains readable. No command is needed for either gesture.

Les onze vues couvrent la session d'un coup d'œil : overview la synthèse d'ensemble, runs le défilé des tours, inspect le détail d'un tour choisi, latency les retards et leurs percentiles, tools le comportement des outils, tokens la consommation en jetons, errors les erreurs regroupées, findings les anomalies relevées, logs le journal technique, runtime le navigateur — mémoire, tâches longues, ressources — et diff la comparaison de deux séries. Filtres, timeline et comparaison reposent sur des projections pures : relire n'altère jamais ce qui a été consigné.

The eleven views cover the session at a glance: overview the overall synthesis, runs the parade of turns, inspect the detail of a chosen turn, latency the delays and their percentiles, tools how the tools behaved, tokens token consumption, errors grouped errors, findings the anomalies raised, logs the technical journal, runtime the browser — memory, long tasks, resources — and diff comparing two series. Filters, timeline and comparison rest on pure projections: reading back never alters what was recorded.

Pour un examen tranquille, les vues quittent le terminal : le détachement ouvre une fenêtre autonome qui charge ses propres modules, lit sa base locale et conserve la session, ses filtres et son état de pause. Une fenêtre bloquée par le navigateur garde le volet intégré de la même session — rien n'est perdu.

For a comfortable review, the views leave the terminal: detaching opens a standalone window that loads its own modules, reads its local base and keeps the session, its filters and its pause state. A window blocked by the browser keeps the built-in pane of the same session — nothing is lost.

La détection d'anomaliesAnomaly detection

En parallèle des vues, un lecteur local relit chaque run achevé et pose des constats : neuf règles déterministes, toutes calculées ici, sans modèle appelé. Elles reconnaissent les retards (long_running), les outils répétés (repeated_tool), les erreurs consécutives (repeated_error), les trous d'activité (no_activity), les motifs de boucle (possible_loop), le gel de l'interface (ui_freeze), la pression de contexte (context_pressure), l'essaim à l'arrêt avec slots libres (swarm_stall) et l'outil distant sans annotation de lecture seule (mcp_unannotated).

Alongside the views, a local reader re-reads every finished run and lays down findings: nine deterministic rules, all computed here, with no model called. They recognize delays (long_running), repeated tools (repeated_tool), consecutive errors (repeated_error), idle gaps (no_activity), loop patterns (possible_loop), a frozen interface (ui_freeze), context pressure (context_pressure), a stalled swarm with free slots (swarm_stall) and the remote tool without an access annotation (mcp_unannotated).

Chaque run achevé, relu en localEvery finished run, re-read locally tours, étapes, journaux, erreurs et sondes racontent le même runturns, steps, logs, errors and probes tell the same run Neuf règles locales posent les constatsNine local rules lay down the findings retards, répétitions et erreurs, boucles possibles, trous d'activitédelays, repeats and errors, possible loops, idle gaps gel d'interface, pression de contexte, essaim à l'arrêt, outil distant non annotéfrozen interface, context pressure, stalled swarm, unannotated remote tool Des constats prouvés, jamais décisionnairesProven findings, never deciding identité stable, sévérité, preuves ; l'exécution ne bouge passtable identity, severity, evidence; execution does not move
Schéma 2 — La détection : neuf règles locales sur les traces, des constats avec preuves, personne ne décide pour vous.Diagram 2 — Detection: nine local rules over the traces, evidenced findings, nobody decides for you.

Chaque constat porte une identité stable — type, sévérité, empreinte du sujet et de la trace — : relire le même blocage au même endroit ne s'empile pas, le constat existant recueille la preuve. Celles-ci accompagnent la lecture : intervalles, cibles, compteurs, durées. Six lectures de fichiers distinctes ne constituent pas une boucle ; une même cible répétée reste, elle, parfaitement détectable.

Every finding carries a stable identity — type, severity, subject and trace fingerprint — so re-reading the same blockage in the same spot does not pile up: the existing finding absorbs the evidence. The evidence comes along with the reading: intervals, targets, counters, durations. Six distinct file reads do not make a loop; one repeated target, however, stays perfectly detectable.

Et le contrat ne bouge pas : un constat n'ouvre pas de modèle, ne bloque pas un outil, ne touche ni budget ni compaction — la détection décrit, c'est vous qui décidez.

And the contract does not move: a finding opens no model, blocks no tool, touches neither budget nor compaction — detection describes, you decide.

Exporter les tracesExporting the traces

Faire sortir une trace se fait d'un mot : /obs export json|csv|gzip|otlp. Les fichiers locaux d'abord — sélecteur de fichier, ou téléchargement en repli — avec un paquet versionné meta, runs, spans, logs, errors, findings, sérialisé en flux : la session entière n'est jamais montée d'un seul bloc en mémoire.

Getting a trace out is one word: /obs export json|csv|gzip|otlp. Local files first — a file picker, or a download as fallback — with a versioned package of meta, runs, spans, logs, errors, findings, serialized as a stream: the whole session is never mounted in memory at once.

La base s'assemble en paquet versionnéThe base assembles into a versioned package meta, runs, spans, logs, errors, findings — sérialisé en fluxmeta, runs, spans, logs, errors, findings — serialized as a stream L'expurgation passe avant toute écritureExpurgation comes before any writing URLs déshabillées, chemins absolus pliés, empreintes SHA-256 au lieu du texteURLs stripped, absolute paths folded, SHA-256 fingerprints instead of text JSONJSON paquet completfull package CSVCSV les tours en tableauthe turns as a table gzipgzip JSON compressécompressed JSON OTLPOTLP diagnostic standardstandard diagnostics Fichier local toujours ; vers le réseau, jamais sans vousLocal file always; to the network, never without you deux POST, échéance de vingt secondes, sans cookies ni redirectionstwo POSTs, a twenty-second deadline, no cookies or redirects
Schéma 3 — De l'expurgation à l'export : fichiers locaux, envoi réseau uniquement sur demande explicite.Diagram 3 — From expurgation to export: local files, network send only on explicit request.

L'envoi au réseau, lui, attend une demande explicite : /obs export --otlp appelle une cible HTTPS publique validée — loopback, noms locaux, IP privées et métadonnées cloud refusées sans exception, sans query ni fragment dans l'URL, et aucun réglage ne contourne ce veto. Deux requêtes POST /v1/traces et /v1/logs, sans cookies, sans référent et sans suivre les redirections, le tout borné par une échéance de vingt secondes. Aucun collecteur serveur n'est mis en place : rien n'est envoyé automatiquement.

The network send, meanwhile, waits for an explicit request: /obs export --otlp calls a validated public HTTPS target — loopback, local names, private IPs and cloud metadata refused without exception, no query or fragment in the URL, and no setting bypasses that veto. Two POST requests to /v1/traces and /v1/logs, no cookies, no referer, no redirects, all bounded by a twenty-second deadline. No server collector is set up: nothing is sent automatically.

L'utiliser dans VisiDogUsing it in VisiDog

1

Regardez la collecteMind the collection

L'icône d'activité, à gauche du badge de mode, active ou arrête la collecte de la session affichée — en un clic, sans commande. Allumée, elle trace la session ; éteinte, rien ne se perd, l'historique reste lisible.

The activity icon, to the left of the mode badge, starts or stops collection for the displayed session — one click, no command. On, it traces the session; off, nothing is lost, the history stays readable.

2

Ouvrez les vuesOpen the views

L'icône de tableaux de bord, juste à côté, ouvre les onze vues dans le volet d'aperçu : synthèse, tours, inspection, retards, outils, jetons, erreurs, anomalies, journaux, navigateur, comparaison. Le détachement les mène dans une fenêtre autonome qui garde session, filtres et pause.

The dashboards icon, right next to it, opens the eleven views in the preview pane: synthesis, turns, inspection, delays, tools, tokens, errors, findings, logs, browser, comparison. Detaching carries them into a standalone window that keeps session, filters and pause.

3

ExportezExport

/obs export donne un fichier local au format choisi — json, csv, gzip ou otlp. Pour un envoi réseau explicite, /obs export --otlp poste les traces et les journaux vers une cible HTTPS publique validée.

/obs export gives a local file in the chosen format — json, csv, gzip or otlp. For an explicit network send, /obs export --otlp posts the traces and logs to a validated public HTTPS target.

Cas d'usageUse cases

L'étape qui rameThe step that drags

Une étape tarde et l'agent paraît bloqué : la vue latency donne les percentiles, la règle long_running pose la preuve avec les intervalles — on tranche avant de supposer un plantage.

A step is late and the agent looks stuck: the latency view gives the percentiles, the long_running rule lays down the evidence with intervals — you decide before assuming a crash.

L'outil qui tourne en rondThe tool going in circles

Le même outil revient à la même cible : repeated_tool et possible_loop marquent les motifs avec leurs preuves — vous en tirez une consigne plus ferme ou un garde-fou, au lieu de rater trois tours à deviner.

The same tool keeps hitting the same target: repeated_tool and possible_loop mark the patterns with their evidence — you pull a firmer instruction or a guardrail out of it, instead of wasting three turns guessing.

Rendre des comptes, garder ses secretsReporting without giving away secrets

Fin de séance, le reste de l'équipe attend un état des lieux : /obs export gzip donne le paquet complet, /obs export csv les tours en tableau — sans le contenu des dialogues, avec des empreintes à la place des sorties.

Session over, the rest of the team waits for a status: /obs export gzip gives the full package, /obs export csv the turns as a table — without dialogue content, with fingerprints instead of outputs.

Brancher votre plateforme d'observationWiring up your observability platform

L'entreprise a déjà son outil compatible OTLP : /obs export --otlp envoie les traces et les journaux à votre cible publique validée — le diagnostic arrive au format standard, sans collecteur maison.

The company already runs an OTLP-compatible tool: /obs export --otlp sends the traces and logs to your validated public target — the diagnosis arrives in the standard format, with no home-made collector.

Ce que ça vous apporteWhat it brings you

Points d'attentionPoints of attention

Les constats ne décident pasThe findings do not decide

Un constat d'anomalie n'ouvre pas de modèle, ne bloque pas un outil, ne déclenche pas de compaction et ne change pas le budget : il prouve et signale. La suite du chantier reste pilotée par vous, pas par la détection.

An anomaly finding opens no model, blocks no tool, triggers no compaction and changes no budget: it proves and signals. The rest of the build stays steered by you, not by the detection.

La base est généreuse, pas infinieThe base is generous, not endless

La base locale porte des quotas par session et un repli mémoire en cas de saturation : exporter une session ne contourne ni la rétention ni les plafonds déjà appliqués — les lectures restent celles du magasin.

The local base carries quotas per session and a memory fallback when saturated: exporting a session bypasses neither the retention nor the ceilings already applied — reads stay those of the store.

L'envoi OTLP n'est pas une transactionThe OTLP send is not a transaction

L'envoi part en deux requêtes — traces puis journaux : une réussite peut précéder un échec, sans garantie commune. Une réponse refusée rend une erreur OBS_EXPORT_HTTP_<statut> claire. La cible reste une base HTTPS publique, sans secrets dans l'URL.

The send goes out as two requests — traces then logs: one success can precede a failure, with no shared guarantee. A refused response yields a clear OBS_EXPORT_HTTP_<status> error. The target stays a public HTTPS base, with no secrets in the URL.

La trace ne raconte pas toutThe trace does not tell everything

Le contenu du dialogue reste au magasin des sessions : la trace conserve la taille et une empreinte de la sortie, pas le texte. Si vous cherchez ce qui a été dit, rendez-vous au fil de la session — la trace, elle, raconte le mécanisme.

Dialogue content stays in the session store: the trace keeps the size and a fingerprint of the output, not the text. If you are after what was said, go back to the session's thread — the trace, for its part, tells the machinery.