精选网络安全学习资源、CTF题解、研究论文及实战实验室,覆盖Web安全、漏洞利用、开源情报和取证分析,助力动手技能提升。
开源的 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/<名称>/ 目录下,包含三个 markdown 文件:
.modo/specs/auth-flow/
├── requirements.md # 用户故事、验收标准
├── design.md # 架构、组件、数据模型
└── tasks.md # 实施步骤清单
使用 Cmd+Shift+S 或在会话选择器中选择规范模式来创建。选择功能或缺陷修复,然后选择需求优先或设计优先的工作流。Agent 会填充每个文档,你进行审查,然后它逐个执行任务——一边执行一边标记完成。
任务会持久化到磁盘。关闭 IDE,回来,从上次停下的地方继续。
打开任何 tasks.md 文件,每个待处理任务旁边都会出现一个可点击的 "▶ 运行任务" 按钮。顶部还会出现一个 "运行所有待处理任务" 按钮。运行中的任务显示旋转图标,已完成的任务显示对勾。Agent 会随着工作进度将 - [ ] → - [~] → - [x] 进行标记。
位于 .modo/steering/ 下的 Markdown 文档,将项目规则注入到每次 AI 交互中——无需重复说明。
---
inclusion: always
---
# 项目规则
- 使用 TypeScript 严格模式
- 所有端点都需要输入验证
三种包含模式:
always — 每次交互fileMatch — 当活动文件匹配 glob 模式时manual — 通过聊天中的 / 命令引用支持 #[[file:path]] 引用,链接 OpenAPI 规范、GraphQL 模式或项目中的任何文档。
位于 .modo/hooks/ 下的 JSON 配置文件,用于在 Agent 生命周期周围自动化操作。
{
"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。预工具钩子可以拒绝执行。内置循环依赖检测。
状态栏上的一个药丸形按钮,可在自动驾驶(Agent 自主行动)和监督(Agent 暂停等待批准)之间切换。直接连接到编辑、终端命令和 MCP 工具的自动批准设置。
多个聊天会话以标签页形式存在。每个会话都有自己的线程、上下文和历史。可以打开新会话,关闭旧会话,或者同时运行所有会话。可搜索的历史面板可以让你找到过去的对话。
在氛围模式下启动会话以进行自由探索,或在规范模式下启动以进行结构化开发。在规范模式下,你的提示会触发完整的 需求 → 设计 → 任务 工作流。活动规范的内容会自动注入到 LLM 系统提示中。
生成并行 Agent 用于独立的子任务。每个子 Agent 都有自己的线程和工具访问权限。可以跟踪状态、取消运行中的任务或清除已完成的任务。
可安装的知识包,捆绑了文档、引导文件和 MCP 配置。内置的能力包涵盖 TypeScript、React、测试、API 设计和 Docker。根据提示中的关键词自动激活。可以从 URL 安装自定义能力包。
侧边栏包含可折叠的分区,分别用于规范(带有进度条和任务计数)、Agent 钩子(显示事件→动作流程)、引导(显示包含模式)和能力包。
在聊天中输入 / 以访问手动钩子、引导文件和内置命令:创建规范、运行任务、导出对话、初始化工作区。
引导文件和活动规范会自动预置到每次 LLM 交互中。Agent 遵循你的项目规则,并且知道自己要构建什么,无需每次被告知。
专门构建的 "Modo Dark" 主题,带有青色强调色、调优的语法高亮和终端颜色。
每次响应之前会出现一个 Modo 头像,在流式输出时随机展示表情,输出完成后显示平静的默认表情。
自定义应用图标、窗口标题、水印标志、产品标识、URL 协议(modo://)和数据目录(.modo-editor/)。UI 中所有对 Void 的引用都已替换为 Modo 对应的内容。
Modo: 初始化工作区 会创建完整的 .modo/ 目录结构,包含默认的引导文件和配置模板。
从命令面板将任何对话以 Markdown 格式复制到剪贴板。
如果没有这些项目,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/ # 每个项目的配置(由 "初始化工作区" 创建)
├── steering/ # 注入到 AI 上下文的 markdown 规则
├── specs/ # 结构化功能/缺陷修复工作流
├── hooks/ # JSON 事件 → 动作自动化
└── settings/ # MCP 和其他配置
src/vs/workbench/contrib/void/
├── common/
│ ├── modoSpecService.ts # 规范的 CRUD、任务解析、上下文构建
│ ├── modoSteeringService.ts # 引导文件加载、前置元数据解析、上下文组装
│ ├── modoHookService.ts # 钩子加载、验证、事件匹配、触发
│ ├── modoPowersService.ts # 能力包注册、激活、关键词匹配
│ └── modoSubagentService.ts # 并行 Agent 创建与生命周期管理
├── browser/
│ ├── modoExplorerPane.ts # 规范、钩子、引导、能力包的侧边栏视图
│ ├── modoSpecActions.ts # 创建规范、运行任务、打开文件命令
│ ├── modoTaskCodeLens.ts # tasks.md 中的内联"运行任务"/"完成"按钮
│ ├── modoSlashCommands.ts # / 命令选择器、导出、会话管理
│ ├── modoStatusBar.ts # 自动驾驶切换、活动规范指示器
│ ├── modoHookWiring.ts # 文件变更事件 → 钩子系统
│ └── react/src/
│ ├── sidebar-tsx/ # 会话标签页、历史、氛围/规范模式、自动驾驶开关
│ ├── modo-spec-panel/ # 规范管理的 React UI
│ └── modo-hooks-panel/ # 钩子管理的 React UI
└── extensions/
└── modo-theme/ # 带有青色强调色的自定义深色主题
本项目由社区维护。我构建它是作为学习实验——我没有按计划积极维护它。如果你想要修复或添加功能,最好的方式是 fork 并提交 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
| Void | AI 对话、内联编辑、自动补全、多提供商 LLM、工具调用、MCP、应用引擎 | MIT |
| VS Code | 编辑器核心、扩展系统、终端、文件系统、所有底层功能 | MIT |
| Roo Code | 开发过程中参考了一些模式 | Apache 2.0 |
| 命令 | 快捷键 | 描述 |
|---|
| 创建规范 | Cmd+Shift+S | 新规范(功能/缺陷修复,需求优先/设计优先) |
| 运行下一个任务 | — | 执行下一个待处理的规范任务 |
| 运行所有任务 | — | 执行所有剩余任务 |
| 打开规范文件 | — | 在编辑器中打开需求、设计、任务文件 |
| 注入规范上下文 | — | 将规范上下文加载到聊天中 |
| 重新加载规范 | — | 从磁盘重新读取规范文件 |
| 初始化工作区 | — | 创建 .modo/ 目录结构 |
| 斜杠命令 | — | 打开 / 命令选择器 |
| 导出对话 | — | 将聊天内容复制为 Markdown |
| 切换自动驾驶 | — | 切换自动驾驶/监督模式 |
| 打开聊天 | Cmd+L | 聚焦聊天面板 |
| 内联编辑 | Cmd+K | 使用 AI 内联编辑代码 |