📌 项目地址:jundot/omlx | ⭐ 15,439 颗星 | 🔧 Python | 📜 Apache-2.0
项目到底解决了什么问题
我试过不少本地的大模型服务器工具,它们有个共同的矛盾:要么方便但控制力弱,要么能精细控制但配置麻烦。oMLX的作者也遇到了同样的问题,他的解法是把KV缓存切成两阶——活跃的留在内存(热层),不活跃的写到SSD(冷层)。
简单说,聊到一半切去另一个对话,之前计算过的上下文不会丢。切回来后从SSD快速加载,不需要重头处理整段代码或长文本。这对需要反复分析同一份代码、或者在多个对话之间频繁切换的人,节省的是每次重复的注意力计算时间。
分层缓存的实际价值
标准做法是KV缓存全放内存,内存不够就放不下长上下文;或者每次对话切换都重新计算,浪费时间。oMLX的做法是:用同一个模型处理不同对话,或者中断后继续分析同一段代码,之前计算的中间结果不会丢弃。
作者的原话是:“persists KV cache across a hot in-memory tier and cold SSD tier – even when context changes mid-conversation, all past context stays cached and reusable across requests”。
举个例子:你用本地7B模型分析一个3000行的Python文件,查完了发现有个bug需要重头看另一个函数。没有分层缓存,你的Mac需要重新处理整个文件;有分层缓存,文件上下文还在SSD里,切回来时只需加载缓存。
菜单栏管理,内存控制
oMLX的macOS应用让你从菜单栏直接操作服务器和模型。你可以把常用的7B模型“钉”在内存里,用更大的模型时自动卸载和加载。还能在菜单栏调整上下文长度。
这个设计对16GB或32GB内存的Mac特别有用。不用每次切换模型都手动关服务、清缓存、再加载。内存不够的用户,可以主动控制哪个模型常驻,哪个用完就释放。
安装:三个选项的选择逻辑
macOS应用版(适合不想碰命令的人)
从Releases下载.dmg,拖到Applications文件夹。自带自动更新。应用会安装一个轻量CLI shim到~/.omlx/bin/omlx,这样终端和Apple Shortcuts也能控制服务器。
Homebrew(适合开发者)
brew tap jundot/omlx https://github.com/jundot/omlx
brew install omlx
# 升级
brew update && brew upgrade omlx
# 后台服务运行(崩溃自动重启)
omlx start
如果需要MCP(Model Context Protocol)支持:
/opt/homebrew/opt/omlx/libexec/bin/pip install mcp
源码安装(适合想自己改代码的人)
git clone https://github.com/jundot/omlx.git
cd omlx
pip install -e . # 仅核心功能
pip install -e ".[mcp]" # 带MCP
硬件要求:macOS 15.0+(Sequoia)、Python 3.10+、Apple Silicon(M1/M2/M3/M4)。Intel Mac不行。
启动与日常使用
macOS应用
启动后有Welcome引导,三步走:设置模型目录、启动服务器、下载第一个模型。服务器启动后,OpenClaw、OpenCode、Codex、Hermes Agent、Copilot等客户端都能连(oMLX对外提供OpenAI兼容API)。
CLI
后台服务:
omlx start
omlx stop
omlx restart
前台终端调试:
omlx serve --model-dir ~/models
服务器启动后:
- API端点:
http://localhost:8000/v1 - 内置聊天界面:
http://localhost:8000/admin/chat
模型放在~/models的子目录里,每个模型一个子目录。oMLX自动识别LLM、视觉语言模型、embedding模型和reranker。
Homebrew服务管理
brew services start omlx # 启动(崩溃自启)
brew services stop omlx
brew services restart omlx
brew services info omlx # 检查状态
日志默认在/opt/homebrew/var/log/omlx.log。
谁适合谁不适合
适合:
- 经常用本地LLM分析长代码的开发者。分层缓存让同一份代码的多次分析不重算上下文,切换对话分支后,之前的缓存还能用。
- 内存16GB或32GB,又想跑多个不同模型的人。菜单栏固定小模型常驻,大模型随用随换。
- 用Claude Code之类的工具做实际编码工作的人。作者的原话是“making local LLMs practical for real coding work with tools like Claude Code”。
不适合:
- 只跑单个小模型(如3B/7B),一次只聊一个话题。分层缓存的优势不明显。
- Intel Mac用户。无法使用。
几点注意
- macOS应用自带的CLI shim功能有限(只支持start/stop/restart),完整命令行体验建议Homebrew或源码安装。
- 模型目录没有固定结构,每个模型放一个子目录即可,oMLX自动识别。
- Homebrew服务首次启动需手动
brew services start omlx,之后崩溃会自启。 - 连续批处理机制允许新请求插入正在执行的批次,服务器不会因为等待下一个请求而空转。多用户或同时跑多个助手时,吞吐量更稳定。
我的看法
项目15439个star在Mac LLM工具里不算少。分层缓存这个设计思路挺务实——不是去解决内存不够的问题,而是让缓存管理更聪明。如果你正在用本地模型做实际开发,花十几分钟装上试试看分层缓存对工作流的改善。