Sommaire
- 1. Ce que je lui ai fait construire : le cadre, et un aveu d'entrée de jeu
- 2. Les étapes pour démarrer, et les cinq endroits où j'ai trébuché
- 3. Environ 20 heures, heure par heure : ce qui s'est passé pendant que je dormais
- 4. Tout faire approuver ou tout déléguer
- 5. La qualité découverte après la mise en ligne : tous les tests passaient
- 6. Consommation et coût : où sont passés 191,8 millions de tokens
- 7. Pourquoi la mise en production a bloqué
- 8. Les travaux qui s'y prêtent, et ceux qui ne s'y prêtent pas
- FAQ
Projects, dans Claude Code, est une fonctionnalité où Claude découpe votre travail en threads au sein d'une seule conversation et les fait avancer en parallèle dans le cloud. J'ai présenté son fonctionnement et les conditions d'accès dans Ce qu'est Claude Code Projects. Cet article en est la suite : le récit d'un site web entier que je lui ai réellement fait construire.
Je l'ai testé du 26 au 28 septembre 2026, alors que Projects était encore en bêta publique (déploiement progressif pour Pro et Max ; voir la documentation officielle). Les écrans et le comportement peuvent encore changer. Ce qui suit, c'est ce qui s'est réellement passé à ce moment-là, avec des chiffres vérifiés sur les écrans, le rapport de consommation et l'historique du dépôt.
La conclusion d'abord : ce que j'ai appris en l'utilisant
Mesures du 26 au 28 septembre 2026 (rapport de consommation du projet et historique du dépôt)
Ce qu'il a construit
11 PR
10 threads, environ 23 000 lignes. Le travail a avancé pendant que je dormais.
Durée
Environ 20 heures
De la création à la dernière fusion, dont environ 7 heures de nuit.
Tokens consommés
Environ 190 millions
97,7 % de lectures de cache. À travail égal, à peu près autant que Claude Code en local.
Résultat
Un premier jet à 80 %
Avant la mise en ligne, j'ai trouvé des trous entre les périmètres des threads et des bugs que seules les vraies données révélaient.
En une phrase : le développement avance étonnamment bien sans surveillance, mais ce qui en sort est un premier jet, pas un produit fini, et la mise en ligne sur un serveur accessible uniquement en SSH bute sur un mur. Voici le bon comme le mauvais, dans l'ordre où les choses se sont passées.
1. Ce que je lui ai fait construire : le cadre, et un aveu d'entrée de jeu
Le sujet : un site de base de données pour savoir de combien de mémoire ont besoin les LLM locaux. Pour répondre à la question « ce modèle tourne-t-il sur ma machine ? », il collecte sur Hugging Face la taille des fichiers quantifiés, calcule la mémoire nécessaire pour chaque longueur de contexte et permet de chercher à rebours à partir de la mémoire de votre GPU ou de votre Mac. Le projet n'est pas trop petit et se découpe naturellement en parties parallélisables (collecte de données, calcul, pages, recherche inversée, SEO), ce qui en faisait un bon banc d'essai pour Projects.
| Élément | Conditions de ce test |
|---|---|
| Ce qu'il fallait construire | Une base de données des besoins en mémoire des LLM locaux (un site en japonais). |
| Technologies | Laravel 13, PHP 8.5, MySQL 5.7. Hébergement sur un hébergement mutualisé accessible uniquement en SSH. |
| Dépôt | Un dépôt privé sur github.com. Les threads d'un projet ne peuvent travailler que sur des dépôts github.com où la Claude GitHub App est installée, j'ai donc créé un nouveau compte GitHub réservé à Claude. |
| Offre | Max (20x). |
| Modèles | Les threads tournaient par défaut sur Sonnet avec un effort moyen ; le coordinateur ne choisissait Opus que pour le travail où une erreur coûterait cher, comme les revues et les calculs. Le coordinateur lui-même est resté sur son réglage par défaut, Opus en effort bas. |
⚠️ Un aveu d'entrée de jeu : dans la première moitié, je lui ai lié les mains
Mes premières instructions de projet contenaient des règles qui imposaient une approbation humaine à chaque étape : « propose chaque thread et attends mon accord avant de le lancer », « pas plus de trois threads à la fois », « chaque fusion dans main est approuvée par un humain ». C'était pensé comme une sécurité, mais cela désactivait justement ce qui fait l'intérêt de la fonctionnalité : laisser Claude répartir le travail et le faire avancer. En cours de route, j'ai réécrit les instructions pour lui déléguer davantage, et la section 4 compare l'avant et l'après. Une partie des frictions de la première moitié venait de mes instructions, pas de la fonctionnalité.
2. Les étapes pour démarrer, et les cinq endroits où j'ai trébuché
Les étapes en elles-mêmes sont courtes : dans l'onglet Code de l'application de bureau, choisissez Projects → New, saisissez un nom, un objectif et un dépôt, puis créez le projet. Autour de ces étapes, en revanche, j'ai trébuché à ces cinq endroits.
① Le périmètre de la GitHub App
L'écran d'autorisation a « All repositories » sélectionné par défaut. Sauf compte dédié, mieux vaut restreindre à « Only select repositories », car les threads peuvent ajouter d'eux-mêmes d'autres dépôts du même propriétaire.
② Il tourne une fois dès la création
Pour votre premier projet, Claude lance de lui-même un thread qui lit le dépôt dès la création. Il démarre avant que vous puissiez coller vos instructions, et c'est pourquoi ses suggestions de threads sont sorties en anglais chez moi.
③ Le modèle par défaut est Opus
Les threads utilisent Opus par défaut (effort moyen sur mon écran ; la documentation officielle indique high). C'est ce qui fait fondre vos limites le plus vite : juste après la création, allez dans les réglages → « General » (Général) et revoyez le modèle des threads.
④ La liste d'autorisation réseau
Hugging Face et les sites des fabricants de matériel ne figurent pas dans la liste d'autorisation par défaut. *.nvidia.com ne couvre que les sous-domaines : nvidia.com lui-même a nécessité une ligne à part.
⑤ Les changements n'atteignent pas les threads en cours
Les modifications de l'environnement ou des instructions du projet ne s'appliquent qu'aux nouveaux threads (la documentation officielle le précise aussi). Pour un thread bloqué, j'ai demandé au coordinateur de poursuivre le travail dans un nouveau thread.
À propos du point ② : juste après la création, la conversation affichait le message « Up to $100 of initial usage, including the automatic setup, won't count towards your usage limits ». Autrement dit, jusqu'à $100 de la première utilisation ne sont pas décomptés de vos limites habituelles, et l'écran de consommation l'affichait aussi comme un « crédit de configuration du projet » (environ 24 heures avant expiration). Au 28 septembre, cet avantage n'est pas mentionné sur la page Projects de la documentation officielle. La section 6 montre à quelle vitesse il s'est réellement épuisé.
Là où je me suis perdu dans les réglages d'environnement, c'est pour modifier un environnement existant. Passer par « Add cloud environment » (ajouter un environnement cloud) ouvre l'écran d'un nouvel environnement, et au début j'ai saisi les domaines autorisés dans le champ du script de configuration. Pour modifier un environnement existant, survolez-le dans la liste et cliquez sur l'icône d'engrenage qui apparaît (c'est exactement ce que dit la documentation officielle, mais difficile à deviner à partir de l'écran seul).
3. Environ 20 heures, heure par heure : ce qui s'est passé pendant que je dormais
Voici le déroulé, de la création (vers 22 h le 26 septembre) à la fusion de la dernière PR (vers 17 h 30 le lendemain, le 27). Toutes les heures sont en heure du Japon (JST).
Le 26, 22 h 10–23 h 50 Fondations et revue
Le thread des fondations (Sonnet) a créé le squelette Laravel, la conception de la base de données et un document de règles, puis a ouvert une PR. Quand j'ai fait relire le tout par un autre thread sur Opus, celui-ci a lancé MySQL 5.7 dans un conteneur, l'a essayé pour de vrai et a trouvé un bug : une colonne d'horodatage destinée à l'historique était écrasée par l'heure courante à chaque mise à jour d'une ligne (MySQL 5.7 attache la mise à jour automatique à la première colonne TIMESTAMP, ce qui n'apparaît jamais dans des tests sur des données d'exemple). Une proposition de CI a été rédigée au même moment ; je l'ai approuvée et j'ai fusionné la PR #1.
Le 27, 0 h–7 h 30 Trois threads en parallèle pendant la nuit
La collecte de données (Opus), le calcul de la mémoire nécessaire (Opus) et le SEO avec la mise en page commune (Sonnet) ont tourné en même temps, et au matin les trois étaient « en attente de revue ». Ce qui m'a frappé, c'est que les threads se coordonnaient entre eux par l'intermédiaire du coordinateur : le thread du calcul a demandé comment utiliser la mise en page, et le thread de la mise en page lui a répondu. Un problème repéré par le thread du calcul, à savoir que les fichiers de configuration des modèles exigeant l'acceptation de conditions d'utilisation ne peuvent pas être récupérés (401), a été transmis au thread de la collecte de données, qui l'a traité.
Le 27, 7 h 30–8 h 50 Régler les conflits
Comme plusieurs threads modifiaient en parallèle le même fichier (la définition des routes), la PR suivante est entrée en conflit après la fusion de la première. La première fois, le coordinateur a remarqué la fusion et a demandé de lui-même au thread de résoudre le conflit. La seconde fois, le coordinateur n'a rien fait ; un bouton « Resolve conflicts » (résoudre les conflits) est apparu sur la carte du thread, et un clic dessus a lancé la résolution. La réaction n'est pas la même à chaque fois.
Le 27, 8 h 50–11 h 30 Arrêt devant un site inaccessible
Le thread chargé d'ajouter les données des GPU et des Mac n'arrivait pas à joindre les sites officiels des fabricants depuis le cloud et, au lieu de combler les vides par des suppositions, il s'est arrêté et a affiché une carte proposant trois options (élargir la liste d'autorisation / faire fournir les valeurs par un humain / faire la recherche sur le PC de l'humain). Après que j'ai corrigé la liste d'autorisation et fait poursuivre le travail dans un nouveau thread, il a ajouté 25 modèles à partir des pages officielles. Au passage, le thread a lui-même remarqué que l'outil de résumé de pages avait inventé un nom de produit qui n'existe pas, et il est ensuite passé à la vérification directe du HTML brut des pages.
Le 27, 17 h–17 h 30 Une fois délégué, il a avancé tout seul
Quand j'ai réécrit les instructions du projet pour lui confier la main, le coordinateur a annoncé, sans que je lui aie rien dit : « J'ai lu les nouvelles instructions sur la façon de travailler. À partir de maintenant, c'est moi qui décide des prochaines tâches et les fais avancer », puis il a décidé seul de tout, de la fusion des PR restantes à l'ajout de nouvelles données de matériel (deux threads).
Un point qui ne s'est pas bien passé mérite aussi d'être signalé. En construisant les fondations de la collecte de données, un thread a appelé l'API de Hugging Face 520 fois d'affilée pour comprendre comment fonctionnait la limitation de débit du service externe. Le thread de revue a jugé cela « pas raisonnable » et a rédigé des règles d'utilisation des API externes ; le thread de collecte de données suivant n'a fait que 8 requêtes sur l'ensemble de son travail. Livré à lui-même, il ne pense pas spontanément à la charge qu'il impose aux services extérieurs : cela vaut la peine de l'écrire dans les instructions.
4. Tout faire approuver ou tout déléguer
Comme je l'ai dit dans la section 1, la première moitié a tourné avec des instructions qui imposaient une approbation humaine à chaque étape, et le 27 à 17 h je les ai réécrites pour déléguer. Le comportement a nettement changé.
| Situation | Première moitié : approbation à chaque étape | Seconde moitié : délégation |
|---|---|---|
| Lancement des threads | La première fois, il a ignoré « propose et attends » et a démarré tout de suite. Après un message de rappel, « ne commence pas tant que je n'ai pas donné mon accord », il s'y est tenu. | Le coordinateur décidait et lançait lui-même. |
| Fusion | Un humain appuyait sur le bouton dans GitHub à chaque fois (7 fois). | Les threads fusionnaient eux-mêmes une fois la CI passée (4 fois). |
| Tâche suivante | Un humain décidait et la demandait. | Le coordinateur choisissait dans la liste TODO et lançait un nouveau thread. |
| Intervention humaine | Fusions, boutons de conflit, réglages d'environnement et relais de messages : beaucoup d'allers-retours entre les écrans. | Presque aucune (seulement quand il fallait régler l'environnement). |
Il y a eu deux points de vigilance au moment de déléguer. Le premier : les instructions réécrites n'atteignent pas les threads déjà en cours. Le coordinateur l'a lui-même expliqué : « Ce thread a démarré avant la réécriture des instructions, il ne voit donc pas les nouvelles. » Le second : les threads n'ont pas pu effacer les anciennes règles restées dans la mémoire du projet. Une tâche qui tentait de réécrire une vieille note disant « seul un humain fusionne » a été bloquée par une vérification de sécurité. C'est à un humain de supprimer les anciennes notes depuis les réglages → « Memory » (Mémoire).
Voici l'ossature des instructions sur lesquelles j'ai fini par m'arrêter.
Ce projet construit et exploite [votre site].
La façon d'avancer vous revient : le coordinateur peut décider quels threads lancer, combien, avec quels modèles et dans quel ordre.
Vous pouvez fusionner les PR une fois la CI passée. Résolvez vous-mêmes les conflits.
Ne demandez à un humain que pour :
- Tout ce qui coûte de l'argent (API payantes, services payants)
- Tout ce qui nécessite des secrets (clés d'API, mots de passe)
- Le déploiement en production ou la modification des données de production
- Les décisions où les options divergent et où l'une comme l'autre se défendraient
- Tout ce dont vous avez besoin mais que vous ne pouvez pas atteindre (ne comblez pas les vides avec des suppositions ou des données factices)
Respectez les limites de débit des API externes et ne les sollicitez pas massivement pour vos investigations.
Cela dit, au vu de ce que j'ai appris ensuite, je recommande d'ajouter « les modifications de la configuration de CI et des scripts de déploiement doivent être approuvées par un humain ». Les threads à qui l'on délègue peuvent aussi modifier la configuration de CI, et combiné à un mécanisme de déploiement, cela ouvre un chemin par lequel des changements peuvent atteindre la production sans que personne ne vérifie (section 7).
5. La qualité découverte après la mise en ligne : tous les tests passaient
J'ai repris ce que le projet avait construit dans mon Claude Code local habituel et je l'ai mis en production. Ma première impression juste après la mise en ligne : « bof, c'est plutôt quelconque ». Il n'y avait pas une seule page de modèle. En remontant la cause, un trou propre au développement en parallèle est apparu.
Un trou entre les périmètres : personne n'avait décidé « peut-on publier ceci ? »
Thread de collecte de données
A écrit dans sa PR que « décider si quelque chose peut être publié relève du thread des pages » et n'a jamais construit cette vérification
Thread des pages
N'a construit que le côté « ne rien afficher de non publiable »
Résultat
Rien, nulle part, ne posait l'indicateur « publiable » : quelle que soit la quantité de données chargées, zéro modèle affiché
Dix threads, bien plus d'une centaine de tests, des revues sur Opus et la CI : rien de tout cela n'a repéré cet oubli, parce que chaque thread avait raison à l'intérieur de son propre périmètre. Sans un rôle qui regarde l'ensemble de bout en bout, des trous s'ouvrent aux frontières entre les tâches.
Le chargement des vraies données a fait apparaître deux autres problèmes.
- Les tableaux de quantification contenaient des fichiers qui n'étaient pas le modèle principal. Des modèles auxiliaires de décodage spéculatif (MTP, EAGLE, etc.) et des fichiers LoRA étaient comptés comme des quantifications du modèle principal, si bien que le tableau d'un modèle 12B commençait par une ligne « Q8_0 0,47 Go » (le vrai Q8_0 pèse 12,7 Go). Après correction, 195 fichiers répartis dans 56 dépôts ont été reclassés comme auxiliaires.
- Pour les modèles les plus récents et les plus demandés, la mémoire nécessaire affichait « calcul impossible ». La formule écrite au départ ne prenait pas en charge les architectures de nouvelle génération (par exemple celles où les couches ne conservent pas la mémoire de la même façon). Le principal argument du site manquait précisément sur les pages les plus consultées.
Ces deux problèmes ne sont apparus qu'une fois les vraies données chargées en production, parce que les tests reposaient entièrement sur des données d'exemple. Voici ce que j'ai corrigé avec Claude Code en local, et le temps que cela a pris (le 28 septembre de 17 h 21 à 22 h 54, 13 commits).
| Ce qui a été corrigé | Comment le problème a été trouvé |
|---|---|
| Pas de page de politique de confidentialité (indispensable avant de diffuser de la publicité) | Revue par le rôle chargé de l'administration du serveur |
| La vérification de publication (le rattachement des modèles à leur famille) manquait entièrement | Zéro modèle en production |
| sitemap.xml renvoyait une erreur (500) en production ; les e-mails de notification d'erreur ne partaient pas | Vérification en production |
| Le formulaire de contact plantait (500) sur une saisie dans un autre encodage de caractères | Vérification en production |
| Fichiers de modèles auxiliaires mélangés ; mémoire nécessaire pour les nouvelles architectures | Examen à l'œil des pages avec les vraies données |
Il y avait aussi de vrais points positifs. Les pages étaient rapides (environ 0,1 seconde pour les principales), les tailles de fichiers correspondaient aux valeurs réelles de Hugging Face, et la mémoire nécessaire des modèles pris en charge concordait avec la formule. Le travail de SEO, avec les titres, les données structurées, le sitemap et llms.txt, était là dès le départ. Mon bilan : le squelette et les détails étaient bien faits ; ce qui manquait, c'étaient les « jointures » entre les parties et les vraies données.
6. Consommation et coût : où sont passés 191,8 millions de tokens
L'écran « Usage » des réglages du projet affiche les tokens par thread et par modèle. Un bouton en haut à droite permet de tout copier sous forme de texte. Le rapport du 27 septembre à 11 h 47 se présentait ainsi.
| Élément | Valeur |
|---|---|
| Threads | 10 |
| Total des tokens | 191,8 millions (entrée 317 000 / sortie 574 000 / lectures de cache 187,4 millions / écritures de cache 3,5 millions) |
| Taux de succès du cache | 98 % |
| Modifications de code | +23 531 lignes / −302 lignes (les 8 threads qui ont ouvert des PR) |
| Coordinateur | 3,3 millions (2 % du total) |
| Thread le plus gourmand | SEO et mise en page commune (Sonnet) : 50,5 millions (26 %) |
190 millions, cela paraît énorme, mais 97,7 % étaient des lectures de cache. Un thread relit toute la conversation à chaque action ; quand un thread enchaîne des centaines d'actions, on obtient cette forme-là. Le coordinateur n'a ajouté que 2 % : le coût de gestion était minime.
Pour comparer, j'ai rapporté « tokens lus ÷ tokens produits » à Claude Code en local (les trois derniers jours sur mon propre PC) : environ 330 pour le projet et environ 340 en local. La consommation par unité de travail était à peu près la même qu'une session locale. Si Projects paraît plus lourd, c'est sans doute parce que tout avance en parallèle d'un coup, et que la consommation se concentre sur une courte période (le travail n'étant pas le même, c'est une comparaison indicative).
Côté coût, j'ai pu suivre la façon dont le crédit de configuration ($100) s'est épuisé.
Utilisation du crédit de configuration du projet ($100)
Source : affichage de la consommation dans l'application de bureau (26–27 septembre 2026). Pendant cette période, ma consommation hebdomadaire de Max n'a pas augmenté.
Ce crédit se comportait à peu près comme un montant calculé aux tarifs de l'API. En valorisant le rapport de 11 h 47 aux tarifs officiels d'Anthropic (Pricing : Sonnet 5 à $2 en entrée, $10 en sortie et $0.20 en lecture de cache ; Opus 5.5 à $4 en entrée, $20 en sortie et $0.20 en lecture de cache, le tout par million de tokens), on arrive à environ $58–65, ce qui correspond à peu près à ce qu'affichait l'écran à ce moment-là (78 % = $78). Les « $100 » signifient donc la quantité qui coûterait $100 si on la payait via l'API, ce qui n'est pas énorme à l'échelle d'un forfait Max. Par ailleurs, un autre crédit distribué pour les sessions cloud ($250 avec Max) indiquait sur son écran d'activation que « les Projects ne sont pas éligibles », et effectivement pas un seul dollar n'en a été consommé.
7. Pourquoi la mise en production a bloqué
Le plus difficile a été de mettre en production ce qui avait été construit, parce que l'hébergeur était un hébergement mutualisé accessible uniquement en SSH.
- Les threads dans le cloud ne peuvent pas atteindre le serveur de production (la clé SSH se trouve uniquement sur mon PC).
- Pour tourner sur le PC local, on utilise l'option « Work locally » (travailler en local) du projet. Sous le capot, c'est Remote Control, et il faut activer « Use this computer from your phone and claude.ai » (utiliser cet ordinateur depuis votre téléphone et claude.ai) dans l'application de bureau.
- Or ce réglage s'applique à la liste de tous les dossiers ouverts jusque-là dans Claude Code, constituée automatiquement. Dans mon environnement, il y en avait 22, dont un dossier parent contenant plusieurs dizaines de projets. Tant qu'il est activé, tous deviennent des endroits où l'on peut lancer du travail à distance, et les noms de dossiers, les chemins et les URL des dépôts sont aussi envoyés à Anthropic. Pour se limiter à un seul dossier, il faut passer par une autre voie : ouvrir un terminal dans ce dossier et lancer
claude remote-control.
J'ai donc étudié plusieurs façons de déployer.
| Méthode | Fonctionnement | Évaluation |
|---|---|---|
| Work locally (Remote Control) | Un thread qui tourne sur le PC local déploie en SSH | Élargit l'ensemble des dossiers exposés. L'activer et le désactiver à chaque fois est une corvée. |
| Un runner résident sur le PC (GitHub Actions auto-hébergé) | Quand main est mis à jour, le déploiement s'exécute sur le PC local | Si les threads peuvent modifier et fusionner les workflows, cela devient une porte d'entrée pour exécuter n'importe quel code sur le PC local. Écarté. |
| Prévenir le serveur par webhook | Le serveur reçoit une notification de GitHub et va récupérer le code | Oblige à ouvrir une nouvelle URL que n'importe qui peut appeler de l'extérieur. Abandonné après la revue du rôle chargé de l'administration du serveur. |
| Le serveur récupère le code à intervalles réguliers | Un cron sur le serveur consulte GitHub, récupère le code avec une clé en lecture seule et applique la mise à jour | Aucune porte d'entrée depuis l'extérieur, donc sûr. Mais à ce stade, j'avais décidé de passer à mon fonctionnement local habituel. |
Au bout du compte, j'ai archivé le projet et transféré ce qu'il avait construit dans mon fonctionnement habituel avec Claude Code en local. J'ai jugé plus sûr de le brancher sur la même chaîne de déploiement que mes autres sites plutôt que d'ajouter un nouveau mécanisme.
Avec le recul, il vaut mieux considérer Projects comme pensé pour aller avec un hébergement qui déploie automatiquement dès qu'on fusionne sur GitHub. Avec Vercel, par exemple, il suffit de le connecter à GitHub pour que les changements aillent jusqu'à la production, et l'impasse que j'ai rencontrée ne se produirait pas. Cela dit, l'offre gratuite Hobby de Vercel est réservée à un usage non commercial, et diffuser de la publicité comme Google AdSense exige l'offre payante Pro (à partir de $20 par mois) (Fair Use Guidelines). Ce n'est pas non plus le choix naturel pour un site PHP et MySQL comme celui-ci. L'essentiel est de choisir les technologies et l'hébergeur ensemble, dès le départ.
Je prévois de détailler dans un article à part les risques qu'il y a à laisser piloter son propre PC à distance, et en quoi cela diffère de l'usage quotidien de Claude Code. L'utilisation de votre session locale depuis un téléphone est présentée dans l'article sur Remote Control.
8. Les travaux qui s'y prêtent, et ceux qui ne s'y prêtent pas
S'y prête bien
- Un nouveau projet qui se découpe en parties indépendantes
- Un travail que vous voulez voir avancer pendant que vous dormez ou êtes absent
- Un hébergeur qui déploie automatiquement via une intégration GitHub
- Vous pouvez écrire dès le départ jusqu'où vous déléguez
S'y prête mal
- Des serveurs qui exigent SSH pour déployer, avec une clé stockée sur votre machine
- Un travail existant qui dépend fortement d'outils de vérification locaux ou de procédures maison
- Des dépôts hébergés ailleurs que sur GitHub
- De petites tâches qui tiennent en une session (une session cloud suffit)
Voici, tirés de cette expérience, les points à vérifier avant de commencer.
- Hébergeur : une fusion sur GitHub déclenche-t-elle un déploiement automatique ? Si SSH est nécessaire, décidez à l'avance d'une solution, par exemple faire récupérer le code par le serveur.
- Droits GitHub : le périmètre d'installation de la Claude GitHub App. Utilisez un compte dédié ou restreignez les dépôts.
- Jusqu'où déléguer : dans les instructions du projet, n'écrivez que ce qui doit être demandé à un humain. Soumettez à approbation les modifications de la configuration de CI et de déploiement.
- Réseau : si vous utilisez des API ou des sites externes, mettez dans la liste d'autorisation à la fois le domaine principal et ses sous-domaines.
- Vérification avec de vraies données : ne vous rassurez pas parce que les tests sur données d'exemple passent. À la fin, lancez un thread dont le rôle est de faire passer des données identiques à celles de la production de bout en bout et d'examiner le résultat.
- Limites d'utilisation : revoyez le modèle par défaut des threads. Pendant les 24 premières heures, vous disposez d'un crédit de configuration de $100.
Conclusion
Projects prend réellement en charge le travail d'un humain qui distribue les tâches, les relance et réexplique le même contexte. Trois tâches ont avancé en parallèle pendant la nuit, les threads se sont coordonnés entre eux, et une fois la main confiée, il a pris seul les décisions de fusion et le choix de la suite. Les tokens par unité de travail n'étaient pas différents de ceux de Claude Code en local.
En revanche, ce qui en sort est un premier jet. Découper le travail en parallèle ouvre des trous aux frontières entre les périmètres. Tous les tests sur données d'exemple peuvent passer et les vraies données révéler quand même des bugs. Et la fonctionnalité s'accorde mal avec les serveurs accessibles uniquement en SSH. Si vous l'utilisez, trois précautions devraient vous éviter les détours que j'ai faits : choisir un hébergeur intégré à GitHub, écrire dès le départ jusqu'où vous déléguez, et lancer à la fin un thread chargé de tout vérifier de bout en bout avec de vraies données.
FAQ
Q. Combien coûte Projects ?
R. Il n'y a pas de facturation à part : la consommation est prise sur vos limites habituelles de Pro ou Max. Cette fois, j'ai en plus bénéficié d'un « crédit de configuration » grâce auquel jusqu'à $100 d'utilisation, pendant environ les 24 premières heures, n'étaient pas décomptés de mes limites (affiché à l'écran ; absent de la documentation officielle au 28 septembre). Le travail, 10 threads et 11 PR, a consommé environ 190 millions de tokens et épuisé ce crédit. Aux tarifs de l'API, cela représente environ $100.
Q. Le travail continue-t-il vraiment quand je ferme mon ordinateur ?
R. Oui. Les threads qui tournent dans le cloud ont continué, que je ferme le PC ou le mette en veille. Pendant ce test, trois tâches se sont terminées au cours d'environ 7 heures de nuit. En revanche, les threads lancés sur votre propre PC avec « Work locally » ne tournent que tant que le PC est éveillé.
Q. Puis-je l'utiliser avec des dépôts hébergés ailleurs que sur GitHub ?
R. Les threads qui travaillent sur du code supposent un dépôt github.com sur lequel la Claude GitHub App est installée. Comme je gérais ce projet sur mon propre serveur git, j'ai créé un compte GitHub réservé à Claude, j'ai démarré là-bas, puis j'ai tout rapatrié chez moi à la fin.
Q. Que se passe-t-il si je modifie les instructions du projet en cours de route ?
R. Le coordinateur les prend en compte immédiatement, et sa façon de travailler a changé sans que j'aie besoin de lui parler. En revanche, elles n'atteignent pas les threads déjà en cours : si nécessaire, faites poursuivre le travail dans un nouveau thread. Les anciennes règles restées dans la mémoire du projet ont dû être supprimées par un humain depuis les réglages.
Q. « Work locally » est-il sûr ?
R. Le seul trafic est une connexion chiffrée sortante depuis votre PC ; aucun port d'écoute n'est ouvert. En revanche, activer le réglage dans l'application de bureau fait de la liste des dossiers tirée de votre historique d'utilisation (22 dans mon cas, dont plusieurs dizaines de projets à l'intérieur d'un dossier parent) des endroits où l'on peut lancer du travail à distance. Il faut adopter des habitudes comme ne l'activer que le temps de s'en servir et vérifier que le compte avec lequel vous vous connectez utilise l'authentification à deux facteurs.
Q. Peut-on utiliser tel quel ce qu'il construit ?
R. Dans mon cas, non. Le squelette et le travail de SEO étaient bien faits, mais la logique aux frontières entre les périmètres manquait entièrement, et certains bugs n'apparaissaient qu'avec les vraies données. Avant la mise en ligne, il faut une étape qui charge les vraies données et vérifie l'ensemble de bout en bout.