📌 项目地址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工具里不算少。分层缓存这个设计思路挺务实——不是去解决内存不够的问题,而是让缓存管理更聪明。如果你正在用本地模型做实际开发,花十几分钟装上试试看分层缓存对工作流的改善。

这篇文章对你有帮助吗?

发表回复