🇬🇧 [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

Operational Intelligence fĂŒr Coding-Agenten

Dein Coding-Agent hört auf, blind zu starten.
Local-first. MCP-native. Graph-GedĂ€chtnis, Trust und Change-Reasoning fĂŒr Agent-Hosts.

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 ist die HĂŒlle um deinen Coding-Agenten — die Betriebsschleife, in der er lebt: orientiert, bevor er handelt, ehrliche Verdikte, wĂ€hrend er arbeitet, GedĂ€chtnis mit Evidenz, nachdem er fertig ist, aufbauend ĂŒber Sessions hinweg.**

Ein Stapel loser Dateien wird zu einem verbundenen Graphen dessen, was womit verknĂŒpft ist

> grep findet Text. Vektorsuche findet Ă€hnliche Chunks. `m1nd` gibt Agenten einen lokalen Graphen davon, was verbunden ist, was sich geĂ€ndert hat, was bricht, was gedriftet ist, und wo weiterzumachen ist. ## Was m1nd ist: die HĂŒlle um deinen Agenten *m1nd umhĂŒllt deinen Coding-Agenten mit einer Schleife, die ihn orientiert, bevor er handelt, ihn ehrlich hĂ€lt, wĂ€hrend er arbeitet, und sich merkt, was er gelernt hat, wenn er fertig ist.* - **Wenn du mit Agenten baust** — nichts Neues zu lernen: einmal installieren und weiter mit deinem Agenten reden. Er hört auf zu raten, fĂ€ngt an, sich zu erinnern, und sagt „ich weiß es nicht", wenn das die Wahrheit ist. - **Wenn du Ingenieur bist** — eine local-first Rust-Graph-Engine hinter einem MCP-Server: ein kausaler Code-Graph (strukturelle, semantische, zeitliche und kausale Kanten), konform kalibrierte Verdikte, und GedĂ€chtnis, das mit Provenienz an Code-Knoten verankert ist. Nichts verlĂ€sst deine Maschine. Agenten auf echten Codebasen scheitern nicht, weil sie nicht suchen können — sie scheitern, weil sie kein operatives Modell haben. Jede Session baut den Kontext von Grund auf neu auf, editiert ohne den Blast Radius zu kennen, und kann ein leeres Ergebnis, das „nichts existiert" bedeutet, nicht von einem unterscheiden, das „falsches Repo" bedeutet. m1nd gibt dem Agenten ein dauerhaftes Modell der Codebasis — einen kausalen Graphen mit Spreading Activation und Hebbianischer PlastizitĂ€t — und legt die gesamte Schleife des Agenten darum. Die Features sind hier kein Katalog; sie sind die Stationen dieser HĂŒlle: ```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 wird von deinem Agenten bedient, nicht von dir.** Jedes Tool unten wird vom Agenten selbst aufgerufen — automatisch, vor und nach seiner Arbeit. Ein Mensch fĂŒhrt sie im normalen Gebrauch nie aus; du installierst einmal ([Schnellstart](#schnellstart)) und redest weiter mit deinem Agenten wie immer. **Eine HĂŒlle, drei Leser.** Dasselbe orientierte Paket wird fĂŒr den gerendert, der gleich handelt: der **Haupt-Agent** liest es als `north` (ausgeliefert — die EingangstĂŒr unten); ein **Subagent** wird es als das Delegation Packet erhalten, die Retrieval-HĂ€lfte seiner Spawn-Spec (entworfen — [docs/NEXTGEN-AGENT-PRD.md](../docs/NEXTGEN-AGENT-PRD.md), §O.12); der **Mensch** wird es als die Pre-Flight Card auf dem Living Tree sehen — dein Projekt als navigierbarer Baum mit GedĂ€chtnis-Post-its, der zeigt, was der Agent verifiziert vs. geraten hat, bevor eine Änderung landet (entworfen, in Entwicklung — [docs/HUMAN-LAYER-PRD.md](../docs/HUMAN-LAYER-PRD.md)). Eine Wahrheit, einmal berechnet.

Eine Wahrheit, zwei Leser — dasselbe Paket gerendert fĂŒr den Agenten und fĂŒr den Menschen

Traditionelle Agentenschleife vs. m1nd-grounded-Schleife

### Was passiert, wenn du eine Nachricht schickst Du bittest deinen Agenten, etwas zu reparieren. Das macht die HĂŒlle um diese Nachricht herum: 1. **Bevor dein Agent handelt**, reicht m1nd ihm die lebende Karte deines Projekts, was vergangene Sessions gelernt haben, wie sehr jedem Teil zu vertrauen ist — und was es *nicht* weiß (`north`). 2. **WĂ€hrend er arbeitet**, trĂ€gt er Verdikte: er prĂŒft, was eine Änderung kaputt machen wĂŒrde, *bevor* er den Code anfasst (`impact`), und wo die Evidenz dĂŒnn ist, bekommt er ein ehrliches „ich weiß es nicht" statt einer selbstbewussten Vermutung (`abstain`). 3. Er kann fragen, warum zwei Code-Teile verbunden sind, und gewarnt werden, wenn die Antwort auf einer Vermutung ruht (`why`), und er wird alarmiert, bevor er eine Architekturgrenze ĂŒberschreitet (`xray_gate`). 4. **Wenn er fertig ist**, wird die Entscheidung zusammen mit der Evidenz, die sie stĂŒtzt, festgehalten (`memorize`). 5. Dieses GedĂ€chtnis ist am echten Code verankert — Ă€ndert sich der Code spĂ€ter, markiert sich das GedĂ€chtnis selbst als veraltet, anstatt still zu lĂŒgen (`cross_verify`). 6. **Deine nĂ€chste Session startet bereits wissend** — jeder Agent, jedes Tool: Claude Code, Codex, Cursor, Gemini. Was ein Agent lernt, erbt der nĂ€chste. ## BEFORE — orientiert geboren *Dein Agent beginnt jede Session, indem er dein Projekt bereits kennt — und weiß, was er nicht weiß.*

north(task): ein einziger Eingangsaufruf liefert das ganze orientierte Paket

Innerhalb einer MCP-Session ist die EingangstĂŒr ein einziger Aufruf — `north(task)` komponiert Trust, Task-Kontext (Focus-Knoten + PageRank-Anker), vorheriges Cross-Session-GedĂ€chtnis, ein Suffizienz-Signal, einen `next_move` und `honest_gaps` (was m1nd noch *nicht* weiß) zu einem einzigen Paket, vor jeder Query: ```jsonc {"method":"tools/call","params":{"name":"north", "arguments":{"agent_id":"dev","task":"harden the JWT auth token validation flow"}}} ``` Die Antwort ist ein orientiertes Paket — Trust-Verdikt, das GedĂ€chtnis, das die letzte Session hinterlassen hat, und eine ehrliche LĂŒckenliste. Eine echte Aufnahme vom `main`-Binary, leicht gekĂŒrzt: ```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` komponiert `trust_selftest` + `orient` + `boot_memory` + `focus` — der Agent greift nur dann direkt zu einem Einzelteil, wenn er genau eines braucht. `focus` ist die Attention-Runtime dieser Station: das minimale, budget-begrenzte Working Set fĂŒr ein Ziel, mit einem ehrlichen Rest dessen, was es weggelassen hat, und einem Signal dafĂŒr, ob das schon *genug* Kontext ist. `needs_ingest` ist eine echte Antwort fĂŒr einen leeren Graphen. Meldet `north` `needs: "needs_ingest"`, oder lĂ€ufst du auf einem Binary vor 1.2.1 ohne die L1GHT-Recall-Komposition, fĂ€llt der Agent auf die explizite Trust-Schleife zurĂŒck — Trust *vor* dem Vertrauen in irgendein Retrieval herstellen: ```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"}}} ``` **Erste-Session-Schleife, in vier ZĂŒgen:** `north` (oder `trust_selftest` → `ingest`) → `seek`/`audit` → `memorize` das dauerhafte Ergebnis, damit die nĂ€chste Session voraus startet. ## DURING — Verdikte, getragen wĂ€hrend der Arbeit *WĂ€hrend er arbeitet, kommt jede Antwort mit der Angabe, wie sehr ihr zu vertrauen ist — und „ich weiß es nicht" ist eine echte Antwort.*

Jedes Ergebnis ist ein Verdikt — act, reverify oder abstain — wie TĂŒren, die der Agent wĂ€hlt

Der Agent konsultiert m1nd nicht; er trĂ€gt es. Jede Antwort mitten in der Arbeit ist ein kalibriertes Verdikt, kein BauchgefĂŒhl: - **`impact` vor dem Anfassen** zeigt den Blast Radius, den du nicht gelesen hast; `ghost_edges` bringt Dateien ans Licht, die sich immer zusammen Ă€ndern, aber keinen Import teilen. - **`why` trĂ€gt ein `closure`-Verdikt** — `blocked` bedeutet, der Pfad ruht auf einer unaufgelösten oder geratenen Kante: verifiziere diese Kante, bevor du dich auf den Pfad verlĂ€sst. - **`predict` ist konform kalibriert** — `calibrate_predict` schĂ€rft ein Pro-Repo-Gate; Verdikte lesen sich dann als `act` / `reverify` / `abstain`, wobei `abstain` *unkalibriert oder unzureichend* bedeutet — ein Signal zum Anhalten, kein schwaches Ja. Wird dunkel ausgeliefert: bis du kalibrierst, deckeln Verdikte bei `reverify`. Co-Change-Kopplung wird geglĂ€ttet-Jaccard-normalisiert, keine rohen Commit-ZĂ€hlungen (kalibrierungsbewiesen +3 Punkte). *Vorbehalt:* `predict` hat nur strukturellen Fallback, bis `ghost_edges` die Git-Co-Change-Matrix lĂ€dt — fĂŒhre es zuerst aus fĂŒr echte Co-Change-Wahrscheinlichkeit. - **`xray_gate` bewacht Architekturgrenzen** — vor einer Änderung aufgerufen, beantwortet es â€žĂŒberschreitet diese Änderung eine verbotene Modulgrenze?" mit `clear` / `caution` / `blocked`; nur ein ratifiziertes Manifest kann blockieren (Anti-Guardrail-MĂŒdigkeit). - **Mission Control ist Beweisdisziplin** — `mission_next` gibt genau einen Zug plus `do_not`-Guardrails zurĂŒck; im `bug_hunt`-Modus ist ein abschließender direkter Sweep vor dem Schließen erforderlich, damit Agenten den Negativraum prĂŒfen. Dieselbe Ehrlichkeit begleitet das Retrieval. Ein `seek`-Treffer trĂ€gt eine `sufficiency`-Anzeige und einen `trust_envelope` — und wenn der Envelope noch keine gemessene Kalibrierungszeile hat, deckelt er sein eigenes Verdikt, anstatt zu ĂŒbertreiben. Eine echte Aufnahme, gekĂŒrzt (der Top-Treffer ist ein GedĂ€chtnis, das die letzte Session verfasst hat): ```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 verfolgt den Wirkungsradius durch das Netz aus verbundenem Code, bevor du editierst

## AFTER — der Graph wird wĂ€rmer *Wenn die Arbeit landet, wird das Gelernte mit der Evidenz festgehalten, die es stĂŒtzt — und es bleibt ehrlich, wenn der Code weiterzieht.*

Das GedÀchtnis ist an echten Code verankert; Àndert sich der Code, meldet sich das GedÀchtnis selbst

Die meisten Tools geben einem Agenten besseres *Retrieval*. An dieser Station **verfasst der Agent dauerhafte, maschinenlesbare Erkenntnisse**, die sich ĂŒber Sessions hinweg aufbauen und gegenĂŒber dem Code ehrlich bleiben. L1GHT verwandelt verfasstes Wissen in graph-native Struktur, die sich selbst markiert, wenn sich der Code Ă€ndert, den es zitiert — sichere Behauptungen verbreiten mehr Aktivierung als unsichere. 1. **Schlussfolgern** — der Agent erreicht etwas Dauerhaftes (eine Entscheidung, ein verifiziertes Ergebnis, warum Code so ist wie er ist) und ruft `memorize` mit strukturierten Behauptungen und `evidence`-Pfaden auf. ```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"] } ] }) ``` Der Aufruf liefert den Beweis, dass es gelandet ist — dies ist eine echte aufgenommene Antwort, gekĂŒrzt: ```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. **Verankern** — m1nd schreibt eine graph-native `.light.md` unter `/agent-memory/`, ingest sie (`adapter=light mode=merge`), und löst jeden `evidence`-Pfad zum echten Code-Knoten ĂŒber eine `grounded_in`-Kante auf — so lebt das Wissen im selben Aktivierungsraum wie Code und taucht in `seek` / `activate` / `impact` auf. 3. **Auto-Load** — bei jedem zukĂŒnftigen Session-Start ingest `m1nd` `agent-memory/` automatisch und meldet es in `session_handshake.agent_memory`. Vergangene Erkenntnisse ĂŒberleben einen `mode=replace`-Ingest und sind einfach *da*. 4. **Staleness selbst markieren** — `cross_verify(check: ["evidence_freshness"])` re-hasht jede zitierte Datei und benennt, welche Behauptungen veraltet sind, weil sich ihr Code geĂ€ndert hat — so sagt das GedĂ€chtnis, wann es lĂŒgt, anstatt dich irrezufĂŒhren. Das GedĂ€chtnis trĂ€gt ein Provenienz-RĂŒckgrat: Behauptungen geben echtes Alter + Autor an, lösen Ă€ltere Behauptungen ab, altern aus und respektieren einen Recency-Cap — erinnertes Wissen gibt seine eigene Frische an, anstatt still zu veralten. Diese Schleife wurde live von Ende zu Ende bewiesen: `memorize` → `grounded_in`-Kante → Freshness-Flag auf bearbeiteter Datei → ĂŒberlebt `mode=replace` → Boot-Auto-Load. Schließt du eine begrenzte Mission? Übergib `write_light_memory: true` an `mission_close`, um seine verifizierten Behauptungen auf dieselbe Weise zu persistieren. **COMPOUND — die nĂ€chste Session wird in der aufgewĂ€rmten HĂŒlle geboren.** Töte diesen Prozess, starte einen **frischen** gegen dieselbe Runtime, und sein erstes `north(task)` trĂ€gt bereits die Behauptung der frĂŒheren Session — dies ist ein echter aufgenommener Austausch (die beiden Aufrufe oben liefen in getrennten Prozessen), gekĂŒrzt: ```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` benennt, wer es verfasst hat, und `stale` prĂŒft den zitierten Code erneut — die nĂ€chste Session erbt das Wissen *und* seine Provenienz, keinen bloßen String. ### Ein Graph, viele Agenten

Ein Owner-Prozess hÀlt den lebenden Graphen; viele Agenten attachen an denselben Kern

Der Schnellstart unten verdrahtet einen stdio-Server pro Host — in Ordnung fĂŒr einen Agenten, aber jeder Prozess lĂ€dt seinen eigenen Graphen und hĂ€lt seinen eigenen Lease. Das Deployment, fĂŒr das m1nd gebaut ist, ist ein EigentĂŒmer, viele attachte Agenten. Ein EigentĂŒmer-Prozess hĂ€lt den Live-Graphen: ```bash m1nd-mcp --serve --no-gui --port 1337 --runtime-dir /your/project/.m1nd ``` Jeder Agent attacht dann als dĂŒnne stdio↔HTTP-Bridge — er lĂ€dt **keinen** Graphen, baut keine Engines und nimmt **keinen** Lease: ```bash m1nd-mcp --attach http://127.0.0.1:1337 --stdio # or set M1ND_ATTACH_URL and omit the flag ``` Beliebig viele Bridges zeigen auf den einen EigentĂŒmer und teilen sich seinen einzigen Live-Graphen, sodass das, was ein Agent `memorize`t, ein anderer sofort abruft — kein Reingest, keine Pro-Agent-Kopie. Queries laufen ĂŒber localhost, sodass es local-first bleibt (`bind` bleibt `127.0.0.1`, außer du entscheidest dich fĂŒr `--bind 0.0.0.0`). Ein warmes `seek` ĂŒber die Bridge maß ≈0.7ms auf einem kleinen Graphen auf einer Maschine — GrĂ¶ĂŸenordnung, keine Garantie: Attach fĂŒgt einen localhost-Roundtrip hinzu, und die Latenz skaliert mit GraphgrĂ¶ĂŸe und Last. ## Das Material: Ehrlichkeit *Die ganze HĂŒlle besteht aus einem einzigen Material — m1nd sagt deinem Agenten lieber „vertrau dem nicht", als ihn raten zu lassen.* Das ist das VerteidigungswĂŒrdigste, was m1nd tut, und kein Konkurrent liefert es. Die Doktrin: **GlaubwĂŒrdigkeit kommt von Ehrlichkeit, nicht davon, immer zu gewinnen.** Ein ehrliches *Nein* schlĂ€gt eine selbstbewusste Vermutung — jede Station oben besteht aus diesem Material. - **`trust_selftest`** gibt ein Verdikt *vor* jedem Retrieval zurĂŒck: `full_trust`, `needs_ingest`, `wrong_workspace_binding`, `stale_binding_suspected`, oder `degraded_host_tool_surface`. Der Agent weiß, ob er fortfahren, ingestieren, rebinden oder zurĂŒckfallen soll. - **`agent_runtime_contract`** begleitet jede Retrieve-Antwort und trĂ€gt einen `trust_mode`. Ein leeres Ergebnis wird disambiguiert — an falsches Repo gebunden vs. tatsĂ€chlich nichts vorhanden — niemals still als „keine Ergebnisse" gemeldet. - **`trust_band: insufficient_evidence` bedeutet KEINE Evidenz — nicht mittleres Risiko.** Die ehrliche Cold-Start-Antwort, verschieden von niedrig/mittel/hoch. - **`non_claims`-Arrays** werden bei jedem Mission-Tool geliefert. m1nd teilt dem Agenten mit, was es *nicht* bewiesen hat. - **`mission_verify` kann Nein sagen — und tut es, in getestetem Code.** Es lehnt Graph-only-Beweise ab: eine Behauptung kann sich nicht schließen ohne einen Dateilesevorgang, einen Testlauf oder eine Runtime-Probe. Der Test heißt buchstĂ€blich `graph_only_evidence_is_not_enough`. - **`recovery_playbook`** gibt eine deterministische, geordnete Schritt-Liste zurĂŒck, um das Binding zu reparieren. Gezeigt, nicht erzĂ€hlt. Rufe `trust_selftest` auf einer ungebundenen Runtime auf und das Verdikt *ist* die Reparaturanweisung — eine echte Aufnahme, gekĂŒrzt: ```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
 */ ] } } ``` Der Beweis fĂŒr das Engagement ist das, was dafĂŒr gestrichen wurde: `savings` und `resonate` wurden in beta.7 aus der beworbenen OberflĂ€che entfernt, weil ein Tool, das immer behauptet zu gewinnen, nicht glaubwĂŒrdig ist. Kein Konkurrent — weder mem0, Zep, Letta, Sourcegraph, noch irgendein Code-Graph-MCP — liefert einen Layer, der dem Agenten sagt, was er *nicht* vertrauen soll und wie er sich erholt.

Feldberichte speisen eine Triage-Schleife, die Fehlverhalten vor dem Fix in einen Test verwandelt

**Die Field-Triage-Schleife schließt sich auf sich selbst.** Die Session-Telemetrie, die Agenten in `~/.m1nd/field-reports.jsonl` hinterlassen (rein lokal — m1nd telefoniert niemals nach Hause), ist kein passives Log: Reports werden triagiert, und ein *bestĂ€tigter* Field-Bug wird zu einem roten Battery-Case **vor** dem Fix, sodass die Regression bewiesen und nicht nur beschrieben ist. Diese Schleife ist bereits von Ende zu Ende durch einen vollstĂ€ndigen Field-Triage-Sweep gelaufen: vier im Feld gemeldete Bugs wurden zu fehlschlagenden Battery-Cases und dann gemergten Fixes, alle in **1.2.1** ausgeliefert — `north` komponiert jetzt L1GHT-Recall in sein GedĂ€chtnis-Paket, der `temp`-Graph-Sentinel löst zu einem echten Tempdir auf, anstatt das Arbeitsverzeichnis zu vermĂŒllen, `memorize` akzeptiert eine numerische `confidence`, und das Closure-AmbiguitĂ€ts-Tag feuert jetzt nur bei echten GleichstĂ€nden (der Wolfsschrei: ambiguous-blocked fiel von 9/11 → 0/11). ## Schnellstart *Einmal installieren, den Host deines Agenten verdrahten und aus dem Weg gehen — ab hier fĂ€hrt dein Agent.* ```bash git clone https://github.com/maxkle1nz/m1nd.git && cd m1nd npm install -g . m1nd doctor ``` Dann verbinde deinen Host — dieselben zwei Befehle, einer pro Host (`codex`, `claude`, `gemini`, `antigravity`, `generic`): | Host | Agent-Pack installieren | MCP-Config verbinden | |---|---|---| | 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` | Oder aus npm: `npm install -g @maxkle1nz/m1nd`. `install-skills` liefert das Agent-Pack — die Betriebsschleife selbst als fĂŒnf benannte Protokolle, keine dekorative Dokumentation. **Die Operator-OberflĂ€che ist diese CLI; die OberflĂ€che des Agenten ist MCP.** Ein Mensch fĂŒhrt gelegentlich `m1nd doctor`, `install-skills`, `mcp-config` aus — der Agent fĂŒhrt alles andere aus. Ein host-neutraler Notausgang existiert fĂŒr den Fall, dass es keine lebende MCP-Session gibt, in der `north` aufgerufen werden kann (veraltet, an das falsche Repo gebunden, oder noch nicht geladen): er startet eine isolierte Runtime, bindet sie an das Repository, und gibt einen einzigen maschinenlesbaren Envelope zurĂŒck, der scoped, Trust herstellt, bei Bedarf ingested, Anker zurĂŒckgibt und zum direkten Beweis ĂŒbergibt: ```bash m1nd agent first-minute --repo /your/project --query "understand this system" --json ``` Pinne das Binary bei Bedarf: `--version` gibt `1.2.x ()` aus, und `M1ND_EXPECTED_VERSION` / `M1ND_EXPECTED_SHA` (+ `M1ND_STRICT_VERSION`) lassen einen Host ein gedriftetes Binary erkennen und ablehnen. VollstĂ€ndige Installationskarte, Host-Packs, nativer Runtime-Build und Update-Flags: [docs/AGENT-PACKS.md](../docs/AGENT-PACKS.md) · Client-fĂŒr-Client-Einrichtung: [Integrationsmatrix](../docs/IDE-INTEGRATIONS.md). ## Nachweise

Jede Behauptung ruht auf ihrem eigenen bewiesenen Bogen — die FĂ€higkeiten-Batterie, reproduzierbar

Jede Zeile ist genau auf das kalibriert, was gemessen wurde. m1nd fĂŒhrt keine Einsparungs- oder ROI-Zahlen an — das ist der Punkt. | Behauptung | Ergebnis | Quelle / EinschrĂ€nkung | |---|---|---| | `activate` / `impact`-Latenz | ~1”s `activate`, sub-”s `impact` auf einem synthetischen 1K-Knoten-Graph | Criterion-Benchmarks — **reproduziere es selbst: `cargo bench -p m1nd-core`** (gemessen `activate_1k_nodes` ≈1.4”s, `impact_depth3` ≈0.5”s auf einem Apple-Silicon-Mac); [Methodik](https://m1nd.world/wiki/benchmarks.html); GrĂ¶ĂŸenordnung, hardware-abhĂ€ngig. | | Sprachmatrix | Calls + Cross-File-Imports fĂŒr 10 Sprachen (+ Ruby Cross-File) | Von Ende zu Ende in einem einzelnen polyglottes Ingest verifiziert; sprachspezifische Tests in `m1nd-ingest`. Siehe [Sprachabdeckung](#sprachabdeckung). | | Post-Write-Validierungsstichprobe | 12/12 korrekt klassifiziert | Interner Runtime-Check. | | Geseedeter Bug-Hunt | 16/20 in der ersten akzeptierten `humanize`-Seed-Defekt-Runde (m1nd-trained); `m1nd-basic` und direkt je 8/15 | Interne Produktnachweise, `public_claim_worthy=false` — kein universeller Benchmark. | | GedĂ€chtnis-Selbstverifizierung | live von Ende zu Ende bewiesen | `memorize` → `grounded_in` → Freshness-Flag auf bearbeiteter Datei → ĂŒberlebt replace → Boot-Auto-Load. | | FĂ€higkeiten-Battery vs. grep | 37/37 bestanden; head-to-head 16 m1nd-Siege / 12 Unentschieden / **0 grep-Siege** | In-Repo-Harness `scratchpad/m1nd_battery.py` (37 FĂ€lle, frischer Ingest + Ground-Truth-PASS/FAIL + `rg`-head-to-head). **Reproduziere: `python3 scratchpad/m1nd_battery.py ./target/release/m1nd-mcp . --suite m1nd`.** EinschrĂ€nkung: ein Repo (m1nd selbst), selbst verfasste FĂ€lle; ~5 der Unentschieden sind strukturelle Tools, gewertet gegen einen Literal-grep-Proxy, der nicht ausdrĂŒcken kann, was sie beantworten. | | Konforme Kalibrierung (`predict`) | act-Band ≈32% PrĂ€zision @ ≈13.5% Coverage (α=0.10) | Auf m1nds eigener Git-Historie (n≈9.2k held-out PrĂ€diktionen), +3pts gegenĂŒber rohen ZĂ€hlungen nach der GeglĂ€ttetes-Jaccard-Änderung. EinschrĂ€nkung: ein Repo, ein grobes zĂ€hlbasiertes Signal — das Gate abstiniert heute meist, **by design**: Abstinenz ist die ehrliche Ausgabe eines schwachen Signals, kein Fehler. |
Weitere Visuals — die vollstĂ€ndige Mechanismus-Serie

Ein geteilter Graph speist jeden angehĂ€ngten Agenten, wie ein gemeinsamer Brunnen Ersetztes Wissen wird ins Regal gestellt, nicht gelöscht — die neuere Behauptung hat Vorrang

Kalibrierung wird pro Repo verdient, bevor Verdikte act lesen können Eine Behauptung schließt erst, wenn Evidenz die LĂŒcke ĂŒberbrĂŒckt — ein Datei-Read, Test oder Probe

## EinschrĂ€nkungen `m1nd` ergĂ€nzt deinen LSP, Compiler, Test-Runner, Sicherheitsscanner und Observability-Stack, anstatt sie zu ersetzen. Es ist am nĂŒtzlichsten vor der Suche, ÜberprĂŒfung oder Änderung, und immer wenn Docs, Impact oder KontinuitĂ€t wichtig sind. Es ist **weniger nĂŒtzlich** wenn: - exakte Textsuche die Frage bereits beantwortet - Compiler- oder Runtime-Wahrheit das Einzige ist, was du brauchst - die Aufgabe eine triviale lokale Datei-Aktion ohne strukturelle Unsicherheit ist **Braucht FĂŒtterung:** `trust` und `tremor` starten mit neutralen Priors, bis `learn`-Feedback / `ghost_edges`-Daten sich ansammeln, und `predict` braucht `ghost_edges` geladen, bevor sein Co-Change-Signal bedeutsam ist. Diese verbessern sich mit der Nutzung; sie sind ehrlich darĂŒber, beim Start uninformiert zu sein. ## Was m1nd Nicht Ist `m1nd` ist nicht nur: - ein Code-Suchtool mit einem grĂ¶ĂŸeren Index - ein Repo-RAG-Layer, der nur Dateien oder Chunks abruft - eine Graphdatenbank, die Workflow-Entscheidungen dem Client ĂŒberlĂ€sst - ein Ersatz fĂŒr statische Analyse durch Compiler, Tests oder Sicherheits-Tools - ein MCP-Bundle unzusammenhĂ€ngender Hilfsmittel - eine Tool-OberflĂ€che, die der Mensch lernen muss — die Verben gehören dem Agenten; deins ist die kleine [Setup-CLI](#schnellstart) Es ist der Layer, der diese OberflĂ€chen in ein operatives System verwandelt, ĂŒber das ein Agent nachdenken und durch das er handeln kann. Nicht fĂŒr Einzeldatei-Lookups, einfaches grep oder Compiler-Wahrheit — verwende dort einfache Tools. ## Sprachabdeckung Graph-Reasoning (`impact`, `why`, `predict`, `trace`, `taint_trace`) ist nur so gut wie der Extraktor. m1nd löst sowohl **`calls`-Kanten** (Call-Graph) als auch **Cross-File-`imports`** (Datei→Datei-AbhĂ€ngigkeitsauflösung) pro Sprache auf. Die Matrix unten wurde live in einem einzelnen polyglottes Ingest bewiesen: | Sprache | `calls` | Cross-File-Imports | |---|:---:|:---:| | 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# | ✅ | — (Namespaces bilden nicht 1:1 auf Dateien ab) | | Swift | ✅ | — | Alle ✅-Zeilen sind von Ende zu Ende verifiziert (ein `caller`→`callee`-Import löst auf und der Caller emittiert Call-Kanten). Andere Sprachen fallen auf den generischen Extraktor zurĂŒck (nur `contains`). Nicht auflösbare Imports (externe Pakete, Gems, Stdlib, System-Header) werden ehrlich unaufgelöst gelassen, anstatt geraten zu werden. ## Architektur auf einen Blick Drei Kern-Rust-Crates plus eine auxiliĂ€re Bridge: - **`m1nd-mcp`** — der MCP-Server und die operative Runtime-OberflĂ€che. - **`m1nd-core`** — die Graph-Engine: ein `WavefrontEngine`, der Spreading Activation, Hebbianische PlastizitĂ€t, CSR-Adjacency und Git-abgeleitete Ghost Edges durchfĂŒhrt. - **`m1nd-ingest`** — Extraktions-, Routing- und Graph-Konstruktions-Adapter (Code, universelle Docs, L1GHT). - **`m1nd-openclaw`** — auxiliĂ€re OpenClaw-Bridge (Unix-Socket-Lane, unabhĂ€ngig versioniert). Aktuelle Crate-Versionen: `m1nd-core`, `m1nd-ingest`, `m1nd-mcp` alle `1.2.0` (`m1nd-openclaw` ist unabhĂ€ngig bei `0.1.0` versioniert).

m1nd Architektur-Übersicht

Die Live-MCP-OberflĂ€che entwickelt sich mit den Releases — verwende `tools/list` fĂŒr die genaue Tool-Anzahl und Namen in deinem Build. **Tiering:** 27 essentielle Tools werden standardmĂ€ĂŸig beworben, um die Tool-Auswahlkosten zu reduzieren; setze `M1ND_TOOL_TIER=full`, um die vollstĂ€ndige OberflĂ€che zu bewerben (100+ Tools: RETROBUILDER, Perspectives, Federation, Daemon). Versteckte Tools sind immer ĂŒber `tools/call` aufrufbar — Tiering kontrolliert nur, was `tools/list` anzeigt. Der Tool-fĂŒr-Tool-Katalog lebt nicht in diesem README: siehe das [kanonische Wiki](https://m1nd.world/wiki/), [docs/AGENT-PACKS.md](../docs/AGENT-PACKS.md) und [EXAMPLES.md](../EXAMPLES.md) fĂŒr die Tiefe, und [CHANGELOG.md](../CHANGELOG.md) fĂŒr die Release-Historie. ## Beitragen BeitrĂ€ge sind willkommen bei Extraktoren und Adaptern, MCP/Runtime-Tooling, Benchmarks, Docs und Graph-Algorithmen. Siehe [CONTRIBUTING.md](../CONTRIBUTING.md). ## Lizenz MIT. Siehe [LICENSE](../LICENSE).