
Collection organisée de ressources d'apprentissage en cybersécurité, writeups de CTF, articles de recherche et laboratoires pratiques pour le développement de compétences pratiques dans les domaines de la sécurité web, de l'exploitation, de l'OSINT et de la forensique.
L'IDE AI open source qui planifie avant de coder.
Licence MIT · Démarrage rapide · Ce que Modo apporte · Contribuer
Je voulais une petite fonctionnalité dans un outil de codage IA. Je n'ai pas trouvé de moyen de la suggérer. Alors je me suis demandé : est-ce vraiment difficile de construire quelque chose comme Kiro, Cursor ou Windsurf ?
Il s'avère que ce n'est pas aussi difficile qu'on pourrait le penser. En partant de l'éditeur Void (lui-même un fork de VS Code), j'ai atteint environ 60 à 70 % de ce que ces outils offrent en peu de temps de construction. C'était vraiment amusant.
Voici Modo. Un IDE de bureau autonome où les prompts deviennent des plans structurés avant de devenir du code. Open source, sous licence MIT, prêt à être bidouillé.
Tout ce qui suit a été construit au-dessus du chat IA existant de Void, de l'édition en ligne (Cmd+K), de l'autocomplétion, du support multi-fournisseur LLM, de l'utilisation d'outils et de l'intégration MCP. Voici ce qui est nouveau :
La plupart des outils IA vont du prompt au code. Modo va du prompt aux exigences, puis à la conception, puis aux tâches, puis au code.
Une spécification se trouve dans .modo/specs/<name>/ sous forme de trois fichiers markdown :
.modo/specs/auth-flow/
├── requirements.md # user stories, critères d'acceptation
├── design.md # architecture, composants, modèles de données
└── tasks.md # liste des étapes de mise en œuvre
Créez-en une avec Cmd+Shift+S ou en choisissant le mode Spec dans le sélecteur de session. Choisissez feature ou bugfix, puis un workflow d'abord les exigences ou d'abord la conception. L'agent remplit chaque document, vous révisez, puis il exécute les tâches une par une — les marquant comme terminées au fur et à mesure.
Les tâches persistent sur le disque. Fermez l'IDE, revenez, reprenez là où vous vous êtes arrêté.
Ouvrez n'importe quel tasks.md et chaque tâche en attente reçoit un bouton cliquable "▶ Exécuter la tâche" en ligne. Un bouton "Exécuter toutes les tâches en attente" apparaît en haut. Les tâches en cours affichent un spinner, les terminées une coche. L'agent marque - [ ] → - [~] → - [x] au fur et à mesure.
Documents Markdown dans .modo/steering/ qui injectent des règles de projet dans chaque interaction IA — plus besoin de vous répéter.
---
inclusion: always
---
# Project Rules
- Use TypeScript strict mode
- All endpoints need input validation
Trois modes d'inclusion :
always — chaque interactionfileMatch — lorsque le fichier actif correspond à un motif globmanual — référencé via les commandes / dans le chatPrend en charge les références #[[file:path]] pour lier des spécifications OpenAPI, des schémas GraphQL ou tout document de projet.
Configurations JSON dans .modo/hooks/ qui automatisent des actions autour du cycle de vie de l'agent.
{
"name": "Lint on Save",
"version": "1.0.0",
"when": { "type": "fileEdited", "patterns": ["**/*.ts"] },
"then": { "type": "runCommand", "command": "npx eslint --fix ${filePath}" }
}
10 types d'événements : fileEdited, fileCreated, fileDeleted, promptSubmit, agentStop, preToolUse, postToolUse, preTaskExecution, postTaskExecution, userTriggered. Deux types d'actions : askAgent ou runCommand. Les hooks pre-outil peuvent refuser l'exécution. Détection de dépendances circulaires intégrée.
Un pilule dans la barre d'état qui bascule entre Autopilot (l'agent agit de manière autonome) et Supervisé (l'agent s'arrête pour approbation). Connecté directement aux paramètres d'approbation automatique pour les modifications, les commandes terminal et les outils MCP.
Plusieurs sessions de chat sous forme d'onglets. Chacune a son propre fil, contexte et historique. Ouvrez-en de nouvelles, fermez les anciennes, ou exécutez-les toutes à la fois. Un panneau d'historique consultable vous permet de retrouver les conversations passées.
Démarrez une session en mode Vibe pour une exploration libre, ou en mode Spec pour un développement structuré. En mode Spec, votre prompt déclenche le workflow complet exigences → conception → tâches. Le contenu de la spécification active est automatiquement injecté dans le prompt système du LLM.
Générez des agents parallèles pour des sous-tâches indépendantes. Chacun obtient son propre fil et accès aux outils. Suivez le statut, annulez les tâches en cours ou effacez les terminées.
Paquets de connaissances installables qui regroupent documentation, fichiers de pilotage et configurations MCP. Pouvoirs intégrés pour TypeScript, React, Tests, Conception d'API et Docker. Activez en fonction de mots-clés dans vos prompts. Installez des pouvoirs personnalisés depuis des URL.
Une barre latérale avec des sections repliables pour les Spécifications (avec barres de progression et compteurs de tâches), les Hooks d'agent (montrant le flux événement → action), le Pilotage (montrant le mode d'inclusion) et les Pouvoirs.
Tapez / dans le chat pour accéder aux hooks manuels, fichiers de pilotage et commandes intégrées : créer une spécification, exécuter des tâches, exporter la conversation, initialiser l'espace de travail.
Les fichiers de pilotage et la spécification active sont automatiquement préfixés à chaque interaction LLM. L'agent suit vos règles de projet et sait ce qu'il construit sans qu'on le lui dise à chaque fois.
Un thème "Modo Dark" conçu sur mesure avec des accents teal, une coloration syntaxique ajustée et des couleurs de terminal.
Un avatar Modo apparaît avant chaque réponse avec des expressions aléatoires pendant le streaming et un calme par défaut après la fin.
Icône d'application personnalisée, titre de fenêtre, logo en filigrane, identité produit, protocole URL (modo://) et répertoires de données (.modo-editor/). Toutes les références à Void dans l'interface utilisateur remplacées par des équivalents Modo.
Modo: Initialize Workspace crée la structure complète du répertoire .modo/ avec des fichiers de pilotage par défaut et des modèles de configuration.
Exporter n'importe quelle conversation en Markdown vers le presse-papiers depuis la palette de commandes.
Modo n'existerait pas sans ces projets :
Void lui-même fournit : support multi-fournisseur (Anthropic, OpenAI, Gemini, Ollama, Mistral, Groq, OpenRouter), barre latérale de chat, édition en ligne avec Cmd+K, autocomplétion, application rapide/lente, appel d'outils, intégration MCP, intégration SCM et le système de paramètres.
Modo ajoute tout ce qui se trouve dans la section Ce que Modo apporte au-dessus de cette base.
git clone https://github.com/mohshomis/modo.git
cd modo
npm install # requires Node 20
npm run buildreact # compile React UI
npm run watch # compile TypeScript (keep running in a terminal)
./scripts/code.sh # launch Modo
Au premier lancement, un guide vous accompagne pour connecter un fournisseur de modèle. L'offre gratuite Gemini est le moyen le plus rapide de commencer.
.modo/ # per-project config (created by "Initialize Workspace")
├── steering/ # markdown rules injected into AI context
├── specs/ # structured feature/bugfix workflows
├── hooks/ # JSON event → action automation
└── settings/ # MCP and other configs
src/vs/workbench/contrib/void/
├── common/
│ ├── modoSpecService.ts # spec CRUD, task parsing, context building
│ ├── modoSteeringService.ts # steering file loading, front-matter parsing, context assembly
│ ├── modoHookService.ts # hook loading, validation, event matching, firing
│ ├── modoPowersService.ts # powers registry, activation, keyword matching
│ └── modoSubagentService.ts # parallel agent spawning and lifecycle
├── browser/
│ ├── modoExplorerPane.ts # sidebar views for specs, hooks, steering, powers
│ ├── modoSpecActions.ts # create spec, run tasks, open files commands
│ ├── modoTaskCodeLens.ts # inline Run Task / Done buttons in tasks.md
│ ├── modoSlashCommands.ts # / command picker, export, session management
│ ├── modoStatusBar.ts # autopilot toggle, active spec indicator
│ ├── modoHookWiring.ts # file change events → hook system
│ └── react/src/
│ ├── sidebar-tsx/ # session tabs, history, vibe/spec mode, autopilot switch
│ ├── modo-spec-panel/ # spec management React UI
│ └── modo-hooks-panel/ # hook management React UI
└── extensions/
└── modo-theme/ # custom dark theme with teal accents
Ce projet est maintenu par la communauté. Je l'ai construit comme une expérience d'apprentissage — je ne le maintiens pas activement selon un calendrier. Si vous voulez quelque chose de corrigé ou ajouté, la meilleure voie est de le forker et de soumettre une PR.
npm run watch # TypeScript compilation (keep running)
npm run buildreact # React UI (run after changing .tsx files)
./scripts/code.sh # Launch the IDE
Services principaux : src/vs/workbench/contrib/void/common/. Logique côté navigateur : browser/. Composants React : browser/react/src/.
Les contributeurs sérieux qui veulent un accès commit — ouvrez une issue. Voir CONTRIBUTING.md pour les détails.
Les PRs sont les bienvenues. Sous licence MIT.
MIT
| Projet | Ce qu'il apporte | Licence |
|---|
| Void | chat IA, édition en ligne, autocomplétion, LLM multi-fournisseur, utilisation d'outils, MCP, moteur d'application | MIT |
| VS Code | Noyau d'éditeur, système d'extensions, terminal, système de fichiers, tout en dessous | MIT |
| Roo Code | Quelques modèles référencés pendant le développement | Apache 2.0 |
| Commande | Raccourci | Description |
|---|
| Créer une spécification | Cmd+Shift+S | Nouvelle spécification (feature/bugfix, req-first/design-first) |
| Exécuter la tâche suivante | — | Exécuter la tâche de spécification en attente suivante |
| Exécuter toutes les tâches | — | Exécuter toutes les tâches restantes |
| Ouvrir les fichiers de spécification | — | Ouvrir les fichiers requirements, design, tasks dans l'éditeur |
| Injecter le contexte de spécification | — | Charger le contexte de spécification dans le chat |
| Recharger la spécification | — | Relire les fichiers de spécification depuis le disque |
| Initialiser l'espace de travail | — | Créer la structure de répertoire .modo/ |
| Commandes slash | — | Ouvrir le sélecteur de commande / |
| Exporter la conversation | — | Copier le chat en Markdown |
| Basculer Autopilot | — | Basculer Autopilot / Supervisé |
| Ouvrir le chat | Cmd+L | Focus sur le panneau de chat |
| Édition en ligne | Cmd+K | Modifier le code en ligne avec l'IA |