Skip to content
imi4u36dPublic

About

Mac 上的本地大模型控制台:一个原生 SwiftUI 应用管好 Splash / oMLX / MTPLX 三个本地推理引擎,并对外提供 OpenAI 兼容接口

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

1 watching

Forks

Repository files navigation

flashCat

flashCat

Mac 上的本地大模型控制台。 在同一个窗口里装引擎、下模型、聊天,并把它变成 一个可以给自己任何 AI 客户端用的本地接口。

优雅 · 流畅 · 高能

flashCat 介绍视频(无旁白版)

▶ 50 秒介绍片 · 无旁白,建议开声音听垫乐 · 画面来自真实运行的 flashCat

不需要敲命令行,不需要为每个引擎记一套参数;打开就能用, 需要接别的工具时它就是一个 http://127.0.0.1:9000/v1 这样的地址。


亮点

1. 灵动岛。 窗口正中一颗常驻玻璃胶囊:引擎名、真实阶段(启动 / 加载权重 / 预热)、 实时 tok/s 与启停都在里面。通知在原位弹出,按信息 / 成功 / 警告 / 错误分级,3.2 秒后 回到引擎状态;点开就地展开通知历史或引擎详情,点外面收起。它替掉了状态栏、toast 和详情页三处信息。

2. 多引擎聚合,模型无感切换。 Splash、oMLX、MTPLX、MLX-Serve、Strata 平级共存, 各有端口段、运行时、日志与模型目录。热切换引擎不停进程;重启类引擎也会显示阶段与 「已等待 m:ss」。对客户端更是无感——网关地址固定,换引擎、换端口都不用改 Base URL。

3. 可定制的引擎设置。 端口按引擎的段做校验;十三项旋钮按引擎翻译成它自己的启动参数 ——MTP / DFlash2、--max-memory、--max-context、PLE 缓存与 SSD offload、思考预算、 额外参数。留空即交给引擎,默认值按引擎推荐给,新 pack 加旋钮也不用迁移配置。

4. 模型下载。 精选档位按本机内存配好,卡片直接标体积与内存下限;模型广场可以搜 Hugging Face、按下载量排序、筛 MLX / GGUF、翻页看模型卡(README 清洗后渲染、家族徽标)。 下载支持暂停与续传;权重落公共目录只存一份,下完勾给哪些引擎用。

5. 直观的运行数据。 解码速度、首字延迟、预填充、DFlash2 草稿接受率、内存压力、 当前上下文占用(如 18K / 262K)一屏读完;总解码是 60 秒曲线,最近请求逐条标出首字、 预填充与上下文。引擎只给聚合指标,会话级读数由网关侧自己打点。

6. 内置对话。 流式输出、思考块、Markdown、温度 / top-p / 最大输出 / 思考等级; 每条回复标 tok/s 与首字延迟;历史存本地,⌘N 开新对话。装完引擎第一件事就是验证它。

系统要求

芯片 Apple Silicon(M 系列)
系统 macOS 26.0 或更高
磁盘 应用约 10 MB;每个引擎约 50 MB ~ 600 MB;模型另算(每档 2 ~ 250 GB)

界面跟随系统语言:简体中文 或 English。两种文案都随应用打包,切换系统语言后重开即可生效。

安装

从 Releases 下载最新版本:

  • flashCat-<版本>.dmg —— 打开后把 flashCat 拖进「应用程序」
  • flashCat-<版本>.pkg —— 双击一路安装

应用没有做公证签名,第一次打开系统会拦一下:在 Finder 里右键点 flashCat → 打开, 之后就不会再问。第一次打开需要联网下载引擎运行时(80 MB ~ 600 MB,取决于选哪个引擎)。

第一次打开

  1. 启动页会列出所有受支持引擎,选一个点下载,等它装好。
  2. 装好后它就是默认引擎,窗口自动进入控制台。
  3. 之后可以随时在「引擎」页安装其他引擎、切换默认引擎,或在「模型」页下载模型。

引擎都是平级 peer:

引擎 默认端口 适合 换模型
Splash 8000 单模型、最省事,带草稿加速 重启引擎
oMLX 8100 想同时常驻多个模型,换模型不停进程 热切换
MTPLX 8200 长上下文、多 token 预测 重启引擎
MLX-Serve 8300 通用 MLX / GGUF、多模型热加载、工具调用 热切换
Strata 8400 SSD 专家流式、大 MoE、多硬件后端 重启引擎

所有引擎都支持对话与流式输出;视觉、思考、工具调用和多模型能力由引擎 descriptor 逐项声明,界面不会假设某个引擎必然具备。端口各占一段,互不冲突。

界面速览

概览 —— 引擎状态、当前模型、实时速度曲线、内存与端口占用,以及当前会话 占用了多少上下文(例如 18K / 262K)。右侧是 API 网关地址 (OpenAI 与 Claude 各一行,都能一键复制)。

对话 —— 内置聊天窗口。顶部可以切模型、调温度 / top-p / 最大输出、设置思考模式。 每条回复下方标着 tok/s 和首字延迟。对话记录存在本地,可以新建和翻看历史。

模型 —— 每个引擎一份模型库,顶部先选引擎(没装的引擎也能先看它支持什么)。 装好的可以直接点「使用」,没装的点「下载」原地拉取,卡上标着体积、内存下限和量化格式 (QUANT:Q4_K_M / oQ4e / 8-bit / BF16…)。 右上角「模型广场」打开搜索窗口:默认按热度列出 Hugging Face 上的仓库,也可以搜关键词、 按下载量排序,按「全部 / MLX / GGUF」筛权重格式,翻页继续往下看(HF 那边一页 30 条),点一行打开模型卡(README / 文件清单 / 标签),看完再决定要不要下。权重落到公共目录、 只存一份,下完再勾给哪些引擎用;卡片上的来源分为「引擎推荐」和「个人下载」两种。

引擎 —— 每个引擎一张卡片:状态、端口、启动参数、上游版本比对, 可以一键更新、打开安装目录、查看日志、卸载某个版本。

日志 —— 当前引擎的实时输出,可按「全部 / 提示 / 警告 / 错误」过滤、 搜关键词、暂停滚动、清空。

设置 —— 外观、背景图与透明度、端口、开机自启、思考模式、推理等级、默认模型、 下载缓存目录等,行内即改即生效。

页面跳转与常用动作都收在 ⌘K 命令面板:六个页面、启停引擎、新对话、下载中心、 模型广场、切换外观、折叠边栏,输入关键词直达。

用自己的客户端连它

应用自带一个 API 网关,推荐所有客户端都接它:地址固定,OpenAI 和 Claude 两种格式 都能用。请求里的 model 会决定实际加载哪份权重:模型属于别的引擎就自动切引擎, 引擎没启动会自动拉起,加载完成后再转发。

地址 http://127.0.0.1:9000/v1(端口可改)
OpenAI 格式 POST /v1/chat/completions(支持流式)
Claude 格式 POST /v1/messages、POST /v1/messages/count_tokens(支持流式)
模型列表 GET /v1/models
API Key 本地服务不校验,填任意字符串即可

OpenAI 格式:

curl http://127.0.0.1:9000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "你的模型名",
    "messages": [{"role": "user", "content": "你好"}],
    "stream": true
  }'

Claude 格式(SDK 里 Base URL 填 http://127.0.0.1:9000):

curl http://127.0.0.1:9000/v1/messages \
  -H "Content-Type: application/json" \
  -H "anthropic-version: 2023-06-01" \
  -d '{
    "model": "你的模型名",
    "max_tokens": 1024,
    "messages": [{"role": "user", "content": "你好"}]
  }'
  • 模型名填 /v1/models 里返回的名字;网关会按它确保对应模型已加载,概览页也能看到当前加载的是哪个
  • Claude 格式会完整翻译给引擎:system 提示、图片、工具调用、stop 序列、 思考块、以及 end_turn / max_tokens / tool_use 等停止原因都支持
  • 也可以直连引擎自己(8000 / 8100 / 8200),但地址会随引擎切换变化, 所以一般还是接网关

模型

模型都在应用里下载,来源是 Hugging Face。模型页把可直接加载的权重放在「本机模型」, 把当前 Mac 内存能承载、尚未下载的档位放在「FlashCat 推荐」:

档位 体积参考 说明
Qwen 3.6 35B-A3B 约 16 ~ 20 GB 每天用最稳的一档
Qwen 3.8 27B 约 16 ~ 21 GB 新一代,质量和速度更均衡
Qwen 3.8 Flash-Next 约 99 GB 最重的一档,需要 128 GB 内存

Splash 用 27B IQ3_S 与 Flash-Next Q2_0 的 GGUF;oMLX 使用 Jundot 的 oQ4e 量化; MTPLX 另在低内存机器上把 MiMo 9B 与 Qwen3.5 4B 两个 Youssofal 优化包作为兜底。想跑别的模型,点模型页右上角 「+ 下载模型」打开模型广场,搜或浏览 Hugging Face 仓库,点开看模型卡再下:权重落到公共目录、只存一份,下完再勾给 哪些引擎用(勾选只决定可见性,不复制文件)。能不能被某个引擎加载由引擎自己判断, 模型页会把已下载权重与尚未下载的「FlashCat 推荐」分开,本机权重再标出来源是「目录收录」还是「个人下载」。 走镜像或者下 gated 仓库时,可以在命令行里给两个偏好值(不填就是 huggingface.co、匿名访问):

defaults write com.zhuo.flashCat hfEndpoint https://hf-mirror.com   # 镜像站
defaults write com.zhuo.flashCat hfToken hf_xxx                    # 有权限的 token

下载器(python)不读 macOS 的系统代理设置,所以启动下载时会把系统代理原样传给它; 挂着代理软件也不需要额外配置。

模型归属使用引擎标签:Splash 只出 GGUF,oMLX 主推 Jundot oQ4e 包,MTPLX 主推 Qwen 并在低内存机器上兜底 MiMo 9B、Qwen3.5 4B。

磁盘上的位置(清理时用得上):

内容 位置
应用配置、对话记录 ~/Library/Application Support/flashCat
所有引擎的运行时 pack ~/Library/Application Support/flashCat/engines/<引擎>/<版本>
所有引擎的模型 ~/Library/Application Support/flashCat/models/<引擎>
公共目录(自己下载的模型) ~/Library/Application Support/flashCat/shared-models
下载缓存 默认沿用 Hugging Face 的缓存目录,可在设置里改
日志 ~/Library/Logs/flashCat

设置项

设置 说明
外观 跟随系统 / 浅色 / 深色,选中立即生效
端口 引擎监听端口,占用时会提示
API 网关 双格式统一接口的开关与端口(默认 9000),改动立即生效
随 flashCat 启动 打开应用时自动把引擎拉起来
登录时启动 把 flashCat 加进 macOS 登录项
思考模式 自动 / 关闭 / 开启,控制思考模型是否先输出推理过程
推理等级 思考模式为「开启」时生效,档位由引擎决定
默认模型 引擎启动时自动加载哪个模型
下载缓存目录 模型下载缓存放哪里
恢复默认设置 把上面各项恢复成出厂值

常见问题

引擎起不来,或者一直转圈? 去「日志」页看最后几行,多半是端口被占或模型太大放不进内存。换个端口, 或者选更小的一档模型。

下载很慢? oMLX 的运行时约 590 MB,Splash / MTPLX 在 80 ~ 130 MB 之间;模型从十几 GB 到 99 GB, 主要看网速。

换模型后内存没释放? oMLX 可以在模型之间热切;Splash / MTPLX 换模型会重启进程, 等状态变回「运行中」再发请求。

想让别的机器访问? 应用只监听本机 127.0.0.1。需要对外提供时请自己加一层反向代理, 不要把端口直接暴露到公网。

应用打不开,提示损坏或来自未知开发者? 右键 → 打开;或者到「系统设置 → 隐私与安全性」里点「仍要打开」。

模型页看不到某个引擎的模型? 顶部可以切换引擎,没安装的引擎也能先浏览它支持的精选档位。

卸载

  1. 退出 flashCat。
  2. 把 /Applications/flashCat.app 拖进废纸篓。
  3. 想连配置和模型一起清掉,再删除:
rm -rf ~/Library/Application\ Support/flashCat ~/Library/Logs/flashCat

注意模型就存在这些目录里,删除等于把下载的权重一起删掉,执行前确认没有还想留着的模型。

许可

MIT © 2026 wangzhuo

各推理引擎是各自上游项目的成果,本项目负责运行时的下载、安装与调度: Splash、 oMLX、 MTPLX、 MLX-Serve、 Strata。 模型版权归各自的发布者所有。

About

Mac 上的本地大模型控制台:一个原生 SwiftUI 应用管好 Splash / oMLX / MTPLX 三个本地推理引擎,并对外提供 OpenAI 兼容接口

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages