WWDC Quick Look 💓 By SwiftGGTeam
Run local agentic AI on the Mac using MLX

Run local agentic AI on the Mac using MLX

观看原视频

Highlight

Apple 通过 MLX 框架 + MLX-LM Server 提供了四层本地智能体 AI 栈,让 Mac 无需联网、无需 API Key 即可运行完整的 Agentic 工作流;M5 芯片的 Neural Accelerator 将 Prompt 处理速度提升至 M4 的 4 倍,Thunderbolt RDMA 支持让多台 Mac 分布式推理速度提升 3 倍。

核心内容

从聊天到智能体:循环才是瓶颈

以前和 LLM 交互的方式很简单:你发一条消息,模型回复一段文字。如果需要执行命令、修改文件、调用 API,全部手动完成。(00:32

智能体(Agent)改变了这个模式。Agent 接收任务后,先让模型决定下一步做什么,然后调用工具执行(运行命令、读取文件、调用 API),观察结果后再把结果送回模型,进入下一轮决策。这个循环持续进行,直到任务完成。(00:45

这个循环在云端跑,每次调用都要走网络,API 费用累积很快,敏感数据还要离开本地机器。Apple 的解法是把整个循环搬到 Mac 本地:数据不出机器、随时可用、零使用成本。(01:10

四层本地智能体栈

Apple 定义了一个四层架构,从底层硬件加速到顶层 Agent 工具:

第一层:MLX。开源数组计算框架,专为 Apple silicon 设计,负责底层计算、Metal 加速和内存管理。(02:49

第二层:MLX-LM。提供模型加载、运行、量化和微调能力,支持 HuggingFace 上的数千个模型,同时提供 CLI 工具和 Python API。(03:06

第三层:MLX-LM Server。一个兼容 OpenAI 协议的 HTTP 服务器,把本地模型暴露为标准 API。支持结构化工具调用(Structured Tool Calling)和推理模型(Reasoning Models),可以直接替代任何云端 LLM API。(03:28

第四层:Agent。任何支持 OpenAI Chat Completions 协议的框架或工具都能对接:Xcode、OpenCode、Pi Agent、自定义脚本等。因为接口标准化,Agent 不知道也不关心模型运行在本地还是云端。(03:53

这个栈已经被广泛采用。Ollama、LM Studio、vLLM 等流行工具底层都在使用 MLX。(04:13

详细内容

三步搭建本地智能体

从零到跑通本地 Agent,只需要三个命令。(04:36

第一步:安装 MLX-LM

pip install mlx-lm

第二步:启动本地服务器

mlx_lm.server --model mlx-community/Qwen-3.5-4B-8bit

建议先用小模型验证环境。服务器启动后监听本地端口,加载模型并接受请求。

第三步:用 curl 测试

curl -X POST \
  http://127.0.0.1:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model":"default_model","messages":[{"role":"user","content":"Hello!"}]}'

关键点:

  • pip install mlx-lm 一次安装获取全部依赖
  • --model 指定 HuggingFace 上的模型 ID,首次运行会自动下载
  • 接口完全兼容 OpenAI /v1/chat/completions,现有代码改个 URL 就能切到本地

配置 OpenCode 使用本地 MLX

以 OpenCode 为例,配置 Agent 指向本地服务器。(05:18

{
  "$schema": "https://opencode.ai/config.json",
  "model": "mlx/default_model",
  "small_model": "mlx/default_model",
  "provider": {
    "mlx": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "MLX (local)",
      "options": {
        "baseURL": "http://127.0.0.1:8080/v1"
      },
      "models": {
        "default_model": {
          "name": "Default MLX Model"
        }
      }
    }
  }
}

关键点:

  • baseURL 指向本地 MLX-LM Server 地址
  • npm 字段指定使用 OpenAI 兼容的 SDK 适配器
  • modelsmall_model 都指向本地,确保所有交互走本地模型
  • 配置完成后,Agent 的每次对话、每次工具调用都通过本地模型处理

M5 Neural Accelerator:Prompt 处理快 4 倍

Agentic 工作流有一个特殊瓶颈:每次工具返回结果后,模型都要重新处理全部上下文才能进入下一轮推理。一个典型的 Agent 会话可能包含几十万 Token,其中绝大部分是 Prompt 处理(Prefill),而非生成新文本。(05:51

M5 芯片引入了专用的 Neural Accelerator(神经网络加速器),MLX 可以直接调用它执行矩阵乘法运算。M5 上的矩阵乘法速度是 M4 的 4 倍,配合 MLX 专门优化的乘法和 Attention 内核,Prompt 处理速度几乎等比例提升。(06:12

这意味着 Agent 读取代码库、处理工具返回结果的速度快了将近 4 倍。开发者不需要额外参数或代码改动,MLX 自动选择最优内核。(06:42

Continuous Batching:多个 Agent 并行不排队

实际场景中,一个 Agent 经常需要同时启动多个子 Agent,分别处理不同任务:一个读文档、一个搜代码、一个写测试。多个请求同时打到本地模型上。(06:57

MLX-LM Server 通过 Continuous Batching(连续批处理)解决这个问题。它用动代替逐个处理请求,态把新到达的请求合并到正在进行的批次中一起计算。新请求不需要等当前批次完成就能加入。(07:18

结果是所有子 Agent 并发执行,不会卡在队列里等待,整个工作流保持流动。

分布式推理:多台 Mac 跑超大模型

单台 Mac 即使配备 512GB 统一内存,也可能装不下某些超大模型。DeepSeek 最新模型有 1.6 万亿参数,仅权重就需要 800GB 以上内存。(07:49

MLX 支持通过 Thunderbolt 或以太网连接多台 Mac,把模型切片分布到不同机器上运行。(08:08

启动方式:

mlx.launch --hostfile hosts.json \
  --backend jaccl \
  /remote/path/to/mlx_lm.server \
  --model mlx-community/Qwen-3.5-122B-A3B-8bit

关键点:

  • --hostfile 指定集群节点配置,包含各节点的连接信息
  • --backend jaccl 使用 Jaccl 通信后端
  • 模型自动切片到所有可用设备,其他操作保持不变
  • macOS 26.2 起支持 Thunderbolt RDMA,提供低延迟高带宽通信
  • 4 节点分布式推理速度提升可达 3 倍

这对 Agent 有两层意义:一是可以运行单台机器装不下的更大模型;二是分布式并行处理 Prompt,直接加速 Agent 循环中的上下文处理环节。(08:17

实战演示:从 PR 总结到 Xcode 集成

演讲者展示了三个实际场景:

PR 总结:让本地 Agent 获取 MLX 仓库的最近 Pull Request,总结变更并标记需要关注的内容。模型在本地运行,只有 GitHub CLI 命令走网络。(01:40

从零构建 SwiftUI App:在空白 Xcode 项目中,让 Agent 构建一个 iPad 绘图应用。Agent 自动检查目录结构、制定计划、编写代码、调用 xcodebuild 编译并修复编译错误。两分钟后得到一个可运行的绘图应用。随后要求添加圆角笔帽,Agent 修改代码重新编译,在模拟器中验证效果。(09:29

Xcode 直接集成:在 Xcode 的 Intelligence 设置中添加 “Locally Hosted” 提供商,端口设为 8080。Xcode 直接连接本地 MLX 服务器。演讲者故意引入一个 Bug,让模型定位和修复。模型在几秒内找到问题、检查周边代码、写出修复方案,然后编译运行验证。(11:47

核心启发

本地代码审查助手

做什么:在团队内部部署一台 Mac mini 作为本地代码审查服务器,每个提交的 PR 自动触发本地 Agent 进行静态分析和逻辑检查。

为什么值得做:代码不离开公司内网,彻底消除合规风险;MLX-LM Server 的 OpenAI 兼容接口让现有审查工具链无缝迁移。

怎么开始:用 mlx_lm.server 加载一个代码专用模型(如 CodeQwen),然后写一个 Git Hook 或 CI 脚本调用本地 /v1/chat/completions 接口。

离线智能 IDE 插件

做什么:为 VS Code 或 Xcode 开发一个完全离线的代码补全和重构插件。

为什么值得做:M5 的 Neural Accelerator 让本地 Prompt 处理速度接近云端体验,但零延迟、零费用、零数据泄露风险。

怎么开始:插件侧用任意 OpenAI SDK,把 baseURL 改成 http://127.0.0.1:8080/v1,模型名填 default_model

多 Mac 家庭算力池

做什么:把家里或办公室的几台 Mac 用 Thunderbolt 线串起来,组成一个私有分布式推理集群。

为什么值得做:单台 Mac 跑 7B 模型很轻松,但 122B 模型需要多台机器。Thunderbolt RDMA 让通信延迟低到可用,4 台机器速度提升 3 倍。

怎么开始:准备 hosts.json 描述各节点,用 mlx.launch --backend jaccl 启动分布式服务。

本地自动化运维 Agent

做什么:部署一个常驻本地的 Agent,监控服务器日志、自动分析异常、执行修复命令。

为什么值得做:运维数据(日志、配置、证书)极其敏感,本地运行确保不泄露。Agent 循环可以持续数小时处理大量日志上下文,没有 API 费用压力。

怎么开始:用 OpenCode 或自定义 Python Agent 框架,配置工具调用能力(读取日志、执行 shell 命令),指向本地 MLX-LM Server。

私有知识库问答

做什么:把公司内部文档、Wiki、代码仓库索引后,通过本地 Agent 提供自然语言查询接口。

为什么值得做:RAG(检索增强生成)的核心痛点是敏感文档不能送云端。本地 MLX 模型 + 本地向量数据库 + 本地 Agent 形成完整闭环。

怎么开始:用 mlx-lm 加载一个 Embedding 模型做文档向量化,再用一个对话模型做生成,Agent 负责编排检索和回答流程。

关联 Session

评论

GitHub Issues · utterances