如果你最近在自己的 Mac 上跑过本地大模型,一定感受过这种状态:终端里敲命令下载模型、加载权重、推理、退出,全程没有一个直观的界面;模型文件散落在各个目录,内存被吃掉几个 GB 之后,你只能靠 Activity Monitor 确认到底是谁在占用;想换个模型、调一下上下文长度,又得回到命令行重新翻参数。
这就是 MLX Control Center 这类工具存在的价值。它解决的不是“能不能跑模型”的问题,而是“怎么把 MLX 这套机器学习框架用得更舒服、更可控”的问题。v0.4 版本的发布,标志着这个社区工具从早期“能用”的阶段,开始往“可管理、可观察、可配置”的方向走。
本文会把 MLX、MLX Control Center 以及 v0.4 版本带来的变化放在一条完整的技术链路里讲清楚。你会看到它解决了什么真实痛点,什么情况下值得用,什么情况下没必要用,以及从零开始怎么安装、配置、加载模型、做运行验证和排错。如果你手上有一台 Apple Silicon Mac,并且对本地运行大模型、做机器学习实验感兴趣,这篇文章建议收藏备用。
1. 这篇文章真正要解决的问题
先下一个明确判断:MLX Control Center 的核心价值,不是把 MLX 变成“一键式傻瓜工具”,而是把 MLX 的典型工作方式从“脚本式实验”推进到“可管理的运行环境”。
如果你只用过 macOS 自带的终端,可能不觉得命令行有什么问题。但当你开始认真用 MLX 跑模型时,会遇到几个绕不开的体验断层。
第一个断层是状态不可见。模型加载后一直占着内存,推理结束之后是否释放,多任务并发时资源怎么分配,这些信息在这个工具出现之前大多是靠人工猜。你打开“活动监视器”看到 memory pressure 飙红,却不知道具体是哪个后台进程造成的。此时如果搜索“macOS 系统数据占用过大”,得到的常见建议往往是清理缓存、重启或重装系统,但真正的元凶可能只是你之前跑过一次 MLX 加载了 7B 模型没有退出。
第二个断层是配置不集中。MLX 是苹果在 2023 年底开源的机器学习框架,专门面向 Apple Silicon 设计。它的 API 风格接近 NumPy,本身非常轻量,但它不负责管理模型文件,也不负责记录你的运行配置。你今天加载 Qwen、明天加载 Llama,模型路径、量化位数、上下文长度、输出长度,全部散落在不同的 Python 脚本或命令行参数里。换一台机器基本等于重新来一遍。
第三个断层是操作不直观。很多 Mac 用户对“跑大模型”的预期,是打开一个图形界面、选择模型、点一下运行,然后看到流式输出。但 MLX 官方的核心能力更偏向底层计算,它默认不会给你 GUI。你要么自己写 Python 脚本,要么借助社区 UI。MLX Control Center 走的正是“补齐上层体验”的路线,它把常见的模型加载、状态查看和资源管理动作整合到一起,让 MLX 的使用门槛不至于全卡在命令行。
所以,这篇文章适合三类读者:
- 在 Apple Silicon Mac 上跑过或想跑本地大模型,但被命令行和模型整理问题劝退的开发者;
- 已经在用 MLX 或 mlx-lm,希望有一个控制面板来管理实验和观察资源的机器学习爱好者;
- 正在评估“Mac 是不是适合做本地大模型开发”的技术决策者。
看完这篇文章,你能清楚地知道 MLX Control Center 到底是做什么的、v0.4 帮你省掉哪些事、什么情况下它反而是多余的一层,以及怎么在一台全新的 Mac 上把它跑起来。
2. MLX 与 MLX Control Center 的基础概念与核心原理
2.1 MLX 是什么:苹果生态的“深度学习数组框架”
MLX 是苹果开源的一个机器学习框架,定位和 PyTorch 有重叠,但设计目标非常明确:面向 Apple Silicon 的统一内存架构做深度优化。
要理解它的价值,先看一个硬件背景。在传统电脑上,CPU 和 GPU 通常拥有各自的独立内存,数据从 CPU 内存搬到 GPU 显存需要经过 PCIe 总线,这个过程有传输开销。而 Apple Silicon 使用统一内存架构(Unified Memory),CPU 和 GPU 共享同一片物理内存。这个设计让“把数据交给 GPU 计算”不再需要大规模拷贝。
MLX 把这种硬件特性直接做进了框架设计里。它的计算图是懒加载的,数组在设备之间共享内存,Python 层的 API 刻意做得像 NumPy。对开发者来说,这意味着:
- 上手成本低,如果你会 NumPy,写 MLX 代码会感觉很顺滑;
- 内存利用率高,大模型可以更从容地加载;
- 在 Mac 上跑 transformer 类模型,MLX 通常比通用框架有更积极的优化效果。
当然,MLX 不等于“只能在 Mac 上用”,但它最好的体验确实是在 Apple Silicon 上。它支持 Python、Swift 和 C++,生态里最常用的还有 mlx-lm,这是围绕 MLX 做的大语言模型加载和生成工具库,支持从 Hugging Face 直接加载转换后的量化模型。
2.2 MLX Control Center 是什么:补上 MLX 的“驾驶舱”
MLX Control Center 是基于 MLX 生态的社区工具,目标是对 MLX 运行环境做可视化管理。它做的事情,类比一下更好理解:MLX 本身是一台高性能发动机,Control Center 不是换掉发动机,而是在驾驶舱里加了仪表盘、油门调节器和运行状态监控面板。
从 v0.4 版本的迭代方向看,这类工具的核心功能通常围绕几个模块展开:
- 模型管理:指定模型目录,扫描已下载的 MLX 格式模型,提供统一的入口加载模型;
- 运行状态监控:显示当前已加载模型占用的内存、运行时长、推理状态,帮助识别资源占用异常;
- 环境管理:管理 Python 环境、MLX 版本和依赖,减少“换环境之后跑不起来”的问题;
- 一键启动与停止:把原来需要手动执行的 Python 加载逻辑封装成按钮或快捷操作。
这里需要说明一点:v0.4 的具体功能清单会随实际仓库更新而变化,任何第三方工具的功能演进都很频繁。但你真正应该理解的,是这个工具在整条链路中的位置——它服务于 MLX 生态,不会替代框架本身,也不会替代你写模型代码。
2.3 与其他本地模型工具的对比
很多人在 Mac 上跑模型时会先想到 Ollama 或 LM Studio,下面这张表可以帮助你判断它们之间的差异。
| 维度 | MLX 原生方案 | MLX Control Center | Ollama / LM Studio |
|---|---|---|---|
| 底层框架 | MLX | MLX | Ollama 自带运行时,LM Studio 使用 llama.cpp 等 |
| 适用硬件 | Apple Silicon 优先 | Apple Silicon 优先 | Mac / Windows / Linux 都能用 |
| 灵活性 | 很高,代码直接控制 | 中等,受工具功能边界限制 | 较高,但偏向使用现成模型 |
| 对开发者友好度 | 需要写 Python 脚本 | 适合不想总是写脚本的开发者 | 对普通用户更友好 |
| 资源透明度 | 不提供默认 UI | 提供监控和状态入口 | 有基础状态展示 |
| 大模型量化格式 | MLX 量化格式 | MLX 量化格式 | GGUF 等格式 |
结论很简单:如果你想深入理解和控制模型加载逻辑,MLX 原生代码不可替代;如果你想要的是一个开箱即用的“模型聊天/管理桌面工具”,Ollama 和 LM Studio 更合适;如果你既要享受 MLX 在 Apple Silicon 上的性能优势,又不希望每次实验都在终端里堆参数,MLX Control Center 正好落在中间。
3. 环境准备与前置条件
在动手安装之前,先确认你的机器满足要求。MLX 本身对硬件有明确限制,这是硬条件,不属于“软件层面能绕过”的问题。
3.1 硬件与系统要求
- Apple Silicon Mac,例如 M1、M2、M3 或更新的芯片;
- 内存建议 16GB 起步,跑 7B 量化模型更稳,跑更大尺寸模型建议 32GB 以上;
- macOS 版本建议保持较新状态,MLX 依赖的 Metal 能力在不同系统版本上有差异;
- Intel Mac 不在 MLX 的推荐范围内,安装或运行时大概率会遇到依赖不兼容或计算设备不可用的问题。
如果你不确定自己的机器是不是 Apple Silicon,可以在终端执行:
uname -m如果输出是arm64,通常是 Apple Silicon;如果输出是x86_64,则基本可以确定是 Intel Mac。更准确的判断方式是通过“苹果菜单 -> 关于本机”查看芯片信息。
3.2 Python 环境准备
MLX 的 Python 包支持需要较新版本的 Python。建议使用 Python 3.9 以上版本,3.10 或 3.11 会省掉不少兼容问题。这里不建议直接用系统自带 Python,也不建议把所有包装进全局环境,最好新建一个虚拟环境。许多“macOS 配置 Python 环境”翻车的案例,根源都是依赖全局环境里的旧版本包互相污染。
终端里创建一个项目目录并建立虚拟环境:
mkdir ~/mlx-workspace cd ~/mlx-workspace python3 -m venv .venv source .venv/bin/activate执行完source之后,命令行提示符前面会多出(.venv),说明你已经进入虚拟环境。这一步很关键,后面安装的包都只属于当前项目,不会影响系统其他 Python 程序。
如果安装阶段报错提示 CommandLineTools 未安装,可以先安装命令行开发者工具:
xcode-select --install安装过程会弹窗要求确认,等它完成后再继续。
3.3 安装 MLX 与 mlx-lm
进入虚拟环境后,安装 MLX 核心库和模型加载工具:
pip install --upgrade pip pip install mlx mlx-lm这里没有写死具体版本号。MLX 的版本迭代比较频繁,直接安装最新版通常能拿到对当前系统更积极的适配。如果项目对稳定性要求高,可以给 MLX 和 mlx-lm 分别固定版本号,但在你真正遇到版本问题时再固定也不迟。
安装完成后,可以用下面的命令快速验证环境是否可用:
python -c "import mlx; print(mlx.__version__)"能输出版本号,说明 MLX 基础环境已经就绪。这一步失败的话,不要急着装 Control Center,先解决依赖问题。
4. 核心流程拆解:从安装到加载模型的完整链路
MLX Control Center 的安装和使用,本质上是围绕「MLX 运行环境」在做管理。因此完整流程可以拆成五步:环境安装、工具安装、目录规划、模型接入、启动运行。
4.1 安装 MLX Control Center
MLX Control Center 的安装方式以项目仓库的 README 为准。从常见的 Python 工具分发习惯看,通常支持通过pip直接安装,或者克隆源码后以开发模式安装。这里演示通用流程:
# 方式一:pypi 安装(如果项目已发布) pip install mlx-control-center # 方式二:源码安装 git clone https://github.com/your-project/mlx-control-center.git cd mlx-control-center pip install -e .源码安装的-e参数是 editable 模式,也就是开发模式。改动源码后不需要重新安装,对跟踪新版本很方便。如果你只是使用,不打算看代码,推荐直接 pip 安装。
注意:仓库地址和包名在不同版本阶段可能变化。实际安装时以你从 GitHub 或 PyPI 查到的名称为准,不要用搜索引擎找到的过时命令直接执行。
4.2 规划模型目录
MLX 生态的模型通常不以单个文件存在,而是以目录形式组织,里面包含权重、配置、分词器等文件。如果目录混乱,Control Center 就无法稳定扫描。
推荐在用户目录下建立一个统一的模型目录:
mkdir -p ~/mlx-models用这个目录存放所有 MLX 格式的模型。后续从 Hugging Face 或其他模型社区下载模型时,也手动指定到这个目录。这样做的收益在实践场景里非常明显:你不会收到“macOS 系统数据占用过大”的惊吓,因为你能通过目录大小清楚算出模型占用。
4.3 配置 Control Center
工具安装完成后,第一次启动通常会自动生成配置目录。配置文件可能是一个 YAML 或 JSON 文件。这里展示一份合理的配置文件结构,实际字段以你启动工具后的提示为准:
# 文件路径:~/.config/mlx-control-center/config.yaml model_dir: ~/mlx-models default_model: mlx-community/Qwen2.5-7B-Instruct-4bit max_memory_ratio: 0.7 port: 8890 launch_at_login: false这些配置项的含义分别是:
model_dir:模型扫描目录,Control Center 从这里发现模型;default_model:默认加载的模型标识,启动时如果指定了默认模型,可以少点一次鼠标;max_memory_ratio:最大内存使用比例,建议设置在 0.6 到 0.8 之间。Apple Silicon 的统一内存需要同时给系统、图形和模型使用,留出余量是更稳的做法;port:工具本地服务端口,如果做 Web 管理界面,会用到这个端口;launch_at_login:是否登录自启动,开发机上一般先不开,稳定之后再考虑。
配置文件的字段描述来自常见设计,不一定和 v0.4 完全一致。建议“先启动、再按界面提示调整”,不要直接把这份配置硬塞进不存在的字段里。
4.4 导入并加载模型
打开 Control Center 后,在界面中设置模型目录为~/mlx-models。工具扫描目录后,会列出识别到的模型列表。
如果没有现成模型,可以先用 mlx-lm 下载一个体积适中的模型。从官方模型社区选择 MLX 格式的量化模型即可。下面这条命令是下载模型的示例:
huggingface-cli download mlx-community/Qwen2.5-7B-Instruct-4bit --local-dir ~/mlx-models/Qwen2.5-7B-Instruct-4bit这条命令需要先安装huggingface_hub:
pip install huggingface_hub模型下载完毕后,回到 Control Center,点击刷新或重新扫描,对应模型就会出现在列表里。加载时注意观察日志输出,正常情况会显示权重加载进度和内存分配情况。
到这里,“从安装到加载模型”的链路就走通了。你会发现大部分动作已经从“编写代码”转移到了“界面配置”。这正是 Control Center 想解决的问题。
5. 完整示例与代码实现
为了让链路更清晰,这一节我们从“最小可行性”出发,用三个层面的示例打通:底层用 Python 验证 MLX 推理,工具层用 Control Center 做模型管理,配置层用文件固化参数。
5.1 示例一:用 Python 验证 MLX 模型推理
无论是否使用 Control Center,底层推理能力都应该先验证。只有底层能跑通,上层界面才有意义。
创建一个文件examples/quick_start.py,内容如下:
# 文件路径:examples/quick_start.py from mlx_lm import load, generate model_path = "mlx-community/Qwen2.5-7B-Instruct-4bit" model, tokenizer = load(model_path) prompt = "用一句话解释什么是 Apple Silicon 的统一内存。" # 如果 tokenizer 支持对话模板,先套用模板 if hasattr(tokenizer, "apply_chat_template"): prompt = tokenizer.apply_chat_template( [{"role": "user", "content": prompt}], tokenize=False, add_generation_prompt=True, ) response = generate(model, tokenizer, prompt=prompt, max_tokens=512) print(response)这个脚本的核心逻辑分三步:
- 通过
load()加载 MLX 格式的模型,返回模型对象和分词器; - 拼接用户输入,并使用 tokenizer 的对话模板格式化 prompt;
- 通过
generate()执行推理,max_tokens控制最大生成长度。
执行脚本:
python examples/quick_start.py如果运行正常,你会看到模型推理结果输出在终端。第一次加载需要一点时间,因为模型权重要从磁盘读入内存。
这里提醒一下:模型名称要改成你实际下载或准备好的模型路径。mlx-community/Qwen2.5-7B-Instruct-4bit只是示例,不保证在任意时间点都能直接下载。
5.2 示例二:在终端启动 MLX Control Center
安装完成后,启动命令通常如下:
mlx-control-center如果你的安装方式是通过源码,也可以使用模块方式启动:
python -m mlx_control_center启动后,终端窗口不要关闭,工具会让一个本地管理进程保持运行。如果看到端口监听、模型扫描完成等日志,说明启动成功。
5.3 示例三:将常用运行参数固化到配置文件
上面说过,终端运行模型时最容易出问题的就是参数分散。下面用一份 YAML 配置来集中管理常见参数:
# 文件路径:~/mlx-workspace/mlx_config.yaml model_path: ~/mlx-models/Qwen2.5-7B-Instruct-4bit max_tokens: 2048 temperature: 0.7 top_p: 0.9 device: unified_memory然后用一个简洁的 Python 脚本读取这份配置并执行推理:
# 文件路径:examples/config_driven_generate.py import yaml from mlx_lm import load, generate with open("~/mlx-workspace/mlx_config.yaml", "r") as f: config = yaml.safe_load(f) model, tokenizer = load(config["model_path"]) response = generate( model, tokenizer, prompt="用 50 个字介绍 MLX", max_tokens=config["max_tokens"], temperature=config["temperature"], ) print(response)这种做法与 Control Center 的配置文件思路一致:把参数和逻辑分离,后续无论换模型还是调参数,改配置文件即可,不需要翻代码。在这一层你已经可以看到“管理”的动作开始替代“手工输入”。
5.4 如何把这些代码与 Control Center 配合使用
Control Center 不会替代你写的 Python 推理脚本,它更适合做“模型生命周期管理”:让模型常驻、控制加载、释放资源、查看推理状态。而你的自定义脚本可以继续用于批量实验、测试不同 prompt 或在特定数据集上进行评测。
配合方式可以是:Control Center 管理模型的加载和目录,脚本通过调用 MLX API 与同一个模型文件进行交互。两者共享模型文件,不冲突。
6. 运行结果与效果验证
6.1 验证 Python 推理链路
执行python examples/quick_start.py后,如果你能看到一段连贯的中文回答,说明 MLX 推理链路是通的。
常见问题有两个:第一,下载的模型不是 MLX 格式,加载时报结构不匹配;第二,模型路径写错,加载时报文件不存在。前者建议下载前确认模型名称里带mlx标识,后者检查路径并确认本地文件确实存在。
6.2 验证 Control Center 的服务状态
启动 Control Center 后,打开浏览器访问配置文件中设置的port,例如:
http://127.0.0.1:8890如果页面能正常打开,并且模型列表中出现你放在~/mlx-models下的模型,说明工具与 MLX 环境的连接正常。
6.3 验证内存占用与资源释放
这里的验证方法和直觉相反:不要只看模型加载时的内存,还要看模型停止后的内存释放。
你可以先打开 macOS 的“活动监视器”,切到“内存”标签页,观察内存压力变化。然后执行以下操作:
- 在 Control Center 中加载一个 4bit 量化的 7B 模型;
- 记录此时内存占用数值;
- 在 Control Center 中停止该模型;
- 过 10 到 15 秒,再次观察内存压力是否回落。
如果内存没有回落,说明模型进程没有被正确释放,这是所有本地模型管理工具都可能遇到的问题。排查时第一件事是看日志里有没有类似release memory或cleanup的输出。
6.4 判断成功与否的硬标准
一个完整的成功标准包含四件事:
- MLX Python 包能正常 import;
- Control Center 启动后页面可访问;
- 模型能出现在扫描列表中并被成功加载;
- 停止模型后内存能回到合理水平。
这四个标准都通过,才能说你的环境基本健康。如果只想跑通一次模型,前两项够用;但想长期使用,建议把后两项也纳入例行检查。
7. 常见问题与排查方法
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| 安装 MLX 时报错,提示 CommandLineTools 缺失 | 系统未安装命令行开发者工具 | 终端执行xcode-select --install并观察安装日志 | 安装 Xcode CommandLineTools,完成后重试 pip 安装 |
uname -m输出 x86_64,无法享受 MLX 加速 | 使用 Intel Mac 或终端运行在 Rosetta 下 | 用“关于本机”确认芯片类型 | Intel Mac 不建议继续安装 MLX;若是 Rosetta 终端,改用原生 arm64 终端 |
模型加载时提示model not found | 模型路径写错或目录结构不完整 | 检查model_path指向的目录是否有 config.json 和权重文件 | 用正确路径重新加载,或重新下载完整模型目录 |
| 模型加载后内存占用过高,系统卡顿 | 模型尺寸超过可用内存,或内存比例配置过高 | 查看活动监视器中的内存压力 | 换成更小量化的模型,例如 4bit,或在配置中降低max_memory_ratio |
| 页面访问不了,端口无响应 | Control Center 进程未启动或端口被占用 | 检查终端日志;用lsof -i :8890查看端口占用 | 重启服务,或修改 port 配置项 |
| 中文字符生成出现乱码 | tokenizer 与模型不匹配,或输出编码异常 | 在 Python 脚本中手动设置输出编码 | 确保加载正确的 tokenizer;终端执行export PYTHONIOENCODING=utf-8 |
| 下载模型速度很慢或反复失败 | 网络访问异常或模型体积过大 | 查看下载工具的断点信息 | 选择更小的模型,或使用支持断点续传的下载方式重试 |
| Control Center 扫描不到模型 | 模型目录配置不对,或模型不是 MLX 格式 | 检查工具日志中的扫描路径 | 将模型移动到配置的model_dir下,并确认模型为 MLX 格式 |
排查时的第一条原则:看日志,不要猜。控制台或日志面板里通常会直接说明是哪一步出了问题。第二条原则:小步验证。先验证 import 是否成功,再验证模型是否正确,最后才去排查界面层的问题。
8. 最佳实践与工程建议
8.1 模型目录要统一,不要乱放
强烈建议用单独目录管理所有 MLX 模型,例如~/mlx-models。这个习惯带来的收益有两个:一是模型体积占比一目了然,不会出现忘记模型存在导致磁盘空间莫名其妙消耗的问题;二是 Control Center 扫描时只需要配置一个目录,不遗漏也不会误扫。
8.2 内存设置要留足余量
Apple Silicon 虽然采用统一内存,但你的系统还有其他进程在使用它。把max_memory_ratio配置到 0.7 左右是更稳妥的选择。如果你同时打开浏览器、IDE、视频会议,内存压力会显著上升。不要为了“把模型加载得更大”而把比例拉满,卡顿一次的成本远高于换一个更小模型的成本。
8.3 使用虚拟环境,锁定核心依赖
无论直接使用 MLX 还是通过 Control Center,都应该在独立虚拟环境中操作。MLX 的版本更新较快,不同版本的 API 可能存在细微差异,而其他 Python 包也可能与 MLX 产生间接依赖冲突。把环境固定住,后续升级时才知道哪些变化来自 MLX 本身,哪些来自工具层。
如果你需要保持可复现的环境,建议把依赖写入requirements.txt:
mlx mlx-lm huggingface_hub pyyaml mlx-control-center8.4 后台运行与开机自启要谨慎
开发机上建议不要立刻设置开机自启。因为本地模型服务常驻会占用内存,如果你今天不打算跑模型,这个进程仍然会把内存占住。如果确实需要常驻服务,选择一个固定的模型并设置launch_at_login: true,但务必记住这个选项是“占用资源”的理由,不是免费的便利。
8.5 记录你的实验日志
用 Control Center 管理模型,不代表实验记录可以省略。每次跑模型时,记录模型名称、量化位数、上下文长度、内存占用和生成速度。不用复杂的工具,一个 Markdown 文件就可以:
## 2025-06-01 实验记录 - 模型:Qwen2.5-7B-Instruct-4bit - 内存占用:约 5.5GB - 生成速度:约 35 tokens/s - 策略调整:关闭了默认的 load_at_startup - 结论:日常办公用途可直接使用这份记录比任何仪表盘都更能帮助你在不同模型之间做决策。
8.6 生产环境要注意边界
如果你不是做模型部署,而是把 MLX 作为产品的一部分发布,应该明确 Control Center 是开发辅助工具,不适合直接作为生产服务依赖。生产环境需要的是自动化脚本、错误重试、健康检查和监控告警,而不是手动点一个按钮。开发环境用工具提升效率,生产环境用代码保证可靠,两者不能混用。
9. 总结与后续学习方向
MLX Control Center v0.4 给 Mac 上的 MLX 开发者带来的,不是一个新的算法能力,而是一层更友好的控制体验。它把模型目录、加载状态、内存占用和运行配置这些原本需要靠命令行手动管理的事情,收拢到一个界面里。对于刚接触 MLX 的人,它可以降低“跑通第一个模型”的心理门槛;对于已经熟悉 MLX 的人,它可以把重复性操作整理成更规范的工作流。
但需要再次强调的是,它不能替代你理解 MLX 本身。框架层的变化、量化方式的选择、模型输出的质量、不同任务下的性能表现,这些都需要你回到代码和实际数据中去判断。工具降低的是操作成本,不是学习成本。
下一步可以做的实践路径很清晰:先用 Python 跑通一个 MLX 模型,理解加载和推理的完整过程;再安装 Control Center,把模型管理和运行监控交给他;最后结合自己的实验记录,确定最适合你机器配置的模型尺寸和量化方案。如果你对 MLX 的底层实现感兴趣,可以继续读它的官方文档,研究 lazy evaluation 和统一内存计算图是怎么工作的。
把这篇教程保存下来,下次在新机器上配置 MLX 环境时,按第 3 节和第 4 节的流程走一遍,能省掉不少弯路。