
Colección curada de recursos de aprendizaje en ciberseguridad, writeups de CTF, artículos de investigación y laboratorios prácticos para el desarrollo de habilidades prácticas en seguridad web, explotación, OSINT y forense digital.
El IDE de IA de código abierto que planifica antes de codificar.
Licencia MIT · Inicio rápido · Qué aporta Modo · Contribuir
Quería una pequeña función en una herramienta de codificación con IA. No encontré forma de sugerirla. Así que me pregunté: ¿qué tan difícil es construir algo como Kiro, Cursor o Windsurf?
Resulta que no es tan difícil como parece. Partiendo del editor Void (que a su vez es un fork de VS Code), llegué aproximadamente al 60-70% de lo que ofrecen esas herramientas en poco tiempo de desarrollo. Fue genuinamente divertido.
Esto es Modo. Un IDE de escritorio autónomo donde los prompts se convierten en planes estructurados antes de convertirse en código. Código abierto, licencia MIT, tuyo para modificarlo.
Todo lo siguiente se construyó sobre el chat de IA, la edición en línea (Cmd+K), el autocompletado, el soporte multi-proveedor de LLM, el uso de herramientas y la integración MCP existentes en Void. Esto es lo nuevo:
La mayoría de las herramientas de IA van de prompt a código. Modo va de prompt a requisitos, a diseño, a tareas, a código.
Una especificación vive en .modo/specs/<nombre>/ como tres archivos markdown:
.modo/specs/auth-flow/
├── requirements.md # historias de usuario, criterios de aceptación
├── design.md # arquitectura, componentes, modelos de datos
└── tasks.md # lista de verificación de pasos de implementación
Crea una con Cmd+Shift+S o seleccionando el modo Spec en el selector de sesiones. Elige feature o bugfix, y luego flujo de trabajo primero requisitos o primero diseño. El agente rellena cada documento, tú lo revisas, luego ejecuta las tareas una por una, marcándolas como completadas.
Las tareas persisten en el disco. Cierra el IDE, vuelve, retoma donde lo dejaste.
Abre cualquier tasks.md y cada tarea pendiente tiene un botón "▶ Run Task" en línea. Un botón "Run All Pending Tasks" aparece arriba. Las tareas en ejecución muestran un spinner, las completadas una marca. El agente marca - [ ] → - [~] → - [x] mientras trabaja.
Documentos Markdown en .modo/steering/ que inyectan reglas del proyecto en cada interacción de IA, sin necesidad de repetirlas.
---
inclusion: always
---
# Reglas del proyecto
- Usar TypeScript modo estricto
- Todos los endpoints necesitan validación de entrada
Tres modos de inclusión:
always: en cada interacciónfileMatch: cuando el archivo activo coincide con un patrón globmanual: referenciado mediante comandos / en el chatSoporta referencias #[[file:path]] para enlazar especificaciones OpenAPI, esquemas GraphQL o cualquier documento del proyecto.
Configuraciones JSON en .modo/hooks/ que automatizan acciones en torno al ciclo de vida del agente.
{
"name": "Lint al guardar",
"version": "1.0.0",
"when": { "type": "fileEdited", "patterns": ["**/*.ts"] },
"then": { "type": "runCommand", "command": "npx eslint --fix ${filePath}" }
}
10 tipos de evento: fileEdited, fileCreated, fileDeleted, promptSubmit, agentStop, preToolUse, postToolUse, preTaskExecution, postTaskExecution, userTriggered. Dos tipos de acción: askAgent o runCommand. Los hooks previos a herramienta pueden denegar la ejecución. Detección de dependencias circulares incorporada.
Una píldora en la barra de estado que cambia entre Autopiloto (el agente actúa autónomamente) y Supervisado (el agente pausa para aprobación). Conectada directamente a la configuración de auto-aprobación para ediciones, comandos de terminal y herramientas MCP.
Múltiples sesiones de chat como pestañas. Cada una tiene su propio hilo, contexto e historial. Abre nuevas, cierra antiguas o ejecútalas todas a la vez. Un panel de historial con búsqueda permite encontrar conversaciones pasadas.
Inicia una sesión en modo Vibe para exploración libre, o modo Spec para desarrollo estructurado. En modo Spec, tu prompt desencadena el flujo completo de requisitos → diseño → tareas. El contenido de la especificación activa se inyecta automáticamente en el prompt del sistema del LLM.
Genera agentes en paralelo para subtareas independientes. Cada uno recibe su propio hilo y acceso a herramientas. Haz seguimiento del estado, cancela tareas en ejecución o limpia las completadas.
Paquetes de conocimiento instalables que agrupan documentación, archivos de dirección y configuraciones MCP. Powers incorporados para TypeScript, React, Testing, API Design y Docker. Se activan según palabras clave en tus prompts. Instala powers personalizados desde URLs.
Una barra lateral con secciones plegables para Especificaciones (con barras de progreso y conteo de tareas), Hooks del agente (mostrando flujo evento → acción), Dirección (mostrando modo de inclusión) y Powers.
Escribe / en el chat para acceder a hooks manuales, archivos de dirección y comandos integrados: crear especificación, ejecutar tareas, exportar conversación, inicializar espacio de trabajo.
Los archivos de dirección y la especificación activa se anteponen automáticamente a cada interacción con el LLM. El agente sigue las reglas de tu proyecto y sabe lo que está construyendo sin necesidad de decírselo cada vez.
Un tema "Modo Dark" diseñado específicamente, con acentos verde azulado, resaltado de sintaxis ajustado y colores de terminal.
Un avatar de Modo aparece antes de cada respuesta con expresiones aleatorias durante la transmisión y una expresión calmada por defecto al finalizar.
Icono de aplicación personalizado, título de ventana, marca de agua, identidad del producto, protocolo URL (modo://) y directorios de datos (.modo-editor/). Todas las referencias a Void en la interfaz se reemplazaron por equivalentes de Modo.
Modo: Initialize Workspace crea la estructura completa del directorio .modo/ con archivos de dirección predeterminados y plantillas de configuración.
Exporta cualquier conversación como Markdown al portapapeles desde la paleta de comandos.
Modo no existiría sin estos proyectos:
Void mismo proporciona: soporte multi-proveedor (Anthropic, OpenAI, Gemini, Ollama, Mistral, Groq, OpenRouter), barra lateral de chat, edición en línea Cmd+K, autocompletado, aplicación rápida/lenta, llamada a herramientas, integración MCP, integración SCM y el sistema de configuración.
Modo añade todo lo que está en la sección Qué aporta Modo sobre esa base.
git clone https://github.com/mohshomis/modo.git
cd modo
npm install # requiere Node 20
npm run buildreact # compilar interfaz React
npm run watch # compilar TypeScript (mantener ejecutándose en una terminal)
./scripts/code.sh # lanzar Modo
En el primer lanzamiento, la incorporación te guía para conectar un proveedor de modelos. El nivel gratuito de Gemini es la forma más rápida de empezar.
.modo/ # configuración por proyecto (creada con "Initialize Workspace")
├── steering/ # reglas markdown inyectadas en el contexto de IA
├── specs/ # flujos de trabajo estructurados de funcionalidades/correcciones
├── hooks/ # automatización de eventos → acciones en JSON
└── settings/ # MCP y otras configuraciones
src/vs/workbench/contrib/void/
├── common/
│ ├── modoSpecService.ts # CRUD de especificaciones, análisis de tareas, construcción de contexto
│ ├── modoSteeringService.ts # carga de archivos de dirección, análisis de front-matter, ensamblado de contexto
│ ├── modoHookService.ts # carga de hooks, validación, coincidencia de eventos, ejecución
│ ├── modoPowersService.ts # registro de powers, activación, coincidencia de palabras clave
│ └── modoSubagentService.ts # generación y ciclo de vida de agentes paralelos
├── browser/
│ ├── modoExplorerPane.ts # vistas en barra lateral para especificaciones, hooks, dirección, powers
│ ├── modoSpecActions.ts # comandos para crear especificación, ejecutar tareas, abrir archivos
│ ├── modoTaskCodeLens.ts # botones en línea "Run Task" / "Done" en tasks.md
│ ├── modoSlashCommands.ts # selector de comandos /, exportación, gestión de sesiones
│ ├── modoStatusBar.ts # alternancia de autopiloto, indicador de especificación activa
│ ├── modoHookWiring.ts # eventos de cambio de archivos → sistema de hooks
│ └── react/src/
│ ├── sidebar-tsx/ # pestañas de sesión, historial, modo vibe/spec, interruptor de autopiloto
│ ├── modo-spec-panel/ # interfaz React de gestión de especificaciones
│ └── modo-hooks-panel/ # interfaz React de gestión de hooks
└── extensions/
└── modo-theme/ # tema oscuro personalizado con acentos verde azulado
Este proyecto es mantenido por la comunidad. Lo construí como un experimento de aprendizaje; no lo mantengo activamente con un cronograma. Si quieres que algo se arregle o añada, la mejor vía es hacer un fork y enviar un PR.
npm run watch # Compilación de TypeScript (mantener ejecutándose)
npm run buildreact # Interfaz React (ejecutar después de cambiar archivos .tsx)
./scripts/code.sh # Lanzar el IDE
Servicios principales: src/vs/workbench/contrib/void/common/. Lógica del lado del navegador: browser/. Componentes React: browser/react/src/.
Los contribuyentes serios que quieran acceso de commit — abran un issue. Consulta CONTRIBUTING.md para más detalles.
PRs bienvenidos. Licencia MIT.
MIT
| Proyecto | Qué proporciona | Licencia |
|---|
| Void | Chat de IA, edición en línea, autocompletado, LLM multi-proveedor, uso de herramientas, MCP, motor de aplicación | MIT |
| VS Code | Núcleo del editor, sistema de extensiones, terminal, sistema de archivos, todo lo subyacente | MIT |
| Roo Code | Algunos patrones referenciados durante el desarrollo | Apache 2.0 |
| Comando | Atajo | Descripción |
|---|
| Crear especificación | Cmd+Shift+S | Nueva especificación (feature/bugfix, primero req/primero diseño) |
| Ejecutar siguiente tarea | — | Ejecuta la siguiente tarea pendiente de la especificación |
| Ejecutar todas las tareas | — | Ejecuta todas las tareas restantes |
| Abrir archivos de especificación | — | Abre requisitos, diseño, tareas en el editor |
| Inyectar contexto de especificación | — | Carga el contexto de la especificación en el chat |
| Recargar especificación | — | Vuelve a leer los archivos de especificación desde el disco |
| Inicializar espacio de trabajo | — | Crea la estructura de directorios .modo/ |
| Comandos de barra | — | Abre el selector de comandos / |
| Exportar conversación | — | Copia el chat como Markdown |
| Alternar autopiloto | — | Cambia entre Autopiloto / Supervisado |
| Abrir chat | Cmd+L | Enfoca el panel de chat |
| Edición en línea | Cmd+K | Edita código en línea con IA |