
一、从一个熟悉的痛点说起
写 Java 的人大概都有过这样的体验:项目还没跑起来,IntelliJ IDEA 已经先吃掉一大块内存;再开上浏览器、Docker 和几个终端,笔记本风扇立刻开始忙碌。JetBrains 甚至专门在官方文档里留了一页教你"如何增加 IDE 的内存堆",还贴心提醒你在垃圾回收后空闲堆内存低于 5% 时会收到警告——某种意义上,这已经默认了"重"是常态。
过去我们没什么好纠结的:写 Java 基本离不开 IDEA,重一点也认了。但最近一两年,情况开始变化。一个名为 Lithe-IDEA 的开源项目(Apache 2.0 协议,GitHub 上已获数百 Star),尝试给出一个不同的答案:做一款对标 IDEA 的轻量替代品,面向 Java 和 Spring Boot 开发者,保留高频工作流,把不常用的服务改成按需启动。
二、为什么"轻量 IDE"突然有了生存空间
Lithe 项目 README 里有一句话点破了整个设计动机:
AI 负责编写代码,Lithe 负责帮你看懂、跑通并审查修改。
这背后是开发流程的一次结构性转移。回顾 AI 编程工具的演进,大致可以分成几个阶段:早期的自动补全解决的是"打字快"的问题;后来的聊天面板解决的是"理解代码"的问题;而 Claude Code、Codex 这类终端 Agent 的崛起,则让 AI 开始自己读代码、跑测试、改文件、提交——人只在关键节点说"对"或"不对"。编辑器还是那个编辑器,但干活的主角换了。
当实现工作可以交给 Agent 之后,我们打开 IDE 的理由就只剩下这几件事:看懂改动、跳转源码、运行项目、打断点、审 Git Diff。为了这些操作常驻一整套重量级开发环境,确实有点浪费。Lithe 瞄准的正是这个缝隙。
三、Lithe 的架构:不是 IDEA 的裁剪版
需要强调的是,Lithe 不是基于 IntelliJ Platform 裁剪出来的分支,而是完全另起炉灶:
- macOS(当前参考版本):SwiftUI + AppKit 构建原生工作台
- Windows:独立的 React + Tauri 2 实现
- 共享层:两端通过 Rust Core 共享命令和数据契约
#mermaid-svg-uWa8lZCZCyhvIAJA{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-uWa8lZCZCyhvIAJA .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-uWa8lZCZCyhvIAJA .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-uWa8lZCZCyhvIAJA .error-icon{fill:#552222;}#mermaid-svg-uWa8lZCZCyhvIAJA .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-uWa8lZCZCyhvIAJA .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-uWa8lZCZCyhvIAJA .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-uWa8lZCZCyhvIAJA .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-uWa8lZCZCyhvIAJA .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-uWa8lZCZCyhvIAJA .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-uWa8lZCZCyhvIAJA .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-uWa8lZCZCyhvIAJA .marker{fill:#333333;stroke:#333333;}#mermaid-svg-uWa8lZCZCyhvIAJA .marker.cross{stroke:#333333;}#mermaid-svg-uWa8lZCZCyhvIAJA svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-uWa8lZCZCyhvIAJA p{margin:0;}#mermaid-svg-uWa8lZCZCyhvIAJA .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-uWa8lZCZCyhvIAJA .cluster-label text{fill:#333;}#mermaid-svg-uWa8lZCZCyhvIAJA .cluster-label span{color:#333;}#mermaid-svg-uWa8lZCZCyhvIAJA .cluster-label span p{background-color:transparent;}#mermaid-svg-uWa8lZCZCyhvIAJA .label text,#mermaid-svg-uWa8lZCZCyhvIAJA span{fill:#333;color:#333;}#mermaid-svg-uWa8lZCZCyhvIAJA .node rect,#mermaid-svg-uWa8lZCZCyhvIAJA .node circle,#mermaid-svg-uWa8lZCZCyhvIAJA .node ellipse,#mermaid-svg-uWa8lZCZCyhvIAJA .node polygon,#mermaid-svg-uWa8lZCZCyhvIAJA .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-uWa8lZCZCyhvIAJA .rough-node .label text,#mermaid-svg-uWa8lZCZCyhvIAJA .node .label text,#mermaid-svg-uWa8lZCZCyhvIAJA .image-shape .label,#mermaid-svg-uWa8lZCZCyhvIAJA .icon-shape .label{text-anchor:middle;}#mermaid-svg-uWa8lZCZCyhvIAJA .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-uWa8lZCZCyhvIAJA .rough-node .label,#mermaid-svg-uWa8lZCZCyhvIAJA .node .label,#mermaid-svg-uWa8lZCZCyhvIAJA .image-shape .label,#mermaid-svg-uWa8lZCZCyhvIAJA .icon-shape .label{text-align:center;}#mermaid-svg-uWa8lZCZCyhvIAJA .node.clickable{cursor:pointer;}#mermaid-svg-uWa8lZCZCyhvIAJA .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-uWa8lZCZCyhvIAJA .arrowheadPath{fill:#333333;}#mermaid-svg-uWa8lZCZCyhvIAJA .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-uWa8lZCZCyhvIAJA .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-uWa8lZCZCyhvIAJA .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-uWa8lZCZCyhvIAJA .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-uWa8lZCZCyhvIAJA .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-uWa8lZCZCyhvIAJA .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-uWa8lZCZCyhvIAJA .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-uWa8lZCZCyhvIAJA .cluster text{fill:#333;}#mermaid-svg-uWa8lZCZCyhvIAJA .cluster span{color:#333;}#mermaid-svg-uWa8lZCZCyhvIAJA div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-uWa8lZCZCyhvIAJA .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-uWa8lZCZCyhvIAJA rect.text{fill:none;stroke-width:0;}#mermaid-svg-uWa8lZCZCyhvIAJA .icon-shape,#mermaid-svg-uWa8lZCZCyhvIAJA .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-uWa8lZCZCyhvIAJA .icon-shape p,#mermaid-svg-uWa8lZCZCyhvIAJA .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-uWa8lZCZCyhvIAJA .icon-shape rect,#mermaid-svg-uWa8lZCZCyhvIAJA .image-shape rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-uWa8lZCZCyhvIAJA .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-uWa8lZCZCyhvIAJA .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-uWa8lZCZCyhvIAJA :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}#mermaid-svg-uWa8lZCZCyhvIAJA .mac>*{fill:#3498db!important;stroke:#2471a3!important;color:#fff!important;}#mermaid-svg-uWa8lZCZCyhvIAJA .mac span{fill:#3498db!important;stroke:#2471a3!important;color:#fff!important;}#mermaid-svg-uWa8lZCZCyhvIAJA .mac tspan{fill:#fff!important;}#mermaid-svg-uWa8lZCZCyhvIAJA .win>*{fill:#16a085!important;stroke:#0e6655!important;color:#fff!important;}#mermaid-svg-uWa8lZCZCyhvIAJA .win span{fill:#16a085!important;stroke:#0e6655!important;color:#fff!important;}#mermaid-svg-uWa8lZCZCyhvIAJA .win tspan{fill:#fff!important;}#mermaid-svg-uWa8lZCZCyhvIAJA .core>*{fill:#e67e22!important;stroke:#a04000!important;color:#fff!important;}#mermaid-svg-uWa8lZCZCyhvIAJA .core span{fill:#e67e22!important;stroke:#a04000!important;color:#fff!important;}#mermaid-svg-uWa8lZCZCyhvIAJA .core tspan{fill:#fff!important;}#mermaid-svg-uWa8lZCZCyhvIAJA .svc>*{fill:#f5f5f5!important;stroke:#95a5a6!important;color:#2c3e50!important;stroke-dasharray:4 3!important;}#mermaid-svg-uWa8lZCZCyhvIAJA .svc span{fill:#f5f5f5!important;stroke:#95a5a6!important;color:#2c3e50!important;stroke-dasharray:4 3!important;}#mermaid-svg-uWa8lZCZCyhvIAJA .svc tspan{fill:#2c3e50!important;}
按需启动的服务
共享核心
Windows 预览版
macOS 参考版本
按需拉起
按需拉起
按需拉起
按需拉起
SwiftUI + AppKit原生工作台
React + Tauri 2跨平台实现
Rust Core命令与数据契约
Eclipse JDTLanguage Server
终端 / 构建工具
调试器
数据库组件
内存控制的关键在于"按需启动":编辑器先打开,语言服务器、终端、构建工具、调试器和数据库能力用到时才启动。Lithe 内置了一套不依赖 LSP 进程的轻量补全和当前文件导航,日常浏览代码几乎零成本;只有当你需要完整补全、悬浮提示和语义跳转时,才拉起 Eclipse JDT Language Server,且不同语言的服务可以单独开关。
官方给出的数据是:打开普通项目后,应用基础内存占用约 300~400 MB。当然这不是固定上限——服务启动后,实际占用仍会随项目规模和使用方式往上走。
#mermaid-svg-5sd7DTjDB6OFhab4{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-5sd7DTjDB6OFhab4 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-5sd7DTjDB6OFhab4 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-5sd7DTjDB6OFhab4 .error-icon{fill:#552222;}#mermaid-svg-5sd7DTjDB6OFhab4 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-5sd7DTjDB6OFhab4 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-5sd7DTjDB6OFhab4 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-5sd7DTjDB6OFhab4 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-5sd7DTjDB6OFhab4 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-5sd7DTjDB6OFhab4 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-5sd7DTjDB6OFhab4 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-5sd7DTjDB6OFhab4 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-5sd7DTjDB6OFhab4 .marker.cross{stroke:#333333;}#mermaid-svg-5sd7DTjDB6OFhab4 svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-5sd7DTjDB6OFhab4 p{margin:0;}#mermaid-svg-5sd7DTjDB6OFhab4 .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-5sd7DTjDB6OFhab4 .cluster-label text{fill:#333;}#mermaid-svg-5sd7DTjDB6OFhab4 .cluster-label span{color:#333;}#mermaid-svg-5sd7DTjDB6OFhab4 .cluster-label span p{background-color:transparent;}#mermaid-svg-5sd7DTjDB6OFhab4 .label text,#mermaid-svg-5sd7DTjDB6OFhab4 span{fill:#333;color:#333;}#mermaid-svg-5sd7DTjDB6OFhab4 .node rect,#mermaid-svg-5sd7DTjDB6OFhab4 .node circle,#mermaid-svg-5sd7DTjDB6OFhab4 .node ellipse,#mermaid-svg-5sd7DTjDB6OFhab4 .node polygon,#mermaid-svg-5sd7DTjDB6OFhab4 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-5sd7DTjDB6OFhab4 .rough-node .label text,#mermaid-svg-5sd7DTjDB6OFhab4 .node .label text,#mermaid-svg-5sd7DTjDB6OFhab4 .image-shape .label,#mermaid-svg-5sd7DTjDB6OFhab4 .icon-shape .label{text-anchor:middle;}#mermaid-svg-5sd7DTjDB6OFhab4 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-5sd7DTjDB6OFhab4 .rough-node .label,#mermaid-svg-5sd7DTjDB6OFhab4 .node .label,#mermaid-svg-5sd7DTjDB6OFhab4 .image-shape .label,#mermaid-svg-5sd7DTjDB6OFhab4 .icon-shape .label{text-align:center;}#mermaid-svg-5sd7DTjDB6OFhab4 .node.clickable{cursor:pointer;}#mermaid-svg-5sd7DTjDB6OFhab4 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-5sd7DTjDB6OFhab4 .arrowheadPath{fill:#333333;}#mermaid-svg-5sd7DTjDB6OFhab4 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-5sd7DTjDB6OFhab4 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-5sd7DTjDB6OFhab4 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-5sd7DTjDB6OFhab4 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-5sd7DTjDB6OFhab4 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-5sd7DTjDB6OFhab4 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-5sd7DTjDB6OFhab4 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-5sd7DTjDB6OFhab4 .cluster text{fill:#333;}#mermaid-svg-5sd7DTjDB6OFhab4 .cluster span{color:#333;}#mermaid-svg-5sd7DTjDB6OFhab4 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-5sd7DTjDB6OFhab4 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-5sd7DTjDB6OFhab4 rect.text{fill:none;stroke-width:0;}#mermaid-svg-5sd7DTjDB6OFhab4 .icon-shape,#mermaid-svg-5sd7DTjDB6OFhab4 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-5sd7DTjDB6OFhab4 .icon-shape p,#mermaid-svg-5sd7DTjDB6OFhab4 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-5sd7DTjDB6OFhab4 .icon-shape rect,#mermaid-svg-5sd7DTjDB6OFhab4 .image-shape rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-5sd7DTjDB6OFhab4 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-5sd7DTjDB6OFhab4 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-5sd7DTjDB6OFhab4 :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}#mermaid-svg-5sd7DTjDB6OFhab4 .base>*{fill:#27ae60!important;stroke:#1e8449!important;color:#fff!important;}#mermaid-svg-5sd7DTjDB6OFhab4 .base span{fill:#27ae60!important;stroke:#1e8449!important;color:#fff!important;}#mermaid-svg-5sd7DTjDB6OFhab4 .base tspan{fill:#fff!important;}#mermaid-svg-5sd7DTjDB6OFhab4 .lazy>*{fill:#fdf2e9!important;stroke:#e67e22!important;color:#7e5109!important;}#mermaid-svg-5sd7DTjDB6OFhab4 .lazy span{fill:#fdf2e9!important;stroke:#e67e22!important;color:#7e5109!important;}#mermaid-svg-5sd7DTjDB6OFhab4 .lazy tspan{fill:#7e5109!important;}
需要语义跳转
点击运行
打断点
执行 SQL
打开控制台
打开项目编辑器就绪≈300~400 MB
启动 JDTLS完整补全 / 悬浮提示
启动构建工具Maven / Gradle
启动调试器
启动数据库组件
启动终端
四、功能盘点:高频操作一个不少
Lithe 的取舍逻辑很清晰——只做开发者每天都在碰的事。
搜索与导航:双击 Shift 打开全局搜索(文件、类、符号、操作、文本),Command + Shift + F 项目级搜索并支持全局替换。多行编辑器标签也保留了,文件多时不用在一条横向标签栏里来回挤。习惯 IDEA 的人几乎零学习成本。
运行与调试:导入项目后自动识别可运行入口,覆盖 Spring Boot、Java、Maven、Gradle、npm、Cargo、Go、Python、Make、Docker Compose、Procfile 和 Shell。Maven 管理、断点调试、自定义启动配置都在。官方截图里,一个 Spring Boot 项目被识别后可直接选择入口运行,并在下方查看进程输出。
Git 审查(这是 AI 时代的重头戏):Agent 一次改十几个文件,代码生成很快,逐个确认它有没有碰到不该动的地方反而更花时间。Lithe 提供 Git 文件列表、暂存区、左右双栏 Diff,可搜索改动、折叠未变化代码、行内查看增删内容;本地历史用于找回还没提交到 Git 的修改;提交前还能调用 AI 生成 Commit Message 并自定义格式——当然,生成结果不代替审查,采不采用还是得看完 Diff 再决定。
数据库工作台:内置多数据库连接管理、表浏览、SQL 执行和查询历史,SQLite、Redis 可以放在同一工作区。对 Spring Boot 开发者来说,改完 Repository 或 SQL 不用再单独开一个数据库客户端确认数据。
#mermaid-svg-lkSXxN1y7ZXrMwdR{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-lkSXxN1y7ZXrMwdR .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-lkSXxN1y7ZXrMwdR .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-lkSXxN1y7ZXrMwdR .error-icon{fill:#552222;}#mermaid-svg-lkSXxN1y7ZXrMwdR .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-lkSXxN1y7ZXrMwdR .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-lkSXxN1y7ZXrMwdR .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-lkSXxN1y7ZXrMwdR .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-lkSXxN1y7ZXrMwdR .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-lkSXxN1y7ZXrMwdR .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-lkSXxN1y7ZXrMwdR .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-lkSXxN1y7ZXrMwdR .marker{fill:#333333;stroke:#333333;}#mermaid-svg-lkSXxN1y7ZXrMwdR .marker.cross{stroke:#333333;}#mermaid-svg-lkSXxN1y7ZXrMwdR svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-lkSXxN1y7ZXrMwdR p{margin:0;}#mermaid-svg-lkSXxN1y7ZXrMwdR .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-lkSXxN1y7ZXrMwdR .cluster-label text{fill:#333;}#mermaid-svg-lkSXxN1y7ZXrMwdR .cluster-label span{color:#333;}#mermaid-svg-lkSXxN1y7ZXrMwdR .cluster-label span p{background-color:transparent;}#mermaid-svg-lkSXxN1y7ZXrMwdR .label text,#mermaid-svg-lkSXxN1y7ZXrMwdR span{fill:#333;color:#333;}#mermaid-svg-lkSXxN1y7ZXrMwdR .node rect,#mermaid-svg-lkSXxN1y7ZXrMwdR .node circle,#mermaid-svg-lkSXxN1y7ZXrMwdR .node ellipse,#mermaid-svg-lkSXxN1y7ZXrMwdR .node polygon,#mermaid-svg-lkSXxN1y7ZXrMwdR .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-lkSXxN1y7ZXrMwdR .rough-node .label text,#mermaid-svg-lkSXxN1y7ZXrMwdR .node .label text,#mermaid-svg-lkSXxN1y7ZXrMwdR .image-shape .label,#mermaid-svg-lkSXxN1y7ZXrMwdR .icon-shape .label{text-anchor:middle;}#mermaid-svg-lkSXxN1y7ZXrMwdR .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-lkSXxN1y7ZXrMwdR .rough-node .label,#mermaid-svg-lkSXxN1y7ZXrMwdR .node .label,#mermaid-svg-lkSXxN1y7ZXrMwdR .image-shape .label,#mermaid-svg-lkSXxN1y7ZXrMwdR .icon-shape .label{text-align:center;}#mermaid-svg-lkSXxN1y7ZXrMwdR .node.clickable{cursor:pointer;}#mermaid-svg-lkSXxN1y7ZXrMwdR .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-lkSXxN1y7ZXrMwdR .arrowheadPath{fill:#333333;}#mermaid-svg-lkSXxN1y7ZXrMwdR .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-lkSXxN1y7ZXrMwdR .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-lkSXxN1y7ZXrMwdR .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-lkSXxN1y7ZXrMwdR .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-lkSXxN1y7ZXrMwdR .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-lkSXxN1y7ZXrMwdR .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-lkSXxN1y7ZXrMwdR .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-lkSXxN1y7ZXrMwdR .cluster text{fill:#333;}#mermaid-svg-lkSXxN1y7ZXrMwdR .cluster span{color:#333;}#mermaid-svg-lkSXxN1y7ZXrMwdR div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-lkSXxN1y7ZXrMwdR .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-lkSXxN1y7ZXrMwdR rect.text{fill:none;stroke-width:0;}#mermaid-svg-lkSXxN1y7ZXrMwdR .icon-shape,#mermaid-svg-lkSXxN1y7ZXrMwdR .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-lkSXxN1y7ZXrMwdR .icon-shape p,#mermaid-svg-lkSXxN1y7ZXrMwdR .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-lkSXxN1y7ZXrMwdR .icon-shape rect,#mermaid-svg-lkSXxN1y7ZXrMwdR .image-shape rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-lkSXxN1y7ZXrMwdR .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-lkSXxN1y7ZXrMwdR .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-lkSXxN1y7ZXrMwdR :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}#mermaid-svg-lkSXxN1y7ZXrMwdR .ai>*{fill:#8e44ad!important;stroke:#5b2c6f!important;color:#fff!important;}#mermaid-svg-lkSXxN1y7ZXrMwdR .ai span{fill:#8e44ad!important;stroke:#5b2c6f!important;color:#fff!important;}#mermaid-svg-lkSXxN1y7ZXrMwdR .ai tspan{fill:#fff!important;}#mermaid-svg-lkSXxN1y7ZXrMwdR .ide>*{fill:#ebf5fb!important;stroke:#2980b9!important;color:#1a5276!important;}#mermaid-svg-lkSXxN1y7ZXrMwdR .ide span{fill:#ebf5fb!important;stroke:#2980b9!important;color:#1a5276!important;}#mermaid-svg-lkSXxN1y7ZXrMwdR .ide tspan{fill:#1a5276!important;}#mermaid-svg-lkSXxN1y7ZXrMwdR .repo>*{fill:#2c3e50!important;stroke:#17202a!important;color:#fff!important;}#mermaid-svg-lkSXxN1y7ZXrMwdR .repo span{fill:#2c3e50!important;stroke:#17202a!important;color:#fff!important;}#mermaid-svg-lkSXxN1y7ZXrMwdR .repo tspan{fill:#fff!important;}
Lithe IDE 层
AI Agent 层
改了十几个文件
人工确认后提交
Codex / Claude Code批量生成与修改代码
浏览与搜索看懂改动
运行与调试跑通验证
Git Diff + 本地历史审查修改
AI Commit Message提交收尾
代码仓库
五、安装与现状
最新版本 v0.3.5。macOS 需要 13 或更高版本,Apple 芯片和 Intel 芯片各有 DMG,推荐用 Homebrew 安装:
brew tap 1lck/lithe https://github.com/1lck/Lithe-IDEA.git
brew install –cask 1lck/lithe/lithe
后续升级执行 brew update 和 brew upgrade –cask lithe 即可。Java 功能要求 JDK 17 及以上,安装包已内置 JDTLS,无需额外配置。Windows 目前只有 x64 预览版,安装程序在未配置 Authenticode 证书时可能缺少数字签名,会触发系统安全提示,部分平台能力和界面细节也和 macOS 版有差距。
清醒的预期管理同样重要:这不是 JetBrains 官方产品,当前文档没有承诺兼容 IntelliJ 插件,更没有覆盖 IDEA 的全部高级能力;它本质上是一个个人项目,功能不完善、有体验问题是常态。原文作者的态度我很认同——个人做到这个程度已经非常厉害,这也是值得分享的原因,但用之前不要抱有太高期待。
六、写在最后:谁适合试试 Lithe
一个简单的判断标准:
- 不适合:高度依赖 IDEA Ultimate、复杂重构、Profiler 或大量 JetBrains 插件的重度用户——这些能力 Lithe 目前没有,短期内也不太可能有。
- 值得试试:日常开发以 Spring Boot 为主、经常让 Coding Agent 批量改代码、又被 IDEA 内存占用折磨的开发者。至少在"打开项目、跑起来、检查 Diff"这条链路上,Lithe 已经把最常用的部分接起来了。
更宏观地看,Lithe 的意义可能不在工具本身,而在于它验证了一个正在成型的分工模式:Agent 成为编码入口,IDE 退居为理解、验证与审查的工作台。当写代码的主角换了,围绕新主角重新做取舍的工具才刚刚开始出现。你可以把 Lithe 看作一款围绕 AI 编程重新做取舍的 Java IDE:代码交给 Codex 或 Claude Code 生成,Lithe 负责浏览、搜索、运行、调试和审查。它只是一个略显粗糙、但方向清晰的注脚。
项目地址:github.com/1lck/Lithe-IDEA





