简介:这份PDF指南面向对人工智能感兴趣的技术爱好者、企业IT管理员与开发者,聚焦在本地环境中部署DeepSeek大语言模型,帮助读者在保护敏感数据的前提下构建安全可控的私有AI应用。内容从模型功能特点与技术背景切入,系统梳理硬件显存、内存与CPU选型建议,以及Ollama、CUDA Toolkit等软件的准备与安装要点,并给出具体部署步骤与常见问题解答。压缩包内仅含1个PDF文件,大小约586KB,轻量便携,便于随时查阅。已有701人学习,适合希望掌握模型全部权限、按业务场景灵活定制的中高级读者。文中还结合医疗辅助诊断、金融风控、教育资源推荐等场景,讨论模型微调、性能优化与进阶应用思路,可帮助读者对照自身硬件条件选择合适模型版本,少走部署弯路,并为后续私有化AI服务开发提供参考。
1. 显存不够的那次翻车:本地部署 DeepSeek 前的第一课
本地部署 DeepSeek 大语言模型,听起来就是装个软件、拉个模型的事,真上手才发现坑全在硬件和参数上。前阵子帮一个做合同文本处理的小团队搭环境,机器是 8GB 显存的卡、16GB 内存,对方认准“参数越大越聪明”,上来就ollama run deepseek-r1:14b,下载一路顺畅,聊到第三轮回答直接断在半句,终端吐出一屏幕方块和乱码,任务管理器里显存顶到满格、内存也快见底,整机卡到鼠标拖影。
换成 7B 版本才跑顺。这件事说明本地跑模型不是把命令背下来就行:显存怎么估、模型怎么选、终端编码怎么设、参数写在哪一层,任何一环错了,表现出来都是“模型坏了”。这份笔记按环境清点、装 Ollama、拉模型调参、排错、验收的顺序走,适合手里只有一张消费级显卡、又要求数据不出内网的开发者。
2. 环境清点与选型:显存、内存和模型规模的对应关系
装之前先把机器的家底摸清,比装完再后悔省事得多。本地部署最核心的约束是显存,其次是内存,CPU 只影响首字延迟,磁盘影响的是你能存几个模型。这一章不急着敲命令,先把“我这台机器能跑多大”算明白,后面拉模型时就不会出现下完 20GB 才发现跑不动的情况。
2.1 显存与模型规模的对照
模型加载时,权重会被塞进显存(部分卸载时溢到内存),所以判断能不能跑,第一看权重体积。Ollama 库里的量化版本比原始 FP16 小很多,常见对照如下,具体数字以拉取时显示的体积为准。
| 模型版本 | 权重体积(约) | 显存下限 | 建议显存 | 16GB 内存够不够 |
|---|---|---|---|---|
| deepseek-r1:1.5b | 1.2GB | 2GB | 4GB | 够 |
| deepseek-r1:7b | 4.7GB | 6GB | 8GB | 够 |
| deepseek-r1:14b | 9.5GB | 10GB | 16GB | 勉强,需关后台 |
| deepseek-r1:32b | 20GB 上下 | 20GB | 32GB | 不够,建议 32GB 以上 |
| deepseek-r1:70b | 40GB 以上 | 40GB | 48GB 或多卡 | 不够 |
这张表要横着看:显存下限是“能加载”,建议显存是“能连续对话不卡顿”。因为推理过程中除了权重,还要留出上下文缓存(KV Cache),上下文开得越长,这部分吃得越多。8GB 卡跑 7B 是舒服的,跑 14B 就会出现第 1 章那种回答断在半句的情况——不是模型坏了,是显存被挤爆,进程被系统掐掉。
估算公式我一般这么用:显存需求 ≈ 权重体积 × 1.2 + 上下文缓存。上下文缓存跟num_ctx成正比,4096 上下文下 7B 模型大约多占 0.5~1GB,开到 32768 就要多留好几个 GB。所以看到“我这卡 8GB 能不能跑 14B”这种问题,答案永远是“能加载,但别指望好用”。
2.2 内存、CPU 和磁盘:三个被低估的项
内存的门槛比很多人想的高。系统内存至少 16GB,这是底线而不是推荐值。模型加载的瞬间会把权重读进内存再搬到显存,这个峰值往往比稳态占用还高;同时开着浏览器、IDE、数据库服务,16GB 很容易被吃满,表现就是模型加载到 90% 卡住不动,或者加载成功后每次提问都要等十几秒才开始出字。有条件直接上 32GB,这是整机升级里性价比最高的一项。
CPU 影响的是首字延迟和纯 CPU 推理时的速度。多核高主频的桌面级处理器(8 核 16 线程以上)足够,不必为跑模型专门换平台。真正需要注意的是“有没有核显/独显混用”:某些笔记本默认用核显输出,Ollama 却要访问独显,结果就是显存明明空着,模型却跑在 CPU 上,速度慢十倍。
磁盘这块最容易被忽略。模型默认落在用户目录下,Windows 是C:\Users\<用户名>\.ollama\models,macOS 是~/.ollama/models,Linux 是/usr/share/ollama/.ollama/models。一个 14B 就接近 10GB,试几个版本很快几十 GB 没了。C 盘剩 20GB 以下还硬装,最后大概率装到一半报“磁盘空间不足”,清理起来比重装还麻烦。我的习惯是装完第一件事就改模型目录,把模型挪到大容量数据盘。
2.3 CUDA Toolkit:该装的和不该装的
CUDA 这块的取舍值得单独说。Ollama 的安装包和安装脚本里已经带了推理所需的运行时库,绝大多数情况下不需要手动装完整版 CUDA Toolkit。手动装的意义在于:你要自己编译带 GPU 加速的组件,或者要跑别的需要nvcc的项目。
判断标准很简单,先看驱动:
# 查看显卡驱动版本和支持的最高 CUDA 版本 nvidia-smi输出右上角的CUDA Version: xx.x表示当前驱动能支持的最高 CUDA 运行时版本,不是已安装版本。只要这个值存在且驱动是近两年的,Ollama 基本能直接吃到 GPU,不需要额外动作。真正需要装 Toolkit 的场景是下面这种:nvidia-smi能看到卡,但 Ollama 日志里提示找不到可用的 GPU 库。
装的时候有两条硬规矩。一是版本不能高于驱动支持的上限,否则装完nvcc -V能出版本号,跑模型照样报错;二是装完必须配环境变量,Windows 下把这两条路径加进系统Path:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vXX.X\bin C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vXX.X\libnvvp把vXX.X换成实际版本号。配完重开一个命令行窗口再验证,已经打开的终端不会读到新变量,这是最常见的“配了没用”的原因。
# 验证 Toolkit 是否可用 nvcc -V提示:驱动和 Toolkit 是两回事。驱动版本低会导致 Toolkit 装不上,但反过来,装了高版本 Toolkit 也不会提升驱动能力。升级顺序永远是先驱动、后 Toolkit。
2.4 版本怎么选:从用途倒推
选版本的逻辑不是“越大越好”,而是“最小可用”。按用途倒推更靠谱:
- 日常问答、文本润色、简单脚本生成:1.5B 或 7B 足够,响应快,4GB 显存的旧笔记本也能跑。
- 较复杂的文本分析、长文档摘要、中等难度代码:7B 是甜点,8GB 显存刚好,是大多数个人开发者该选的档位。
- 专业领域长文本、复杂逻辑推理、批量处理:14B 起步,显存 16GB 以上,内存 32GB 更稳。
- 真要上 32B 及以上,得先问自己是不是有 24GB 显存的卡,否则纯 CPU 推理的速度会让你放弃使用。
还有一个反直觉的点:小模型在特定任务上未必输给大模型。做结构化抽取、格式转换这类任务,1.5B 配好提示词的效果经常比 14B 随手问要好,速度快十倍。先把小模型跑通、把流程打通,再考虑换大模型,这个顺序能省掉大量等待。
3. 安装 Ollama:三个系统路径与三处必改配置
Ollama 是把模型下载、加载、提供 API 这几件事打包好的运行框架,装它等于把本地推理的地基打好。三个系统的安装方式差异不小,坑也不一样,分开写。装完不要急着拉模型,先把模型目录、监听地址、开机自启这三处配好,后面能少返工。
3.1 Windows:默认装 C 盘,先把空间腾出来
Windows 版是 exe 安装包,双击后一路 Next 就行,但有个特性必须提前知道:安装目录不可自定义,程序固定在系统盘,模型默认也落在用户目录。所以装之前先确认空间。
# 查看 C 盘剩余空间,低于 20GB 建议先清理或改模型目录 Get-PSDrive C | Select-Object @{n='已用GB';e={[math]::Round($_.Used/1GB,1)}}, @{n='剩余GB';e={[math]::Round($_.Free/1GB,1)}}安装过程本身没什么可说的,勾选许可协议、点 Install、等进度条走完。要注意的是安装完成后 Ollama 会常驻托盘并在后台起一个本地服务,监听 11434 端口。验证分两步,版本号和服务状态都要看:
# 第一步:确认命令可用 ollama -v # 第二步:确认本地服务已经起来,正常返回 Ollama is running Invoke-WebRequest http://localhost:11434/ | Select-Object -ExpandProperty Content两条都通过才算装好。只出版本号但端口访问不了,通常是服务没起来或者被别的程序占了端口,直接去托盘图标右键退出再启动一次。如果提示ollama不是内部或外部命令,说明安装路径没进 PATH,重装一次比手动找路径快。
装完立刻改模型目录,别等 C 盘红了再动:
# 把模型目录指到数据盘,路径按自己的盘符改 setx OLLAMA_MODELS "D:\ollama\models" # 改完必须重启 Ollama 进程(托盘退出再启动),setx 只对新建进程生效这里有个顺序坑:setx设完变量,当前已运行的 Ollama 服务读不到,必须先退出再启动,然后拉一个模型,去新目录看一眼文件是不是真落在那儿,确认了再继续。
3.2 macOS 与 Linux:两种安装方式与验证
macOS 走 dmg,把图标拖进 Applications 就完事,安装后同样常驻后台。验证在终端里做:
# 确认可执行文件在 PATH 中 which ollama # 版本号与服务状态 ollama -v curl http://localhost:11434/如果which ollama没有输出但应用确实装了,说明 PATH 里没有/usr/local/bin,手动补一条软链即可,不用重装。
Linux 是一行脚本,脚本会自动创建ollama系统用户、下载二进制、注册 systemd 服务:
# 官方安装脚本,执行过程中可能需要输入管理员密码 curl -fsSL https://ollama.com/install.sh | sh # 查看服务状态,确认 active (running) systemctl status ollama --no-pagerLinux 上有个容易忽略的点:服务是以ollama用户身份跑的,模型目录/usr/share/ollama/.ollama/models的属主也是它。你用自己的账号手动ollama run拉下来的模型,会落到~/.ollama/models,和服务用的不是同一份,于是出现“明明拉过,服务里 list 不到”的怪事。解决办法要么统一用服务(systemctl管理、用 API 调用),要么把OLLAMA_MODELS指到同一个可读写目录。
3.3 三处配置:模型目录、监听地址、保活时间
装完只是能跑,配好才是好用。三处配置按重要性排:模型目录解决空间,监听地址解决谁能访问,保活时间解决“每次提问都要重新加载”的等待。
Linux 用 systemd 覆盖配置,这是唯一推荐的方式,直接改/etc/systemd/system/ollama.service会在升级时被覆盖:
sudo systemctl edit ollama.service在打开的编辑器里填入:
[Service] # 模型存到大容量盘,注意目录要先建好并 chown 给 ollama 用户 Environment="OLLAMA_MODELS=/data/ollama/models" # 只允许本机访问就保持 127.0.0.1,要让内网其他机器调用再改成 0.0.0.0 Environment="OLLAMA_HOST=127.0.0.1:11434" # 模型加载后在显存里保留 30 分钟,避免频繁加载卸载 Environment="OLLAMA_KEEP_ALIVE=30m"保存后重载配置:
sudo systemctl daemon-reload sudo systemctl restart ollama systemctl show ollama -p Environment最后一条命令用来确认环境变量真的生效了,输出里能看到刚写的那几项才算成功。很多人改完直接 restart 就以为好了,其实daemon-reload漏掉的话新配置根本没被读进去。
注意:把
OLLAMA_HOST改成0.0.0.0意味着同网段任何机器都能调用你的模型,接口本身没有鉴权。内网自用可以,接到公共网络前务必想清楚。
Windows 和 macOS 没有 systemd,改法分别是setx+ 重启进程、launchctl setenv+ 重启应用。三处配置改完都建议做一次“拉一个小模型、确认文件落在新目录、重启后模型还在”的闭环验证,别等到装了十几个模型才发现路径没生效。
4. 拉取与运行 DeepSeek:模型、参数和图形界面的落地
前面的环境铺好了,这一章是真正把模型跑起来。命令没几条,但参数写在哪一层、改了为什么不生效,是最容易反复折腾的地方。
4.1 pull 与 run 的区别,以及一个常见误解
ollama pull只下载不运行,ollama run是下载 + 加载 + 进入交互,第一次执行某个模型时两者等价。想让下载和调试分开,就先用 pull:
# 只下载,不进入交互,适合先把模型备好 ollama pull deepseek-r1:7b # 查看本地已有哪些模型、体积多大 ollama list # 进入交互,出现 >>> 提示符即可提问 ollama run deepseek-r1:7b这里要纠正一个网上流传很广的写法:ollama list | grep deepseek不是“搜索可用模型”,它是过滤本地已下载的模型。本地一个都没拉过的时候,这条命令当然没有任何输出,很多人因此以为模型名写错了。要确认某个 tag 是否存在,直接 pull,拉不到会明确报错;或者去模型库页面查 tag 列表。
交互界面里还有几个以斜杠开头的内置命令值得记住:/bye退出,/clear清空当前上下文重新开始,/?看全部命令。长对话之后模型开始答非所问,八成是上下文塞满了,/clear一下比重新加载模型快得多。
4.2 参数怎么调:温度、上下文和 GPU 层数
网上的教程里常见的写法是ollama run deepseek-r1:1.5b --options='{"temperature": 0.7}',这个写法在当前版本的 CLI 里是不生效的——命令能执行,参数被忽略,你还以为调过了。参数有三个正确的落点:交互内的/set parameter、Modelfile、API 请求体。CLI 启动参数这条路基本堵死。
临时调参用交互命令最直接:
>>> /set parameter temperature 0.6 >>> /set parameter num_ctx 8192 >>> /show parameters/show parameters用来确认当前生效的值,改完一定要看一眼,这是判断“参数到底有没有进去”的唯一可靠办法。三个参数的实际含义:
temperature:控制随机性。做抽取、代码、格式转换这类要稳定输出的任务,我一般设 0.2~0.4;写文案、头脑风暴设 0.7~0.9。R1 这类带推理链的模型对温度比较敏感,0.5~0.7 是比较稳的区间,调太高容易出现推理过程发散。num_ctx:上下文窗口长度,直接决定能吃多长的文档,也直接决定显存占用。默认值通常偏小,处理长文档要手动调大,但每翻一倍显存占用也跟着涨,8GB 卡上开到 16384 就接近上限了。num_gpu:卸载到显卡的层数。设成一个小于总层数的值可以做“部分卸载”,让一部分层跑在 GPU、剩下的跑在 CPU 上——这是小显存跑大模型的唯一办法,代价是速度掉得厉害。设 0 就是纯 CPU。
4.3 用 Modelfile 把一套配置固化下来
临时/set的参数退出就没了,每次重开都要重设,这不现实。正确做法是写 Modelfile,把模型、参数、系统提示词打包成一个自定义模型:
# 基于已下载的 7B 版本派生 FROM deepseek-r1:7b # 抽取类任务用低温度,保证输出稳定 PARAMETER temperature 0.3 PARAMETER num_ctx 8192 PARAMETER num_gpu 28 # 系统提示词固定住角色和输出格式 SYSTEM "你是一名严谨的文档处理助手。回答只给结论和依据,不要复述问题。"存成文件后创建并运行:
# ds-doc 是自定义模型名,可以随便起,注意别和官方 tag 冲突 ollama create ds-doc -f ./Modelfile # 之后直接跑这个自定义模型,参数已内置 ollama run ds-docnum_gpu 28这个值不是拍脑袋写的,先用ollama run加载模型,另开一个终端看显存占用,逐步往上加,加到显存接近满但还没报错为止。不同模型的层数不一样,用ollama show deepseek-r1:7b能看到模型信息,包含层数、参数量、量化方式,照着总层数去调。
这套做法的好处是可复制。团队里几个人用同一个 Modelfile,出来的行为就是一致的;换机器只要把文件带过去,ollama create一遍就还原,不用口头交代“温度记得调 0.3”。
4.4 换成网页界面:OpenWebUI 接入本地模型
命令行适合调试,日常用还是网页顺手。OpenWebUI 是自托管的图形界面,完全本地运行,通过 Ollama 的 API 对接模型。装之前确认 Python 3.11 以上:
# 建独立虚拟环境,避免和系统里的包打架 python -m venv openwebui_env # Windows 用 openwebui_env\Scripts\activate source openwebui_env/bin/activate pip install open-webui # 默认监听 8080 open-webui serve启动后浏览器打开http://localhost:8080,在设置里的模型服务部分选 Ollama,地址填http://localhost:11434,保存后模型列表会自动拉出来。如果列表是空的,先去终端curl http://localhost:11434/api/tags看有没有返回 JSON,能返回说明服务正常,问题在 OpenWebUI 侧的网络配置(比如它跑在容器里,localhost指向的是容器自己,要换成本机 IP)。
到这里,模型已经有两条调用路径:命令行交互和网页界面。还有第三条更实用的——HTTP API,这也是把模型嵌进自己业务系统的入口:
# 非流式调用,适合脚本里一次拿完整结果 curl http://localhost:11434/api/generate -d '{ "model": "ds-doc", "prompt": "把下面这段合同条款里的付款条件摘出来:……", "stream": false, "options": { "temperature": 0.3, "num_ctx": 8192 } }'stream: false表示等生成完一次性返回,写脚本处理时比流式好处理;options里的参数优先级高于 Modelfile 里的默认值,适合按请求临时覆盖。另外 Ollama 还提供 OpenAI 兼容端点http://localhost:11434/v1,现有的、按 OpenAI 接口写好的代码,把 base_url 换成这个就能直接对接本地模型,不用改业务逻辑。
5. 排查清单:五条踩坑记录,从装不上到跑不动
装环境这件事,成功路径只有一条,失败方式能列出几十种。下面五条是我实际遇到过、也在别人机器上复现过的,按“现象 → 原因 → 解决”写,遇到问题先在这里对一遍。
5.1 现象:装完提示“不是内部或外部命令”
Windows 下装完,新开命令行敲ollama -v报'ollama' 不是内部或外部命令,但托盘图标明明在。
原因:安装程序把可执行文件放进了用户目录下的AppData\Local\Programs\Ollama,PATH 没写进去,或者写进去了但当前这个命令行窗口是安装前就开着的,读不到新变量。
解决:先关掉所有命令行窗口重开一个再试,这一步能解决八成情况。还不行就手动把安装目录加进用户环境变量 PATH,加完再重开窗口。极少数情况是安装被安全软件拦了半截,看安装目录里有没有ollama.exe,没有就重装。
5.2 现象:模型下载到一半断了,重试又从头开始
拉 14B 模型,进度条走到 60% 报错退出,再执行一次又从 0% 开始,反复几次都过不去。
原因:网络抖动导致分片下载失败。Ollama 的下载是分片+校验的,正常情况下断点续传是支持的,但如果卡在某个分片反复失败,就会表现为“每次都从头来”。
解决:先换有线网络重试,无线环境下的丢包是主因。有条件的在低峰期拉,或者先拉 1.5B 验证整条链路通畅,再拉大模型。如果磁盘上已经留下了半截文件并且校验一直失败,去模型目录把对应模型的 blob 删掉重下,比反复重试快。
# 看一眼模型目录占了多大,判断是不是留了残缺文件 du -sh ~/.ollama/models5.3 现象:回答出一半变成乱码方块
模型正常加载、正常开始回答,输出到一半突然变成一堆方块、问号和乱码字符,中文全丢。
原因:终端编码不匹配。Windows 命令行默认代码页是 GBK,模型输出的是 UTF-8,中文和特殊符号就会被打成乱码。这跟模型本身没关系,是显示层的问题。
解决:切代码页再进交互。
# 切到 UTF-8 代码页,再启动模型 chcp 65001 ollama run deepseek-r1:7bPowerShell 里也可以用[Console]::OutputEncoding = [System.Text.Encoding]::UTF8。切完还是乱码,就换 Windows Terminal,它对 UTF-8 的支持比老 conhost 好得多。这个坑最坑的地方在于:乱码会让人误以为是模型输出坏了,去重装模型、重装 Ollama,折腾半天其实是显示问题。
5.4 现象:报 CUDA out of memory,或者回答到一半进程消失
加载时报显存不足,或者聊几轮之后突然没响应,任务管理器里显存 100%、Ollama 进程不见了。
原因:三个来源叠加。一是模型本身超出显存上限;二是num_ctx开太大,KV Cache 把剩下的显存吃光;三是num_parallel(并发请求数)大于 1,每个并发都要一份上下文空间。第三种最隐蔽,单次测试好好的,一上生产、两个人同时问就崩。
解决:按顺序排查。先降模型规模,14B 换 7B 是最快的止血;再把num_ctx从 32768 降到 8192;然后确认并发配置:
# 查看当前加载的模型和它占用的显存 ollama ps # 单并发场景把并行数设成 1,避免多份上下文抢显存 export OLLAMA_NUM_PARALLEL=1真要在小显存上跑大模型,就用 Modelfile 里的num_gpu做部分卸载,牺牲速度换能跑。无论如何别指望“显存不够靠虚拟内存顶”,溢到内存之后速度会掉到不可用。
5.5 现象:关掉终端模型就没了,或者端口被占用
关掉命令行窗口后,网页端和 API 都调不通了;或者启动时报address already in use。
原因:前者的根源是在前台手动ollama run,进程跟着终端一起退出——服务模式和前台交互是两回事;后者是上一次的 Ollama 进程没退干净,或者别的程序占了 11434。
解决:确认服务在跑,而不是靠某个终端窗口撑着。
# Linux systemctl status ollama --no-pager # 端口占用排查,Windows 用 netstat -ano | findstr 11434 lsof -i :11434Windows 上托盘图标右键退出再启动一次,基本能解决端口僵持。macOS 用launchctl管理的服务不会随终端退出,如果出现同样问题,检查是不是同时开了两个 Ollama 实例。
6. 跑通验收:四条命令确认模型真在本地干活
装完不算完,“能用”和“以为能用”之间的差距,得靠一套固定的验收动作来消除。我的做法是四步,全程不看界面、只看输出,任何一步不对都能定位到具体环节。
第一步验服务,第二步验模型,第三步验推理,第四步验接口。
# 1. 服务活着:返回 Ollama is running curl -s http://localhost:11434/ # 2. 模型在本地:输出里能看到目标模型和体积 ollama list # 3. 推理正常:不带交互、一次性拿结果,方便脚本化验证 curl -s http://localhost:11434/api/generate -d '{ "model": "deepseek-r1:7b", "prompt": "用一句话说明什么是本地推理", "stream": false, "options": {"temperature": 0.2, "num_ctx": 4096} }' | head -c 300 # 4. 加载状态:确认模型真的在 GPU 上,而不是偷偷跑在 CPU ollama ps第四步最容易被跳过,也最关键。ollama ps的输出里有一列表示模型有多少比例在 GPU 上,如果是 100% CPU,说明驱动或显存有问题,模型虽然能用但慢得没有意义——这种情况下前面的三步全都是通过的,只有这一步能把问题揪出来。
再补一条稳定性验收:连续问十个问题,中间不退出,看显存占用是不是稳定在一个水位、回答有没有中途断裂。单次提问能通不代表能扛住连续对话,第 1 章那个案例就是单次能答、多轮必崩。
| 验收项 | 通过标准 | 不通过时先查 |
|---|---|---|
| 服务端口 | 返回 Ollama is running | 进程是否在跑、端口是否被占 |
| 模型列表 | 能看到目标模型与体积 | 模型目录是否被改过、属主是否正确 |
| 单次推理 | 返回结构化 JSON 且内容完整 | 终端编码、上下文长度 |
| GPU 占用 | GPU 比例接近 100% | 驱动、num_gpu设置 |
| 连续对话 | 十轮不中断、显存水位稳定 | num_ctx与并发数 |
最后提一句温度。验收时统一用 0.2 这种低温,输出稳定、容易比对;等确认链路没问题了,再按实际用途调回去。把温度混在验收环节里,出了问题分不清是模型坏了还是随机性导致的输出差异。
从那以后我每次装完一套环境,都强制走一遍这四步加连续十轮的验收,哪怕只是换了个模型 tag。血泪经验是:跳过验收省下的十分钟,通常会在三天后以“线上突然不好使”的形式加倍还回来。希望这套流程能帮你少走几趟弯路。
本文还有配套的精品资源,点击获取