Modèle / jeu de données
he-yufeng/CoreCoder avatar
he-yufeng/CoreCoder

CoreCoder : lire un agent de codage en 1 161 lignes de Python

Minimal AI coding agent (~1,000 lines of Python) inspired by Claude Code. Works with any LLM. Think NanoGPT for coding agents. Formerly NanoCoder.

1 740 étoiles414 forksPythonMIT

En bref

De quoi s’agit-il ?
CoreCoder est une réimplémentation minimale d'agent de codage, publiée sous licence MIT et inspirée de Claude Code. Elle vise la lecture et le fork, pas la production. Voici ce que le dépôt permet réellement de faire, et où il s'arrête.
À qui s’adresse-t-il ?
CoreCoder convient à qui veut lire et modifier une boucle d'agent complète, pas à qui cherche un assistant quotidien. Avant de l'adopter, vérifiez la version publiée sur PyPI, la compatibilité de votre fournisseur avec l'API OpenAI, et le coût réel d'un run via la commande de comptage de tokens du projet.
Puis-je l’utiliser commercialement ?
Oui. MIT est une licence permissive : vous pouvez utiliser, modifier et vendre un logiciel qui en dépend, à condition de conserver les mentions de droit d’auteur et de licence.
Est-il encore maintenu ?
Oui. Les derniers commits datent d’il y a 2 jours.
En quel langage est-il écrit ?
Principalement Python, d’après les statistiques de langage de GitHub.

Ces réponses reposent sur les données GitHub du projet (dernière synchronisation le 15 septembre 2026) et sur notre analyse. Elles ne constituent pas un avis juridique.

ANALYSE OPEN SOURCE APPROFONDIE

Un agent de codage réduit à ce qu'on peut lire en une après-midi

Le problème que CoreCoder attaque n'est pas celui de l'assistant de codage en général. C'est celui de la compréhension. Un outil comme Claude Code ou Cursor est distribué sous forme de binaire ou de service fermé, et aider représente des dizaines de milliers de lignes de Python. Dans les deux cas, la boucle qui pilote le modèle reste difficile à isoler du reste. CoreCoder part du principe inverse : le moteur (boucle, interface modèle, contexte, outils, sessions) tient en 1 161 lignes une fois les lignes vides et les commentaires retirés. Le paquet complet compte 24 fichiers, 2 384 lignes physiques et 1 931 lignes nettes selon le README. Le public visé est donc précis : développeur Python qui veut poser un point d'arrêt sur chaque ligne d'un agent, le modifier et relancer, sur sa propre machine. Le README compare explicitement le projet à nanoGPT, mais en déplace le sujet : nanoGPT enseigne l'entraînement d'un GPT, CoreCoder enseigne un agent qui édite réellement des fichiers. La comparaison avec aider est utile pour situer l'effort de lecture : quelques jours pour aider, une après-midi pour CoreCoder, selon le tableau du README. Ce n'est pas une question de qualité mais de surface à parcourir.

Ce qui tourne réellement dans la boucle

Le README décrit l'architecture comme un while entouré d'un grand modèle, plus sept ou huit outils qui permettent d'agir. Le point d'entrée de lecture est agent.py, présenté comme le cœur du projet, avec 213 lignes pour la boucle d'agent et l'exécution parallèle des outils. Autour, llm.py gère le flux de réponse du modèle, et le moteur se répartit entre contexte, outils et sessions. Le flux d'exécution annoncé est concret : le modèle demande un outil, l'agent l'exécute, le résultat retourné alimente le contexte, et la boucle reprend. Les outils cités permettent de lire et écrire des fichiers, d'exécuter des commandes shell et de lancer des sous-agents. La compaction du contexte est décrite en trois niveaux, ce qui répond à un problème réel : la fenêtre du modèle se remplit et il faut décider quoi jeter. Le projet affiche aussi en cours de route les tokens consommés et le coût en dollars, sur demande. Un point de conception mérite d'être relevé : toute action qui modifie le disque ou exécute une commande passe par une demande de consentement. C'est une contrainte assumée, pas un oubli, et elle explique en partie le comportement de -p décrit plus bas. Le README indique 146 tests passants, sans que cela dise quoi que ce soit de la couverture réelle.

Installation et variables d'environnement

Le README recommande de cloner le dépôt et d'installer en mode éditable, puisque le projet est fait pour être modifié : git clone https://github.com/he-yufeng/CoreCoder, puis cd CoreCoder et pip install -e . . Si l'objectif est seulement de lancer l'outil, pip install corecoder suffit. Le modèle par défaut est gpt-5.5 via l'API compatible OpenAI, et le changement de fournisseur passe par des variables d'environnement. Pour DeepSeek, le README donne OPENAI_API_KEY, OPENAI_BASE_URL=https://api.deepseek.com et CORECODER_MODEL=deepseek-chat. Pour Ollama en local, OPENAI_API_KEY=ollama, OPENAI_BASE_URL=http://localhost:11434/v1 et CORECODER_MODEL=qwen2.5-coder. Une clé peut être exportée directement ou placée dans un fichier .env à la racine du projet, chargé au démarrage. Deux modes d'usage sont documentés : corecoder pour un REPL interactif, et corecoder -p "..." pour une exécution en une passe qui se termine seule. Un détail compte pour les scripts : en mode -p, les outils qui modifient le disque sont refusés tant que --yes n'est pas passé. Le README le présente comme un choix délibéré. Pour les fournisseurs sans endpoint compatible OpenAI, un backend LiteLLM optionnel s'installe avec pip install "corecoder[litellm]" .

Le consentement et le mode -p : une friction qui est le sujet

La couche de permissions est arrivée en v0.5.0, et le mode plan en v0.6.0 avec MCP et les hooks. Ces ajouts successifs racontent quelque chose : la version minimale d'un agent ne pose pas de question, et c'est précisément ce qui la rend inutilisable au-delà d'une démonstration. CoreCoder a donc ajouté une barrière avant les opérations destructrices. Le revers est visible dans le même README : -p refuse les outils mutants sans --yes. Autrement dit, un script qui attend une correction de fichier en une commande doit explicitement désarmer la protection. C'est un compromis classique, et le projet le documente plutôt que de le masquer. Le mode plan, apparu en v0.6.0, va dans le même sens : séparer la phase où l'agent propose de celle où il agit. Pour un lecteur du code, ces deux couches sont instructives parce qu'elles montrent où un agent minimal doit s'épaissir pour devenir utilisable. Pour un utilisateur pressé, elles ajoutent des allers-retours. Le point à retenir est que la sûreté ici n'est pas un module externe greffé après coup : elle est dans le chemin d'exécution des outils.

Là où CoreCoder n'est pas le bon outil

Le README est explicite : le projet n'est pas dans la même course que Claude Code ou aider, et son but n'est pas de devenir votre outil quotidien. Il faut le prendre au mot. Un agent qui tient en 1 161 lignes ne peut pas embarquer la gestion fine des conflits de fusion, l'indexation d'un gros dépôt, les heuristiques de sélection de contexte sur des millions de lignes, ni les politiques d'entreprise. Les auteurs le formulent ainsi : ce qui manque n'est pas inachevé, c'est l'endroit où bifurquer. Cette phrase est honnête, mais elle déplace la charge sur vous. Si vous cherchez un assistant qui comprend un monorepo, CoreCoder n'est pas la réponse. Si vous cherchez un agent dont le comportement est auditable ligne par ligne avant de le laisser toucher à un dépôt sensible, la question change. Il y a aussi une dépendance à l'API compatible OpenAI : les fournisseurs exotiques passent par LiteLLM, une dépendance supplémentaire à installer et à maintenir. Enfin, la maturité se lit dans le rythme des versions, v0.4.2, v0.5.0 et v0.6.0 en quelques jours début septembre 2026, ce qui indique un projet en mouvement rapide, avec le risque de rupture d'API que cela implique pour du code qui s'appuie dessus.

Face à aider : deux philosophies d'agent en terminal

aider et CoreCoder occupent tous deux un terminal et parlent à un modèle, mais la différence d'approche est structurelle. aider est un outil de pair-programming : il gère un dépôt Git, construit un index du code pour choisir ce qu'il envoie au modèle, et vise l'efficacité en session réelle. CoreCoder ne construit pas d'index de dépôt dans ce que le README décrit ; il expose une boucle et des outils, et laisse la sélection du contexte au modèle et à la compaction en trois niveaux. La conséquence pratique est double. D'un côté, CoreCoder se lit intégralement, ce qui est l'objectif affiché. De l'autre, sur un dépôt volumineux, l'absence d'indexation signifie que la qualité dépend davantage du modèle et de la façon dont il explore. Le README ne revendique d'ailleurs aucune performance de ce type. La comparaison avec nanoGPT est plus juste qu'avec aider : dans les deux cas, le code est un support pédagogique exécutable, et la valeur tient à ce qu'on apprend en le lisant, pas à ce qu'il produit en production.

Licence, maintenance et coût de mise à jour

Le projet est publié sous licence MIT, ce qui autorise la réutilisation, la modification et la redistribution, y compris dans un produit commercial, à condition de conserver la notice de copyright et le texte de la licence. Ce n'est pas un avis juridique : pour un usage en entreprise, faites relire le fichier LICENSE et vérifiez les licences des dépendances, notamment LiteLLM si vous activez l'extra correspondant. Sur la maintenance, le dépôt n'est pas archivé et la dernière poussée date du 8 septembre 2026, avec trois versions publiées entre le 2 et le 6 septembre 2026. Ce rythme suggère un développement actif à court terme, mais ne dit rien de la stabilité à douze mois. Le coût de mise à jour est faible si vous forkez : le moteur tient en un fichier principal de 213 lignes et un ensemble de modules courts, donc un rebasage manuel reste envisageable. Il est plus élevé si vous suivez la branche principale en dépendance, puisque les couches permissions, plan et MCP sont récentes et donc susceptibles de bouger. Le README signale par ailleurs une série de huit essais bilingues accompagnant le code, ce qui représente du contenu à maintenir en parallèle de l'API.

Conclusion éditoriale

CoreCoder convient à qui veut lire et modifier une boucle d'agent complète, pas à qui cherche un assistant quotidien. Avant de l'adopter, vérifiez la version publiée sur PyPI, la compatibilité de votre fournisseur avec l'API OpenAI, et le coût réel d'un run via la commande de comptage de tokens du projet.

Sources officielles

  1. he-yufeng/CoreCoder on GitHub
  2. License: MIT
  3. Project website
  4. README
  5. Releases
Notes de la communauté

Notes de la communauté