<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Blog SuperDevSpace</title>
    <link>https://superdevspace.com/fr/blog</link>
    <description>Carnet de bord de SuperDevSpace : des équipes d’agents IA sur votre propre abonnement CLI, les worktrees git, la configuration guidée et plus.</description>
    <language>fr</language>
    <lastBuildDate>Sun, 25 Oct 2026 10:00:00 GMT</lastBuildDate>
    <atom:link href="https://superdevspace.com/fr/blog/rss.xml" rel="self" type="application/rss+xml"/>
    <item>
      <title>Configuration guidée : un agent qui vous accompagne sur n’importe quel site</title>
      <link>https://superdevspace.com/fr/blog/configuration-guidee-agent</link>
      <guid isPermaLink="true">https://superdevspace.com/fr/blog/configuration-guidee-agent</guid>
      <pubDate>Sun, 25 Oct 2026 10:00:00 GMT</pubDate>
      <dc:creator>SuperDevSpace</dc:creator>
      <category>guided-setup</category>
      <category>browser</category>
      <category>agents</category>
      <description>L’agent parcourt le tableau de bord, vous passe la page pour mots de passe, codes et paiements, puis range la clé d’API. Voici comment ça marche.</description>
      <content:encoded><![CDATA[<p>Tout projet finit par avoir besoin de quelque chose sur un site web. La clé d’API d’un prestataire de paiement. Un secret de webhook. Un client token caché trois menus plus bas dans un tableau de bord. Un agent écrit l’intégration en quelques minutes, puis s’arrête et vous dit d’aller cliquer vous-même dans le tableau de bord — parce que cette partie se passe dans un navigateur, derrière votre connexion.</p>
<p>La configuration guidée, c’est la façon dont SuperDevSpace comble ce manque. L’agent ouvre le site dans le navigateur intégré de l’application, fait les clics qu’il a le droit de faire, et vous passe la page, avec un repère et une phrase, exactement quand l’étape suivante vous revient.</p>
<figure class="blog-figure"><img src="https://superdevspace.com/blog/shots/inspector-chain.webp" alt="Le panneau navigateur intégré de l’application affichant une page web, avec un élément sélectionné et sa chaîne de composants, fichier et ligne compris" loading="lazy" decoding="async"><figcaption>Le panneau navigateur de l’application — celui-là même que pilote la configuration guidée, montré ici avec Inspector (application réelle, affichée en turc).</figcaption></figure>
<h2 id="pourquoi-laisse-l-agent-tout-faire-est-la-mauvaise-réponse">Pourquoi « laisse l’agent tout faire » est la mauvaise réponse</h2>
<p>La version facile de cette fonctionnalité donnerait tout le navigateur à l’agent : lire chaque champ, taper dans chaque case, appuyer sur chaque bouton. Ce serait rapide, et ce serait une mauvaise idée. Un parcours de configuration regorge de choses qu’un agent ne devrait jamais toucher :</p>
<ul>
<li>votre mot de passe et le code à usage unique reçu sur votre téléphone ;</li>
<li>les numéros de carte, les coordonnées bancaires et les pièces d’identité ;</li>
<li>les conditions que vous acceptez et le paiement que vous validez.</li>
</ul>
<p>La conception part donc de l’autre bout. L’agent fait le travail de routine — naviguer, trouver la bonne page, saisir un nom de projet, cliquer sur <strong>Créer</strong> — et tout ce qui est personnel ou engageant reste entre vos mains.</p>
<div class="table-scroll"><table><thead><tr><th>Étape d’un parcours de configuration</th><th>L’agent</th><th>Vous</th></tr></thead><tbody><tr><td>Ouvrir le tableau de bord et trouver la bonne page</td><td><span class="blog-yes" role="img" aria-label="Oui">✓</span></td><td></td></tr>
<tr><td>Saisir un nom de projet, une URL, un choix dans une liste</td><td><span class="blog-yes" role="img" aria-label="Oui">✓</span></td><td></td></tr>
<tr><td>Taper votre mot de passe ou le code de votre téléphone</td><td><span class="blog-no" role="img" aria-label="Non">✗</span></td><td><span class="blog-yes" role="img" aria-label="Oui">✓</span></td></tr>
<tr><td>Saisir des données de carte, bancaires ou d’identité</td><td><span class="blog-no" role="img" aria-label="Non">✗</span></td><td><span class="blog-yes" role="img" aria-label="Oui">✓</span></td></tr>
<tr><td>Cocher les conditions, cliquer sur « Payer » ou « Commander »</td><td><span class="blog-no" role="img" aria-label="Non">✗</span></td><td><span class="blog-yes" role="img" aria-label="Oui">✓</span></td></tr>
<tr><td>Lire la nouvelle clé d’API et la ranger dans <code>.env</code></td><td><span class="blog-yes" role="img" aria-label="Oui">✓</span></td><td></td></tr></tbody></table></div>
<aside class="blog-callout blog-callout-note" role="note" aria-label="Remarque"><p class="blog-callout-title"><svg class="blog-icon" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><circle cx="12" cy="12" r="10"/><path d="M12 16v-4"/><path d="M12 8h.01"/></svg><span>C’est l’application qui fait respecter la limite</span></p><p>Ce ne sont pas des suggestions dans un prompt. L’application refuse toute tentative de l’agent de franchir la limite ; il ne peut pas la contourner en argumentant.</p>
</aside>
<h2 id="le-déroulé-d-une-configuration-guidée">Le déroulé d’une configuration guidée</h2>
<p>La boucle est la même sur tous les sites, y compris ceux pour lesquels personne n’a écrit d’instructions.</p>
<div class="blog-steps"><ol>
<li><strong>Ouvrir la page.</strong> L’agent ouvre un onglet de navigateur dans l’application. Vos connexions dans ce navigateur persistent d’un redémarrage à l’autre : vous êtes peut-être déjà connecté.</li>
<li><strong>Regarder avant d’agir.</strong> L’agent demande un plan de la page : une ligne par titre, bouton, lien, champ et frame. Les champs sensibles sont listés par type — mot de passe, carte, banque, code à usage unique, identité — avec « rempli » ou « vide », jamais avec leur valeur.</li>
<li><strong>Faire sa part.</strong> Il clique, remplit les champs ordinaires et lit du texte, en relisant la page après toute action qui la modifie.</li>
<li><strong>Vous passer votre part.</strong> Quand l’étape suivante vous revient, l’agent affiche une carte de guidage dans la page : un titre court, une consigne concrète et une mise en évidence du champ ou du bouton visé. Vous faites l’étape et cliquez sur <strong>Terminé — à toi</strong>. Si vous bloquez, vous cliquez sur <strong>J’ai besoin d’aide</strong> et décrivez ce que vous voyez ; l’agent répond dans la page.</li>
<li><strong>Attendre dans le même tour.</strong> Tant qu’un guidage est affiché, l’agent vous attend. Ses clics et ses saisies sont refusés jusqu’à ce que vous lui rendiez la page, et vous pouvez cliquer à tout moment sur <strong>Arrêter / reprendre la main</strong>.</li>
<li><strong>Rapporter le résultat.</strong> Quand la page affiche ce que vous étiez venu chercher — une clé d’API, un token, un secret de webhook —, l’agent le lit comme un secret et le range là où il doit aller, par exemple dans le <code>.env</code> du projet. Il indique <em>où</em> se trouve la clé, pas la clé.</li>
</ol>
</div>
<figure class="blog-diagram" data-diagram><img class="blog-diagram-img blog-diagram-light" src="https://superdevspace.com/blog/diagrams/e32eb841ca3ee12e0298-light.svg" width="1067" height="481" alt="Une configuration guidée, de la première page à la clé enregistrée" loading="lazy" decoding="async"><figcaption>Une configuration guidée, de la première page à la clé enregistrée</figcaption></figure>
<p>Une fois fini, vous pouvez vérifier le résultat sans afficher de secret à l’écran :</p>
<pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">$</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> grep</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> -o</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> '^PADDLE_[A-Z_]*='</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> .env</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">PADDLE_API_KEY</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">=</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">PADDLE_CLIENT_TOKEN</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">=</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">PADDLE_WEBHOOK_SECRET</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">=</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">PADDLE_ENVIRONMENT</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">=</span></span></code></pre>
<h2 id="les-règles-que-l-application-impose">Les règles que l’application impose</h2>
<p>Ce sont des contrôles dans l’application, et l’agent ne peut pas les désactiver :</p>
<ul>
<li><strong>Aucun secret n’entre, aucun secret ne sort.</strong> L’agent ne peut pas taper dans un champ de mot de passe, de carte, de CVC, d’IBAN, de code à usage unique ou d’identité. Quand il lit la page ou en prend un instantané, ces valeurs sont masquées, et elles sont retirées de tout texte qu’il lit.</li>
<li><strong>Les captures d’écran sont recouvertes.</strong> Les champs sensibles et chaque frame d’une autre origine — un widget de carte, un encart « Se connecter avec Google » — sont masqués avant qu’un agent ne voie une image.</li>
<li><strong>Pas de scripts sur les pages sensibles.</strong> Exécuter du JavaScript dans la page est refusé sur toute page qui affiche un tel champ.</li>
<li><strong>Le consentement et le paiement vous appartiennent.</strong> Cliquer sur une case de conditions ou sur un bouton « Payer » / « Commander » est refusé.</li>
<li><strong>Tout est visible.</strong> Ce que fait l’agent dans le panneau navigateur s’affiche dans le bandeau du panneau, au moment où cela se produit.</li>
<li><strong>Les secrets restent hors de la conversation.</strong> Une valeur lue comme secret est marquée sensible, et l’agent a pour consigne de ne jamais la répéter dans le chat, les rapports, les notes de tâche ou les notifications.</li>
</ul>
<aside class="blog-callout blog-callout-warning" role="note" aria-label="Attention"><p class="blog-callout-title"><svg class="blog-icon" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3"/><path d="M12 9v4"/><path d="M12 17h.01"/></svg><span>Attention</span></p><p>Valider un paiement ou accepter des conditions, c’est toujours votre clic. Si un parcours ne peut pas continuer sans cela, l’agent vous passe la page et attend.</p>
</aside>
<h2 id="n-importe-quel-site-pas-une-liste-d-intégrations">N’importe quel site, pas une liste d’intégrations</h2>
<p>La configuration guidée est une boucle, pas une bibliothèque de scripts. Elle fonctionne sur un site pour lequel personne n’a écrit d’indications, parce que l’agent lit la page réellement affichée. Pour quelques services, nous fournissons de courts fichiers d’indications — par exemple pour le tableau de bord sandbox de Paddle et pour RevenueCat — qui disent à l’agent où se trouvent habituellement les réglages développeur. Les tableaux de bord déplacent sans cesse leurs menus, alors les indications le disent clairement : quand la page et l’indication se contredisent, c’est la page qui a raison.</p>
<p>C’est plus important qu’il n’y paraît. Le code d’intégration qu’écrit un agent n’est que la moitié d’une fonctionnalité ; l’autre moitié, c’est le compte, la clé et le webhook sur le site de quelqu’un d’autre. Avec la configuration guidée, les deux moitiés se font dans la même session, avec le même agent, et vous ne consacrez votre temps qu’aux étapes que vous seul pouvez faire.</p>
<h2 id="sa-place-dans-l-ensemble">Sa place dans l’ensemble</h2>
<p>La configuration guidée fait partie du même espace de travail que tout le reste de SuperDevSpace : l’agent qui écrit votre intégration de paiement est celui qui vous accompagne pour créer ses clés, dans un panneau navigateur à côté de son terminal. Si vous découvrez SuperDevSpace, <a href="https://superdevspace.com/fr/blog/pourquoi-nous-avons-cree-superdevspace">pourquoi nous l’avons créé</a> présente le reste de l’équipe autour.</p>
<h2 id="l-essayer">L’essayer</h2>
<p>L’essai dure 14 jours en Premium, sans carte. <a href="https://superdevspace.com/download">Téléchargez SuperDevSpace</a>, demandez à un agent de configurer un prestataire de paiement ou d’analytique pour votre projet, et laissez-le vous passer la page quand c’est votre tour.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Faire tourner des agents de code en parallèle dans des git worktrees</title>
      <link>https://superdevspace.com/fr/blog/agents-de-code-paralleles-git-worktrees</link>
      <guid isPermaLink="true">https://superdevspace.com/fr/blog/agents-de-code-paralleles-git-worktrees</guid>
      <pubDate>Sun, 25 Oct 2026 09:00:00 GMT</pubDate>
      <dc:creator>SuperDevSpace</dc:creator>
      <category>git-worktrees</category>
      <category>agents</category>
      <category>workflow</category>
      <description>Comment SuperDevSpace isole plusieurs agents dans un même dépôt : un git worktree et une branche par worker, un commit par tour, des squash merges.</description>
      <content:encoded><![CDATA[<p>Lancez deux agents de code dans le même checkout et vous comprendrez vite pourquoi les équipes logicielles utilisent des branches. Un agent renomme un module pendant que l’autre lance la suite de tests sur la moitié de ce renommage. L’un indexe des fichiers que l’autre vient de supprimer. Aucun des deux n’a tort ; ils partagent simplement le même bureau.</p>
<p>SuperDevSpace fait travailler un manager et plusieurs workers sur un même dépôt en même temps. Cet article explique le mécanisme qui les sépare — les git worktrees — et les règles précises que l’application applique autour d’eux.</p>
<h2 id="qu-est-ce-qu-un-git-worktree">Qu’est-ce qu’un git worktree</h2>
<p>Un dépôt git a normalement un seul répertoire de travail. <code>git worktree</code> permet à un même dépôt d’en avoir plusieurs, chacun sur sa propre branche, tous partageant la même base d’objets. Pas de deuxième clone, pas de deuxième copie de l’historique : un nouveau worktree coûte les fichiers d’un checkout, rien de plus.</p>
<p>Vous pouvez l’essayer à la main dans n’importe quel dépôt. Les commandes sont les mêmes partout ; seul le shell change :</p>
<div class="blog-tabs" data-tabs><section class="blog-tab-panel" id="blog-tab-1-0" data-tab-label="macOS / Linux"><p class="blog-tab-label">macOS / Linux</p><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> worktree</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> add</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> -b</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> agent/frontend-demo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> ../myrepo-frontend</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> worktree</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> list</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF">cd</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> ../myrepo-frontend</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> &#x26;&#x26; </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> status</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF">cd</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> -</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> &#x26;&#x26; </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> worktree</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> remove</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> ../myrepo-frontend</span></span></code></pre>
</section><section class="blog-tab-panel" id="blog-tab-1-1" data-tab-label="Windows (PowerShell)"><p class="blog-tab-label">Windows (PowerShell)</p><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">git worktree add </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">-</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">b agent</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">/</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">frontend</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">-</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">demo ..\myrepo</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">-</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">frontend</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">git worktree list</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">cd ..\myrepo</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">-</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">frontend; git status</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">cd ..\myrepo; git worktree remove ..\myrepo</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">-</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">frontend</span></span></code></pre>
</section></div>
<p>Chaque worktree a son propre <code>HEAD</code>, son propre index et ses propres fichiers. Deux processus peuvent modifier, compiler et tester dans deux worktrees à la fois sans voir les changements à moitié faits de l’autre. C’est exactement la propriété dont une équipe d’agents a besoin.</p>
<aside class="blog-callout blog-callout-note" role="note" aria-label="Remarque"><p class="blog-callout-title"><svg class="blog-icon" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><circle cx="12" cy="12" r="10"/><path d="M12 16v-4"/><path d="M12 8h.01"/></svg><span>Remarque</span></p><p>Supprimer un worktree ne supprime pas sa branche. Les commits restent dans le dépôt jusqu’à ce que vous supprimiez la branche vous-même.</p>
</aside>
<h2 id="comment-superdevspace-les-utilise">Comment SuperDevSpace les utilise</h2>
<p>Les règles sont simples, et les mêmes pour toutes les organisations :</p>
<ul>
<li><strong>Le manager travaille dans votre checkout principal.</strong> Il planifie, relit et fusionne ; c’est le seul endroit où les branches se rejoignent.</li>
<li><strong>Chaque worker reçoit son propre worktree sur sa propre branche.</strong> Quand le manager recrute un worker, l’application exécute <code>git worktree add -b &lt;branche&gt; &lt;chemin&gt;</code> pour lui. La branche s’appelle <code>agent/&lt;nom-du-worker&gt;-&lt;horodatage&gt;</code>, sauf si vous lui avez donné un nom.</li>
<li><strong>Les worktrees vivent dans le dossier de données de l’application</strong>, sous <code>worktrees/&lt;organisation&gt;/&lt;worker&gt;</code>, jamais dans votre dépôt. Votre dossier de projet ne se remplit pas de répertoires d’agents.</li>
<li><strong>Chaque tour est commité.</strong> Quand un worker termine un tour, l’application commite tout ce qui a changé dans son worktree (<code>agent(&lt;nom&gt;): turn</code>). Rien de ce qu’a fait un worker n’existe seulement dans un répertoire de travail non commité.</li>
<li><strong>La fusion est un squash merge.</strong> Quand le manager accepte le rapport d’un worker, la branche est fusionnée dans votre ligne avec <code>git merge --squash</code>, en un seul commit. En cas de conflit, l’application abandonne la fusion et laisse le dépôt propre pour l’opération suivante, au lieu de vous laisser au milieu d’un merge en conflit.</li>
<li><strong>Une seule opération git à la fois par dépôt.</strong> Les répertoires de worktree isolent les fichiers ; une file par dépôt sérialise les commandes git elles-mêmes, si bien que deux workers qui terminent au même instant ne se disputent jamais les métadonnées de git.</li>
</ul>
<figure class="blog-diagram" data-diagram><img class="blog-diagram-img blog-diagram-light" src="https://superdevspace.com/blog/diagrams/5a1933738dc43c837c4f-light.svg" width="471" height="266" alt="Deux workers, deux branches, deux squash merges" loading="lazy" decoding="async"><figcaption>Deux workers, deux branches, deux squash merges</figcaption></figure>
<p>Sur le tableau, cela se traduit par plusieurs tâches en cours en même temps, chacune confiée à un worker différent, chacune avec sa propre branche en dessous.</p>
<figure class="blog-figure"><img src="https://superdevspace.com/blog/shots/board-sprint.webp" alt="Un tableau de sprint avec des tâches réparties entre à faire, en cours, en attente d’approbation, en revue et terminé" loading="lazy" decoding="async"><figcaption>Des tâches qui avancent en parallèle sur le tableau d’une organisation — chaque worker sur sa propre branche (application réelle, affichée en turc).</figcaption></figure>
<h2 id="ce-qui-rend-la-chose-praticable">Ce qui rend la chose praticable</h2>
<p>Un worktree neuf ne contient que ce que git suit. Cela ne suffit généralement pas à faire tourner un projet : <code>node_modules</code>, un <code>.env</code> local, des fichiers générés. Deux détails règlent la question.</p>
<h3 id="un-script-d-installation-par-dépôt">Un script d’installation par dépôt</h3>
<p>Si votre dépôt contient <code>.super/scripts/setup-worktree.sh</code>, l’application l’exécute dans chaque nouveau worktree avant le démarrage du worker, avec <code>SUPERDEV_MAIN_REPO</code> pointant vers votre checkout principal. Sa sortie s’affiche en direct — une longue installation n’est pas une attente à l’aveugle — et vous pouvez l’annuler.</p>
<pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D">#!/usr/bin/env bash</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF">set</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> -euo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> pipefail</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D"># Copier les fichiers purement locaux depuis le checkout principal</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">cp</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> "</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">$SUPERDEV_MAIN_REPO</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF">/.env"</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> .env</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583"> 2></span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF">/dev/null</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583"> ||</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> true</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D"># Installer les dépendances (pnpm crée des liens depuis un store partagé, c’est rapide)</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">pnpm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> install</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> --frozen-lockfile</span></span></code></pre>
<aside class="blog-callout blog-callout-tip" role="note" aria-label="Astuce"><p class="blog-callout-title"><svg class="blog-icon" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5"/><path d="M9 18h6"/><path d="M10 22h4"/></svg><span>Gardez le script d’installation rapide</span></p><p>Le worker ne démarre qu’une fois le script terminé, et un script qui échoue arrête le lancement plutôt que de laisser un agent travailler dans un arbre à moitié prêt. Un gestionnaire de paquets avec un store partagé rend chaque nouveau worktree peu coûteux.</p>
</aside>
<h3 id="les-submodules">Les submodules</h3>
<p><code>git worktree add</code> laisse les submodules vides. Si le nouveau worktree contient un fichier <code>.gitmodules</code>, l’application y lance <code>git submodule update --init --recursive</code>, pour qu’aucun worker ne compile contre une dépendance discrètement absente.</p>
<h2 id="faire-le-ménage-sans-perdre-de-travail">Faire le ménage sans perdre de travail</h2>
<p>Les worktrees s’accumulent. L’application les récupère, mais avec prudence :</p>
<figure class="blog-diagram" data-diagram><img class="blog-diagram-img blog-diagram-light" src="https://superdevspace.com/blog/diagrams/a0e447e4d7b42e63fcb9-light.svg" width="467" height="747" alt="Quand le worktree d’un worker peut être supprimé" loading="lazy" decoding="async"><figcaption>Quand le worktree d’un worker peut être supprimé</figcaption></figure>
<p>Un worktree avec des modifications non commitées, ou dont la branche contient du travail pas encore dans votre ligne, reste où il est. Un dossier supprimé se recrée ; un travail perdu, non. La même prudence s’applique aux branches : l’application garde la trace des branches qu’elle a créées et ne touche qu’à celles-là.</p>
<h2 id="ce-que-cela-change-pour-vous">Ce que cela change pour vous</h2>
<p>Avec chaque worker sur sa propre branche, « lancer quatre agents à la fois » n’est plus un pari. Vous pouvez :</p>
<ul>
<li>donner au manager une directive qui se découpe en tâches indépendantes et laisser les workers tourner en parallèle ;</li>
<li>lire le diff de n’importe quel worker isolément, à côté de la conversation qui l’a produit ;</li>
<li>rejeter la modification d’un worker sans déranger les autres ;</li>
<li>continuer à utiliser votre checkout principal pendant que l’équipe travaille.</li>
</ul>
<p>C’est la même discipline qu’une équipe humaine, appliquée à des agents qui ne peuvent pas vous prévenir qu’ils sont sur le point de se marcher dessus. Si vous vous demandez pourquoi nous avons construit toute une application autour de cela, le <a href="https://superdevspace.com/fr/blog/pourquoi-nous-avons-cree-superdevspace">premier article</a> raconte l’histoire.</p>
<h2 id="l-essayer">L’essayer</h2>
<p>L’essai de 14 jours est en Premium, sans carte. <a href="https://superdevspace.com/download">Téléchargez SuperDevSpace</a>, associez une nouvelle organisation à un dépôt et regardez les worktrees apparaître à mesure que le manager recrute ses premiers workers.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Pourquoi nous avons créé SuperDevSpace : une équipe d’IA sur votre propre abonnement CLI</title>
      <link>https://superdevspace.com/fr/blog/pourquoi-nous-avons-cree-superdevspace</link>
      <guid isPermaLink="true">https://superdevspace.com/fr/blog/pourquoi-nous-avons-cree-superdevspace</guid>
      <pubDate>Sun, 25 Oct 2026 08:00:00 GMT</pubDate>
      <dc:creator>SuperDevSpace</dc:creator>
      <category>launch</category>
      <category>agents</category>
      <category>claude-code</category>
      <description>Un manager planifie, des workers codent, chacun dans son terminal et son git worktree, sur la CLI d’agent que vous payez déjà. Notre raison d’être.</description>
      <content:encoded><![CDATA[<p>Si vous payez déjà une CLI d’agent comme Claude Code, vous disposez de plus de capacité qu’une seule fenêtre de terminal ne vous permet d’en utiliser. Le modèle sait planifier, écrire du code, lancer des tests et expliquer ce qu’il fait. Ce qu’il ne sait pas faire seul : être cinq personnes à la fois, suivre qui fait quoi, et vous remettre un rapport honnête en fin de journée.</p>
<p>C’est pour combler ce manque que nous avons créé SuperDevSpace. Une application de bureau qui transforme la CLI que vous avez déjà en une petite équipe : un manager qui planifie le travail et des workers qui l’exécutent, chacun dans son propre terminal et son propre git worktree.</p>
<aside class="blog-callout blog-callout-note" role="note" aria-label="Remarque"><p class="blog-callout-title"><svg class="blog-icon" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><circle cx="12" cy="12" r="10"/><path d="M12 16v-4"/><path d="M12 8h.01"/></svg><span>Nous vendons l’orchestre, pas les musiciens</span></p><p>SuperDevSpace ne vend ni modèles ni tokens. Il pilote la CLI d’agent que vous payez déjà, dans le cadre de votre propre contrat avec son fournisseur.</p>
</aside>
<h2 id="le-problème-d-un-agent-dans-un-terminal">Le problème d’un agent dans un terminal</h2>
<p>Travailler avec un seul agent de code, c’est formidable pour une seule tâche. Tout se dérègle dès que vous avez trois choses à faire dans le même dépôt :</p>
<ul>
<li>Vous pouvez ouvrir un deuxième terminal, mais les deux agents modifient alors le même checkout. L’un lance la suite de tests pendant que l’autre est au milieu d’un refactoring.</li>
<li>Vous devenez chef de projet. C’est vous qui découpez le travail, qui retenez quel terminal avait quelle tâche, qui recopiez le contexte d’une session à l’autre.</li>
<li>Personne ne note ce qui s’est passé. Au retour de la pause déjeuner, le seul historique est le scrollback du terminal.</li>
</ul>
<p>Rien de tout cela n’est un problème de modèle. C’est un problème d’organisation — et l’organisation, c’est justement ce que le logiciel fait bien.</p>
<div class="table-scroll"><table><thead><tr><th></th><th>Un agent, un terminal</th><th>Une organisation SuperDevSpace</th></tr></thead><tbody><tr><td>Travail en parallèle sans collisions</td><td><span class="blog-no" role="img" aria-label="Non">✗</span></td><td><span class="blog-yes" role="img" aria-label="Oui">✓</span></td></tr>
<tr><td>Un worktree et une branche par worker</td><td><span class="blog-no" role="img" aria-label="Non">✗</span></td><td><span class="blog-yes" role="img" aria-label="Oui">✓</span></td></tr>
<tr><td>Travail découpé en tâches sur un tableau</td><td><span class="blog-no" role="img" aria-label="Non">✗</span></td><td><span class="blog-yes" role="img" aria-label="Oui">✓</span></td></tr>
<tr><td>Un rapport écrit par tâche</td><td><span class="blog-no" role="img" aria-label="Non">✗</span></td><td><span class="blog-yes" role="img" aria-label="Oui">✓</span></td></tr>
<tr><td>Vous relisez le diff avant qu’il n’arrive</td><td><span class="blog-yes" role="img" aria-label="Oui">✓</span></td><td><span class="blog-yes" role="img" aria-label="Oui">✓</span></td></tr>
<tr><td>Tourne sur la CLI que vous payez déjà</td><td><span class="blog-yes" role="img" aria-label="Oui">✓</span></td><td><span class="blog-yes" role="img" aria-label="Oui">✓</span></td></tr></tbody></table></div>
<h2 id="ce-que-fait-réellement-superdevspace">Ce que fait réellement SuperDevSpace</h2>
<p>Dans SuperDevSpace, chaque dépôt est une <strong>organisation</strong>. Chaque organisation a un <strong>manager</strong> : une vraie session de CLI d’agent, dans un vrai terminal que vous voyez et dans lequel vous pouvez taper. Vous donnez au manager une directive en langage courant — au clavier ou en la dictant avec la saisie vocale.</p>
<figure class="blog-diagram" data-diagram><img class="blog-diagram-img blog-diagram-light" src="https://superdevspace.com/blog/diagrams/d442134fa476e72c88c1-light.svg" width="499" height="640" alt="Comment une directive devient du travail fusionné" loading="lazy" decoding="async"><figcaption>Comment une directive devient du travail fusionné</figcaption></figure>
<p>Le manager fait alors ce que ferait un lead :</p>
<div class="blog-steps"><ol>
<li><strong>Planifier.</strong> Il ouvre un sprint et découpe la directive en tâches sur un tableau, chacune avec un court brief.</li>
<li><strong>Recruter.</strong> Il recrute des workers pour ces tâches. Chaque worker est une autre vraie session de CLI dans son propre onglet de terminal visible, avec un rôle — développeur frontend, ingénieur QA, etc.</li>
<li><strong>Isoler.</strong> Chaque worker reçoit son propre git worktree sur sa propre branche : le travail en parallèle ne se télescope jamais dans un même checkout. Un article séparé explique <a href="https://superdevspace.com/fr/blog/agents-de-code-paralleles-git-worktrees">comment ça marche</a>.</li>
<li><strong>Relire.</strong> Quand un worker a fini, il soumet un rapport. Le manager le relit, fusionne la branche et demande des corrections si quelque chose ne va pas.</li>
<li><strong>Rendre compte.</strong> Vous recevez un seul rapport consolidé au lieu de cinq scrollbacks.</li>
</ol>
</div>
<figure class="blog-figure"><img src="https://superdevspace.com/blog/shots/team-roles.webp" alt="La fenêtre « Ajouter vos agents » : une grille de rôles comme frontend, backend, ingénieur QA, relecteur de code, designer et DevOps, avec un champ de nom et des instructions facultatives" loading="lazy" decoding="async"><figcaption>Choisir le rôle d’un worker à la constitution de l’équipe (application réelle, affichée en turc).</figcaption></figure>
<p>Vous pouvez intervenir à tout moment. Chaque agent a une vue de chat et son vrai terminal — une seule session, deux façons de la regarder — et chaque modification apparaît sous forme de diff à côté de la conversation qui l’a produite : vous relisez avant que quoi que ce soit n’arrive sur votre ligne principale.</p>
<figure class="blog-figure"><img src="https://superdevspace.com/blog/shots/board-sprint.webp" alt="Le tableau de sprint d’une organisation avec les colonnes backlog, à faire, en cours, en attente d’approbation, en revue et terminé, et des cartes de tâches étiquetées par couloir" loading="lazy" decoding="async"><figcaption>Le tableau de sprint d’une organisation de démonstration pendant que son équipe travaille (application réelle, affichée en turc).</figcaption></figure>
<h2 id="votre-abonnement-votre-machine-votre-code">Votre abonnement, votre machine, votre code</h2>
<p>La décision de conception la plus importante est aussi la plus simple : <strong>SuperDevSpace pilote une CLI que vous payez déjà.</strong> Nous ne revendons jamais d’accès aux modèles ; rien de ce que vous exécutez n’apparaît sur une facture de notre part, hormis l’abonnement SuperDevSpace lui-même.</p>
<p>Cette décision a des conséquences qui nous plaisent :</p>
<ul>
<li><strong>Les agents tournent en processus locaux sur votre machine</strong>, sur vos dépôts locaux. Votre code source, vos prompts, la sortie de vos terminaux et vos chemins de fichiers ne sont jamais envoyés à nos serveurs. Notre service de compte stocke un compte, un état d’abonnement et une liste d’appareils.</li>
<li><strong>Vous choisissez la CLI par organisation.</strong> Claude Code, OpenAI Codex, Gemini CLI, Aider, Qwen Code, Cursor CLI et OpenCode sont tous sélectionnables. Claude Code est celle que l’application parle couramment aujourd’hui — hooks, reprise de session, outils MCP, réponses aux permissions. Les six autres démarrent et tournent ; l’application les marque comme expérimentales et vous dit quels compléments ne sont pas encore branchés au lieu d’échouer en silence.</li>
<li><strong>Rien n’est enfermé dans notre cloud</strong>, puisqu’aucun cloud ne fait le travail.</li>
</ul>
<p>Avant la première directive, mieux vaut vérifier que la CLI et le dépôt sont bien là où vous les attendez :</p>
<pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">$</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> claude</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> --version</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">$</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> cd</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> ~/code/votre-projet</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">$</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> status</span></span></code></pre>
<h2 id="ce-qui-entoure-l-équipe">Ce qui entoure l’équipe</h2>
<p>Une équipe a besoin de plus que des terminaux. Quelques éléments inclus dans chaque offre :</p>
<ul>
<li><strong>Un tableau qui dit la vérité.</strong> Sprints, tâches, briefs et rapports. Un rapport dit ce qui a échoué, pas seulement ce qui a réussi.</li>
<li><strong>Inspector.</strong> Cliquez sur un élément de votre page web en cours d’exécution et envoyez-le à un agent avec le composant, le fichier et la ligne. Fonctionne avec Vite, Next.js et les sites statiques.</li>
<li><strong>Des validations depuis votre téléphone.</strong> Quand un agent a besoin d’une décision, il vous la demande. L’application mobile affiche le tableau, les agents et les validations en attente : vous répondez à une demande de permission loin de votre bureau.</li>
<li><strong>Un tableau blanc par organisation</strong> (Excalidraw), que les agents peuvent lire et sur lequel ils peuvent dessiner.</li>
</ul>
<figure class="blog-figure blog-figure-video"><video class="blog-video" muted loop playsinline controls preload="metadata" data-autoplay aria-label="Une courte boucle muette tirée de la visite du produit : créer une organisation et ses premières étapes"><source src="https://superdevspace.com/media/superdevspace-tanitim-loop.mp4" type="video/mp4"></video><figcaption>Quelques secondes de la vraie visite du produit (application affichée en turc).</figcaption></figure>
<p>Premium ajoute ce qui va plus loin : un mode design basé sur Penpot avec un agent Designer qui dessine dans le fichier, des planifications qui lancent des directives selon un calendrier, et un lien entre pairs qui permet à un manager sur votre Mac de confier du travail à un manager sur votre PC Windows. La <a href="https://superdevspace.com/pricing">page des tarifs</a> présente la comparaison complète.</p>
<h2 id="ce-que-nous-ne-promettons-pas">Ce que nous ne promettons pas</h2>
<aside class="blog-callout blog-callout-warning" role="note" aria-label="Attention"><p class="blog-callout-title"><svg class="blog-icon" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3"/><path d="M12 9v4"/><path d="M12 17h.01"/></svg><span>Précis plutôt qu’impressionnant</span></p><p>SuperDevSpace ne rend pas le modèle plus intelligent ; il lui donne une structure dans laquelle travailler. Il fonctionne sur macOS (Apple silicon) et Windows (64 bits) ; Linux n’a pas encore de date, et nous n’en inventerons pas.</p>
</aside>
<p>Une équipe d’agents a toujours besoin d’un patron : c’est vous qui décidez de ce qui se construit et qui approuvez ce qui arrive sur votre branche principale.</p>
<h2 id="l-essayer">L’essayer</h2>
<p>L’essai dure 14 jours en Premium, sans carte. Votre abonnement CLI reste le vôtre, votre code aussi. Pour voir l’équipe au travail sur votre propre dépôt, <a href="https://superdevspace.com/download">téléchargez SuperDevSpace</a> et donnez au manager sa première directive.</p>
]]></content:encoded>
    </item>
  </channel>
</rss>
