
웹 보안, 익스플로잇, OSINT 및 포렌식 분야에서 실습 중심의 기술 개발을 위한 엄선된 사이버 보안 학습 리소스, CTF writeups, 연구 논문 및 실습 랩 모음.
코드를 작성하기 전에 계획을 세우는 오픈소스 AI IDE입니다.
MIT 라이선스 · 빠른 시작 · Modo가 추가한 기능 · 기여하기
AI 코딩 도구에 작은 기능 하나가 필요했는데, 제안할 방법이 없었습니다. 그래서 스스로에게 물었습니다. Kiro, Cursor, Windsurf 같은 걸 실제로 만드는 게 얼마나 어려울까?
생각보다 어렵지 않았습니다. Void 편집기(VS Code의 포크)에서 시작해서, 짧은 기간 동안 구축하면서 그러한 도구들이 제공하는 것의 약 60~70%에 도달했습니다. 정말 재미있었습니다.
이것이 Modo입니다. 프롬프트가 코드가 되기 전에 구조화된 계획이 되는 독립형 데스크톱 IDE입니다. 오픈소스, MIT 라이선스, 여러분이 직접 수정할 수 있습니다.
아래의 모든 내용은 Void의 기존 AI 채팅, 인라인 편집(Cmd+K), 자동 완성, 다중 제공자 LLM 지원, 도구 사용, MCP 통합 위에 구축되었습니다. 새로 추가된 기능은 다음과 같습니다.
대부분의 AI 도구는 프롬프트 → 코드로 진행됩니다. Modo는 프롬프트 → 요구사항 → 설계 → 작업 → 코드로 진행됩니다.
사양은 .modo/specs/<name>/ 디렉토리에 세 개의 마크다운 파일로 저장됩니다.
.modo/specs/auth-flow/
├── requirements.md # 사용자 스토리, 승인 기준
├── design.md # 아키텍처, 컴포넌트, 데이터 모델
└── tasks.md # 구현 단계 체크리스트
Cmd+Shift+S를 누르거나 세션 선택기에서 Spec 모드를 선택하여 생성할 수 있습니다. 기능(feature) 또는 버그 수정(bugfix)을 선택한 후, 요구사항 우선(requirements-first) 또는 설계 우선(design-first) 워크플로를 선택합니다. 에이전트가 각 문서를 작성하면 사용자가 검토한 후 작업을 하나씩 실행합니다. 진행 상황은 완료 표시로 기록됩니다.
작업은 디스크에 저장됩니다. IDE를 닫았다가 다시 열어도 이어서 작업할 수 있습니다.
tasks.md 파일을 열면 보류 중인 각 작업 옆에 클릭 가능한 "▶ 작업 실행" 버튼이 인라인으로 표시됩니다. 상단에는 "보류 중인 모든 작업 실행" 버튼이 나타납니다. 실행 중인 작업에는 스피너가 표시되고, 완료된 작업에는 체크 표시가 나타납니다. 에이전트가 작업을 진행하면서 - [ ] → - [~] → - [x]로 표시를 변경합니다.
.modo/steering/ 디렉토리에 있는 마크다운 문서로, 모든 AI 상호작용에 프로젝트 규칙을 주입합니다. 반복할 필요가 없습니다.
---
inclusion: always
---
# 프로젝트 규칙
- TypeScript strict 모드 사용
- 모든 엔드포인트에 입력 유효성 검사 필요
세 가지 포함 모드:
always — 모든 상호작용fileMatch — 활성 파일이 glob 패턴과 일치할 때manual — 채팅에서 / 명령어를 통해 참조OpenAPI 스펙, GraphQL 스키마 또는 모든 프로젝트 문서에 연결하기 위해 #[[file:path]] 참조를 지원합니다.
.modo/hooks/ 디렉토리의 JSON 설정 파일로, 에이전트 생애주기 주변의 작업을 자동화합니다.
{
"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. 도구 사용 전 훅은 실행을 거부할 수 있습니다. 순환 종속성 감지 기능이 내장되어 있습니다.
상태 표시줄에 있는 알약 모양의 버튼으로, 자동 조종(Autopilot, 에이전트가 자율적으로 행동)과 감독(Supervised, 에이전트가 승인을 위해 일시 중지) 모드를 전환합니다. 편집, 터미널 명령어, MCP 도구에 대한 자동 승인 설정에 직접 연결됩니다.
여러 채팅 세션이 탭으로 표시됩니다. 각 세션은 고유한 스레드, 컨텍스트, 기록을 가집니다. 새 세션을 열고, 오래된 세션을 닫거나, 모두 동시에 실행할 수 있습니다. 검색 가능한 기록 패널에서 이전 대화를 찾을 수 있습니다.
자유로운 탐색을 위해 Vibe 모드로 세션을 시작하거나, 구조화된 개발을 위해 Spec 모드로 시작할 수 있습니다. Spec 모드에서는 프롬프트가 전체 요구사항 → 설계 → 작업 워크플로를 트리거합니다. 활성 사양의 내용이 LLM 시스템 프롬프트에 자동으로 주입됩니다.
독립적인 하위 작업을 위해 병렬 에이전트를 생성할 수 있습니다. 각 에이전트는 고유한 스레드와 도구 접근 권한을 가집니다. 상태를 추적하고, 실행 중인 작업을 취소하거나, 완료된 작업을 지울 수 있습니다.
문서, 스티어링 파일, MCP 설정을 묶은 설치 가능한 지식 패키지입니다. TypeScript, React, 테스팅, API 설계, Docker에 대한 내장 파워가 있습니다. 프롬프트의 키워드를 기반으로 활성화됩니다. URL에서 사용자 정의 파워를 설치할 수 있습니다.
사양(진행률 표시줄 및 작업 개수 포함), 에이전트 훅(이벤트 → 작업 흐름 표시), 스티어링(포함 모드 표시), 파워를 접을 수 있는 섹션으로 구성된 사이드바입니다.
채팅에서 /를 입력하여 수동 훅, 스티어링 파일, 내장 명령어(사양 생성, 작업 실행, 대화 내보내기, 워크스페이스 초기화)에 접근할 수 있습니다.
스티어링 파일과 활성 사양이 모든 LLM 상호작용에 자동으로 앞에 추가됩니다. 에이전트는 프로젝트 규칙을 따르며, 매번 알려주지 않아도 무엇을 구축하고 있는지 인지합니다.
틸 악센트가 있는 목적에 맞춰 제작된 "Modo Dark" 테마로, 조정된 구문 강조와 터미널 색상을 제공합니다.
각 응답 전에 Modo 아바타가 나타나며, 스트리밍 중에는 무작위 표정을 보여주고 완료 후에는 차분한 기본 표정을 보여줍니다.
사용자 정의 앱 아이콘, 창 제목, 워터마크 로고, 제품 아이덴티티, URL 프로토콜(modo://), 데이터 디렉토리(.modo-editor/). UI의 모든 Void 참조가 Modo로 대체되었습니다.
Modo: Initialize Workspace 명령어는 기본 스티어링 파일과 설정 템플릿으로 전체 .modo/ 디렉토리 구조를 생성합니다.
명령 팔레트에서 모든 대화를 마크다운으로 클립보드에 내보낼 수 있습니다.
Modo는 다음 프로젝트 없이 존재할 수 없었습니다.
| 프로젝트 | 제공 기능 |
|---|
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/ # 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/ # 틸 악센트가 있는 사용자 정의 다크 테마
이 프로젝트는 커뮤니티에서 유지보수합니다. 저는 학습 실험으로 만들었으며, 정해진 일정으로 적극적으로 유지보수하지는 않습니다. 수정하거나 추가할 사항이 있다면 포크하여 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/.
커밋 접근 권한을 원하는 진지한 기여자는 이슈를 열어주세요. 자세한 내용은 CONTRIBUTING.md를 참조하세요.
PR 환영합니다. MIT 라이선스입니다.
MIT
| 라이선스 |
|---|
| Void | AI 채팅, 인라인 편집, 자동 완성, 다중 제공자 LLM, 도구 사용, MCP, 적용 엔진 | MIT |
| VS Code | 편집기 코어, 확장 시스템, 터미널, 파일 시스템, 모든 하부 구조 | MIT |
| Roo Code | 개발 중 참고한 일부 패턴 | Apache 2.0 |
| 명령어 | 단축키 | 설명 |
|---|
| 사양 생성 | Cmd+Shift+S | 새 사양 (기능/버그 수정, 요구사항 우선/설계 우선) |
| 다음 작업 실행 | — | 다음 보류 중인 사양 작업 실행 |
| 모든 작업 실행 | — | 남은 모든 작업 실행 |
| 사양 파일 열기 | — | 요구사항, 설계, 작업 파일을 편집기에서 열기 |
| 사양 컨텍스트 주입 | — | 사양 컨텍스트를 채팅에 로드 |
| 사양 다시 로드 | — | 사양 파일을 디스크에서 다시 읽기 |
| 워크스페이스 초기화 | — | .modo/ 디렉토리 구조 생성 |
| 슬래시 명령어 | — | / 명령어 선택기 열기 |
| 대화 내보내기 | — | 채팅을 마크다운으로 복사 |
| 자동 조종 전환 | — | 자동 조종 / 감독 전환 |
| 채팅 열기 | Cmd+L | 채팅 패널에 포커스 |
| 인라인 편집 | Cmd+K | 코드를 인라인에서 AI로 편집 |