Un prompt. Un bouton. Un système entièrement déployé. Voici à quoi ressemble l'ingénierie IA en 2026

@0xWast3
ANGLAISil y a 2 jours · 15 juil. 2026
129K
111
15
20
263

TL;DR

Un guide complet sur l'architecture d'applications génératives, détaillant comment les agents IA construisent, déploient et gèrent désormais des systèmes logiciels complets à l'aide de Claude et Obsidian.

Six mois plus tôt, cela nécessitait un développeur backend, un ingénieur DevOps et deux semaines. Aujourd'hui, une seule phrase et Claude suffisent. Voici l'architecture complète – et pourquoi la plupart des développeurs n'ont pas encore compris cela.

Le modèle mental que la plupart des gens ont de l'IA est erroné.

Ils pensent : Assistant IA → tu poses des questions → il répond.

La réalité en 2026 : Agent IA → tu décris un système → il construit, déploie et connecte ce système à ton environnement. Pas un prototype. Pas un extrait de code. Une application fonctionnelle.

Ce changement a un nom : l'architecture d'application générative. Et la pile qui la rend pratique – Claude + Obsidian + MCP – est disponible pour tout le monde dès maintenant.

1. Ce que signifie réellement l'architecture d'application générative

Développement logiciel traditionnel :

text
1Idée → Spécification → Conception → Développement frontend → Développement backend
2→ Configuration base de données → Intégration API → Tests → Déploiement
3Durée : semaines. Coût : milliers.

Architecture d'application générative :

text
1Idée → Prompt → Système fonctionnel
2Durée : minutes. Coût : tokens API.

L'agent IA ne se contente pas d'écrire du code. Il exécute une boucle agentique complète en coulisse :

Étape 1 – Décomposition

Ta demande abstraite ("construis un CRM pour un lavage auto") est décomposée en dizaines de sous-tâches atomiques : schéma de base de données, composants UI, logique de notification, flux d'authentification, points d'accès API.

Étape 2 – Cartographie de l'environnement via MCP

Grâce au Model Context Protocol, l'agent comprend instantanément à quels outils il a accès – ton système de fichiers, les paquets installés, les services en cours d'exécution, les API disponibles.

Étape 3 – Construction et test itératifs

L'agent écrit du code, l'exécute, détecte les erreurs de compilation, les corrige et reteste – de manière autonome – jusqu'à ce que le système fonctionne correctement.

Étape 4 – Déploiement contextuel

Le résultat n'est pas un fichier texte avec du code. C'est un environnement local en direct ou une application web déployable.

C'est la différence entre un outil qui assiste les développeurs et un système qui remplace entièrement la chaîne de construction.

2. Claude comme moteur – trois modes de déploiement

Mode 1 – Artifacts Claude

Le chemin le plus rapide du prompt à l'application fonctionnelle. Quand tu demandes à Claude de construire quelque chose, il ouvre une fenêtre Artifact interactive et assemble, compile et exécute une application web complète en temps réel – React, HTML, JavaScript – pendant que tu regardes.

Tu peux interagir avec l'application en cours d'exécution dans l'Artifact, l'itérer en langage naturel et exporter l'archive complète.

Prompt qui produit un suivi financier prêt pour la production :

text
1Construis une application de suivi financier personnel avec :
2
3FONCTIONNALITÉS :
4- Journal des transactions (ajouter/modifier/supprimer avec catégories)
5- Vue budget mensuel avec barres de progression
6- Suivi du portefeuille crypto récupérant les prix en direct depuis l'API CoinGecko
7- Calcul de la valeur nette mis à jour en temps réel
8- Bouton mode sombre
9
10EXIGENCES TECHNIQUES :
11- Application React mono-fichier
12- useState + useEffect uniquement (pas de gestion d'état externe)
13- Tailwind CSS pour le style
14- Récupération depuis des API publiques (pas d'authentification requise)
15- Responsive mobile
16
17DONNÉES :
18- Persistance dans localStorage entre les sessions
19- Export des transactions au format CSV
20
21Résultat : application complète autonome prête à être déployée.

Ce que Claude Artifacts renvoie – une application React complète :

javascript
1import { useState, useEffect } from "react";
2
3const CATEGORIES = ["Housing","Food","Transport","Entertainment","Health","Savings","Income","Crypto","Other"];
4const CRYPTO_IDS = { BTC: "bitcoin", ETH: "ethereum", SOL: "solana" };
5
6export default function FinanceTracker() {
7 const [transactions, setTransactions] = useState(() =>
8 JSON.parse(localStorage.getItem("transactions") || "[]")
9 );
10 const [cryptoPrices, setCryptoPrices] = useState({});
11 const [form, setForm] = useState({ description:"", amount:"", category:"Other", type:"expense", date:"" });
12 const [darkMode, setDarkMode] = useState(false);
13
14 useEffect(() => {
15 const ids = Object.values(CRYPTO_IDS).join(",");
16 fetch(`https://api.coingecko.com/api/v3/simple/price?ids=${ids}&vs_currencies=usd`)
17 .then(r => r.json())
18 .then(data => {
19 const prices = {};
20 Object.entries(CRYPTO_IDS).forEach(([sym, id]) => { prices[sym] = data[id]?.usd || 0; });
21 setCryptoPrices(prices);
22 });
23 }, []);
24
25 useEffect(() => {
26 localStorage.setItem("transactions", JSON.stringify(transactions));
27 }, [transactions]);
28
29 const addTransaction = () => {
30 if (!form.description || !form.amount) return;
31 setTransactions(prev => [...prev, { ...form, id: Date.now(), amount: parseFloat(form.amount),
32 date: form.date || new Date().toISOString().split("T")[0] }]);
33 setForm({ description:"", amount:"", category:"Other", type:"expense", date:"" });
34 };
35
36 const totalIncome = transactions.filter(t => t.type === "income").reduce((s,t) => s + t.amount, 0);
37 const totalExpenses = transactions.filter(t => t.type === "expense").reduce((s,t) => s + t.amount, 0);
38 const netWorth = totalIncome - totalExpenses;
39
40 const bg = darkMode ? "#0D0D0D" : "#F9F7F4";
41 const card = darkMode ? "#1A1A1A" : "#FFF";
42 const text = darkMode ? "#F0F0F0" : "#1A1A1A";
43 const border = darkMode ? "#2A2A2A" : "#E8E8E8";
44
45 return (
46 <div style={{ minHeight:"100vh", background:bg, color:text, fontFamily:"system-ui, sans-serif" }}>
47 <div style={{ maxWidth:800, margin:"0 auto", padding:"24px 16px" }}>
48
49 <div style={{ display:"flex", justifyContent:"space-between", marginBottom:24 }}>
50 <div>
51 <h1 style={{ fontSize:22, fontWeight:500, margin:0 }}>Finance Tracker</h1>
52 <p style={{ margin:"4px 0 0", fontSize:13, color: netWorth >= 0 ? "#22C55E" : "#EF4444" }}>
53 Net worth: ${netWorth.toFixed(2)}
54 </p>
55 </div>
56 <button onClick={() => setDarkMode(!darkMode)}
57 style={{ padding:"8px 14px", borderRadius:8, border:`1px solid ${border}`,
58 background:card, color:text, cursor:"pointer" }}>
59 {darkMode ? "Light" : "Dark"}
60 </button>
61 </div>
62
63 <div style={{ display:"grid", gridTemplateColumns:"1fr 1fr", gap:10, marginBottom:20 }}>
64 {[["Income","#22C55E",totalIncome],["Expenses","#EF4444",totalExpenses]].map(([label,color,val]) => (
65 <div key={label} style={{ background:card, border:`1px solid ${border}`, borderRadius:10, padding:14 }}>
66 <p style={{ margin:0, fontSize:12, color:"#999" }}>{label}</p>
67 <p style={{ margin:"4px 0 0", fontSize:20, fontWeight:600, color }}>${val.toFixed(2)}</p>
68 </div>
69 ))}
70 </div>
71
72 <div style={{ background:card, border:`1px solid ${border}`, borderRadius:10, padding:16, marginBottom:20 }}>
73 <div style={{ display:"grid", gridTemplateColumns:"2fr 1fr 1fr", gap:8, marginBottom:8 }}>
74 <input placeholder="Description" value={form.description}
75 onChange={e => setForm(p => ({ ...p, description: e.target.value }))}
76 style={{ padding:"9px 12px", borderRadius:8, border:`1px solid ${border}`, background:bg, color:text, fontSize:13 }} />
77 <input type="number" placeholder="Amount" value={form.amount}
78 onChange={e => setForm(p => ({ ...p, amount: e.target.value }))}
79 style={{ padding:"9px 12px", borderRadius:8, border:`1px solid ${border}`, background:bg, color:text, fontSize:13 }} />
80 <select value={form.type} onChange={e => setForm(p => ({ ...p, type: e.target.value }))}
81 style={{ padding:"9px 12px", borderRadius:8, border:`1px solid ${border}`, background:bg, color:text, fontSize:13 }}>
82 <option value="expense">Expense</option>
83 <option value="income">Income</option>
84 </select>
85 </div>
86 <div style={{ display:"grid", gridTemplateColumns:"2fr auto", gap:8 }}>
87 <select value={form.category} onChange={e => setForm(p => ({ ...p, category: e.target.value }))}
88 style={{ padding:"9px 12px", borderRadius:8, border:`1px solid ${border}`, background:bg, color:text, fontSize:13 }}>
89 {CATEGORIES.map(c => <option key={c}>{c}</option>)}
90 </select>
91 <button onClick={addTransaction}
92 style={{ padding:"9px 20px", borderRadius:8, background:"#E8692A",
93 color:"#fff", border:"none", cursor:"pointer", fontSize:13, fontWeight:500 }}>
94 Add
95 </button>
96 </div>
97 </div>
98
99 <div style={{ background:card, border:`1px solid ${border}`, borderRadius:10, overflow:"hidden" }}>
100 <p style={{ margin:0, padding:"12px 16px", borderBottom:`1px solid ${border}`, fontSize:13, fontWeight:500 }}>
101 Transactions ({transactions.length})
102 </p>
103 {transactions.slice().reverse().map(t => (
104 <div key={t.id} style={{ display:"flex", justifyContent:"space-between",
105 alignItems:"center", padding:"11px 16px", borderBottom:`1px solid ${border}` }}>
106 <div>
107 <p style={{ margin:0, fontSize:13, fontWeight:500 }}>{t.description}</p>
108 <p style={{ margin:"2px 0 0", fontSize:12, color:"#999" }}>{t.category} · {t.date}</p>
109 </div>
110 <span style={{ fontSize:14, fontWeight:600, color: t.type==="income" ? "#22C55E" : "#EF4444" }}>
111 {t.type==="income" ? "+" : "-"}${t.amount.toFixed(2)}
112 </span>
113 </div>
114 ))}
115 </div>
116 </div>
117 </div>
118 );
119}

Voici l'application complète. Un seul prompt. Elle s'exécute instantanément dans les Artifacts Claude.

Mode 2 – Claude + MCP (déploiement local)

MCP (Model Context Protocol) donne à Claude un accès direct à ton environnement local. Un seul prompt ne se contente pas de générer du code – il crée des dossiers sur ton disque dur, installe des paquets via le terminal, écrit des fichiers de configuration et démarre un serveur local.

La configuration MCP qui connecte Claude à ton système de fichiers :

json
1{
2 "mcpServers": {
3 "filesystem": {
4 "command": "npx",
5 "args": [
6 "-y",
7 "@modelcontextprotocol/server-filesystem",
8 "/Users/yourname/Projects"
9 ]
10 },
11 "terminal": {
12 "command": "npx",
13 "args": ["-y", "@modelcontextprotocol/server-terminal"]
14 },
15 "sqlite": {
16 "command": "npx",
17 "args": [
18 "-y",
19 "@modelcontextprotocol/server-sqlite",
20 "--db-path",
21 "/Users/yourname/Projects/app.db"
22 ]
23 }
24 }
25}

Avec cette configuration active, un seul prompt :

text
1Construis et déploie un système CRM local pour un lavage auto.
2
3Crée le projet dans ~/Projects/carwash-crm/
4Installe les dépendances automatiquement.
5Configure une base de données SQLite avec des tables pour :
6- clients (nom, téléphone, email, véhicule, notes)
7- visites (client_id, date, service, prix, statut)
8- personnel (nom, rôle, planning)
9
10Construis une interface web avec :
11- Recherche et profils clients
12- Historique des visites par client
13- Tableau de bord des revenus par mois
14- Système de rappels SMS (intégration Twilio, configuration uniquement)
15
16Démarre le serveur de développement une fois terminé.
17Rapporte l'URL localhost quand c'est prêt.

Claude exécute cela de bout en bout via MCP – création de la structure de répertoires, installation des paquets Node, écriture du schéma de base de données, construction de l'interface utilisateur et démarrage du serveur. Tu obtiens une URL localhost.

Mode 3 – Projets Claude avec les normes de l'entreprise

Télécharge une fois ton kit UI, tes tokens de design, ta documentation API et tes exigences de sécurité dans un Projet Claude. Chaque système que Claude génère ensuite se conforme automatiquement à ta pile interne.

text
1[Le contexte du Projet Claude contient :]
2- design-system.md (couleurs, typographie, espacement)
3- api-standards.md (schémas d'authentification, codes d'erreur)
4- security-policy.md (règles de validation des entrées, configuration CORS)
5- stack.md (React 18, TypeScript, Tailwind, Prisma, PostgreSQL)
6
7Prompt :
8"Construis un formulaire d'onboarding client avec vérification par e-mail
9et une entrée automatique dans la base de données Notion à la soumission."
10
11Résultat : code prêt pour la production qui correspond exactement à ta pile
12- aucun nettoyage requis.

3. Obsidian comme centre de commande IA

Obsidian en 2026 n'est pas une application de prise de notes. C'est un centre de commande IA personnel où ta base de connaissances accumulée devient la couche de contexte pour chaque système que tu construis.

Le changement d'architecture : ton coffre n'est plus un stockage. C'est du RAG (Retrieval Augmented Generation) – une base de connaissances vivante que les agents IA interrogent avant d'exécuter une tâche.

La pile de plugins qui rend cela possible :

Smart Connections – indexe l'intégralité de ton coffre et envoie les notes pertinentes comme contexte à chaque appel IA.

Obsidian Copilot – connecte directement ton coffre à l'API Claude. Configure une fois :

javascript
1
2 "provider": "anthropic",
3 "model": "claude-opus-4-8",
4 "apiKey": "YOUR_ANTHROPIC_KEY",
5 "systemPrompt": "Tu es un architecte système. Tu as accès à l'ensemble du coffre de connaissances de l'utilisateur comme contexte. Lors de la construction de systèmes, référence ses notes existantes, ses décisions passées et ses schémas établis. Résultat : code fonctionnel + structure de fichiers Obsidian.",
6 "contextWindow": {
7 "includeActiveFile": true,
8 "includeLinkedFiles": true,
9 "includeRecentFiles": 10,
10 "includeFolders": ["Projects", "Systems", "Decisions"]
11 }
12}

Canvas comme interface de conception système

Un seul prompt crée un Canvas Obsidian interactif où Claude dispose l'architecture complète du système sous forme de blocs connectés.

text
1Prompt dans Obsidian Canvas :
2"Conçois un pipeline de production de contenu pour mon compte Twitter.
3Je publie 3 articles par semaine et je gère 5 deals sponsorisés.
4Référence mes notes de calendrier de contenu existantes."
5
6Résultat : Canvas avec des blocs connectés pour :
7→ Idéation de contenu (extrait de tes notes d'intérêt)
8→ Flux Brouillon → Relecture → Publication
9→ Suivi des sponsors avec alertes d'échéance
10→ Tableau de bord d'analytiques
11→ Logique de publication croisée automatisée
12→ Chaque bloc renvoie au fichier Obsidian pertinent

Le résultat Canvas que Claude génère sous forme de fichier structuré :

json
1{
2 "nodes": [
3 {
4 "id": "ideation",
5 "type": "file",
6 "file": "Systems/ContentPipeline/Ideation.md",
7 "x": 0, "y": 0, "width": 300, "height": 200,
8 "color": "1"
9 },
10 {
11 "id": "draft",
12 "type": "file",
13 "file": "Systems/ContentPipeline/Draft.md",
14 "x": 400, "y": 0, "width": 300, "height": 200,
15 "color": "3"
16 },
17 {
18 "id": "sponsors",
19 "type": "file",
20 "file": "Systems/ContentPipeline/SponsorTracker.md",
21 "x": 0, "y": 300, "width": 300, "height": 200,
22 "color": "5"
23 },
24 {
25 "id": "analytics",
26 "type": "file",
27 "file": "Systems/ContentPipeline/Analytics.md",
28 "x": 400, "y": 300, "width": 300, "height": 200,
29 "color": "6"
30 }
31 ],
32 "edges": [
33 {
34 "id": "e1",
35 "fromNode": "ideation", "fromSide": "right",
36 "toNode": "draft", "toSide": "left",
37 "label": "approved concepts"
38 },
39 {
40 "id": "e2",
41 "fromNode": "sponsors", "fromSide": "right",
42 "toNode": "draft", "toSide": "bottom",
43 "label": "brief integration"
44 }
45 ]
46}

4. LLM locaux pour une confidentialité totale

Pour les données sensibles – systèmes clients, outils financiers, outils internes – tu passes par un modèle local au lieu d'une API cloud. Aucune donnée ne quitte ta machine.

bash
1# Installer Ollama
2curl -fsSL https://ollama.com/install.sh | sh
3
4# Tirer un modèle capable de coder
5ollama pull llama3.2:latest
6# ou pour une génération de code plus puissante :
7ollama pull qwen2.5-coder:32b
8
9# Démarrer le serveur local
10ollama serve
11# S'exécute sur localhost:11434

Configure Obsidian Copilot pour utiliser le point d'accès local :

javascript
1{
2 "provider": "ollama",
3 "model": "qwen2.5-coder:32b",
4 "baseUrl": "http://localhost:11434",
5 "systemPrompt": "Tu es un constructeur de système local avec accès au système de fichiers de l'utilisateur via MCP. Construis des systèmes complets fonctionnels. N'envoie jamais de données vers des API externes sans instruction explicite."
6}

Le pont modèle local + MCP :

python
1import requests
2import json
3from pathlib import Path
4from watchdog.observers import Observer
5from watchdog.events import FileSystemEventHandler
6
7OBSIDIAN_INBOX = Path.home() / "Obsidian" / "AI-Inbox"
8PROJECTS_DIR = Path.home() / "Projects"
9OLLAMA_URL = "http://localhost:11434/api/generate"
10
11class InboxWatcher(FileSystemEventHandler):
12 """
13 Surveiller le dossier Obsidian AI-Inbox.
14 Quand un nouveau fichier .md apparaît, le traiter comme un prompt de construction.
15 Le passer au LLM local -> exécuter via MCP -> rapporter le résultat.
16 """
17
18 def on_created(self, event):
19 if not event.src_path.endswith(".md"):
20 return
21
22 prompt_file = Path(event.src_path)
23 prompt = prompt_file.read_text()
24
25 print(f"[Inbox] Nouveau prompt : {prompt_file.name}")
26 self.execute_prompt(prompt, prompt_file.stem)
27
28 def execute_prompt(self, prompt: str, project_name: str):
29 response = requests.post(OLLAMA_URL, json={
30 "model": "qwen2.5-coder:32b",
31 "prompt": f"""Tu es un constructeur de système.
32 Construis ce système : {prompt}
33
34 Produis un plan JSON avec :
35 {{
36 "project_dir": "chemin relatif",
37 "files": [
38 {{"path": "chemin relatif", "content": "contenu du fichier"}}
39 ],
40 "commands": ["npm install", "etc"],
41 "summary": "ce qui a été construit"
42 }}""",
43 "stream": False
44 })
45
46 plan = json.loads(response.json()["response"])
47 project_dir = PROJECTS_DIR / plan["project_dir"]
48 project_dir.mkdir(parents=True, exist_ok=True)
49
50 for file_spec in plan["files"]:
51 file_path = project_dir / file_spec["path"]
52 file_path.parent.mkdir(parents=True, exist_ok=True)
53 file_path.write_text(file_spec["content"])
54 print(f"[Build] Créé : {file_path}")
55
56 result_file = OBSIDIAN_INBOX / f"{project_name}-result.md"
57 result_file.write_text(
58 f"# Construction terminée : {project_name}\n\n"
59 f"**Emplacement :** {project_dir}\n\n"
60 f"**Résumé :** {plan['summary']}\n\n"
61 f"**Fichiers créés :** {len(plan['files'])}\n"
62 )
63 print(f"[Terminé] Résultat écrit dans Obsidian")
64
65if __name__ == "__main__":
66 OBSIDIAN_INBOX.mkdir(exist_ok=True)
67 observer = Observer()
68 observer.schedule(InboxWatcher(), str(OBSIDIAN_INBOX), recursive=False)
69 observer.start()
70 print(f"[Surveillance] {OBSIDIAN_INBOX}")
71
72 try:
73 while True:
74 import time; time.sleep(1)
75 except KeyboardInterrupt:
76 observer.stop()
77 observer.join()

Dépose un fichier .md dans ton dossier Obsidian AI-Inbox avec un prompt de construction. Le pont le récupère, le route via le modèle local, construit le système dans ton dossier Projects, et écrit une note d'achèvement dans Obsidian.

5. Le flux de travail complet – de l'idée au système déployé

text
1ÉTAPE 1 – Saisie
2Dans Obsidian, sur ton panneau IA, écris :
3"Système financier personnel avec intégration crypto
4et suivi budgétaire mensuel."
5Appuie sur Générer.
6
7ÉTAPE 2 – Assemblage du contexte
8Le plugin Smart Connections scanne ton coffre.
9Trouve tes notes financières des 3 derniers mois.
10Les envoie comme contexte à l'API Claude.
11
12ÉTAPE 3 – Architecture
13Claude (Opus 4.8) conçoit le système :
14- Schéma de base de données
15- Composants UI
16- Intégrations API
17- Structure de fichiers
18
19ÉTAPE 4 – Construction
20Claude (Sonnet 5) implémente via MCP :
21- Crée ~/Projects/finance-tracker/
22- Installe les dépendances
23- Écrit tous les fichiers
24- Démarre le serveur de développement sur localhost:3000
25
26ÉTAPE 5 – Résultat
27Obsidian crée un dossier : Système financier/
28À l'intérieur : tableaux de bord liés, notes de configuration,
29et un lien direct vers l'application en cours d'exécution.

Temps total de l'étape 1 à l'application fonctionnelle : 4 à 12 minutes.

Le changement que cela représente

Ce n'est pas une façon plus rapide d'écrire du code.

C'est une relation différente entre l'idée et l'exécution.

La contrainte sur ce que tu peux construire était autrefois la compétence technique et le temps. Un non-développeur ne pouvait pas construire un CRM. Un développeur solo ne pouvait pas construire cinq systèmes simultanément. Une équipe ne pouvait pas livrer en heures plutôt qu'en semaines.

Ces trois contraintes ont disparu.

La nouvelle contrainte est la clarté de la pensée – la capacité à décrire précisément ce dont tu as besoin, à comprendre à quoi ressemble un bon résultat, et à itérer dessus. C'est une compétence de réflexion, pas une compétence technique.

L'architecture d'application générative ne rend pas les développeurs obsolètes. Elle rend la capacité à penser en systèmes – à raisonner sur ce dont tu as besoin avant de le construire – considérablement plus précieuse que la capacité à écrire le code qui l'implémente.

La pile est là. Les modèles sont capables. La seule variable qui reste est de savoir si tu construis avec ou si tu lis des articles sur ceux qui le font.

Cet article décrit les capacités disponibles dans Claude, Obsidian et MCP en juillet 2026. Les versions spécifiques des plugins et les configurations API peuvent changer. Vérifie toujours la documentation actuelle avant de mettre en œuvre.

Merci d'avoir lu.

Remixer dans YouMind

Turn one viral article into a full content workflow

Collect the source, decode the pattern, create assets, draft the story, and distribute from one AI workspace.

Explore YouMind
Pour les créateurs

Transformez votre Markdown en un article 𝕏 impeccable

Quand vous publiez vos propres textes longs, la mise en forme 𝕏 des images, tableaux et blocs de code est pénible. YouMind transforme un brouillon Markdown complet en un article 𝕏 impeccable, prêt à publier.

Essayer Markdown vers 𝕏

D'autres patterns à décoder

Articles viraux récents

Explorer plus d'articles viraux