Osaurus:在 Mac 上跑本地大模型的新选择——超轻量、纯原生、兼容 OpenAI

更新时间:2025-08-26

如果你有一台 M 系列芯片的 Mac,想把大模型装到本地、随时离线使用,又嫌 Ollama 还不够快,那就试试 Osaurus。整个安装包只有 7 MB,却号称比 Ollama 快 20%,而且完全开源。


目录

  1. Osaurus 到底是什么?
  2. 我的电脑能装吗?
  3. 三分钟完成安装
  4. 第一次启动:模型管理器长什么样?
  5. 用浏览器就能聊天:API 到底怎么用?
  6. 性能实测:TTFT、吞吐、成功率
  7. 深入功能:会话缓存、工具调用、聊天模板
  8. 常见问题 FAQ
  9. 总结:什么时候该选 Osaurus?

1. Osaurus 到底是什么?

一句话:
Osaurus 是一个只面向 Apple Silicon Mac 的本地 LLM 服务,体积 7 MB,内置 SwiftUI 图形界面,兼容 OpenAI 的 REST 接口,背后用的全是 Apple 自家 MLX 框架。

和 Ollama 的区别可以记成三点:

维度 Osaurus Ollama
运行框架 Apple MLX llama.cpp
安装包大小 7 MB ~200 MB
适用平台 macOS 15.5+ M 系列 跨平台

换句话说,如果你只有一台 M1/M2/M3 的 Mac,Osaurus 把“精简”做到了极致;如果你需要 Windows 或 Intel Mac,那就继续用 Ollama。


2. 我的电脑能装吗?

先自问自答三个问题:

问答 条件
系统版本? macOS 15.5 及以上
芯片型号? Apple Silicon(M1、M2、M3 …)
会写代码吗? 不会也能用,官方提供签名 dmg;会 Xcode 的可以自己编

不满足任何一条,就先别折腾了。


3. 三分钟完成安装

方法一:直接下载(不会写代码也能完成)

  1. 打开 GitHub Releases 页面
  2. 下载 Osaurus.dmg,双击拖进 Applications。
  3. 首次打开会提示“无法验证开发者”,在系统设置 → 隐私与安全 → 允许即可。

方法二:源码编译(给开发者)

git clone https://github.com/dinoki-ai/osaurus.git
cd osaurus
open osaurus.xcodeproj   # 需要 Xcode 16.4+

选中 osaurus target,按 ⌘R 即可运行。


4. 第一次启动:模型管理器长什么样?

打开应用后会出现一个极简窗口:

  • 左上角开关:启动 / 停止 HTTP 服务,默认端口 8080。
  • 右上角齿轮:可以改端口,也可以设置模型存放路径(默认 ~/Documents/MLXModels)。
  • 中间列表:自动读取 Hugging Face mlx-community 里的热门模型,显示体积、下载进度条。
  • 底部状态栏:实时 CPU、内存折线图。

第一次用,点 “Llama 3.2 3B Instruct 4bit” → Download,大约 2 GB 流量跑完后就能开聊。


5. 用浏览器就能聊天:API 到底怎么用?

Osaurus 把常用接口都做成 OpenAI 格式,用 curl 就能试。

5.1 查看有哪些模型

curl -s http://127.0.0.1:8080/v1/models | jq

返回示例:

{
  "object": "list",
  "data": [
    {
      "id": "llama-3.2-3b-instruct-4bit",
      "object": "model",
      "created": 1724588800,
      "owned_by": "mlx-community"
    }
  ]
}

5.2 非流式对话

curl -s http://127.0.0.1:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
        "model": "llama-3.2-3b-instruct-4bit",
        "messages": [{"role":"user","content":"写一首关于恐龙的俳句"}],
        "max_tokens": 200
      }'

返回:

{
  "id": "chatcmpl-123",
  "object": "chat.completion",
  "choices": [{
    "message": {
      "role": "assistant",
      "content": "远古巨影落,\n骨林深处风声急,\n时光低声吼。"
    }
  }]
}

5.3 流式对话(SSE)

curl -N http://127.0.0.1:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
        "model": "llama-3.2-3b-instruct-4bit",
        "messages": [{"role":"user","content":"一句话总结侏罗纪公园"}],
        "stream": true
      }'

终端会一行行蹦字,效果跟 ChatGPT 网页打字一样。


6. 性能实测:TTFT、吞吐、成功率

官方在同样硬件(未透露具体型号)跑了 20 次取平均:

服务器 模型 首 token 延迟 总延迟 字符/秒 成功率
Osaurus llama-3.2-3b-instruct-4bit 191 ms 1461 ms 521 100%
Ollama llama3.2 59 ms 1667 ms 439 100%
LM Studio llama-3.2-3b-instruct 56 ms 1205 ms 605 100%

解读:

  • 首 token 延迟:Ollama 和 LM Studio 略快,说明 llama.cpp 的预填充确实猛;
  • 总延迟 + 吞吐:Osaurus 在 Apple Silicon 上用 MLX 的 Metal 内核后发先至,字符/秒最高;
  • 成功率:三者都 100%,稳定性无需担心。

7. 深入功能:会话缓存、工具调用、聊天模板

7.1 会话重用(KV 缓存)

多轮对话最怕每次都重新算 KV。Osaurus 支持在请求里带 session_id,同一 id 会复用缓存。

curl -s http://127.0.0.1:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
        "model": "llama-3.2-3b-instruct-4bit",
        "session_id": "demo123",
        "messages": [{"role":"user","content":"告诉我一个关于剑龙的事实"}]
      }'

注意:并发冲突时会自动建新会话,无需手动管理。

7.2 工具/函数调用(OpenAI 兼容)

  1. 定义工具:
"tools": [{
  "type": "function",
  "function": {
    "name": "get_weather",
    "description": "根据城市名返回天气",
    "parameters": {
      "type": "object",
      "properties": {"city": {"type": "string"}},
      "required": ["city"]
    }
  }
}]
  1. 发送请求:
curl -s http://127.0.0.1:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
        "model": "llama-3.2-3b-instruct-4bit",
        "messages": [
          {"role":"system","content":"可以调用函数简洁回答"},
          {"role":"user","content":"上海天气怎样?"}
        ],
        "tools": [...],
        "tool_choice": "auto"
      }'
  1. 模型返回:
"tool_calls": [{
  "id": "call_1",
  "type": "function",
  "function": {"name":"get_weather","arguments":"{\"city\":\"Shanghai\"}"}
}]
  1. 你把真正的天气结果再以 role: tool 回传即可继续对话。

Osaurus 会自动帮你解析带 ```json 代码块或多余空格的格式,减少出错。

7.3 聊天模板(Jinja)

模型自带 tokenizer_config.json 里的 chat_template 会被直接拿来渲染。
如果模板缺失,Osaurus 会用极简格式 fallback:

User: ...
Assistant: ...

系统消息会合并到最前面,无需手动拼接。


8. 常见问题 FAQ

Q1:模型存在哪?能改路径吗?
默认 ~/Documents/MLXModels,启动前 export OSU_MODELS_DIR=/Volumes/SSD/mlx 即可。

Q2:Intel Mac 能不能用?
不能。Osaurus 只依赖 Apple 的 MLX,而 MLX 只支持 Apple Silicon。

Q3:可以暴露到局域网吗?
目前只监听 127.0.0.1,需要反向代理(如 Nginx)才能对外。

Q4:支持 Whisper 吗?
文档里 /transcribe 是占位符,后续版本才加入。

Q5:和 Python 的 openai 库兼容吗?
完全兼容,把 base_url="http://127.0.0.1:8080/v1"api_key="osaurus" 填进去即可。


9. 总结:什么时候该选 Osaurus?

场景 建议
只有 M 系列 Mac,追求极致轻量 直接选 Osaurus
需要 Windows / Intel Mac 继续用 Ollama
想体验 Apple MLX 的 Metal 加速 拿 Osaurus 做基准测试
需要大量并发企业级部署 建议等后续版本或上云端

一句话总结:Osaurus 把“Mac 原生”做到了极致:体积小、依赖少、接口熟、跑得飞快。
如果你恰好是 M 系列用户,不妨现在就去 GitHub 下一个试试。