- Des agents de codage internes développés indépendamment par de grandes organisations d’ingénierie comme Stripe, Ramp et Coinbase convergent vers des schémas d’architecture similaires ; Open SWE est le framework qui implémente cela en open source
- Construit sur Deep Agents et LangGraph, il fournit des composants clés comme des sandboxes cloud isolées, un ensemble d’outils curé, l’orchestration de sous-agents et l’intégration aux workflows des développeurs
- Il est construit par composition sans forker les agents existants, ce qui permet de conserver à la fois les mises à niveau du framework de base et les personnalisations propres à chaque organisation
- Tous les composants majeurs sont interchangeables sous forme de plugins : fournisseur de sandbox, modèle, outils, déclencheurs, prompts système, middleware, etc.
- Il offre aux équipes qui envisagent d’adopter des agents de codage internes un point de départ fondé sur des patterns validés en production, sous licence MIT
Patterns communs observés en déploiement de production
- Bien que développés indépendamment, des agents de codage comme Minions de Stripe, Inspect de Ramp et Cloudbot de Coinbase ont convergé vers des choix architecturaux similaires
- Environnement d’exécution isolé : chaque tâche s’exécute dans une sandbox cloud dédiée, avec des autorisations complètes dans des limites strictes. Cela permet d’exécuter des commandes sans demande d’approbation à chaque action tout en isolant l’impact d’erreurs potentielles sur les systèmes de production
- Ensemble d’outils curé : selon l’équipe d’ingénierie de Stripe, l’agent a accès à environ 500 outils, non pas accumulés au fil du temps mais soigneusement sélectionnés et maintenus. Plus que la quantité, c’est la curation qui compte
- Invocation prioritairement via Slack : les trois systèmes intègrent Slack comme interface principale, permettant aux développeurs d’y accéder dans leur workflow de communication existant sans changer de contexte pour une nouvelle application
- Contexte riche dès le départ : le contexte complet est récupéré depuis les tickets Linear, les fils Slack et les PR GitHub avant le début du travail, ce qui réduit le surcoût lié à la découverte des besoins via des appels d’outils
- Orchestration de sous-agents : les tâches complexes sont décomposées puis déléguées à des agents enfants spécialisés, chacun avec un contexte isolé et des responsabilités ciblées
Architecture d’Open SWE
-
1. Harnais d’agent : composition basée sur Deep Agents
- Au lieu de forker un agent existant ou de repartir de zéro, l’approche consiste à composer sur le framework Deep Agents, de manière similaire à la façon dont l’équipe de Ramp a construit Inspect sur OpenCode
- Deux avantages à cette composition :
- Voie de mise à niveau : lorsque Deep Agents s’améliore (meilleure gestion du contexte, planification plus efficace, usage optimisé des tokens), ces améliorations peuvent être intégrées sans reconstruire les personnalisations
- Personnalisation sans fork : les outils, prompts et workflows propres à chaque organisation peuvent être conservés en configuration plutôt qu’en modifiant la logique centrale de l’agent
- Infrastructure fournie par Deep Agents : planification intégrée via
write_todos, gestion de contexte basée sur des fichiers, création native de sous-agents via l’outil task, et hooks de middleware pour une orchestration déterministe
-
2. Sandbox : environnement cloud isolé
- Chaque tâche s’exécute dans sa propre sandbox cloud isolée, un environnement Linux distant avec accès complet au shell
- Le dépôt est cloné et l’agent reçoit tous les droits ; les erreurs restent confinées à cet environnement
- Fournisseurs de sandbox pris en charge par défaut : Modal, Daytona, Runloop, LangSmith. Il est aussi possible d’implémenter son propre backend de sandbox
- Fonctionnements clés :
- Une sandbox persistante est attribuée à chaque fil de conversation et réutilisée dans les messages suivants
- Si la sandbox devient inaccessible, elle est recréée automatiquement
- Plusieurs tâches peuvent s’exécuter en parallèle, chacune dans sa propre sandbox
-
3. Outils : la curation plutôt que l’accumulation
- Open SWE fournit un ensemble d’outils ciblé, ainsi que les outils intégrés de Deep Agents (
read_file, write_file, edit_file, ls, glob, grep, write_todos, task)
- Un petit ensemble d’outils curé est plus facile à tester, maintenir et raisonner. Des outils supplémentaires propres à l’organisation (API internes, systèmes de déploiement personnalisés, frameworks de test spécialisés) peuvent être ajoutés explicitement
-
4. Ingénierie du contexte : AGENTS.md + contexte source
- Le contexte est collecté depuis deux sources :
- Fichier AGENTS.md : s’il est présent à la racine du dépôt, il est lu depuis la sandbox puis injecté dans le prompt système. Il encode les conventions, exigences de test, décisions d’architecture et patterns propres à l’équipe
- Contexte source : le contenu complet d’un ticket Linear (titre, description, commentaires) ou l’historique d’un fil Slack est combiné puis transmis avant le démarrage de l’agent, fournissant un contexte spécifique à la tâche sans appel d’outil supplémentaire
- Une approche en double couche qui équilibre la connaissance globale du dépôt et les informations propres à la tâche
-
5. Orchestration : sous-agents + middleware
- Deux mécanismes sont combinés :
- Sous-agents : création d’agents enfants via l’outil
task. L’agent principal délègue des sous-tâches indépendantes à des sous-agents isolés, chacun avec sa propre pile de middleware, sa liste de tâches et ses opérations sur les fichiers
- Middleware : hooks déterministes exécutés autour de la boucle de l’agent
check_message_queue_before_model : injecte les messages de suivi arrivés pendant l’exécution de l’agent (commentaires Linear, messages Slack) avant l’appel suivant au modèle. L’utilisateur peut ainsi fournir des entrées supplémentaires pendant le travail de l’agent
open_pr_if_needed : si l’agent n’a pas réussi à ouvrir une PR, crée automatiquement le commit et la PR comme filet de sécurité
ToolErrorMiddleware : capture et gère proprement les erreurs d’outils
- La séparation entre orchestration agentique (pilotée par le modèle) et déterministe (pilotée par le middleware) permet d’obtenir un équilibre entre fiabilité et flexibilité
-
6. Invocation : Slack, Linear, GitHub
- Slack : mention du bot dans un fil. La syntaxe
repo:owner/name permet de préciser le dépôt sur lequel travailler. L’agent répond dans le fil avec des mises à jour d’état et le lien vers la PR
- Linear : commentaire
@openswe sur un ticket. L’agent lit tout le contexte du ticket, accuse réception avec 👀, puis publie le résultat en commentaire
- GitHub : traitement du feedback de review via la mention
@openswe dans les commentaires d’une PR générée par l’agent, avec envoi des modifications sur la même branche
- Chaque invocation génère un ID de fil déterministe, ce qui permet d’acheminer les messages ultérieurs d’un même ticket ou fil vers le même agent déjà en cours d’exécution
-
7. Validation : basée sur le prompt + filet de sécurité
- L’agent reçoit l’instruction d’exécuter lint, formatters et tests avant le commit
- Le middleware
open_pr_if_needed sert de solution de secours : si l’agent s’arrête sans ouvrir de PR, le middleware s’en charge automatiquement
- Des contrôles CI déterministes, une validation visuelle et des gates de review peuvent être ajoutés via du middleware supplémentaire
Pourquoi utiliser Deep Agents
- Gestion du contexte : les grandes quantités de données intermédiaires générées par les tâches de codage longues (contenu de fichiers, sorties de commandes, résultats de recherche) sont déportées vers une mémoire basée sur des fichiers, au lieu de tout conserver dans l’historique de conversation. C’est efficace pour éviter les débordements de contexte sur de grandes bases de code
- Briques de planification : l’outil intégré
write_todos structure la décomposition des tâches complexes, le suivi d’avancement et l’adaptation du plan aux nouvelles informations. Particulièrement utile pour les tâches multi-étapes de longue durée
- Isolation des sous-agents : quand l’agent principal crée des agents enfants via l’outil
task, ceux-ci reçoivent un contexte isolé. Les historiques de conversation des différentes sous-tâches ne se contaminent pas, ce qui permet un raisonnement plus clair sur les tâches complexes
- Hooks de middleware : ils permettent d’injecter de la logique déterministe à des points précis de la boucle de l’agent. Ils servent à implémenter des comportements qui doivent s’exécuter de manière fiable, comme l’injection de messages ou la création automatique de PR
- Voie de mise à niveau : Deep Agents étant activement développé comme bibliothèque indépendante, les améliorations de compression de contexte, de mise en cache des prompts, d’efficacité de planification et d’orchestration de sous-agents peuvent être répercutées dans Open SWE sans reconstruire les personnalisations
Personnalisation selon les organisations
- Open SWE est conçu non comme un produit fini, mais comme une base personnalisable. Tous les composants majeurs sont enfichables :
- Fournisseur de sandbox : bascule possible entre Modal, Daytona, Runloop et LangSmith. Il est également possible d’implémenter son propre backend de sandbox selon les exigences de l’infrastructure interne
- Modèle : tous les fournisseurs de LLM peuvent être utilisés. La valeur par défaut est Claude Opus 4, et différents modèles peuvent être configurés selon les sous-tâches
- Outils : ajout d’outils pour les API internes, systèmes de déploiement, frameworks de test et plateformes de monitoring ; suppression possible des outils inutiles
- Déclencheurs : modification de la logique d’intégration Slack, Linear et GitHub ; ajout possible de nouvelles surfaces de déclenchement comme l’e-mail, les webhooks ou une UI personnalisée
- Prompt système : personnalisation du prompt par défaut et de la logique de prise en compte du fichier AGENTS.md ; ajout possible d’instructions, contraintes et conventions propres à l’organisation
- Middleware : ajout possible de hooks de middleware maison pour la validation, les gates d’approbation, la journalisation et les contrôles de sécurité
Comparaison avec les implémentations internes
- En comparaison avec les systèmes internes de Stripe, Ramp et Coinbase à partir des informations publiques disponibles, les patterns centraux sont similaires
- Les différences se situent dans les détails d’implémentation, les intégrations internes et les outils propres à chaque organisation, ce qui correspond aux écarts attendus lorsqu’on adapte un framework à d’autres environnements
Pour commencer
- Open SWE est disponible sur GitHub sous licence MIT : https://github.com/langchain-ai/open-swe
- Le guide d’installation explique la création de la GitHub App, la configuration de LangSmith, les déclencheurs Linear/Slack/GitHub et le déploiement en production
- Le guide de personnalisation explique comment remplacer la sandbox, le modèle, les outils, les déclencheurs, le prompt système et le middleware
- Fork, personnalisation et déploiement interne sont tous possibles
Aucun commentaire pour le moment.