mac mini 玩转本地大模型

00 · 点火之前:新 Mac mini 到手配置指南

约 16 分钟驭光者首发于微信公众号「羲和Lab」

系列:mac mini 玩转本地大模型 · 第 0 篇 副标题:从开箱到顺手好用,一台新 Mac mini 的全部准备工作

导读:不管你买 mini 是为了跑本地大模型还是纯粹想要台小主机,这篇都适用——系统初始化的关键选择、必做的系统设置、Homebrew 与镜像加速(含一次真实翻车的完整排查)、开发环境三件套。文末埋三颗种子,通向本系列的主线。

开始之前

  • 适合谁:刚入手 Mac mini(M 系列芯片)的任何用户;跑不跑大模型都适用
  • 需要什么:一台全新开机的 Mac mini、网络、一点耐心
  • 预计耗时:1-2 小时(含 Xcode 命令行工具的等待时间)
  • 成功标志:brew doctor 报出 "Your system is ready to brew."
  • Homebrew 与开发环境章节的命令与输出在 Mac mini M5 Pro / 64GB / macOS 27.0 真机实测(2026-09-23);系统设置与工具推荐为通用实践,路径以当期系统界面为准。文中版本号均为当日实测记录,软件迭代快,读者操作时以实际版本为准

一、开篇:火柴盒到手了

Mac mini 是苹果产品线里最不起眼的一台:一巴掌大的方盒子,没有屏幕没有键鼠,接上电和显示器就成了一台完整的 Mac。但正因为它小、静、省电,它也是最适合"常开"的 Mac——而这个系列要干的,正是往这个小盒子里装一颗自己的太阳:本地大模型。

装太阳之前,先把火柴盒擦亮。这篇是系列的第 0 篇,不讲任何模型相关的内容,只做一件事:把一台开箱的 mini 配置成一台顺手、常开、可远程的机器。跑模型的读者会在文末发现三颗提前埋下的种子;不跑模型的读者,这篇本身就是一份完整的开局指南。

顺带交代我们的实测环境:Mac mini M5 Pro,64GB 统一内存,macOS 27.0(Build 26A428)。后文所有输出都摘自这台机器的真实记录,不是文档搬运。

二、第一次开机:初始化的关键选择

按下电源(mini 的电源键在底部,摸得到),跟着向导走。几个选择值得停下来想一想:

迁移助理用不用? 从旧 Mac 搬数据是最快路线,但新机纯净派(包括我们)更推荐不迁:迁移助理会把旧机器的配置、缓存、甚至问题一起搬过来,而你买新机往往就是想要个干净开始。真正需要的数据,事后用 iCloud、外接盘或局域网传都来得及。配置一次做对,比继承一堆历史包袱强。

Apple 账户与 iCloud。 登录是必须的(后续装 App Store、Find My 都靠它),但 iCloud 同步项建议按需开:钥匙串和 Find My 开着,照片同步这类看个人。mini 多数时候当"设备"而不是"随身机",同步需求比笔记本低。

隐私与定位。 按自己舒服的程度选。mini 插着电不动,定位服务的意义不大,关掉也干净。

地区、语言、输入法。 照常。唯一提醒:如果主力输入法是第三方(如搜狗),先用手动下载安装包装,App Store 稍后再登也不迟。

三、必做系统设置

系统进桌面后,别急着装软件,先把这几处设置调对——都是"以后很难想起来改"的地方(路径以当期系统界面为准):

1. 电源:让盒子学会不睡觉。 目标是"显示器可以睡,主机不睡"。在「系统设置 → 能源」里勾选**"防止 Mac 自动进入睡眠"**(路径以当期界面为准;找不到就用系统设置的搜索框搜"睡眠")。想验证到位,终端跑一条 pmset -g | grep -i sleep——输出有多行,displaysleep 有值而 sleep 为 0,即是"显示器会睡、主机不睡"的目标状态。mini 的功耗摆在那里(待机几瓦),常开是它的天职。系列后面跑 7×24 模型服务,全靠这一条打底。

2. 远程访问两件套:屏幕共享与 SSH。 在「系统设置 → 通用 → 共享」里,打开屏幕共享(图形远程)和远程登录(SSH)。做完这一步,你的显示器和键鼠就可以收起来了——mini 从"一台小电脑"变成"一台放在角落的服务器"。验证:在另一台机器的终端里 ssh <用户名>@<mini的IP> 能登录即通;屏幕共享同理——Finder 按 ⌘K 输入 vnc://<mini的IP>,能看见桌面即通。安全提醒:SSH 一开,端口就暴露在局域网——至少设强开机密码;更稳的做法是配 SSH 密钥登录:在自己电脑上 ssh-keygen 生成密钥,再把公钥送上 mini。macOS 10.13 起已自带 ssh-copy-id(which ssh-copy-id 可验),一条命令即可:ssh-copy-id <用户名>@<mini的IP>;万一你的环境确实没有,用通用写法:cat ~/.ssh/id_ed25519.pub | ssh <用户名>@<mini的IP> 'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys'(若你生成的是其他类型密钥,把文件名换成对应的 .pub 即可)。若需从公网访问,务必配合防火墙限制来源,不要裸奔。

3. 系统更新策略。 出厂 27.0,大概率弹的是小版本更新(27.0.x)。建议先更新再配置——更新可能改动系统组件与路径,先把地基定型,再往上盖楼,免得配置到一半被系统更新打断。

4. 外设适配。 mini 没有内置输入输出,显示器缩放、键鼠手感(尤其非苹果键鼠的修饰键布局)值得花五分钟调顺。

5. 存储认知。 64GB 指的是内存,不是硬盘。去「系统设置 → 通用 → 储存空间」看一眼盘的容量——后面跑模型,一个模型文件动辄几个 GB 到几十 GB,心里要有数。

四、Homebrew:从零装上包管理器

macOS 的命令行世界从一个包管理器开始。Homebrew 的安装网上教程泛滥,我们只讲自己实测跑通的那条路——国内网络优先版。

4.1 装之前,先 export 三个镜像变量

这是与多数教程的关键差异:先设镜像变量,再跑安装脚本(脚本本身也有镜像路线,见 4.2)。三个变量分别管 git 克隆源、API 元数据源、预编译包(bottle)源,提前 export,安装全程就走国内镜像。

两个选项,清华优先——不是它名气大,是我们两种都实测过:先用的中科大,装 Node 时撞上镜像同步墙(完整故事见 5.2),搬家清华后一路通畅。不想重走我们的弯路,直接选方案一。

方案一 · 清华源(推荐,实测同步状态更好):

export HOMEBREW_BREW_GIT_REMOTE="https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git"
export HOMEBREW_BOTTLE_DOMAIN="https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles"
export HOMEBREW_API_DOMAIN="https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles/api"

方案二 · 中科大源(同样可用,偶有同步滞后的坑):

export HOMEBREW_BREW_GIT_REMOTE="https://mirrors.ustc.edu.cn/brew.git"
export HOMEBREW_BOTTLE_DOMAIN="https://mirrors.ustc.edu.cn/homebrew-bottles"
export HOMEBREW_API_DOMAIN="https://mirrors.ustc.edu.cn/homebrew-bottles/api"

4.2 安装脚本:两条路线

路线一 · 清华镜像脚本(方案一配套,脚本入口不碰 GitHub)——官方安装脚本托管在 raw.githubusercontent.com,国内网络不一定可达;清华镜像站同步了这套脚本,脚本入口直接走国内(我们实测其仓库可达、install.sh 在位)。若这个仓库也拉不动,回退路线二(官方脚本 + 可达网络;中科大是否提供安装脚本镜像,以其帮助页当期说明为准):

git clone --depth=1 https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/install.git brew-install
ls brew-install/install.sh   # 确认脚本在位再执行
/bin/bash brew-install/install.sh
rm -rf brew-install

路线二 · 官方脚本(网络可达时,两个方案通用)——就是我们实测走的这条:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

以下输出摘自实测记录(2026-09-23,当时用中科大源 + 官方脚本)——按方案一 + 路线一操作的同学,过程一致、域名显示为清华。脚本检查 sudo 权限(要输一次开机密码,屏幕不回显是正常的)→ 列出安装清单 → 自动装 Command Line Tools for Xcode(走软件更新通道,我们的版本是 CLT 27.0,这步最花时间)→ 克隆 brew 本体。因为预置了镜像变量,克隆源显示为镜像域名(实测输出 From https://mirrors.ustc.edu.cn/brew),连解释器用的 portable-ruby 都是从镜像拉的——三变量全链路生效。

4.3 PATH 与持久化:比安装器多想一步

装完的 Next steps 会建议你把 PATH 写进 .zprofile,并只持久化一个 git remote 变量。我们建议比它多做两件事:写入 ~/.zshrc,并把三个镜像变量全部持久化(与 4.1 所选方案对应,二选一)。

方案一 · 清华源持久化(推荐):

echo >> ~/.zshrc
echo 'eval "$(/opt/homebrew/bin/brew shellenv zsh)"' >> ~/.zshrc
echo '# Set non-default Git remote for Homebrew/brew.' >> ~/.zshrc
echo 'export HOMEBREW_BREW_GIT_REMOTE="https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git"' >> ~/.zshrc
echo 'export HOMEBREW_BOTTLE_DOMAIN="https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles"' >> ~/.zshrc
echo 'export HOMEBREW_API_DOMAIN="https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles/api"' >> ~/.zshrc
source ~/.zshrc

方案二 · 中科大源持久化:

echo >> ~/.zshrc
echo 'eval "$(/opt/homebrew/bin/brew shellenv zsh)"' >> ~/.zshrc
echo '# Set non-default Git remote for Homebrew/brew.' >> ~/.zshrc
echo 'export HOMEBREW_BREW_GIT_REMOTE="https://mirrors.ustc.edu.cn/brew.git"' >> ~/.zshrc
echo 'export HOMEBREW_BOTTLE_DOMAIN="https://mirrors.ustc.edu.cn/homebrew-bottles"' >> ~/.zshrc
echo 'export HOMEBREW_API_DOMAIN="https://mirrors.ustc.edu.cn/homebrew-bottles/api"' >> ~/.zshrc
source ~/.zshrc

写入后 source 一次即可——eval 行已经在 .zshrc 里,source 会让当前终端立即生效,新终端则自动读取。

为什么多此一举?安装器只持久化它自己消费过的 git remote;但 bottle/API 镜像若不持久化,新开终端的下载就回落官方源,国内网络立刻变慢。另外养成一个习惯:source 之前 open -e ~/.zshrc 打开看一眼——确认写进去的是你想写的(顺带说,~ 和 /Users/你的用户名 等价,用 ~ 更通用)。

顺带一提:我们实测的安装器还往 /etc/paths.d/homebrew 写了系统级 PATH(安装清单里有这一行为证)——不过不同安装路线与版本行为可能有差异,别依赖它,上面的 eval 配置才是稳妥解。

4.4 验证

brew --version
brew doctor

实测输出:

Homebrew 7.0.6
Your system is ready to brew.

两行都出现,Homebrew 闭环。镜像变量是否生效,一行看清:echo $HOMEBREW_BOTTLE_DOMAIN(应显示你在 4.1 选的镜像域名)。(版本号说明时光飞逝:两个月前我们在另一台 Mac 上装的时候还是 6.0.22,Homebrew 已经跨代到 7 了。)

五、开发环境基线:三件套与一次真实翻车

5.1 git:已经有了

Command Line Tools(CLT)顺手把 git 带来了:

$ git --version
git version 2.54.0 (Apple Git-157)

免安装,只差身份:

git config --global user.name "你的名字"
git config --global user.email "你的邮箱"

5.2 Node:一次教科书级的镜像翻车

装 Node 的过程值得完整讲——不是因为它顺利,恰恰因为它翻车了。这次翻车把国内镜像使用最典型的坑暴露得干干净净。

第一幕,撞墙。 brew install node,API 元数据正常下载,node 本体的预编译包也正常,但装到依赖时连续报错:

Error: abseil: no bottle available!
...
Error: Couldn't find manifest matching bottle checksum.

更诡异的是重跑一次,依赖清单从 24 项涨到 26 项——因为第一次报错后,brew 把"从源码编译"的工具链(cmake、googletest)也当依赖拉了进来,雪球越滚越大。

第二幕,判别。 三种可能:brew 本身需要更新?镜像同步滞后?还是 macOS 27 太新、新平台的预编译包根本没出?brew update 无效,问题依旧。

第三幕,定因。 换清华镜像临时试一把:

HOMEBREW_BOTTLE_DOMAIN="https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles" brew install node

成了。同一个 abseil 依赖,中科大的清单文件是 100.5KB(校验不符),清华的是 117.1KB(正确可用)——两个镜像站的内容不一样,问题出在中科大 bottle 侧的同步滞后:它的 API 元数据同步到了最新版本,包文件却没跟上,两边对不上,校验自然失败。

这次绕行还送了一个彩蛋观察:清华镜像也缺一个包(brotli 的清单),但 brew 打出一行 Warning: Bottle missing, falling back to the default domain... 自动回落官方源补上了。同样是缺东西,表现完全不同:清单"缺失"会自动回落官方,清单"校验不符"直接报错不回落——记住这个区别,以后排查镜像问题能省半小时。

结局。 Node 26.9.0 装毕(node -v / npm -v 验证 26.9.0 / 11.19.1),还带两条无伤大雅的 Caveats 提示(单可执行应用与 Temporal 特性禁用,共享库所致,普通使用无感)。

既然翻车了,干脆搬个家。 清华镜像同步状态更好——这正是 4.1 把它列为推荐方案的原因。我们把三个持久化变量全部从 USTC 切到清华(URL 以清华镜像站官方帮助页为准),一条 sed 搞定:

sed -i '' 's|https://mirrors.ustc.edu.cn/brew.git|https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git|; s|https://mirrors.ustc.edu.cn/homebrew-bottles|https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles|g' ~/.zshrc
source ~/.zshrc
brew update

搬家后做了三重验证,全绿:brew update 实际从清华域名拉取(顺带发现清华 git 服务有排队机制,"Waiting in queue... Position: 6",免费镜像的合理代价);三个环境变量全部显示清华域名;brew 仓库的 git 远端 fetch/push 双向都指向清华。按方案二安装的同学若撞了同样的墙,照这条 sed 搬家即可。

本节的方法论收获:镜像不是配完就一劳永逸的基建,它是会滞后的活水。撞到"no bottle / checksum mismatch",先怀疑镜像,换一家试是最快的判别实验。

顺手留一张镜像报错速查表(都是我们真实撞过的):

报错含义处置
no bottle available!多为镜像缺包(也可能是该平台本就无 bottle),直接报错不回落(我们在中科大源实测如此)换一家镜像,或(官方源可达时)临时绕开 bottle 域名走官方
Warning: Bottle missing, falling back to the default domain...镜像缺包,但这类会自动回落官方源补(清华源缺 brotli 时实测)可不管;介意速度就换镜像
Couldn't find manifest matching bottle checksum镜像清单与 API 元数据不一致(同步滞后)换一家镜像(本文 4.1 首推清华即为此)
raw.githubusercontent.com 连不上安装脚本入口不可达走 4.2 路线一(清华镜像脚本)

5.3 Python:够用起步

系统自带 python3 可用(python3 --version 看一眼本机版本)。本系列到 MLX 篇才会重度使用 Python,届时用 uv 管理独立环境更干净,这里不急着装。

六、精选工具清单

每类只推一个(说到做到),全部可跳过:

  • 浏览器:Arc——登录账号同步是最快迁入方式(Arc 已进入维护模式,下载不到或体验下降就换 Chrome/Edge,不纠结)
  • 输入法:搜狗——手动下载安装包装,别等 App Store
  • 剪贴板历史:Maccy(开源免费)——远程运维时贴命令神器
  • 菜单栏监控:iStat Menus——看 CPU/内存/网络,为以后跑模型观测负载预埋
  • 解压:The Unarchiver——凑数但确实人人需要

纯主观精选,无任何利益相关。

七、为跑模型埋三颗种子

不跑模型的读者可以就此收工。跑模型的,走之前埋三颗种子:

种子一 · 散热摆放。 mini 靠底部进风、后部出风。摆放时底部留空隙(别直接压在桌布上)、后方离墙一拳、别叠在其他发热设备上。下一篇我们实测满载时的散热与噪音,摆错了到时候数据会很难看。

种子二 · 存储规划。 一个 70B 级量化模型 40GB 上下,加上工具链和缓存,256GB 的盘很快见底。现在就想好:模型统一放哪个目录?要不要一块外接 SSD 专放模型?

种子三 · 断电自启。 常开机器最怕停电后来电没人管。在系统设置的节能选项里找到**"断电后自动启动"**打开——来电自启,Server 的生存本能。

八、验收清单与预告

对着勾一遍,全部打勾就可以宣布"火柴盒擦亮了":

  • 系统更新到当期版本
  • 电源:防止自动睡眠已开
  • 屏幕共享(vnc:// 可连)与 SSH 已开(密钥登录已配 / 公网访问已加防火墙限制),异机可登录
  • brew --version 出版本号(我们实测 7.0.6)
  • brew doctor 报 "Your system is ready to brew."
  • 三个镜像变量已持久化(echo $HOMEBREW_BOTTLE_DOMAIN 可见)
  • git --version 出版本号,user.name/email 已配
  • node -v / npm -v 出版本号(实测 26.9.0 / 11.19.1)
  • python3 --version 出版本号
  • 三颗种子:摆放、存储、断电自启

下一篇,正式点火。我们先把这颗 64GB 统一内存掰开揉碎讲明白——它和显卡显存是一回事吗?为什么它决定了你能跑多大的模型?M5 Pro 的这 64GB 在本地大模型的世界里算什么段位?《01 · 开箱点火:64GB 统一内存到底意味着什么》见。


参考资料


免责声明

本文内容仅供学习交流,所述方法需结合实际场景灵活运用。系统设置路径与工具行为可能随版本变化,以当期系统实测为准。镜像站同步状态具有时效性,本文记录的是 2026-09-23 当日实况。

本文由 AI 辅助创作,经人工审核编辑后发布。

本文首发于微信公众号「羲和Lab」,公众号内可留言交流

阅读公众号原文