đŹđ§ [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)
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.
---
**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.**

> 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.

### 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.*

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.*

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"
}
}
```

## 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 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

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.

**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 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
## 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`).
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).