
Курируемая коллекция учебных материалов по кибербезопасности, разборов CTF, исследовательских работ и практических лабораторных работ для развития практических навыков в области веб-безопасности, эксплуатации уязвимостей, OSINT и криминалистики.
Открытая AI-среда разработки, которая сначала планирует, а потом пишет код.
Лицензия MIT · Быстрый старт · Что добавляет Modo · Участие
Мне нужна была небольшая функция в AI-инструменте для кодирования. Не нашёл способа её предложить. И я спросил себя: насколько сложно на самом деле собрать что-то вроде Kiro, Cursor или Windsurf?
Оказалось — не так сложно, как кажется. Отталкиваясь от редактора Void (самого форка VS Code), я за короткое время добрался примерно до 60–70% возможностей тех инструментов. Было по-настоящему интересно.
Это Modo. Автономная настольная IDE, где запросы превращаются в структурированные планы, прежде чем стать кодом. Открытый исходный код, лицензия MIT, можно дорабатывать.
Всё перечисленное ниже было построено поверх существующего AI-чата Void, встроенного редактирования (Cmd+K), автодополнения, многопровайдерной поддержки LLM, использования инструментов и интеграции MCP. Вот что нового:
Большинство AI-инструментов идут по пути: запрос → код. Modo идёт: запрос → требования → дизайн → задачи → код.
Спецификация живёт в папке .modo/specs/<name>/ в виде трёх markdown-файлов:
.modo/specs/auth-flow/
├── requirements.md # пользовательские истории, критерии приёмки
├── design.md # архитектура, компоненты, модели данных
└── tasks.md # чеклист шагов реализации
Создайте её с помощью Cmd+Shift+S или выбрав режим Spec в панели выбора сессии. Выберите «фича» или «багфикс», а затем «сначала требования» или «сначала дизайн». Агент заполняет каждый документ, вы просматриваете, затем он выполняет задачи одну за другой — отмечая их по мере выполнения.
Задачи сохраняются на диск. Закройте IDE, вернитесь — продолжите с того же места.
Откройте любой tasks.md — у каждой ожидающей задачи появится кликабельная кнопка «▶ Выполнить задачу» прямо в тексте. Вверху появляется кнопка «Выполнить все ожидающие задачи». Во время выполнения отображается индикатор, завершённые — галочка. Агент автоматически меняет - [ ] → - [~] → - [x] по мере работы.
Markdown-документы в .modo/steering/, которые внедряют правила проекта в каждое взаимодействие с AI — больше не нужно повторяться.
---
inclusion: always
---
# Правила проекта
- Использовать TypeScript в строгом режиме
- Все конечные точки должны проверять входные данные
Три режима включения:
always — каждое взаимодействиеfileMatch — когда активный файл соответствует glob-шаблонуmanual — ссылка через / команды в чатеПоддерживаются ссылки #[[file:path]] для подключения спецификаций OpenAPI, схем GraphQL или любых проектных документов.
JSON-конфиги в .modo/hooks/, автоматизирующие действия вокруг жизненного цикла агента.
{
"name": "Линтинг при сохранении",
"version": "1.0.0",
"when": { "type": "fileEdited", "patterns": ["**/*.ts"] },
"then": { "type": "runCommand", "command": "npx eslint --fix ${filePath}" }
}
10 типов событий: fileEdited, fileCreated, fileDeleted, promptSubmit, agentStop, preToolUse, postToolUse, preTaskExecution, postTaskExecution, userTriggered. Два типа действий: askAgent или runCommand. Хуки, срабатывающие до использования инструмента, могут заблокировать выполнение. Встроено обнаружение циклических зависимостей.
Элемент в строке состояния, переключающий между Автопилотом (агент действует автономно) и режимом «Под наблюдением» (агент запрашивает подтверждение). Напрямую связан с настройками автоутверждения для изменений, терминальных команд и MCP-инструментов.
Несколько сеансов чата в виде вкладок. У каждого своя нить, контекст и история. Открывайте новые, закрывайте старые или запускайте все одновременно. Панель истории с поиском позволяет найти прошлые разговоры.
Начните сеанс в режиме Vibe для свободного исследования или в режиме Spec для структурированной разработки. В режиме Spec ваш запрос запускает полный рабочий процесс: требования → дизайн → задачи. Содержимое активной спецификации автоматически внедряется в системный промпт LLM.
Порождайте параллельных агентов для независимых подзадач. Каждый получает свою нить и доступ к инструментам. Отслеживайте статус, отменяйте выполняемые задачи или очищайте завершённые.
Устанавливаемые пакеты знаний, объединяющие документацию, управляющие файлы и конфиги MCP. Встроенные мощности для TypeScript, React, тестирования, проектирования API и Docker. Активируются по ключевым словам в ваших запросах. Устанавливайте пользовательские мощности по URL.
Боковая панель со сворачиваемыми разделами для Спецификаций (с индикаторами прогресса и количеством задач), Хуков агента (показывают поток событие → действие), Управляющих файлов (показывают режим включения) и Мощностей.
Введите / в чате, чтобы получить доступ к ручным хукам, управляющим файлам и встроенным командам: создать спецификацию, выполнить задачи, экспортировать разговор, инициализировать рабочее пространство.
Управляющие файлы и активная спецификация автоматически добавляются к каждому взаимодействию с LLM. Агент следует правилам вашего проекта и знает, что строить, без необходимости указывать это каждый раз.
Специально созданная тема «Modo Dark» с бирюзовыми акцентами, настроенной подсветкой синтаксиса и цветами терминала.
Аватар Modo появляется перед каждым ответом — со случайными выражениями во время стриминга и спокойным значением по умолчанию после завершения.
Пользовательская иконка приложения, заголовок окна, водяной знак логотипа, фирменный стиль, протокол URL (modo://), каталоги данных (.modo-editor/). Все упоминания Void в интерфейсе заменены на Modo.
Команда «Modo: Initialize Workspace» создаёт полную структуру каталога .modo/ с управляющими файлами по умолчанию и шаблонами конфигов.
Экспортируйте любой разговор в формате Markdown в буфер обмена из палитры команд.
Modo не существовал бы без этих проектов:
| Проект | Что предоставляет | Лицензия |
|---|---|---|
| Void | AI-чат, встроенное редактирование, автодополнение, многопровайдерная LLM, использование инструментов, MCP, механизм применения | MIT |
| VS Code | Ядро редактора, система расширений, терминал, файловая система, всё остальное | MIT |
| Roo Code | Некоторые шаблоны, использованные при разработке | Apache 2.0 |
Сам Void предоставляет: поддержку нескольких провайдеров (Anthropic, OpenAI, Gemini, Ollama, Mistral, Groq, OpenRouter), боковую панель чата, встроенное редактирование Cmd+K, автодополнение, быстрое/медленное применение, вызов инструментов, интеграцию MCP, интеграцию с SCM и системой настроек.
Modo добавляет всё из раздела Что добавляет Modo поверх этой основы.
git clone https://github.com/mohshomis/modo.git
cd modo
npm install # требуется Node 20
npm run buildreact # компиляция React UI
npm run watch # компиляция TypeScript (оставить работающим в терминале)
./scripts/code.sh # запуск Modo
При первом запуске мастер настройки проведёт вас через подключение провайдера модели. Бесплатный тариф Gemini — самый быстрый способ начать.
.modo/ # конфигурация на проект (создаётся через "Initialize Workspace")
├── steering/ # markdown-правила, внедряемые в контекст AI
├── specs/ # структурированные рабочие процессы для фич/багфиксов
├── hooks/ # JSON-автоматизация событие → действие
└── settings/ # MCP и другие настройки
src/vs/workbench/contrib/void/
├── common/
│ ├── modoSpecService.ts # CRUD для спецификаций, парсинг задач, построение контекста
│ ├── modoSteeringService.ts # загрузка управляющих файлов, разбор front-matter, сборка контекста
│ ├── modoHookService.ts # загрузка хуков, валидация, сопоставление событий, запуск
│ ├── modoPowersService.ts # реестр мощностей, активация, сопоставление ключевых слов
│ └── modoSubagentService.ts # порождение и управление параллельными агентами
├── browser/
│ ├── modoExplorerPane.ts # представления боковой панели для спецификаций, хуков, управляющих файлов, мощностей
│ ├── modoSpecActions.ts # команды создать спецификацию, выполнить задачи, открыть файлы
│ ├── modoTaskCodeLens.ts # встроенные кнопки «Выполнить задачу» / «Готово» в tasks.md
│ ├── modoSlashCommands.ts # выбор команд через `/`, экспорт, управление сессиями
│ ├── modoStatusBar.ts # переключатель автопилота, индикатор активной спецификации
│ ├── modoHookWiring.ts # события изменения файлов → система хуков
│ └── react/src/
│ ├── sidebar-tsx/ # вкладки сессий, история, переключатель Vibe/Spec, переключатель автопилота
│ ├── modo-spec-panel/ # React UI управления спецификациями
│ └── modo-hooks-panel/ # React UI управления хуками
└── extensions/
└── modo-theme/ # пользовательская тёмная тема с бирюзовыми акцентами
| Команда | Сочетание клавиш | Описание |
|---|---|---|
| Создать спецификацию | Cmd+Shift+S | Новая спецификация (фича/багфикс, сначала требования/сначала дизайн) |
| Выполнить следующую задачу | — | Выполнить следующую ожидающую задачу из спецификации |
| Выполнить все задачи | — | Выполнить все оставшиеся задачи |
| Открыть файлы спецификации | — | Открыть файлы требований, дизайна, задач в редакторе |
| Внедрить контекст спецификации | — | Загрузить контекст спецификации в чат |
| Перезагрузить спецификацию | — | Перечитать файлы спецификации с диска |
| Инициализировать рабочее пространство | — | Создать структуру каталога .modo/ |
| Слеш-команды | — | Открыть выбор команд / |
| Экспортировать разговор | — | Скопировать чат в формате Markdown |
| Переключить автопилот | — | Переключить Автопилот / Под наблюдением |
| Открыть чат | Cmd+L | Сфокусировать панель чата |
| Встроенное редактирование | Cmd+K | Встроенное редактирование кода с помощью AI |
Проект поддерживается сообществом. Я создал его как учебный эксперимент — я не веду активную поддержку по расписанию. Если вы хотите что-то исправить или добавить, лучший путь — форкнуть репозиторий и отправить PR.
npm run watch # компиляция TypeScript (оставить работающим)
npm run buildreact # React UI (запускать после изменения .tsx файлов)
./scripts/code.sh # Запуск IDE
Основные сервисы: src/vs/workbench/contrib/void/common/. Логика на стороне браузера: browser/. React-компоненты: browser/react/src/.
Серьёзные участники, желающие получить доступ на коммит — откройте issue. Подробности в CONTRIBUTING.md.
PR приветствуются. Лицензия MIT.
MIT