OpenIDEA:用 Rust 做 IntelliJ 风格桌面 IDE,GitHub 257 Star
JetBrains 系 IDE 的启动和内存占用,是 OpenIDEA 要换掉的那一层:keymap、工具窗口、Search Everywhere 这些操作习惯留着,核心用 Rust 写,外面是原生桌面窗口。README 列出的能力包括编辑器、代码洞察、调试器、Git、终端、数据库客户端和 HTTP 客户端,安装包覆盖 macOS、Windows 和 Linux。
2026-10-28 查 GitHub API:Star 257,Fork 21,默认分支
main可见 commit 151。最新 Release v0.1.18,发布于 2026-10-27 22:20(北京时间)。仓库创建于 2026-10-21,创建时间不等于公开发布时间。
1. 对照的是一次热缓存打开
README 用 freqtrade(Python,约 770 个文件)做对比:热缓存,5 次取中位数。OpenIDEA 取 main 的 release 构建,对照物是 IntelliJ IDEA 2026.2.3 的默认设置和插件,机器为 Windows 11、32 核 AMD、62 GB 内存。作者写明 IDEA 对 Python 分析得更深,两边的 “ready” 不是同一份工作;测量都从进程外部进行,脚本在 perf/compare。
指标 | OpenIDEA | IntelliJ IDEA 2026.2.3 |
|---|---|---|
项目窗口出现 | 0.9 秒 | 3.1 秒 |
Ready(CPU 平稳) | 1.1 秒 | 13.2 秒 |
内存(USS,全部进程) | 169 MB | 2011 MB |
到 Ready 的 CPU 时间 | 2.4 秒 | 47.9 秒 |
空闲 CPU | 单核的 4% | 单核的 7% |
退出 | 0.3 秒 | 5.9 秒 |
这组数字来自仓库 README,本文没有在本机重跑。
2. 语言定义和语言服务是分开配的
languages/ 里有 72 个 toml。README 写的是 60+ languages。这些文件并不等于 72 种语言都有同一深度的补全和调试:其中包含 plaintext、diff、log、http、ignore 这类定义。
抽两个能对上实现的例子。languages/python.toml 把高亮交给 tree-sitter 的 python,语言服务写了 basedpyright 和 pyright,并给出 pip install basedpyright 这类安装提示。languages/java.toml 的调试段指向 Microsoft java-debug,注释写明调试会话从 jdtls 里启动。v0.1.18 的更新说明里有一条:jdtls 改为直接在 JVM 上启动,并把协议外的服务端输出报出来。
main 上比 v0.1.18 更晚的一笔提交是 feat(lsp): Configure language servers and add servers of one's own(#108),提交时间 2026-10-28 03:40(北京时间)。v0.1.18 的 Release 说明还没有这条,装最新安装包不等于拿到 main 上的这项。
3. 调试、Git、终端、数据库和 HTTP 各有一个 crate
工作区按功能拆 crate,版本号都跟 workspace 的 0.1.18 走。和 README 对得上的几块:
ide-dap:Debug Adapter Protocol 客户端,描述写了会话、断点、线程、栈帧、变量和求值。ide-vcs:版本控制。v0.1.18 里,Git Log 双击可在日志视图之间切换,Cmd/Ctrl+C 复制分支名;从某次提交的文件可以 Jump to Source。ide-terminal:终端。前端依赖@xterm/xterm6。ide-db:数据库工具,crate 描述是数据源、连接、内省、执行查询和编辑表,依赖 sqlx。本文没有核到具体支持哪些数据库产品。ide-http:HTTP Client,处理.http文件、环境、执行和响应历史。v0.1.18 可以从 Spring Web 的映射生成 HTTP 请求。同一版还加了 Maven Dependency Analyzer,能看冲突、使用路径和 Exclude。
编辑器侧,v0.1.18 在 gutter 加了图标,用来在接口、实现和覆写之间跳转。大 diff 块和连续改动背景有一次修复。项目视图里,单击可以展开目录。
4. 插件是沙箱里的 WASM 组件
plugins/README.md 写明插件是 wasmtime 的 WebAssembly component(WASI preview 2),风格接近 Zed 的扩展。插件可以注册命令(进入 Search Everywhere,也能绑快捷键)、读项目文件、往编辑器插文本、发通知,以及贡献主题和语言。只贡献主题或语言时可以不带代码。
接口定义在 wit/plugin.wit,版本 openidea:plugin/plugin@0.1.0。示例包是带两个命令的 hello,以及只有清单的 language-toy。权限名包括 project-read、editor-read、editor-write。v0.1.18 另有主题预设:Solarized,以及 Atom One 的浅色和深色,来自贡献者 bghtyu 的首次 PR。
5. 功能与来源
能力 | 现在能对上的依据 |
|---|---|
IDEA 式 keymap、工具窗口、Search Everywhere | README |
72 个语言定义文件,高亮走 tree-sitter |
|
LSP 生命周期和文档同步 |
|
DAP 调试 |
|
Git |
|
终端 |
|
数据库客户端 |
|
HTTP 客户端 |
|
WASM 插件 |
|
桌面安装包 | v0.1.18 附件:macOS aarch64/x64 dmg,Windows x64 exe 与 msi,Linux x86_64 deb、rpm、AppImage |
许可 | Apache-2.0 |
仓库页脚写明与 JetBrains 无关联,IntelliJ IDEA 是 JetBrains s.r.o. 的商标。
6. 安装和本地开发
装现成的包,打开 Releases 最新版。v0.1.18 的附件是上面那一组桌面包,另外有 latest.json 和若干 .sig。没有看到 Linux aarch64 安装包。
从源码跑开发版,README 的命令是:
pnpm install
pnpm tauri devREADME 要求 Rust 1.96、Node 22、pnpm,以及 Tauri 前置条件。Cargo.toml 的 rust-version 同样是 "1.96",edition 为 2024。package.json 没有 engines 字段,Node 22 只出现在 README。
7. 作者
仓库属主是 GitHub 用户 l0ng-ai。2026-10-28 的用户 API 里,name、bio、company、location、个人网站都是空的。账号创建于 2016-12-25,公开仓库 23 个,followers 38。workspace 的 authors 写成 “OpenIDEA contributors”,没有个人履历。这里不把账号名推断成真实姓名。
提交数最高的是 l0ng-ai(138)。其余 6 个账号的提交数是 6、2、2、1、1、1。v0.1.18 的新贡献者是 bghtyu 和 itning。
8. 技术栈
层 | 选型 | 用途 | 版本怎么来的 |
|---|---|---|---|
核心语言 | Rust | workspace 里的 IDE crate |
|
界面语言 | TypeScript | 前端 | 开发依赖 |
界面 | React 19、CodeMirror 6 | 窗口和编辑器 |
|
终端控件 | xterm.js 6 | 终端视图 |
|
桌面壳 | Tauri 2 | 原生窗口 |
|
前端构建 | Vite 8、pnpm | 安装与打包前端 |
|
语言服务 | LSP( | 补全、诊断等 |
|
调试 | DAP | 断点与变量 |
|
数据库工具 | sqlx | 连接、内省、查询 |
|
HTTP | reqwest | 发请求 |
|
插件 | wasmtime component、WIT | 沙箱扩展 |
|
分发 | GitHub Releases | 桌面安装包 | tag |
9. 项目活跃度
查询时间:2026-10-28。
指标 | 数值 |
|---|---|
Star | 257 |
Fork | 21 |
Contributors | 7 |
累计 commit | 151 |
最近 commit 日期 | 2026-10-28 03:40(北京时间) |
开放 Issue | 4 |
开放 PR | 1 |
已合并 PR | 67 |
已关闭未合并 PR | 0 |
Release | 17 个;最新 v0.1.18,2026-10-27 22:20(北京时间) |
仓库创建于 2026-10-21 20:23(北京时间)。从创建到这次查询大约一周,Release 已经有 17 个,最近一次提交落在查询日凌晨,已合并 PR 67 个。这些是近期发版和合并的事实,不能据此说长期维护已经稳定。累计 commit 是默认分支上的可见总数,不是近一周的提交频率。接口里的 updated_at 没有当成最近代码提交时间。
10. 如何贡献
仓库根目录没有 CONTRIBUTING.md。下面只写已经能打开的入口,没有书面的分支模型和合并规则。
反馈:用 Issues。2026-10-28 有 4 个开放 Issue,标题是「插件」(两条)、「无法在菜单选择更新」、「代码比对」。已关闭 Issue 36 个。
讨论和改动范围:没有单独的贡献指南划定欢迎改什么。插件作者可以按
plugins/README.md做 WASM 组件或纯主题/语言包,那是插件说明,不是仓库的合并规则。提交 PR:打开 Pull requests。当前开放 1 个,已合并 67 个。没有写明必须跑哪条验证命令。
package.json里能看到的脚本包括pnpm test(vitest)、pnpm e2e(Playwright)和pnpm tauri dev。
11. 从哪里开始
许可:Apache-2.0。第三方素材清单在
THIRD_PARTY_LICENSES.md。
资料与使用说明
Star、Fork、仓库创建时间、
pushed_at、许可、默认分支,来自 2026-10-28 的GET /repos/l0ng-ai/openidea。Star 257 是累计总数,不是某一周期的新增。没有查询 GitHub Trending,标题不用「本月新增」。累计 commit 151 来自同一天
GET /repos/l0ng-ai/openidea/commits?per_page=1的 Link 头,rel="last"的页码是 151,对应默认分支。最近 commit 日期取该接口第一条的 committer 时间2026-10-27T19:40:18Z,换算成北京时间 2026-10-28 03:40。Contributors 提交数合计也是 151(138+6+2+2+1+1+1),两边一致,但口径仍以提交列表的 Link 为准。Contributors 为 7。接口是
GET /repos/l0ng-ai/openidea/contributors?per_page=100&anon=1,只有一页。7 个都是type=User,包含作者 l0ng-ai,返回里没有 Bot,也没有匿名贡献者。这个数按账号计,不等于维护团队人数,也不包括只开过 Issue、只参与讨论或只有未合并 PR 的人。开放 Issue 4、已关闭 Issue 36,来自 2026-10-28 的 Search API(
type:issue)。开放 PR 1、已关闭 PR 67 且全部带merged_at,来自GET /pulls?state=open|closed&per_page=100,两页都没有rel="next"。已关闭未合并按 0 计。Release 共 17 个,来自
GET /releases?per_page=20的列表长度(返回 17 条)。v0.1.18 的发布时间2026-10-27T14:20:36Z,北京时间 2026-10-27 22:20。安装包文件名来自该 Release 的 assets,本文没有下载安装。基准表转述 README,访问日期 2026-10-28。作者已经写了测试条件,以及 IDEA 侧 “ready” 工作量更重。不要把 169 MB / 1.1 秒理解成所有项目、所有平台上的结果。
main比 tagv0.1.18多至少一笔 #108(可配置语言服务)。功能描述若只出现在main的提交里,正文已单独标出,没有写成 v0.1.18 安装包已包含。Node 22 只在 README 的 Build 一节。Rust 1.96 同时出现在 README 和
Cargo.toml的rust-version。TypeScript ~6.0.3、Vite 8、React 19 是仓库自己的依赖版本,不是给使用者规定的最低版本。sqlx 只确认到ide-db的依赖声明,没有列出它打开了哪些数据库驱动 feature。没有
CONTRIBUTING.md,也没有官网(homepage为空)。本文没有把 Issue 模板或讨论区规则写成已经存在。与 JetBrains 的关系以仓库声明为准:Not affiliated with JetBrains。

成为第一条评论!
Nobody's responded to this post yet. Add your thoughts and get the conversation going.