
Collezione curata di risorse didattiche sulla cybersecurity, writeup di CTF, articoli di ricerca e laboratori pratici per lo sviluppo di competenze pratiche in ambito di sicurezza web, exploitation, OSINT e forensics.
L'IDE AI open-source che pianifica prima di programmare.
Licenza MIT · Avvio rapido · Cosa aggiunge Modo · Contribuire
Volevo una piccola funzionalità in uno strumento di codifica AI. Non ho trovato un modo per suggerirla. Così mi sono chiesto: quanto è difficile costruire qualcosa come Kiro, Cursor o Windsurf?
A quanto pare — non così difficile come si pensa. Partendo dall'editor Void (a sua volta un fork di VS Code), sono arrivato circa al 60–70% di ciò che offrono questi strumenti in un breve periodo di sviluppo. È stato davvero divertente.
Questo è Modo. Un IDE desktop autonomo in cui i prompt diventano piani strutturati prima di diventare codice. Open source, con licenza MIT, tuo da modificare.
Tutto ciò che segue è stato costruito sopra la chat AI esistente di Void, modifica inline (Cmd+K), completamento automatico, supporto LLM multi-provider, uso di strumenti e integrazione MCP. Ecco le novità:
La maggior parte degli strumenti AI va da prompt a codice. Modo va da prompt a requisiti → progettazione → compiti → codice.
Una spec vive in .modo/specs/<name>/ come tre file markdown:
.modo/specs/auth-flow/
├── requirements.md # user stories, acceptance criteria
├── design.md # architecture, components, data models
└── tasks.md # checklist of implementation steps
Creane uno con Cmd+Shift+S o selezionando la modalità Spec nel selettore di sessione. Scegli funzionalità o correzione bug, quindi flusso di lavoro requisiti-primo o progettazione-primo. L'agente compila ogni documento, tu lo rivedi, poi esegue i compiti uno per uno — segnandoli come completati man mano.
I compiti persistono su disco. Chiudi l'IDE, torna e riprendi da dove avevi lasciato.
Apri qualsiasi tasks.md e ogni compito in sospeso ottiene un pulsante cliccabile "▶ Esegui compito" in linea. Un pulsante "Esegui tutti i compiti in sospeso" appare in cima. I compiti in esecuzione mostrano uno spinner, quelli completati mostrano un segno di spunta. L'agente segna - [ ] → - [~] → - [x] mentre lavora.
Documenti Markdown in .modo/steering/ che iniettano regole di progetto in ogni interazione AI — senza bisogno di ripeterti.
---
inclusion: always
---
# Project Rules
- Use TypeScript strict mode
- All endpoints need input validation
Tre modalità di inclusione:
always — ogni interazionefileMatch — quando il file attivo corrisponde a un pattern globmanual — referenziato tramite comandi / in chatSupporta riferimenti #[[file:path]] per collegare specifiche OpenAPI, schemi GraphQL o qualsiasi documento di progetto.
Configurazioni JSON in .modo/hooks/ che automatizzano azioni attorno al ciclo di vita dell'agente.
{
"name": "Lint on Save",
"version": "1.0.0",
"when": { "type": "fileEdited", "patterns": ["**/*.ts"] },
"then": { "type": "runCommand", "command": "npx eslint --fix ${filePath}" }
}
10 tipi di evento: fileEdited (file modificato), fileCreated (file creato), fileDeleted (file eliminato), promptSubmit (invio prompt), agentStop (arresto agente), preToolUse (prima dell'uso strumento), postToolUse (dopo uso strumento), preTaskExecution (prima esecuzione compito), postTaskExecution (dopo esecuzione compito), userTriggered (attivato dall'utente). Due tipi di azione: askAgent (chiedi all'agente) o runCommand (esegui comando). Gli hook pre-strumento possono negare l'esecuzione. Rilevamento di dipendenze circolari integrato.
Una pillola nella barra di stato che passa tra Autopilota (l'agente agisce autonomamente) e Supervisionato (l'agente si ferma per approvazione). Collegato direttamente alle impostazioni di auto-approvazione per modifiche, comandi terminale e strumenti MCP.
Sessioni chat multiple come schede. Ognuna ha il proprio thread, contesto e cronologia. Aprine di nuove, chiudi quelle vecchie o eseguile tutte insieme. Un pannello di cronologia ricercabile ti permette di trovare conversazioni passate.
Avvia una sessione in modalità Vibe per esplorazione libera, o modalità Spec per sviluppo strutturato. In modalità Spec, il tuo prompt attiva l'intero flusso requisiti → progettazione → compiti. Il contenuto della spec attiva viene automaticamente iniettato nel prompt di sistema del LLM.
Genera agenti paralleli per sottoattività indipendenti. Ognuno ha il proprio thread e accesso agli strumenti. Tieni traccia dello stato, annulla compiti in esecuzione o cancella quelli completati.
Pacchetti di conoscenza installabili che raggruppano documentazione, file di steering e configurazioni MCP. Poteri integrati per TypeScript, React, Testing, API Design e Docker. Attivati in base a parole chiave nei tuoi prompt. Installa poteri personalizzati da URL.
Una barra laterale con sezioni comprimibili per Spec (con barre di avanzamento e conteggi compiti), Hook dell'agente (che mostrano flusso evento → azione), Steering (che mostrano modalità di inclusione) e Poteri.
Digita / in chat per accedere a hook manuali, steering files e comandi integrati: crea spec, esegui compiti, esporta conversazione, inizializza workspace.
I file di steering e la spec attiva vengono automaticamente preposti a ogni interazione LLM. L'agente segue le regole del tuo progetto e sa cosa sta costruendo senza doverglielo dire ogni volta.
Un tema "Modo Dark" costruito appositamente con accenti verde acqua, evidenziazione sintassi ottimizzata e colori del terminale.
Un avatar di Modo appare prima di ogni risposta con espressioni casuali durante lo streaming e una calma predefinita dopo il completamento.
Icona app personalizzata, titolo finestra, logo filigrana, identità prodotto, protocollo URL (modo://) e directory dati (.modo-editor/). Tutti i riferimenti a Void nell'interfaccia sostituiti con equivalenti Modo.
Modo: Initialize Workspace crea l'intera struttura di directory .modo/ con file di steering predefiniti e modelli di configurazione.
Esporta qualsiasi conversazione come Markdown negli appunti dalla palette comandi.
Modo non esisterebbe senza questi progetti:
Void stesso fornisce: supporto multi-provider (Anthropic, OpenAI, Gemini, Ollama, Mistral, Groq, OpenRouter), barra laterale chat, modifica inline Cmd+K, completamento automatico, applicazione veloce/lenta, chiamata di strumenti, integrazione MCP, integrazione SCM e il sistema di impostazioni.
Modo aggiunge tutto nella sezione Cosa aggiunge Modo sopra quella 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
Al primo avvio, una procedura guidata ti accompagna nella connessione a un provider di modelli. Il tier gratuito di Gemini è il modo più veloce per iniziare.
.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
Questo progetto è mantenuto dalla community. L'ho costruito come esperimento di apprendimento — non lo sto mantenendo attivamente con una scadenza. Se vuoi qualcosa di corretto o aggiunto, la strada migliore è forkarlo e inviare una PR.
npm run watch # TypeScript compilation (keep running)
npm run buildreact # React UI (run after changing .tsx files)
./scripts/code.sh # Launch the IDE
Servizi core: src/vs/workbench/contrib/void/common/. Logica lato browser: browser/. Componenti React: browser/react/src/.
Collaboratori seri che vogliono accesso ai commit — apri un issue. Vedi CONTRIBUTING.md per dettagli.
PR benvenuti. Licenza MIT.
MIT
| Progetto | Cosa fornisce | Licenza |
|---|
| Void | AI chat, inline edit, autocomplete, multi-provider LLM, tool use, MCP, apply engine | MIT |
| VS Code | Editor core, extension system, terminal, file system, everything underneath | MIT |
| Roo Code | Alcuni pattern referenziati durante lo sviluppo | Apache 2.0 |
| Comando | Scorciatoia | Descrizione |
|---|
| Create Spec | Cmd+Shift+S | Nuova spec (funzionalità/correzione bug, req-primo/design-primo) |
| Run Next Task | — | Esegui il prossimo compito della spec in sospeso |
| Run All Tasks | — | Esegui tutti i compiti rimanenti |
| Open Spec Files | — | Apri requisiti, progettazione, compiti nell'editor |
| Inject Spec Context | — | Carica il contesto della spec nella chat |
| Reload Spec | — | Rileggi i file della spec dal disco |
| Initialize Workspace | — | Crea la struttura di directory .modo/ |
| Slash Commands | — | Apri il selettore comandi / |
| Export Conversation | — | Copia la chat come Markdown |
| Toggle Autopilot | — | Cambia Autopilota / Supervisionato |
| Open Chat | Cmd+L | Focus sul pannello chat |
| Inline Edit | Cmd+K | Modifica il codice inline con AI |