IA locale · lit et réfléchit pendant que vous tapez

Vous tapez.
Il sait déjà.

Les applis de chat laissent le GPU inactif pendant que vous écrivez. MAFDET utilise ce temps : il lit votre message pendant que vous le tapez et commence à raisonner avant que vous n'appuyiez sur Entrée. Sur Qwen3-4B, l'attente après Entrée passe de 12.2 s à 3.2 s, mêmes réponses. Entièrement en local, sur llama.cpp.

$pipx install mafdet

Windows · macOS sur Apple Silicon · Linux non testé · NVIDIA CUDA, AMD Vulkan, Apple Metal ou CPU

Tout cela est nouveau pour vous ? Lisez la version en clair →

Découvrez MAFDETQwen3-4B · Q4_K_M · RTX 2060 · simulation
◇À l'affût · commencez à taper, MAFDET lit pendant que vous écrivez

Une simulation illustrative dans votre navigateur : aucun modèle ne tourne ici. Temps mis à l'échelle à partir du benchmark Qwen3-4B sur une RTX 2060 (24 problèmes tapés en temps réel, attente moyenne après Entrée 12.2 s → 3.2 s). Lecture à vitesse 3×.

Mesuré, pas promis

Mêmes réponses. Une fraction de l'attente.

Des problèmes à réponse numérique connue, tapés en temps réel à 5 à 8 caractères par seconde, Entrée juste après le dernier caractère. L'attente est celle du premier mot de la réponse. Chaque exécution est dans le dépôt.

Qwen3-4B

RTX 2060 · 6 GB · 24 problèmes

3.8×plus rapide

Sans raisonnement anticipé12.2 s
◆ Avec MAFDET3.2 s

24/24 dans les deux cas. Tient dans la VRAM, 83 tok/s. Plus rapide sur 24 problèmes sur 24. Raisonnement restant après Entrée : 944 → 244 tokens.

Qwen3-14B

RTX 2060 · 6 GB · 6 problèmes

2.3×plus rapide

Sans raisonnement anticipé108 s
◆ Avec MAFDET47 s

6/6 dans les deux cas. Plus gros que la VRAM : 38 % sur le GPU, environ 5 tok/s. Six problèmes donnent l'ordre de grandeur, pas un chiffre précis.

Qwen3-4B

MacBook Pro M2 Pro · 16 GB · 24 problèmes

3.2×plus rapide

Sans raisonnement anticipé18.1 s
◆ Avec MAFDET5.6 s

24/24 dans les deux cas. Metal, 54 tok/s. Plus rapide sur 24 problèmes sur 24. Raisonnement restant après Entrée : 966 → 248 tokens.

Qwen3-14B

MacBook Pro M2 Pro · 16 GB · 6 problèmes

2.7×plus rapide

Sans raisonnement anticipé32.7 s
◆ Avec MAFDET12.1 s

6/6 dans les deux cas. Le 14B tient en entier dans la mémoire unifiée et écrit à 18 tok/s.

Conditions

Qwen3 Q4_K_M en mode thinking sur llama.cpp. Attente moyenne après Entrée ; la RTX 2060 a 6 Go de VRAM, le Mac 16 Go de mémoire unifiée. Deux exécutions des mêmes 24 problèmes diffèrent jusqu'à une seconde : ce sont des ordres de grandeur, avec les données et les scripts pour les reproduire.

Lire la recherche →

Comment ça marche

Les autres modèles attendent Entrée. MAFDET commence avant.

Un LLM lit un prompt dans une phase rapide et parallèle (prefill), puis écrit un token à la fois (decode). Un modèle de raisonnement réfléchit pendant des centaines de tokens avant son premier mot. MAFDET déplace les deux avant Entrée.

  1. 01

    Vous commencez à taper.

    À chaque pause, MAFDET tokenise le texte, garde le cache KV synchronisé avec lui et retient les derniers tokens : un mot que vous êtes encore en train de taper peut changer la façon dont le texte est découpé.

  2. 02

    Il lit, et raisonne, à l'avance.

    Le prefill se fait pendant que vous écrivez. Avec Qwen3, le modèle raisonne aussi par courts segments sur le message tel qu'il est. Quand vous modifiez le texte, ce raisonnement reste dans le prompt sous forme de notes et le modèle continue à partir de là.

  3. 03

    Vous appuyez sur Entrée. Il reste peu à faire.

    Seuls les derniers tokens sont lus, le modèle termine son raisonnement là où il en était, et répond. Sur Qwen3-4B, environ deux tiers du raisonnement sont faits avant Entrée.

Le cache KV, synchronisé avec votre texte

Retours arrière, modifications au milieu, blocs collés : la vérification du préfixe commun réduit le cache à ce qui tient encore et ne préremplit que ce qui est nouveau. La lecture anticipée est exacte ; le résultat est celui d'un calcul à partir de zéro.

Lecture anticipée · exacte

Les heuristiques comme la retenue des derniers tokens et le debounce n'affectent que la quantité de travail gaspillé, jamais le résultat. Vérifié par mafdet judge contre un calcul à partir de zéro : 0 erreur.

Réflexion anticipée · mesurée

Le modèle raisonne sur des versions du message qui ne sont pas encore définitives, la réponse peut donc différer d'un démarrage à froid. C'est pourquoi on la mesure sur des réponses vérifiables : 24/24 des deux côtés, sur la RTX 2060 et sur le M2 Pro.

Ce que vous obtenez

Une appli de chat locale qui s'installe toute seule.

Pas de PyTorch, pas de téléchargements manuels. MAFDET examine votre machine, installe la bonne build de llama.cpp et choisit le modèle qui y tourne le mieux. Puis il se met au travail avant vous.

Lit pendant que vous tapez

Le prefill est fait avant Entrée, à chaque pause. Exact, quoi que vous fassiez au texte : retours arrière, modifications, documents collés.

Réfléchit pendant que vous tapez

Avec Qwen3, le modèle raisonne par courts segments sur le message tel qu'il est, et garde ses notes quand vous le changez. Deux tiers du raisonnement faits avant Entrée sur le 4B.

Le matériel que vous avez déjà

La machine de référence est une RTX 2060 avec 6 Go. Apple Silicon tourne via Metal, AMD Radeon via Vulkan, et tout tourne aussi sur un CPU.

Un catalogue qui connaît votre machine

Chaque modèle dit, avant le téléchargement, s'il tient dans la VRAM, à quelle vitesse il lit et écrit, et l'attente après Entrée avec et sans MAFDET. Estimations à 12 % près des vitesses mesurées.

N'importe quel GGUF

Cinq familles au catalogue : Qwen3, Llama 3, Gemma 3, Mistral et Phi-4. Au-delà, cherchez sur Hugging Face depuis l'appli ou ajoutez un fichier à vous.

Mesurer et vérifier

Benchmarks, simulation de frappe et contrôles d'exactitude sont livrés avec l'appli. Mesurez un modèle en une demi-minute ; jugez le moteur contre un calcul à partir de zéro.

L'appli

Un moteur, deux visages.

La fenêtre, en anglais, italien, français ou allemand. Ou l'appli terminal, clavier d'abord, sur un écran au phosphore ambré avec une séquence de démarrage. Mêmes vues, même moteur, mêmes chiffres sous chaque réponse.

La fenêtre MAFDET : le modèle a raisonné à l'avance pendant la frappe du message (455 tokens de raisonnement sur 571) et a répondu 1,6 s après Entrée
mafdet gui · la fenêtreChaque réponse se termine par ses chiffres : premier mot après Entrée, tokens lus pendant la frappe, raisonnement fait avant Entrée, vitesse.
L'appli terminal : le catalogue de modèles sous forme de tableau, avec ce que fait chaque modèle sur cette machine
mafdet tui · le terminalLe catalogue en tableau : où tourne chaque modèle sur cette machine, sa vitesse, et l'attente après Entrée avec et sans MAFDET.
Le catalogue de modèles dans la fenêtre : pour chaque modèle, où il tourne sur cette machine, sa vitesse et l'attente après Entrée
Models · estimé pour votre matérielLe meilleur pour vous, tient dans mon GPU, téléchargé. Mesurer remplace l'estimation par de vrais chiffres en une demi-minute.
Le lanceur : fenêtre ou terminal
mafdet · le lanceurFenêtre ou terminal, et il se souvient de votre choix.

La ligne de commande

Six verbes. Chacun mesurable.

Une seule CLI mafdet, dans l'esprit de la déesse dont elle porte le nom. L'appli et les scripts de recherche partagent le même moteur : ce que vous mesurez est ce que vous exécutez.

$ mafdet doctor

l'éveil

Vérifie le GPU, la mémoire, llama.cpp et les modèles. --install installe llama.cpp avec la bonne build.

$ mafdet watch

l'affût

La fenêtre de chat avec un modèle et des options depuis la ligne de commande ; lit à l'avance pendant que vous tapez.

$ mafdet strike

la frappe

Raisonnement anticipé pendant que vous tapez, conservé d'une modification à l'autre, et la réponse exacte écrite d'avance à une pause.

$ mafdet hunt

la chasse

Simule des gens qui tapent, proprement, salement ou en collant, et mesure l'attente après l'envoi.

$ mafdet race

la course

Benchmarks du prefill et du decode sur votre machine, sur llama.cpp ou sur PyTorch.

$ mafdet judge

le jugement

Vérifie les résultats contre un calcul à partir de zéro. Doit se terminer avec 0 erreur.

Commencer

En marche en une minute. Les modèles viennent après.

Python 3.10 ou plus récent est tout ce qu'il faut. Le premier démarrage examine votre machine, installe llama.cpp et télécharge le modèle qui y tourne le mieux ; le terminal affiche chaque téléchargement avec sa taille, sa vitesse et le temps restant.

En double-cliquant

  1. Téléchargez MAFDET : sur GitHub, Code → Download ZIP, puis décompressez-le (ou git clone).
  2. Double-cliquez sur start_mafdet.bat. La première fois, il crée un environnement Python dans .venv et installe MAFDET, environ une minute. Il faut Python 3.10 ou plus récent.
  3. Ensuite, un double-clic ouvre MAFDET en moins d'une seconde. Après une mise à jour, il installe lui-même les nouvelles bibliothèques.

Depuis PyPI

Avec le Python de python.org, pip fonctionne tel quel.

$ pip install mafdet
$ mafdet

Tourne sur NVIDIA via CUDA (référence : RTX 2060, 6 Go), sur AMD Radeon via Vulkan (en place, pas encore mesuré), ou sur le CPU.

Dans les deux cas : MAFDET demande s'il faut ouvrir la fenêtre ou l'appli terminal, examine votre machine, installe la bonne build de llama.cpp (CUDA, Vulkan, Metal ou CPU) et télécharge le modèle qui tourne le mieux. Pas de PyTorch, pas de téléchargements manuels.

Open source

Apache 2.0, avec les données pour le vérifier.

Un prototype de Simone Di Mauro et Simone Di Natale, le journal de recherche au grand jour, chaque benchmark dans le dépôt avec le script qui l'a produit. Les étoiles, les issues et les mesures sur d'autres matériels sont ce qui le fait avancer. Qui ils sont →

Confidentialité

Vos messages ne quittent jamais la machine.

L'inférence tourne en local, sur llama.cpp. Les seuls téléchargements ont lieu à l'installation : llama.cpp depuis ses releases GitHub, et les modèles que vous choisissez depuis Hugging Face. Ensuite, rien ne sort.

Feuille de route

La suite.

  • Le raisonnement anticipé au-delà de Qwen3 : DeepSeek-R1, gpt-oss, chacun avec son cadre mesuré
  • Un raisonnement anticipé pour les modèles plus gros que la VRAM qui batte le modèle réfléchissant seul
  • Linux testé de bout en bout
Le journal de recherche ↗

Aide recherchée

Vous avez une AMD Radeon ?

MAFDET tourne sur les cartes Radeon via la build Vulkan de llama.cpp, mais personne ne l'a encore mesuré sur l'une d'elles. Une demi-heure d'une RX 5000 ou plus récente comblerait ce manque : installez, lancez Mesurer sur Qwen3-4B, exécutez research/thinking_ahead.py, ouvrez une issue.

Envoyez vos chiffres ↗

Questions

Les réponses courtes.

La réponse est-elle la même que sans MAFDET ?

La lecture anticipée est exacte : le cache KV finit identique à celui d'un calcul à partir de zéro, quoi que vous ayez fait au texte, et mafdet judge le vérifie. Le raisonnement anticipé ne l'est pas, parce que le modèle raisonne sur des versions du message qui ne sont pas définitives ; c'est pourquoi on le mesure sur des problèmes à réponse connue. Sur Qwen3-4B : 24/24 avec et sans, sur les deux machines.

Quels modèles raisonnent à l'avance ?

Qwen3 en mode thinking, la seule famille dont le cadre de raisonnement a été mesuré. Tout autre modèle du catalogue, et tout GGUF que vous ajoutez, est lu pendant que vous tapez et, à une pause, a sa réponse écrite d'avance ; cette partie est exacte et vaut pour le texte exact pour lequel elle a été écrite.

Quelque chose quitte-t-il ma machine ?

Non. L'inférence tourne en local sur llama.cpp. Les seuls téléchargements ont lieu à l'installation : llama.cpp depuis ses releases GitHub et les modèles depuis Hugging Face. Les modèles à accès restreint (Llama, Gemma) demandent d'accepter leur licence sur huggingface.co.

De quel matériel ai-je besoin ?

La machine de référence est une RTX 2060 avec 6 Go de VRAM. Les Mac Apple Silicon font tourner les modèles sur le GPU via Metal (testé : M2 Pro, 16 Go). Les cartes AMD Radeon tournent via Vulkan, pas encore mesuré. Tout tourne aussi sur un CPU ; 16 Go de RAM y sont recommandés, ainsi que pour les modèles plus gros que la VRAM.

Combien d'espace disque ?

Environ 0,7 Go pour llama.cpp avec CUDA (100 Mo avec Vulkan, 60 Mo pour le CPU), plus les modèles : de 0,6 Go pour Qwen3-0.6B à 2,3 Go pour le 4B recommandé sur les cartes de 6-8 Go. Pas de PyTorch.

Pourquoi ce nom, MAFDET ?

D'après Mafdet, la déesse féline de l'Égypte ancienne dite « la coureuse », qui frappait serpents et scorpions avant qu'ils ne puissent attaquer. Les six commandes sont ses verbes : éveiller, guetter, frapper, chasser, courir, juger.

Est-ce prêt pour la production ?

C'est un prototype, et il le dit : Windows et macOS sont testés, Linux pas encore, Radeon n'est pas mesuré. Le moteur est vérifié et les résultats sont reproductibles ; les finitions sont encore en cours. Les issues sont les bienvenues.

Plus dans le README, qui est le manuel complet.

Prenez de l'avance.

Les autres modèles attendent que vous ayez fini d'écrire. MAFDET commence avant.

$pipx install mafdet