🇬🇧 [English](../README.md) | đŸ‡§đŸ‡· [PortuguĂȘs](README.pt-BR.md) | đŸ‡Ș🇾 [Español](README.es.md) | 🇼đŸ‡č [Italiano](README.it.md) | đŸ‡«đŸ‡· [Français](README.fr.md) | đŸ‡©đŸ‡Ș [Deutsch](README.de.md) | 🇹🇳 [äž­æ–‡](README.zh.md) | đŸ‡ŻđŸ‡” [æ—„æœŹèȘž](README.ja.md)

m1nd

Intelligence Opérationnelle pour Agents de Coding

Votre agent de coding arrĂȘte de dĂ©marrer Ă  l'aveugle.
Local-first. MCP-native. Mémoire en graphe, trust et raisonnement sur les changements pour les hÎtes d'agents.

npm crates.io CI License docs.rs

OpenAI Codex Claude Code Cursor Windsurf GitHub Copilot Zed Cline Roo Code Continue OpenCode Gemini Amazon Q

--- **m1nd est la coque autour de votre agent de coding — la boucle opĂ©rationnelle dans laquelle il vit : orientĂ© avant d'agir, des verdicts honnĂȘtes pendant qu'il travaille, une mĂ©moire avec preuves aprĂšs qu'il a fini, qui se compose de session en session.**

Une pile de fichiers épars devient un graphe connecté de ce qui relie quoi

> grep trouve du texte. La recherche vectorielle trouve des chunks similaires. `m1nd` donne aux agents un graphe local de ce qui est connectĂ©, ce qui a changĂ©, ce qui casse, ce qui a dĂ©rivĂ©, et oĂč reprendre. ## Ce qu'est m1nd : la coque autour de votre agent *m1nd enveloppe votre agent de coding dans une boucle qui l'oriente avant d'agir, le garde honnĂȘte pendant qu'il travaille, et retient ce qu'il a appris quand il a terminĂ©.* - **Si vous construisez avec des agents** — rien de nouveau Ă  apprendre : installez une fois et continuez Ă  parler Ă  votre agent. Il arrĂȘte de deviner, commence Ă  se souvenir, et dit « je ne sais pas » quand c'est la vĂ©ritĂ©. - **Si vous ĂȘtes ingĂ©nieur** — un moteur de graphe en Rust, local-first, derriĂšre un serveur MCP : un graphe causal du code (edges structurels, sĂ©mantiques, temporels et causaux), des verdicts Ă  calibration conforme, et une mĂ©moire ancrĂ©e Ă  des nƓuds de code avec provenance. Rien ne quitte votre machine. Les agents sur de vraies bases de code n'Ă©chouent pas parce qu'ils ne savent pas chercher — ils Ă©chouent parce qu'ils n'ont pas de modĂšle opĂ©rationnel. Chaque session reconstruit le contexte depuis zĂ©ro, modifie sans connaĂźtre le blast radius, et ne peut pas distinguer un rĂ©sultat vide qui signifie « rien n'existe » d'un qui signifie « mauvais dĂ©pĂŽt ». m1nd donne Ă  l'agent un modĂšle durable de la base de code — un graphe causal avec spreading activation et plasticitĂ© Hebbienne — et enveloppe toute la boucle de l'agent autour de lui. Les fonctionnalitĂ©s ici ne sont pas un catalogue ; ce sont les stations de cette coque : ```mermaid flowchart LR B["BEFORE
born oriented
map + memory + trust + honest gaps"] D["DURING
verdicts worn while working
impact before touching · act / reverify / abstain"] A["AFTER
memorized with evidence
the graph gets warmer"] C["COMPOUND
the next session starts ahead
any host, any agent"] B --> D --> A --> C --> B ``` **m1nd est opĂ©rĂ© par votre agent, pas par vous.** Chaque outil ci-dessous est appelĂ© par l'agent lui-mĂȘme — automatiquement, avant et aprĂšs son travail. Un humain ne les exĂ©cute jamais en usage normal ; vous installez une fois ([DĂ©marrage Rapide](#dĂ©marrage-rapide)) et continuez Ă  parler Ă  votre agent comme d'habitude. **Une coque, trois lecteurs.** Le mĂȘme paquet orientĂ© est rendu pour celui qui s'apprĂȘte Ă  agir : l'**agent principal** le lit comme `north` (livrĂ© — la porte d'entrĂ©e ci-dessous) ; un **sous-agent** le recevra comme le Delegation Packet, la moitiĂ© retrieval de sa spec de spawn (conçu — [docs/NEXTGEN-AGENT-PRD.md](../docs/NEXTGEN-AGENT-PRD.md), §O.12) ; l'**humain** le verra comme la Pre-Flight Card sur le Living Tree — votre projet en arbre navigable avec des post-its de mĂ©moire, montrant ce que l'agent a vĂ©rifiĂ© vs. devinĂ© avant qu'une modification n'atterrisse (conçu, en dĂ©veloppement — [docs/HUMAN-LAYER-PRD.md](../docs/HUMAN-LAYER-PRD.md)). Une seule vĂ©ritĂ©, calculĂ©e une seule fois.

Une vĂ©ritĂ©, deux lecteurs — le mĂȘme paquet rendu pour l'agent et pour l'humain

Boucle agent traditionnelle vs boucle m1nd-grounded

### Ce qui se passe quand vous envoyez un message Vous demandez Ă  votre agent de rĂ©parer quelque chose. Voici ce que la coque fait autour de ce message : 1. **Avant que votre agent n'agisse**, m1nd lui remet la carte vivante de votre projet, ce que les sessions passĂ©es ont appris, Ă  quel point faire confiance Ă  chaque piĂšce — et ce qu'il ne sait *pas* (`north`). 2. **Pendant qu'il travaille**, il porte des verdicts : il vĂ©rifie ce qu'une modification casserait *avant* de toucher au code (`impact`), et lĂ  oĂč la preuve est mince, il reçoit un honnĂȘte « je ne sais pas » au lieu d'une supposition confiante (`abstain`). 3. Il peut demander pourquoi deux morceaux de code sont connectĂ©s et ĂȘtre prĂ©venu quand la rĂ©ponse repose sur une supposition (`why`), et il est alertĂ© avant de franchir une frontiĂšre d'architecture (`xray_gate`). 4. **Quand il termine**, la dĂ©cision est consignĂ©e avec la preuve qui la soutient (`memorize`). 5. Cette mĂ©moire est ancrĂ©e au code rĂ©el — si le code change plus tard, la mĂ©moire se signale d'elle-mĂȘme comme obsolĂšte au lieu de mentir en silence (`cross_verify`). 6. **Votre prochaine session dĂ©marre en sachant dĂ©jĂ ** — n'importe quel agent, n'importe quel outil : Claude Code, Codex, Cursor, Gemini. Ce qu'un agent apprend, le suivant en hĂ©rite. ## BEFORE — nĂ© orientĂ© *Votre agent dĂ©marre chaque session en connaissant dĂ©jĂ  votre projet — et en sachant ce qu'il ne sait pas.*

north(task) : un seul appel d'entrée renvoie tout le paquet orienté

Dans une session MCP, la porte d'entrĂ©e est un seul appel — `north(task)` compose le trust, le contexte de tĂąche (focus nodes + ancres PageRank), la mĂ©moire inter-sessions antĂ©rieure, un signal de suffisance, un `next_move`, et `honest_gaps` (ce que m1nd ne sait *pas* encore) en un seul paquet, avant toute requĂȘte : ```jsonc {"method":"tools/call","params":{"name":"north", "arguments":{"agent_id":"dev","task":"harden the JWT auth token validation flow"}}} ``` La rĂ©ponse est un paquet orientĂ© — verdict de trust, la mĂ©moire laissĂ©e par la derniĂšre session, et une liste honnĂȘte de lacunes. Une capture rĂ©elle du binaire de `main`, lĂ©gĂšrement Ă©laguĂ©e : ```jsonc { "binding": { "trust_mode": "full_trust", "ok": true }, // verdict before retrieval "memory": [ // recalled from a PRIOR session { "claim": "AuthTokenFlow", "source_agent": "authbot", "age_ms": 221, "stale": false } // 
other claims from the same authored note, trimmed
 ], "sufficiency": { "state": "gathering", "top_score": 0.64, "why": "the strongest match left out still scores 0.30 — relevant context did not fit 
" }, "next_move": "Call `surgical_context` on the top focus node to ground the task before editing.", "honest_gaps": [] // nothing withheld on this graph } ``` `north` compose `trust_selftest` + `orient` + `boot_memory` + `focus` — l'agent ne va chercher une piĂšce isolĂ©e que lorsqu'il n'en a besoin que d'une. `focus` est le runtime d'attention de cette station : le working set minimal et bornĂ© en budget pour un objectif, avec une queue honnĂȘte de ce qu'il a laissĂ© de cĂŽtĂ© et un signal indiquant si c'est *assez* de contexte pour l'instant. `needs_ingest` est une vraie rĂ©ponse pour un graphe vide. Si `north` rapporte `needs: "needs_ingest"`, ou si vous ĂȘtes sur un binaire antĂ©rieur Ă  la 1.2.1 sans la composition L1GHT-recall, l'agent se replie sur la boucle de trust explicite — Ă©tablir le trust *avant* de faire confiance Ă  tout retrieval : ```jsonc // 0. Trust the binding in one call (verdict before retrieval) {"method":"tools/call","params":{"name":"trust_selftest","arguments":{"agent_id":"dev"}}} // 1. If the verdict is not full_trust, ask for the deterministic recovery path {"method":"tools/call","params":{"name":"recovery_playbook","arguments":{"agent_id":"dev"}}} // 2. Build graph truth {"method":"tools/call","params":{"name":"ingest","arguments":{"path":"/your/project","agent_id":"dev"}}} // 3. Ask a structural question — empty results say *why*, never just "no results" {"method":"tools/call","params":{"name":"activate","arguments":{"query":"authentication flow","agent_id":"dev"}}} ``` **Boucle premiĂšre session, en quatre mouvements :** `north` (ou `trust_selftest` → `ingest`) → `seek`/`audit` → `memorize` le rĂ©sultat durable pour que la prochaine session parte en avance. ## DURING — des verdicts portĂ©s pendant le travail *Pendant qu'il travaille, chaque rĂ©ponse arrive avec le degrĂ© de confiance Ă  lui accorder — et « je ne sais pas » est une vraie rĂ©ponse.*

Chaque rĂ©sultat est un verdict — act, reverify ou abstain — comme des portes que l'agent choisit

L'agent ne consulte pas m1nd ; il le porte. Chaque rĂ©ponse en cours de travail est un verdict calibrĂ©, pas une intuition : - **`impact` avant de toucher** montre le blast radius que vous n'aviez pas lu ; `ghost_edges` fait remonter les fichiers qui changent toujours ensemble mais ne partagent aucun import. - **`why` porte un verdict `closure`** — `blocked` signifie que le chemin repose sur un edge non rĂ©solu ou devinĂ© : vĂ©rifiez cet edge avant de vous fier au chemin. - **`predict` est Ă  calibration conforme** — `calibrate_predict` arme une gate par dĂ©pĂŽt ; les verdicts lisent ensuite `act` / `reverify` / `abstain`, oĂč `abstain` signifie *non calibrĂ© ou insuffisant* — un signal pour s'arrĂȘter, pas un oui faible. LivrĂ© dark : tant que vous ne calibrez pas, les verdicts plafonnent Ă  `reverify`. Le couplage de co-change est normalisĂ© en Jaccard lissĂ©, pas en comptes bruts de commits (+3 points prouvĂ©s par calibration). *Mise en garde :* `predict` n'a qu'un fallback structurel tant que `ghost_edges` n'a pas chargĂ© la matrice de co-change git — exĂ©cutez-le d'abord pour la vraie probabilitĂ© de co-change. - **`xray_gate` garde les frontiĂšres de l'architecture** — appelĂ© avant une modification, il rĂ©pond « ce changement franchit-il une frontiĂšre de module interdite ? » avec `clear` / `caution` / `blocked` ; seul un manifest ratifiĂ© peut bloquer (anti-fatigue de guardrail). - **Mission Control est de la discipline de preuve** — `mission_next` retourne exactement un mouvement plus des guardrails `do_not` ; en mode `bug_hunt`, un balayage direct final est requis avant la fermeture, pour que les agents vĂ©rifient l'espace nĂ©gatif. La mĂȘme honnĂȘtetĂ© accompagne le retrieval. Un hit de `seek` porte une lecture de `sufficiency` et un `trust_envelope` — et quand l'enveloppe n'a encore aucune ligne de calibration mesurĂ©e, elle plafonne son propre verdict au lieu d'exagĂ©rer. Une capture rĂ©elle, Ă©laguĂ©e (le premier hit est une mĂ©moire Ă©crite par la derniĂšre session) : ```jsonc { "results": [ { "label": "AuthTokenFlow", "source_agent": "authbot", "authored_ms_ago": 101161, "score": 0.48 } // 
code-node hits, trimmed
 ], "sufficiency": { "state": "gathering", "top_score": 0.48, "why": "the strongest match left out still scores 0.25 — relevant context did not fit 
" }, "trust_envelope": { "calibrated": false, // no calibration row measured "verdict": "reverify", // 
so the verdict is capped below `act` "next_repair_call": "trust_selftest" } } ```

impact trace le rayon d'impact à travers la toile de code connecté avant que vous n'éditiez

## AFTER — le graphe se rĂ©chauffe *Quand le travail atterrit, ce qui a Ă©tĂ© appris est consignĂ© avec la preuve qui le soutient — et reste honnĂȘte quand le code continue d'Ă©voluer.*

La mĂ©moire est ancrĂ©e au code rĂ©el ; quand le code change, la mĂ©moire se signale d'elle-mĂȘme

La plupart des outils donnent Ă  l'agent un meilleur *retrieval*. À cette station, l'agent **crĂ©e des connaissances durables et lisibles par machine** qui se composent Ă  travers les sessions et restent honnĂȘtes par rapport au code. L1GHT transforme les connaissances créées en structure graph-native qui s'auto-signale quand le code qu'elle cite change — les affirmations confiantes diffusent plus d'activation que les incertaines. 1. **Conclure** — l'agent atteint quelque chose de durable (une dĂ©cision, un rĂ©sultat vĂ©rifiĂ©, pourquoi le code est ainsi) et appelle `memorize` avec des affirmations structurĂ©es et des chemins `evidence`. ```jsonc memorize({ "agent_id": "authbot", "node_label": "AuthTokenFlow", "claims": [ { "label": "TokenValidator", "text": "TokenValidator validates JWTs via HMAC — rotate keys via KMS only", "confidence": "high", "evidence": ["src/auth/token.rs"] } ] }) ``` L'appel retourne la preuve qu'il a atterri — voici une rĂ©ponse rĂ©elle capturĂ©e, Ă©laguĂ©e : ```jsonc { "ok": true, "claims_written": 1, "light_evidence_resolved": 1, "light_evidence_unresolved": 0, // the evidence path bound to a real code node "path": ".../agent-memory/authtokenflow.light.md", "next_action": "Memory anchored to code and will auto-load next session; cross_verify(check:[\"evidence_freshness\"]) flags it if the cited code changes." } ``` 2. **Ancrer** — m1nd Ă©crit un `.light.md` graph-native sous `/agent-memory/`, l'ingĂšre (`adapter=light mode=merge`), et rĂ©sout chaque chemin `evidence` vers le vrai nƓud de code via un edge `grounded_in` — ainsi la connaissance vit dans le mĂȘme espace d'activation que le code et remonte dans `seek` / `activate` / `impact`. 3. **Auto-chargement** — Ă  chaque dĂ©marrage de session future, `m1nd` ingĂšre `agent-memory/` automatiquement et le rapporte dans `session_handshake.agent_memory`. Les rĂ©sultats passĂ©s survivent Ă  un ingest `mode=replace` et sont simplement *lĂ *. 4. **Auto-signalement de la staleness** — `cross_verify(check: ["evidence_freshness"])` re-hash chaque fichier citĂ© et nomme quelles affirmations sont devenues obsolĂštes parce que leur code a changĂ© — ainsi la mĂ©moire vous dit quand elle ment au lieu de vous tromper. La mĂ©moire porte une colonne vertĂ©brale de provenance : les affirmations dĂ©clarent un Ăąge + un auteur rĂ©els, supplantent les affirmations plus anciennes, expirent avec le temps et respectent un plafond de rĂ©cence — la connaissance mĂ©morisĂ©e dĂ©clare sa propre fraĂźcheur au lieu de se pĂ©rimer en silence. Cette boucle a Ă©tĂ© prouvĂ©e en direct de bout en bout : `memorize` → edge `grounded_in` → signal de freshness sur fichier modifiĂ© → survit Ă  `mode=replace` → boot auto-load. Vous fermez une mission bornĂ©e ? Passez `write_light_memory: true` Ă  `mission_close` pour persister ses affirmations vĂ©rifiĂ©es de la mĂȘme façon. **COMPOUND — la session suivante naĂźt dans la coque rĂ©chauffĂ©e.** Tuez ce processus, dĂ©marrez-en un **nouveau** contre le mĂȘme runtime, et son premier `north(task)` porte dĂ©jĂ  l'affirmation de la session prĂ©cĂ©dente — voici un Ă©change rĂ©el capturĂ© (les deux appels ci-dessus ont tournĂ© dans des processus sĂ©parĂ©s), Ă©laguĂ© : ```jsonc // north.memory, from a process that never called memorize itself: "memory": [ { "claim": "AuthTokenFlow", "source_agent": "authbot", "age_ms": 221, "stale": false }, { "claim": "đ”» evidence: src/auth/token.rs", "source_agent": "authbot", "age_ms": 221, "stale": false }, { "claim": "⍂ entity: TokenValidator", "source_agent": "authbot", "age_ms": 221, "stale": false }, { "claim": "đ”» confidence: high", "source_agent": "authbot", "age_ms": 221, "stale": false } // 
the authored-note file node, trimmed
 ] ``` `source_agent` nomme qui l'a Ă©crite et `stale` re-vĂ©rifie le code citĂ© — la session suivante hĂ©rite de la connaissance *et* de sa provenance, pas d'une simple chaĂźne. ### Un graphe, plusieurs agents

Un processus propriĂ©taire dĂ©tient le graphe vivant ; de nombreux agents s'attachent au mĂȘme cƓur

Le DĂ©marrage Rapide ci-dessous cĂąble un serveur stdio par hĂŽte — parfait pour un seul agent, mais chaque processus charge son propre graphe et dĂ©tient sa propre lease. Le dĂ©ploiement pour lequel m1nd est conçu, c'est un seul propriĂ©taire, plusieurs agents attachĂ©s. Un seul processus propriĂ©taire dĂ©tient le graphe vivant : ```bash m1nd-mcp --serve --no-gui --port 1337 --runtime-dir /your/project/.m1nd ``` Chaque agent s'attache ensuite comme un fin pont stdio↔HTTP — il ne charge **aucun** graphe, ne construit aucun moteur, et ne prend **aucune** lease : ```bash m1nd-mcp --attach http://127.0.0.1:1337 --stdio # or set M1ND_ATTACH_URL and omit the flag ``` N'importe quel nombre de ponts pointent vers l'unique propriĂ©taire et partagent son unique graphe vivant, si bien que ce qu'un agent `memorize` est immĂ©diatement rappelĂ© par un autre — pas de rĂ©ingest, pas de copie par agent. Les requĂȘtes passent par localhost, donc ça reste local-first (le bind reste `127.0.0.1` sauf si vous optez pour `--bind 0.0.0.0`). Un `seek` Ă  chaud via le pont a mesurĂ© ≈0.7ms sur un petit graphe sur une seule machine — ordre de grandeur, pas une garantie : l'attach ajoute un aller-retour localhost, et la latence croĂźt avec la taille du graphe et la charge. ## Le matĂ©riau : l'honnĂȘtetĂ© *Toute la coque est faite d'un seul matĂ©riau — m1nd prĂ©fĂšre dire Ă  votre agent « ne fais pas confiance Ă  ceci » plutĂŽt que de le laisser deviner.* C'est la chose la plus dĂ©fendable que m1nd fait, et aucun concurrent ne la propose. La doctrine : **la crĂ©dibilitĂ© vient de l'honnĂȘtetĂ©, pas de toujours gagner.** Un *non* honnĂȘte vaut mieux qu'une supposition confiante — chaque station ci-dessus est faite de ce matĂ©riau. - **`trust_selftest`** retourne un verdict *avant* tout retrieval : `full_trust`, `needs_ingest`, `wrong_workspace_binding`, `stale_binding_suspected`, ou `degraded_host_tool_surface`. L'agent sait s'il doit continuer, ingĂ©rer, rebinder, ou faire un fallback. - **`agent_runtime_contract`** est prĂ©sent dans chaque rĂ©ponse de retrieval, portant un `trust_mode`. Un rĂ©sultat vide est dĂ©sambiguĂŻsĂ© — liĂ© au mauvais dĂ©pĂŽt vs. genuinement rien lĂ  — jamais silencieusement rapportĂ© comme « aucun rĂ©sultat. » - **`trust_band: insufficient_evidence` signifie AUCUNE preuve — pas un risque moyen.** La rĂ©ponse honnĂȘte de dĂ©marrage Ă  froid, distincte de faible/moyen/Ă©levĂ©. - **Les tableaux `non_claims`** sont prĂ©sents sur chaque outil de mission. m1nd dit Ă  l'agent ce qu'il n'a *pas* prouvĂ©. - **`mission_verify` peut dire non — et le fait, dans du code testĂ©.** Il rejette les preuves uniquement issues du graphe : une affirmation ne peut pas se fermer sans une lecture de fichier, une exĂ©cution de test, ou une sonde runtime. Le test s'appelle littĂ©ralement `graph_only_evidence_is_not_enough`. - **`recovery_playbook`** retourne une liste d'Ă©tapes dĂ©terministe et ordonnĂ©e pour rĂ©parer le binding. MontrĂ©, pas racontĂ©. Appelez `trust_selftest` sur un runtime sans binding et le verdict *est* l'instruction de rĂ©paration — une capture rĂ©elle, Ă©laguĂ©e : ```jsonc { "ok": false, "status": "blocked", "verdict": "needs_ingest", // not "no results" — it says why "next_action": "call_ingest", "checks": { "graph_populated": false, "needs_ingest": true, "recovery_playbook_attached": true }, "recovery_playbook": { "recovery_goal": "Populate this binding's active graph for the intended repository.", "steps": [ { "action": "Call ingest for the intended repository on this same binding." } /* 
trimmed
 */ ] } } ``` La preuve de l'engagement est ce qui a Ă©tĂ© supprimĂ© pour lui : `savings` et `resonate` ont Ă©tĂ© retirĂ©s de la surface annoncĂ©e en beta.7 parce qu'un outil qui prĂ©tend toujours gagner n'est pas crĂ©dible. Aucun concurrent — ni mem0, Zep, Letta, Sourcegraph, ni aucun MCP code-graph — ne propose un layer qui dit Ă  l'agent ce Ă  quoi il ne faut *pas* faire confiance et comment rĂ©cupĂ©rer.

Les rapports de terrain alimentent une boucle de triage qui transforme le défaut en test avant le correctif

**La boucle de field-triage se referme sur elle-mĂȘme.** La tĂ©lĂ©mĂ©trie de session que les agents laissent dans `~/.m1nd/field-reports.jsonl` (local-only — m1nd ne tĂ©lĂ©phone jamais Ă  la maison) n'est pas un log passif : les reports sont triĂ©s, et un bug de terrain *confirmĂ©* devient un cas de batterie rouge **avant** le fix, si bien que la rĂ©gression est prouvĂ©e, pas seulement dĂ©crite. Cette boucle a dĂ©jĂ  tournĂ© de bout en bout dans un balayage complet de field-triage : quatre bugs remontĂ©s du terrain sont devenus des cas de batterie en Ă©chec puis des fixes mergĂ©s, tous livrĂ©s dans la **1.2.1** — `north` compose dĂ©sormais le L1GHT recall dans son paquet de mĂ©moire, le sentinel de graphe `temp` se rĂ©sout vers un vrai tempdir au lieu de joncher le rĂ©pertoire de travail, `memorize` accepte une `confidence` numĂ©rique, et le tag d'ambiguĂŻtĂ© de closure ne se dĂ©clenche plus que sur des Ă©galitĂ©s authentiques (le crieur au loup : ambiguous-blocked est tombĂ© de 9/11 → 0/11). ## DĂ©marrage Rapide *Installez une fois, cĂąblez l'hĂŽte de votre agent et laissez la place — Ă  partir d'ici, c'est votre agent qui conduit.* ```bash git clone https://github.com/maxkle1nz/m1nd.git && cd m1nd npm install -g . m1nd doctor ``` Ensuite, cĂąblez votre hĂŽte — les deux mĂȘmes commandes, une par hĂŽte (`codex`, `claude`, `gemini`, `antigravity`, `generic`) : | HĂŽte | Installer le pack d'agent | CĂąbler la config MCP | |---|---|---| | Codex | `m1nd install-skills codex` | `m1nd mcp-config codex --project /your/project` | | Claude Code | `m1nd install-skills claude --project /your/project` | `m1nd mcp-config claude --project /your/project` | | Gemini | `m1nd install-skills gemini --project /your/project` | `m1nd mcp-config gemini --project /your/project` | | Antigravity | `m1nd install-skills antigravity --project /your/project` | `m1nd mcp-config antigravity --project /your/project` | | Generic | `m1nd install-skills generic --project /your/project` | `m1nd mcp-config generic --project /your/project` | Ou depuis npm : `npm install -g @maxkle1nz/m1nd`. `install-skills` livre le pack d'agent — la boucle opĂ©rationnelle elle-mĂȘme en cinq protocoles nommĂ©s, pas de la documentation dĂ©corative. **La surface de l'opĂ©rateur, c'est cette CLI ; la surface de l'agent, c'est MCP.** Un humain exĂ©cute occasionnellement `m1nd doctor`, `install-skills`, `mcp-config` — l'agent exĂ©cute tout le reste. Une Ă©chappatoire host-neutral existe pour quand il n'y a pas de session MCP vivante oĂč appeler `north` (obsolĂšte, liĂ©e au mauvais dĂ©pĂŽt, ou pas encore chargĂ©e) : elle lance un runtime isolĂ©, le lie au dĂ©pĂŽt, et retourne une seule enveloppe lisible par machine qui dĂ©limite le pĂ©rimĂštre, Ă©tablit le trust, ingĂšre si nĂ©cessaire, retourne des ancres, et fait le handoff vers la preuve directe : ```bash m1nd agent first-minute --repo /your/project --query "understand this system" --json ``` Épinglez le binaire si besoin : `--version` affiche `1.2.x ()`, et `M1ND_EXPECTED_VERSION` / `M1ND_EXPECTED_SHA` (+ `M1ND_STRICT_VERSION`) permettent Ă  un hĂŽte de dĂ©tecter et de refuser un binaire qui a dĂ©rivĂ©. Carte d'installation complĂšte, packs d'hĂŽtes, build du runtime natif et flags de mise Ă  jour : [docs/AGENT-PACKS.md](../docs/AGENT-PACKS.md) · configuration client par client : [matrice d'intĂ©gration](../docs/IDE-INTEGRATIONS.md). ## Preuves

Chaque affirmation repose sur son propre arc prouvĂ© — la batterie de capacitĂ©s, reproductible

Chaque ligne est calibrĂ©e exactement Ă  ce qui a Ă©tĂ© mesurĂ©. m1nd ne met pas en avant des chiffres d'Ă©conomies ou de ROI — c'est le principe. | Affirmation | RĂ©sultat | Source / calibration | |---|---|---| | Latence `activate` / `impact` | `activate` ~1”s, `impact` sub-”s sur un graphe synthĂ©tique de 1K nƓuds | Benchmarks Criterion — **reproduisez-le vous-mĂȘme : `cargo bench -p m1nd-core`** (mesurĂ© `activate_1k_nodes` ≈1.4”s, `impact_depth3` ≈0.5”s sur un Mac Apple-silicon) ; [mĂ©thodologie](https://m1nd.world/wiki/benchmarks.html) ; ordre de grandeur, dĂ©pendant du matĂ©riel. | | Matrice linguistique | appels + imports cross-fichier pour 10 langages (+ Ruby cross-fichier) | VĂ©rifiĂ© de bout en bout dans un seul ingest polyglotte ; tests par langage dans `m1nd-ingest`. Voir [Couverture Linguistique](#couverture-linguistique). | | Échantillon de validation post-Ă©criture | 12/12 classifiĂ©s correctement | VĂ©rification runtime interne. | | Bug-hunt avec graines | 16/20 au premier round acceptĂ© de dĂ©fauts semĂ©s `humanize` (m1nd-trained) ; `m1nd-basic` et direct chacun 8/15 | Preuve produit interne, `public_claim_worthy=false` — pas un benchmark universel. | | Auto-vĂ©rification de la mĂ©moire | prouvĂ©e en direct de bout en bout | `memorize` → `grounded_in` → signal de freshness sur fichier modifiĂ© → survit Ă  replace → boot auto-load. | | Batterie de capacitĂ©s vs grep | 37/37 passent ; en face-Ă -face 16 victoires m1nd / 12 Ă©galitĂ©s / **0 victoire grep** | Harness in-repo `scratchpad/m1nd_battery.py` (37 cas, ingest frais + vĂ©ritĂ©-terrain PASS/FAIL + face-Ă -face `rg`). **Reproduire : `python3 scratchpad/m1nd_battery.py ./target/release/m1nd-mcp . --suite m1nd`.** Calibration : un seul dĂ©pĂŽt (m1nd lui-mĂȘme), cas auto-rĂ©digĂ©s ; ~5 des Ă©galitĂ©s sont des outils structurels notĂ©s face Ă  un proxy grep littĂ©ral qui ne peut pas exprimer ce Ă  quoi ils rĂ©pondent. | | Calibration conforme (`predict`) | act-band ≈32% de prĂ©cision @ ≈13.5% de couverture (α=0.10) | Sur l'historique git propre de m1nd (n≈9.2k prĂ©dictions held-out), +3pts face aux comptes bruts aprĂšs le passage au Jaccard lissĂ©. Calibration : un seul dĂ©pĂŽt, un signal grossier basĂ© sur des comptes — la gate s'abstient surtout aujourd'hui, **par design** : l'abstention est la sortie honnĂȘte d'un signal faible, pas un Ă©chec. |
Plus de visuels — la sĂ©rie complĂšte des mĂ©canismes

Un graphe partagĂ© alimente chaque agent attachĂ©, comme une fontaine commune Le savoir remplacĂ© est mis de cĂŽtĂ©, pas supprimĂ© — l'affirmation la plus rĂ©cente prime

La calibration se gagne par dĂ©pĂŽt avant que les verdicts puissent lire act Une affirmation ne se ferme que lorsque la preuve fait le pont — une lecture de fichier, un test ou une sonde

## Limites `m1nd` complĂšte plutĂŽt que remplace votre LSP, compilateur, test runner, scanners de sĂ©curitĂ© et stack d'observabilitĂ©. Il est le plus utile avant la recherche, la revue ou une modification, et chaque fois que les docs, l'impact ou la continuitĂ© comptent. Il est **moins utile** quand : - la recherche exacte de texte rĂ©pond dĂ©jĂ  Ă  la question - la vĂ©ritĂ© du compilateur ou du runtime est la seule chose dont vous avez besoin - la tĂąche est une action locale banale sur fichier sans incertitude structurelle **A besoin d'alimentation :** `trust` et `tremor` dĂ©marrent avec des priors neutres jusqu'Ă  ce que le feedback `learn` / les donnĂ©es `ghost_edges` s'accumulent, et `predict` a besoin que `ghost_edges` soit chargĂ© avant que son signal de co-change soit significatif. Ils s'amĂ©liorent avec l'usage ; ils sont honnĂȘtes sur le fait d'ĂȘtre non informĂ©s au dĂ©marrage. ## Ce que m1nd N'Est Pas `m1nd` n'est pas seulement : - un outil de recherche de code avec un index plus grand - un layer de RAG sur le dĂ©pĂŽt qui ne rĂ©cupĂšre que des fichiers ou des chunks - une base de donnĂ©es en graphe qui laisse les dĂ©cisions de workflow au client - un remplacement d'analyse statique pour le compilateur, les tests ou les outils de sĂ©curitĂ© - un bundle MCP d'utilitaires sans rapport - une surface d'outils que l'humain doit apprendre — les verbes appartiennent Ă  l'agent ; le vĂŽtre, c'est la petite [CLI de setup](#dĂ©marrage-rapide) C'est le layer qui transforme ces surfaces en un systĂšme opĂ©rationnel sur lequel un agent peut raisonner et agir. Pas pour les recherches mono-fichier, les grep simples, ou la vĂ©ritĂ© compilateur — utilisez des outils simples dans ces cas. ## Couverture Linguistique Le raisonnement sur le graphe (`impact`, `why`, `predict`, `trace`, `taint_trace`) vaut ce que vaut l'extracteur. m1nd rĂ©sout Ă  la fois les **edges `calls`** (call graph) et les **`imports` cross-fichier** (rĂ©solution de dĂ©pendances fichier→fichier) par langage. La matrice ci-dessous a Ă©tĂ© prouvĂ©e en direct dans un seul ingest polyglotte : | Langage | `calls` | imports cross-fichier | |---|:---:|:---:| | Rust | ✅ | ✅ (`mod`/`use crate::`) | | Python | ✅ | ✅ | | JavaScript / TypeScript | ✅ | ✅ | | Go | ✅ | ✅ (package) | | Java | ✅ | ✅ (FQCN + wildcard) | | C / C++ | ✅ | ✅ (`#include "..."`) | | Kotlin | ✅ | ✅ (package) | | PHP | ✅ | ✅ (PSR-4) | | Scala | ✅ | ✅ (package) | | Ruby | ⏳ | ✅ (`require_relative`) | | C# | ✅ | — (les namespaces ne mappent pas 1:1 aux fichiers) | | Swift | ✅ | — | Toutes les lignes ✅ sont vĂ©rifiĂ©es de bout en bout (un import `caller`→`callee` se rĂ©sout et le caller Ă©met des edges d'appel). Les autres langages tombent sur l'extracteur gĂ©nĂ©rique (uniquement `contains`). Les imports non rĂ©solvables (paquets externes, gems, stdlib, en-tĂȘtes systĂšme) sont honnĂȘtement laissĂ©s non rĂ©solus plutĂŽt que devinĂ©s. ## Architecture en Un Coup d'ƒil Trois crates Rust core plus un bridge auxiliaire : - **`m1nd-mcp`** — le serveur MCP et la surface du runtime opĂ©rationnel. - **`m1nd-core`** — le moteur de graphe : un `WavefrontEngine` faisant du spreading activation, de la plasticitĂ© Hebbienne, de l'adjacence CSR, et des ghost edges dĂ©rivĂ©s de git. - **`m1nd-ingest`** — adapters d'extraction, de routage et de construction de graphe (code, docs universels, L1GHT). - **`m1nd-openclaw`** — bridge auxiliaire OpenClaw (lane Unix-socket, versioning indĂ©pendant). Versions actuelles des crates : `m1nd-core`, `m1nd-ingest`, `m1nd-mcp` tous en `1.2.0` (`m1nd-openclaw` est versionnĂ© indĂ©pendamment en `0.1.0`).

Aperçu de l'architecture m1nd

La surface MCP live Ă©volue avec les versions — utilisez `tools/list` pour le nombre exact d'outils et les noms dans votre build. **Niveaux :** 27 outils essentiels sont annoncĂ©s par dĂ©faut pour rĂ©duire le coĂ»t de sĂ©lection des outils ; dĂ©finissez `M1ND_TOOL_TIER=full` pour annoncer la surface complĂšte (100+ outils : RETROBUILDER, perspectives, federation, daemon). Les outils cachĂ©s sont toujours appelables via `tools/call` — le niveau contrĂŽle uniquement ce que `tools/list` expose. Le catalogue outil par outil ne vit pas dans ce README : voir le [wiki canonique](https://m1nd.world/wiki/), [docs/AGENT-PACKS.md](../docs/AGENT-PACKS.md) et [EXAMPLES.md](../EXAMPLES.md) pour la profondeur, et [CHANGELOG.md](../CHANGELOG.md) pour l'historique des versions. ## Contribuer Les contributions sont bienvenues sur les extracteurs et adapters, le tooling MCP/runtime, les benchmarks, la documentation, et les algorithmes de graphe. Voir [CONTRIBUTING.md](../CONTRIBUTING.md). ## Licence MIT. Voir [LICENSE](../LICENSE).