<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>本地大模型 on 鬼哥的空间</title><link>https://guige.ai/tags/%E6%9C%AC%E5%9C%B0%E5%A4%A7%E6%A8%A1%E5%9E%8B/</link><description>Recent content in 本地大模型 on 鬼哥的空间</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Fri, 25 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://guige.ai/tags/%E6%9C%AC%E5%9C%B0%E5%A4%A7%E6%A8%A1%E5%9E%8B/index.xml" rel="self" type="application/rss+xml"/><item><title>32G 的 M6 Mac mini，怎么同时养活聊天和画图两个大模型</title><link>https://guige.ai/p/mac-mini-ai-workstation/</link><pubDate>Fri, 25 Sep 2026 00:00:00 +0000</pubDate><guid>https://guige.ai/p/mac-mini-ai-workstation/</guid><description>&lt;img src="https://guige.ai/" alt="Featured image of post 32G 的 M6 Mac mini，怎么同时养活聊天和画图两个大模型" /&gt;&lt;p&gt;新 Mac mini 让人等了快两年。8 月 25 日，苹果终于&lt;a class="link" href="https://www.apple.com/newsroom/2026/08/apple-unveils-a-more-powerful-mac-mini-featuring-the-all-new-m6-and-m5-pro/" target="_blank" rel="noopener"
 &gt;发布了新款&lt;/a&gt;，入门款是苹果第一颗 2nm 芯片 M6，高配款是 M5 Pro。&lt;/p&gt;
&lt;p&gt;鬼哥盯着 M5 Pro 看了很久。64G 内存，带宽快了将近一倍，拿来跑本地大模型确实香。可顶配要 3199 美元，折合两万多人民币。鬼哥掐指一算：这得是多少碗米粉。&lt;/p&gt;
&lt;p&gt;最后下单的是 M6、32G 那一款。为了它，鬼哥省了好几个月早餐的米粉加一个蛋。&lt;/p&gt;
&lt;img src="mac-mini-photo.webp" alt="M6 Mac mini" style="width: 360px; max-width: 100%; margin: 24px auto;"&gt;
&lt;p&gt;倒也不全是穷。鬼哥的主力工作，写代码、查资料、改长文，都是靠 Claude 和 Codex 的订阅在云端完成的。本地模型对鬼哥来说还是探索：看看它在写作、内容创作、日常开发里到底能帮上多少忙。为一个还在摸索的爱好，把早餐钱全搭进去，不太划算。&lt;/p&gt;
&lt;p&gt;问题就来了：32G 这个&amp;quot;够用的下限&amp;quot;，能不能撑起一台私人 AI 工作站？不连云、不花 API 费，能陪鬼哥写东西，也能按一句话画出一张像样的图。&lt;/p&gt;
&lt;p&gt;鬼哥决定从写作和内容创作开始试。折腾了两个晚上，答案是能。不过真正难的地方，跟一开始想的不一样。&lt;/p&gt;
&lt;h2 id="先让它开口一行命令的-open-webui"&gt;先让它开口：一行命令的 Open WebUI
&lt;/h2&gt;&lt;p&gt;机器上原本就装着 Ollama，拉好了 Qwen3.8 的 27B 模型。缺的是一个像样的聊天界面。&lt;/p&gt;
&lt;p&gt;&lt;a class="link" href="https://github.com/open-webui/open-webui" target="_blank" rel="noopener"
 &gt;Open WebUI&lt;/a&gt; 基本就是一个自己托管的 ChatGPT 网页版，对话历史、多用户、知识库、联网搜索一应俱全，还能接各种模型。鬼哥原以为要跟 Python 环境搏斗一晚上，结果官方包用 &lt;code&gt;uv&lt;/code&gt; 一行就能跑：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;DATA_DIR&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;~/.open-webui uvx --python 3.11 open-webui@latest serve
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;指定 Python 3.11，是因为 Open WebUI 只认 3.11 到 3.12，而鬼哥系统里的 Python 已经 3.14 了，太新，人家不要。浏览器打开 &lt;code&gt;localhost:8080&lt;/code&gt;，第一个注册的账号自动当管理员。它会自己找到本机 11434 端口上的 Ollama，下拉框里直接就有 &lt;code&gt;qwen3.8&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;第一题鬼哥出得有点刁：用辛弃疾《青玉案·元夕》的场景，写一篇书生和姑娘惊鸿一瞥的小故事。&lt;/p&gt;
&lt;p&gt;&lt;img alt="Qwen3.8 在 Open WebUI 里写的元夕故事" class="gallery-image" data-flex-basis="345px" data-flex-grow="144" height="2000" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/mac-mini-ai-workstation/openwebui-yuanxi.webp" srcset="https://guige.ai/p/mac-mini-ai-workstation/openwebui-yuanxi_hu_709be419d31aa2f4.webp 800w, https://guige.ai/p/mac-mini-ai-workstation/openwebui-yuanxi_hu_b2cd3c1774aaf780.webp 1600w, https://guige.ai/p/mac-mini-ai-workstation/openwebui-yuanxi_hu_1d423ec5c6cd3011.webp 2400w, https://guige.ai/p/mac-mini-ai-workstation/openwebui-yuanxi.webp 2880w" width="2880"&gt;&lt;/p&gt;
&lt;p&gt;它写了一千来字，题目叫《灯火阑珊》。开头是&amp;quot;元宵那夜，汴京的东风是带着花香来的&amp;quot;，结尾有一句鬼哥挺喜欢：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;他写的时候手是稳的，可墨迹落纸，&amp;ldquo;阑珊&amp;quot;二字却洇开了。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;一台比饭盒大不了多少的盒子，能写到这个份上，鬼哥是有点意外的。当然也有翻车的地方：写到烟花炸开那句，它突然冒出一个 &amp;ldquo;fireworks&amp;rdquo;。辛弃疾要是看到自己的元宵节里放的是洋烟花，大概也会洇开。&lt;/p&gt;
&lt;p&gt;Open WebUI 在每条回复下面记了速度：这篇生成了 1021 个 token，每秒约 14 个；读入提示词每秒约 276 个 token。从回车到写完，不到两分钟。&lt;/p&gt;
&lt;p&gt;&lt;img alt="回复下方的信息图标：每秒 13.94 个 token" class="gallery-image" data-flex-basis="345px" data-flex-grow="144" height="2000" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/mac-mini-ai-workstation/openwebui-token-speed.webp" srcset="https://guige.ai/p/mac-mini-ai-workstation/openwebui-token-speed_hu_26392401c8f0b2e5.webp 800w, https://guige.ai/p/mac-mini-ai-workstation/openwebui-token-speed_hu_eddcc2dc0606ba56.webp 1600w, https://guige.ai/p/mac-mini-ai-workstation/openwebui-token-speed_hu_dcf5f520f21d2c5.webp 2400w, https://guige.ai/p/mac-mini-ai-workstation/openwebui-token-speed.webp 2880w" width="2880"&gt;&lt;/p&gt;
&lt;p&gt;模型在内存里占 18G 左右，是 27.8B 参数、nvfp4 量化的 MLX 版本。其他几段对话里，生成速度大多在每秒 14 到 20 个 token 之间，比鬼哥读小说的速度快。&lt;/p&gt;
&lt;p&gt;还有个意外之喜：Open WebUI 默认监听所有网卡，所以装了 Tailscale 的其他设备，用 &lt;code&gt;http://mac-mini的机器名:8080&lt;/code&gt; 就能直接访问。桌上这台 Mac mini，从此成了随身 AI 的后端。&lt;/p&gt;
&lt;h2 id="想让它画画先撞上一堵-33g-的墙"&gt;想让它画画，先撞上一堵 33G 的墙
&lt;/h2&gt;&lt;p&gt;会写字了，自然想让它会画画。鬼哥看中的是 &lt;a class="link" href="https://huggingface.co/Qwen/Qwen-Image-2.1" target="_blank" rel="noopener"
 &gt;Qwen-Image-2.1&lt;/a&gt;：7B 参数的图像生成模型，文字渲染是出了名的强，还支持图片编辑和透明背景。&lt;/p&gt;
&lt;p&gt;打开模型页，算了一下账：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;组件&lt;/th&gt;
 &lt;th style="text-align: right"&gt;官方 BF16 大小&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;文本编码器（Qwen3-VL-8B）&lt;/td&gt;
 &lt;td style="text-align: right"&gt;17.5 GB&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;图像生成模型（7B DiT）&lt;/td&gt;
 &lt;td style="text-align: right"&gt;14.2 GB&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;VAE&lt;/td&gt;
 &lt;td style="text-align: right"&gt;1.4 GB&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;合计&lt;/td&gt;
 &lt;td style="text-align: right"&gt;&lt;strong&gt;33.1 GB&lt;/strong&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;鬼哥的机器是 32G。差了 1G，就像米粉钱差一块，老板也不会给你加蛋。&lt;/p&gt;
&lt;p&gt;这里得先说清楚 Mac 的内存是怎么回事。PC 上，显卡有自己的显存，显存不够时可以把模型&amp;quot;卸载到内存&amp;rdquo;。Mac 的 CPU 和 GPU 共用同一块统一内存，所谓卸载到内存，就是把东西从左边口袋放进右边口袋，总重量一克没少。何况 macOS 默认也不会把全部内存都分给 GPU。所以官方示例里的 &lt;code&gt;enable_model_cpu_offload()&lt;/code&gt;，在这台机器上帮不了什么忙。&lt;/p&gt;
&lt;p&gt;解法是量化。ComfyUI 官方整理了一套 &lt;a class="link" href="https://huggingface.co/Comfy-Org/Qwen-Image-2.1" target="_blank" rel="noopener"
 &gt;int8 版本&lt;/a&gt;：图像模型 7.3G，文本编码器 9.4G，VAE 0.7G，一共 17.3G，差不多瘦身一半。&lt;/p&gt;
&lt;p&gt;接下来要挑一个生图工具。Mac 上最省事的是 Draw Things，原生 App，对 Apple 芯片做了深度优化。但鬼哥想要的是在 Open WebUI 里聊着天就能出图，这条路只有 &lt;a class="link" href="https://github.com/comfyanonymous/ComfyUI" target="_blank" rel="noopener"
 &gt;ComfyUI&lt;/a&gt; 走得通：它自带 API，Open WebUI 支持把它当生图后端。ComfyUI 的界面是一块节点画布，加载模型、编码提示词、采样、解码、保存，每一步一个方块，用线连起来。第一次看像在拆电视机，看熟了发现什么都能拆开调。&lt;/p&gt;
&lt;p&gt;&lt;img alt="ComfyUI 的节点工作流" class="gallery-image" data-flex-basis="426px" data-flex-grow="177" height="1800" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/mac-mini-ai-workstation/comfyui-workflow.webp" srcset="https://guige.ai/p/mac-mini-ai-workstation/comfyui-workflow_hu_80c5188e5a372da6.webp 800w, https://guige.ai/p/mac-mini-ai-workstation/comfyui-workflow_hu_53d706c1af4ffafb.webp 1600w, https://guige.ai/p/mac-mini-ai-workstation/comfyui-workflow_hu_e535f5d8cf386462.webp 2400w, https://guige.ai/p/mac-mini-ai-workstation/comfyui-workflow.webp 3200w" width="3200"&gt;&lt;/p&gt;
&lt;p&gt;安装本身不复杂：克隆仓库，用 &lt;code&gt;uv&lt;/code&gt; 建一个 Python 3.13 环境，装 PyTorch nightly（Mac 上靠它的 MPS 后端调用 GPU），再把三个模型文件放进对应的文件夹。更省心的是，ComfyUI 自带的模板里已经有 Qwen-Image-2.1 的文生图工作流，用的正是这套 int8 文件，推荐参数是 25 步、CFG 1、euler 采样器。鬼哥照着它写了一份 API 格式的工作流，自己测试用，也给 Open WebUI 用。&lt;/p&gt;
&lt;h2 id="第一张图招牌上的字一个都没错"&gt;第一张图：招牌上的字，一个都没错
&lt;/h2&gt;&lt;p&gt;测试提示词是模型卡上的例子：雨夜里一块霓虹招牌，写着 &amp;ldquo;QWEN IMAGE 2.1&amp;rdquo;，湿漉漉的路面有倒影。&lt;/p&gt;
&lt;p&gt;&lt;img alt="Qwen-Image-2.1 在 Mac mini 上生成的霓虹招牌" class="gallery-image" data-flex-basis="240px" data-flex-grow="100" height="1024" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/mac-mini-ai-workstation/qwen-neon-sign.webp" srcset="https://guige.ai/p/mac-mini-ai-workstation/qwen-neon-sign_hu_54f21b0c22eb7504.webp 800w, https://guige.ai/p/mac-mini-ai-workstation/qwen-neon-sign.webp 1024w" width="1024"&gt;&lt;/p&gt;
&lt;p&gt;1024×1024、25 步，用了 222 秒，每步大约 8 秒。够鬼哥下楼嗦半碗粉。&lt;/p&gt;
&lt;p&gt;慢是真慢，但看到图的那一刻，鬼哥原谅它了。&amp;ldquo;QWEN&amp;rdquo; 是冷白色的霓虹管，&amp;ldquo;IMAGE 2.1&amp;rdquo; 是红色，字母一个没错，连 2 和 1 中间的小数点都在。地面上红灯的倒影、斑马线、远处橱窗里的灯，都像雨夜里手机随手一拍。几年前，本地生图模型写字还像鬼画符。&lt;/p&gt;
&lt;p&gt;接入 Open WebUI 之后，鬼哥又画了几张。最喜欢的是这张北京微缩沙盘：长城沿着山脊蜿蜒，故宫、天坛、鸟巢、水立方、央视大楼挤在同一块地图上，浅景深把周围的地图虚化掉，很像旅行杂志的内页。&lt;/p&gt;
&lt;p&gt;&lt;img alt="在 Open WebUI 里用一段中文描述，图直接出现在对话中" class="gallery-image" data-flex-basis="345px" data-flex-grow="144" height="2000" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/mac-mini-ai-workstation/openwebui-image-chat.webp" srcset="https://guige.ai/p/mac-mini-ai-workstation/openwebui-image-chat_hu_c926d75ec217de96.webp 800w, https://guige.ai/p/mac-mini-ai-workstation/openwebui-image-chat_hu_138c356301c9f3b1.webp 1600w, https://guige.ai/p/mac-mini-ai-workstation/openwebui-image-chat_hu_edd233e466021f12.webp 2400w, https://guige.ai/p/mac-mini-ai-workstation/openwebui-image-chat.webp 2880w" width="2880"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="Qwen-Image-2.1 生成的北京微缩沙盘" class="gallery-image" data-flex-basis="240px" data-flex-grow="100" height="1024" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/mac-mini-ai-workstation/qwen-beijing-diorama.webp" srcset="https://guige.ai/p/mac-mini-ai-workstation/qwen-beijing-diorama_hu_a6c2a9b48f482b96.webp 800w, https://guige.ai/p/mac-mini-ai-workstation/qwen-beijing-diorama.webp 1024w" width="1024"&gt;&lt;/p&gt;
&lt;p&gt;它也有露怯的时候。让它画一页插画师的手绘设定稿，人物的造型、表情、比例都很有样子，页面上那些手写批注却全是天书。它擅长的是提示词里点名要写的大字；画面里顺手添的小字，基本就是装饰花纹。&lt;/p&gt;
&lt;p&gt;&lt;img alt="手绘设定稿：人物画得不错，批注小字是乱码" class="gallery-image" data-flex-basis="240px" data-flex-grow="100" height="1024" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/mac-mini-ai-workstation/qwen-sketchbook.webp" srcset="https://guige.ai/p/mac-mini-ai-workstation/qwen-sketchbook_hu_61523fe518e88c6c.webp 800w, https://guige.ai/p/mac-mini-ai-workstation/qwen-sketchbook.webp 1024w" width="1024"&gt;&lt;/p&gt;
&lt;p&gt;还有一张时装人像，左下角冒出来一个谁也没要求的&amp;quot;签名&amp;quot;，看着还挺像那么回事。鬼哥第一反应是在负面提示词里写上&amp;quot;不要水印&amp;quot;，查了参数才发现写了也白写：这套工作流的 CFG 是 1，负面提示词根本不起作用。想去掉签名，得把 &amp;ldquo;no text, no watermark, no signature&amp;rdquo; 这类要求直接写进正面提示词。官方模板的示例提示词，结尾就是一长串 &amp;ldquo;no text, no letters, no logos, no watermark&amp;rdquo;，看来官方早就防着它这一手。&lt;/p&gt;
&lt;p&gt;&lt;img alt="时装人像，左下角冒出一个假签名" class="gallery-image" data-flex-basis="240px" data-flex-grow="100" height="1024" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/mac-mini-ai-workstation/qwen-fake-signature.webp" srcset="https://guige.ai/p/mac-mini-ai-workstation/qwen-fake-signature_hu_cc7fcf21c974d9fd.webp 800w, https://guige.ai/p/mac-mini-ai-workstation/qwen-fake-signature.webp 1024w" width="1024"&gt;&lt;/p&gt;
&lt;h2 id="两个大模型挤不进同一块内存"&gt;两个大模型，挤不进同一块内存
&lt;/h2&gt;&lt;p&gt;聊天和生图各自都能跑了，鬼哥在 Open WebUI 的图像设置里填上 ComfyUI 的地址，上传工作流，把提示词、尺寸、步数、种子分别对应到工作流里的节点。然后在聊天框里打开生图开关，直接用中文描述想要的画面。&lt;/p&gt;
&lt;p&gt;流程是这样的：Qwen3.8 先把你的描述扩写成一段详细的英文提示词，交给 ComfyUI；四分钟后，图片出现在对话里，Qwen3.8 再补一句说明。&lt;/p&gt;
&lt;p&gt;第一次端到端跑通，图出来了，鬼哥顺手看了一眼系统状态，笑容凝固了：swap 已用从 4G 涨到了 14G，交换空间上限才 15G。&lt;/p&gt;
&lt;p&gt;原因不复杂，但事先没想到：两边都舍不得放下模型。Ollama 默认会把模型在内存里留 5 分钟，方便你接着聊；ComfyUI 出完图，也会把模型留着，方便画下一张。Qwen3.8 刚写完提示词，占着 18G 不走，ComfyUI 紧接着又要加载将近 17G 的生图模型。两个加起来超过 32G，macOS 只能把内存往 SSD 上的 swap 里硬塞。&lt;/p&gt;
&lt;p&gt;两个胖子挤一张单人床，谁也睡不好。这次速度倒没怎么掉，但每生成一张图，SSD 上就要写进去十来 G 的 swap。swap 一旦用满，轻则卡顿，重则进程被系统请出去。&lt;/p&gt;
&lt;p&gt;**在 32G 的统一内存上，两个大模型不能同时在内存里，只能轮流用。**如果当初买的是 64G 的 M5 Pro，这一节大概可以直接跳过。可谁让鬼哥省下的只是米粉钱，那就只能让它们学会排队。一共三处调整。&lt;/p&gt;
&lt;p&gt;第一处，让 Ollama 早点放手。鬼哥先用 &lt;code&gt;launchctl setenv OLLAMA_KEEP_ALIVE 1m&lt;/code&gt; 把全局保留时间改成 1 分钟，然后就以为万事大吉了。后来查进程的环境变量才发现，Ollama 一直没重启，这个设置根本没生效。真正起作用的，是在 Open WebUI 里给 qwen3.8 设的 &lt;code&gt;keep_alive = 1m&lt;/code&gt;。这个设置存在 Open WebUI 的数据库里，电脑重启也不会丢。&lt;/p&gt;
&lt;p&gt;第二处，ComfyUI 一接到任务，就立刻请 Ollama 让位。Qwen3.8 的提示词已经写完、交到 ComfyUI 手里了，这一步它没事可干，占着位置纯属浪费。鬼哥在 ComfyUI 的起停脚本里加了一个后台循环：发现队列从空变成有任务，就查一下 Ollama 当前加载了哪些模型，挨个发一个 &lt;code&gt;keep_alive: 0&lt;/code&gt; 的请求。这只是把模型请出内存，文件还在硬盘上。&lt;/p&gt;
&lt;p&gt;第三处，ComfyUI 出完图，5 秒内收拾走人。这里 Mac 又有个特别的地方：ComfyUI 的 &lt;code&gt;/free&lt;/code&gt; 接口，只带 &lt;code&gt;unload_models&lt;/code&gt; 参数的话，模型只是从&amp;quot;显存&amp;quot;挪到&amp;quot;内存&amp;quot;，在 Mac 上又是左口袋换右口袋。必须同时带上 &lt;code&gt;free_memory&lt;/code&gt;，把节点缓存也清掉，内存才会真正还回来。实测，出完图后 ComfyUI 的内存占用从 9.8G 降到了 0.6G。&lt;/p&gt;
&lt;p&gt;第一处调整之后，鬼哥每改一步就盯一次生图，每 5 秒记一次 swap。三次记录放在一起看：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th style="text-align: right"&gt;只把 keep_alive 改成 1 分钟&lt;/th&gt;
 &lt;th style="text-align: right"&gt;再加上生图开始时卸载 Ollama&lt;/th&gt;
 &lt;th style="text-align: right"&gt;再加上出图后 5 秒释放&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;生图开始时 swap 峰值&lt;/td&gt;
 &lt;td style="text-align: right"&gt;15.5 GB&lt;/td&gt;
 &lt;td style="text-align: right"&gt;3.7 GB&lt;/td&gt;
 &lt;td style="text-align: right"&gt;4.0 GB&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;生图过程中 swap&lt;/td&gt;
 &lt;td style="text-align: right"&gt;约 5 GB&lt;/td&gt;
 &lt;td style="text-align: right"&gt;3.7 GB&lt;/td&gt;
 &lt;td style="text-align: right"&gt;3.8 GB&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;出图后 swap 峰值&lt;/td&gt;
 &lt;td style="text-align: right"&gt;—&lt;/td&gt;
 &lt;td style="text-align: right"&gt;12.0 GB&lt;/td&gt;
 &lt;td style="text-align: right"&gt;7.5 GB，几秒后回落&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;1024 图耗时&lt;/td&gt;
 &lt;td style="text-align: right"&gt;243 秒&lt;/td&gt;
 &lt;td style="text-align: right"&gt;234 秒&lt;/td&gt;
 &lt;td style="text-align: right"&gt;235 秒&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;最后那 3.8G 是其他程序早先换出去的内存，一直留在 swap 里，跟这套工作站无关。出图后那几秒的小峰值，是 Qwen3.8 急着回来写回复，ComfyUI 还没来得及收拾完，两边在门口撞了一下。内存压力不大，鬼哥决定不跟它计较。&lt;/p&gt;
&lt;p&gt;&lt;img alt="一次生图的内存接力" class="gallery-image" data-flex-basis="426px" data-flex-grow="177" height="1440" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/mac-mini-ai-workstation/memory-relay.webp" srcset="https://guige.ai/p/mac-mini-ai-workstation/memory-relay_hu_22e0ae362537f6f1.webp 800w, https://guige.ai/p/mac-mini-ai-workstation/memory-relay_hu_9b330611f8dbcbf8.webp 1600w, https://guige.ai/p/mac-mini-ai-workstation/memory-relay_hu_9edf3de8579fd1c1.webp 2400w, https://guige.ai/p/mac-mini-ai-workstation/memory-relay.webp 2560w" width="2560"&gt;&lt;/p&gt;
&lt;h2 id="现在这台工作站长什么样"&gt;现在这台工作站长什么样
&lt;/h2&gt;&lt;p&gt;整理下来，一次&amp;quot;聊着天出张图&amp;quot;的完整过程是这样的：&lt;/p&gt;
&lt;p&gt;&lt;img alt="私人 AI 工作站的组成" class="gallery-image" data-flex-basis="426px" data-flex-grow="177" height="1440" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/mac-mini-ai-workstation/workstation-architecture.webp" srcset="https://guige.ai/p/mac-mini-ai-workstation/workstation-architecture_hu_a551005e6e148216.webp 800w, https://guige.ai/p/mac-mini-ai-workstation/workstation-architecture_hu_b7b4cad2e86dc83c.webp 1600w, https://guige.ai/p/mac-mini-ai-workstation/workstation-architecture_hu_5dfd6ba5a8042fa0.webp 2400w, https://guige.ai/p/mac-mini-ai-workstation/workstation-architecture.webp 2560w" width="2560"&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;鬼哥在 Open WebUI 里用中文说想要什么画面；&lt;/li&gt;
&lt;li&gt;Qwen3.8-27B 把它写成详细的英文提示词；&lt;/li&gt;
&lt;li&gt;ComfyUI 接到任务，先请 Ollama 把 Qwen3.8 卸载掉，再加载 Qwen-Image-2.1 的 int8 模型；&lt;/li&gt;
&lt;li&gt;大约 4 分钟后出图，图片回到对话里；&lt;/li&gt;
&lt;li&gt;ComfyUI 5 秒内释放模型，Qwen3.8 重新加载，补一句说明。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;有几件事最好提前知道。速度上，一张 1024 的图要 4 分钟左右；官方默认的 2048 尺寸像素是它的 4 倍，按比例估算要十几分钟，这个鬼哥还没试，怕等到饿。许可上，Qwen-Image-2.1 用的是 Qwen Research License，个人研究和玩没问题，商用要先读条款。至于 Open WebUI 本身，0.11.4 版本新建对话时生成标题会报一个 &lt;code&gt;KeyError&lt;/code&gt;，对话只是没有自动标题，其他功能都正常，等上游修就好。&lt;/p&gt;
&lt;p&gt;它不会比云端服务快，也不会比云端的旗舰模型聪明。但写故事、改文章、画张配图这类日常活，它都能在鬼哥的桌上完成：数据不出门，不按次计费，断网也能用。深夜想到一个画面，不用先去看 API 余额，这一点比预想的更让人舒服。何况这台机器是用早餐钱换的，每多画一张图，那几个月的蛋就吃得更值一点。&lt;/p&gt;
&lt;p&gt;回到那个元夕故事。那天夜里，书生在灯海里寻了那个姑娘千百回，最后在一盏快燃尽的旧灯下找到了她。这台 Mac mini 上的两个大模型，比那两个人好安排：一个写完提示词就退场，一个画完图也退场，同一时刻，内存里只留一个。&lt;/p&gt;
&lt;p&gt;32G 统一内存能同时装下的大模型，其实只有一个。它能当私人 AI 工作站，靠的是让两个模型轮流用这块内存。&lt;/p&gt;
&lt;p&gt;&lt;em&gt;这篇文章的封面，也是这台 Mac mini 上的 Qwen-Image-2.1 画的：1344×768，大约 8 分钟。&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="附关键配置速查"&gt;附：关键配置速查
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Open WebUI 图像设置&lt;/strong&gt;（管理员面板 → 设置 → 图像）&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;设置项&lt;/th&gt;
 &lt;th&gt;值&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;引擎&lt;/td&gt;
 &lt;td&gt;ComfyUI&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Base URL&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;http://127.0.0.1:8188&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;默认模型&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;qwen_image_2.1_int8_convrot.safetensors&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;尺寸 / 步数&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;1024x1024&lt;/code&gt; / &lt;code&gt;25&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;节点映射&lt;/td&gt;
 &lt;td&gt;prompt → 文本编码节点的 &lt;code&gt;prompt&lt;/code&gt;；width/height → EmptyLatentImage；steps/seed → KSampler；model → UNETLoader 的 &lt;code&gt;unet_name&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;模型文件&lt;/strong&gt;（来自 &lt;code&gt;Comfy-Org/Qwen-Image-2.1&lt;/code&gt;）&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;models/diffusion_models/qwen_image_2.1_int8_convrot.safetensors 7.3 GB
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;models/text_encoders/qwen3vl_8b_int8_convrot.safetensors 9.4 GB
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;models/vae/qwen_image_2.1_vae_bf16.safetensors 0.7 GB
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;让两个模型轮流用内存的核心逻辑&lt;/strong&gt;（ComfyUI 起停脚本里的后台循环）&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 队列从空闲变成有任务：卸载 Ollama 里所有已加载的模型&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;for&lt;/span&gt; name in &lt;span class="k"&gt;$(&lt;/span&gt;curl -s localhost:11434/api/ps &lt;span class="p"&gt;|&lt;/span&gt; grep -o &lt;span class="s1"&gt;&amp;#39;&amp;#34;name&amp;#34;:&amp;#34;[^&amp;#34;]*&amp;#34;&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; cut -d&lt;span class="s1"&gt;&amp;#39;&amp;#34;&amp;#39;&lt;/span&gt; -f4&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; curl -s localhost:11434/api/generate -d &lt;span class="s2"&gt;&amp;#34;{\&amp;#34;model\&amp;#34;: \&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$name&lt;/span&gt;&lt;span class="s2"&gt;\&amp;#34;, \&amp;#34;keep_alive\&amp;#34;: 0}&amp;#34;&lt;/span&gt; &amp;gt;/dev/null
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 队列空闲 5 秒：卸载 ComfyUI 的模型并清掉缓存（Mac 上两个参数缺一不可）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -s localhost:8188/free -H &lt;span class="s1"&gt;&amp;#39;Content-Type: application/json&amp;#39;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -d &lt;span class="s1"&gt;&amp;#39;{&amp;#34;unload_models&amp;#34;: true, &amp;#34;free_memory&amp;#34;: true}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="参考资料"&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://www.apple.com/newsroom/2026/08/apple-unveils-a-more-powerful-mac-mini-featuring-the-all-new-m6-and-m5-pro/" target="_blank" rel="noopener"
 &gt;Apple Newsroom：新款 Mac mini，搭载 M6 和 M5 Pro&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://www.macrumors.com/guide/m6-vs-m5-pro-mac-mini/" target="_blank" rel="noopener"
 &gt;MacRumors：M6 vs. M5 Pro Mac mini 选购指南&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/open-webui/open-webui" target="_blank" rel="noopener"
 &gt;Open WebUI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://huggingface.co/Qwen/Qwen-Image-2.1" target="_blank" rel="noopener"
 &gt;Qwen-Image-2.1 模型卡&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://huggingface.co/Comfy-Org/Qwen-Image-2.1" target="_blank" rel="noopener"
 &gt;Comfy-Org/Qwen-Image-2.1 量化权重&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/comfyanonymous/ComfyUI" target="_blank" rel="noopener"
 &gt;ComfyUI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/ollama/ollama/blob/main/docs/faq.md" target="_blank" rel="noopener"
 &gt;Ollama FAQ：如何控制模型在内存中的保留时间&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>桌面 AI Studio 怎么选：DGX Spark、Ryzen AI Halo 和 M4 Max Mac Studio</title><link>https://guige.ai/p/desktop-ai-studio/</link><pubDate>Mon, 15 Jun 2026 00:00:00 +0000</pubDate><guid>https://guige.ai/p/desktop-ai-studio/</guid><description>&lt;img src="https://guige.ai/" alt="Featured image of post 桌面 AI Studio 怎么选：DGX Spark、Ryzen AI Halo 和 M4 Max Mac Studio" /&gt;&lt;p&gt;买桌面 AI 机器，最容易被一个数字骗：TOPS、TFLOPS、PFLOPS，听起来都像能把模型原地起飞。现实是，AI 开发者真正卡住的往往不是峰值算力，而是 &lt;strong&gt;内存够不够、软件栈顺不顺、模型能不能跑、跑起来以后能不能折腾&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;鬼哥最近就被这个问题挠得有点坐不住。&lt;/p&gt;
&lt;p&gt;我桌上现在已经有三台风格完全不同的本地 AI 设备：一台 &lt;strong&gt;M4 Max Mac Studio/Mac mini 形态的 Apple Silicon 小主机&lt;/strong&gt;，平时负责写代码、跑轻量本地模型、剪音视频、做各种 AI 开发实验；一台自己组的 &lt;strong&gt;GeForce RTX 4090 台式机&lt;/strong&gt;，专门拿来折腾 Ollama、本地模型推理、Agent 接入和性能测试；还有一块 &lt;strong&gt;Raspberry Pi 5 小卡&lt;/strong&gt;，更多是拿来提醒自己：边缘 AI 不是 PPT，它最后真的要落到这些又小又抠门的设备上。&lt;/p&gt;
&lt;p&gt;&lt;img alt="鬼哥的 4090 本地 AI 台式机" class="gallery-image" data-flex-basis="320px" data-flex-grow="133" height="1200" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/desktop-ai-studio/guige-4090-rig.webp" srcset="https://guige.ai/p/desktop-ai-studio/guige-4090-rig_hu_edb61d0e495f5eb9.webp 800w, https://guige.ai/p/desktop-ai-studio/guige-4090-rig.webp 1600w" width="1600"&gt;&lt;/p&gt;
&lt;p&gt;4090 那台机器我之前专门写过一篇实测：&lt;a class="link" href="https://guige.ai/p/ollama-local-dev/" &gt;《一张 4090 跑 Gemma4 26B：用 Ollama 搭本地 AI 开发环境实测》&lt;/a&gt;。结果挺有意思：Gemma4 26B 在那台机器上持续输出大约 &lt;strong&gt;160 tokens/s&lt;/strong&gt;，模型加载后显存占用约 &lt;strong&gt;24.5GB&lt;/strong&gt;，长输出功耗能到 &lt;strong&gt;260W+&lt;/strong&gt;。这已经不是“本地模型能不能跑”的问题，而是“本地模型怎么接进真实开发工作流”的问题。&lt;/p&gt;
&lt;p&gt;&lt;img alt="鬼哥的 Apple Silicon 开发小主机" class="gallery-image" data-flex-basis="320px" data-flex-grow="133" height="1200" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/desktop-ai-studio/guige-macmini.webp" srcset="https://guige.ai/p/desktop-ai-studio/guige-macmini_hu_a28b1e3e3d64acaf.webp 800w, https://guige.ai/p/desktop-ai-studio/guige-macmini.webp 1600w" width="1600"&gt;&lt;/p&gt;
&lt;p&gt;Mac 这边则完全是另一种体验：它不一定是大模型推理冠军，但它安静、稳定、顺手。写博客、跑 Claude/Codex、剪视频、处理图片、做前端 demo、顺手跑个 llama.cpp 或 MLX 模型，整个工作流几乎没有摩擦。缺点也很诚实：一碰到大模型、CUDA-only 项目、训练脚本复现，它就会提醒你“这里不是我的主场”。&lt;/p&gt;
&lt;p&gt;&lt;img alt="鬼哥的 Raspberry Pi 5 小卡" class="gallery-image" data-flex-basis="135px" data-flex-grow="56" height="2048" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/desktop-ai-studio/guige-raspberrypi.webp" srcset="https://guige.ai/p/desktop-ai-studio/guige-raspberrypi_hu_748778f97081a53.webp 800w, https://guige.ai/p/desktop-ai-studio/guige-raspberrypi.webp 1152w" width="1152"&gt;&lt;/p&gt;
&lt;p&gt;树莓派更像一个现实锚点。它告诉我：AI 硬件不是只有“越大越好”这一条路。很多时候你真正想要的是低功耗、常开、便宜、可部署，而不是一个会把房间变暖的模型发动机。&lt;/p&gt;
&lt;p&gt;所以，当 NVIDIA DGX Spark 和 AMD Ryzen AI Halo 相继把“桌面级个人 AI 工作站”摆上台面时，我第一反应不是“哇，又来了两台神机”，而是：&lt;strong&gt;它们到底能不能补上我现有三台设备各自的短板？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;更麻烦的是，Apple 这边我还在翘首以盼，眼泪汪汪地等 M5 Mac mini/Mac Studio 更新。于是这篇文章就变成了一次很现实的调研：不是纯参数表，也不是厂商发布会复读，而是从一个极客的桌面出发，看看 DGX Spark、Ryzen AI Halo 和 M4 Max Mac Studio 到底分别适合谁。&lt;/p&gt;
&lt;p&gt;NVIDIA DGX Spark、AMD Ryzen AI Halo、M4 Max Mac Studio，表面上都叫桌面级 AI Studio。其实它们不是三台同类机器，而是三种路线：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;NVIDIA&lt;/strong&gt;：把数据中心 AI 栈压到桌面，核心卖点是 CUDA 生态和 DGX 软件体验。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AMD&lt;/strong&gt;：用 x86 APU + ROCm + Windows/Linux 抢本地 AI 开发者，核心卖点是开放 PC 工作流和 128GB 统一内存。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Apple&lt;/strong&gt;：把成熟创作工作站顺手变成 AI 开发机，核心卖点是安静、省心、macOS 体验，但不是大模型怪兽。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img alt="三条桌面 AI 路线：CUDA、ROCm、Apple Silicon" class="gallery-image" data-flex-basis="426px" data-flex-grow="177" height="941" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/desktop-ai-studio/cover.webp" srcset="https://guige.ai/p/desktop-ai-studio/cover_hu_21f50c394da80d27.webp 800w, https://guige.ai/p/desktop-ai-studio/cover_hu_ab34dfb3fb9b9913.webp 1600w, https://guige.ai/p/desktop-ai-studio/cover.webp 1672w" width="1672"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="先看规格但别被规格牵着走"&gt;先看规格，但别被规格牵着走
&lt;/h2&gt;&lt;p&gt;为了避免玄学，先把官方能确认的硬指标摆出来。这里的重点不是谁的数字最大，而是这些数字分别服务什么场景。&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;机器&lt;/th&gt;
 &lt;th&gt;核心芯片&lt;/th&gt;
 &lt;th style="text-align: right"&gt;统一内存&lt;/th&gt;
 &lt;th style="text-align: right"&gt;内存带宽&lt;/th&gt;
 &lt;th&gt;AI/图形算力口径&lt;/th&gt;
 &lt;th&gt;系统&lt;/th&gt;
 &lt;th&gt;典型定位&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;NVIDIA DGX Spark&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;GB10 Grace Blackwell&lt;/td&gt;
 &lt;td style="text-align: right"&gt;128GB LPDDR5x&lt;/td&gt;
 &lt;td style="text-align: right"&gt;273GB/s&lt;/td&gt;
 &lt;td&gt;最高 1 PFLOP FP4&lt;/td&gt;
 &lt;td&gt;DGX OS&lt;/td&gt;
 &lt;td&gt;本地 Agent、LLM 推理、CUDA 原型&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;AMD Ryzen AI Halo&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Ryzen AI Max+ 395&lt;/td&gt;
 &lt;td style="text-align: right"&gt;128GB LPDDR5x&lt;/td&gt;
 &lt;td style="text-align: right"&gt;官方页面未列&lt;/td&gt;
 &lt;td&gt;60 FP16 TFLOPS GPU + 50 TOPS NPU&lt;/td&gt;
 &lt;td&gt;Windows 或 Linux&lt;/td&gt;
 &lt;td&gt;ROCm、本地 LLM、ComfyUI、PC AI 开发&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;M4 Max Mac Studio&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;M4 Max&lt;/td&gt;
 &lt;td style="text-align: right"&gt;36GB，最高 64GB&lt;/td&gt;
 &lt;td style="text-align: right"&gt;410GB/s，最高 546GB/s&lt;/td&gt;
 &lt;td&gt;40 核 GPU + 16 核 Neural Engine&lt;/td&gt;
 &lt;td&gt;macOS&lt;/td&gt;
 &lt;td&gt;开发主机、创作工作流、中小模型实验&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;如果只看表格，你可能会得出一个很粗暴的结论：DGX Spark 和 Ryzen AI Halo 是本地大模型机器，M4 Max Mac Studio 是“顺便跑 AI”的工作站。&lt;/p&gt;
&lt;p&gt;这个结论大体没错，但还不够精确。&lt;/p&gt;
&lt;p&gt;更准确的说法是：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;DGX Spark 买的是 NVIDIA AI 栈，Ryzen AI Halo 买的是大内存 PC 路线，M4 Max Mac Studio 买的是低摩擦开发体验。&lt;/strong&gt;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;这三句话比任何 TOPS 数字都重要。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="第一层分水岭本地大模型先看内存"&gt;第一层分水岭：本地大模型先看内存
&lt;/h2&gt;&lt;p&gt;本地 LLM 的第一堵墙不是算力，是内存。&lt;/p&gt;
&lt;p&gt;一个 70B 模型即使用 4-bit 量化，权重也常常要三四十 GB，再加上 KV cache、上下文、运行时开销、并发请求，很快就会把 64GB 机器逼到墙角。到了 120B、200B 这种级别，128GB 统一内存才开始有“能把东西装进去”的讨论资格。&lt;/p&gt;
&lt;p&gt;这就是 DGX Spark 和 Ryzen AI Halo 的共同点：它们都把 &lt;strong&gt;128GB 统一内存&lt;/strong&gt; 放到了桌面小机器里。&lt;/p&gt;
&lt;p&gt;NVIDIA 官方给 DGX Spark 的定位很明确：128GB coherent unified system memory，可以在桌面运行最高 200B 参数模型的开发和测试工作，也可以微调最高 70B 参数模型。这个说法要谨慎理解：它不是承诺任何 200B 模型都能满血高吞吐跑，而是在告诉你，&lt;strong&gt;内存容量已经足够让这类模型进入本地实验范围&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;AMD 的路线更像“PC 阵营的反击”。Ryzen AI Halo 开发平台同样是 128GB LPDDR5x 统一内存，并且官方强调 Windows 或 Linux 双系统、完整 ROCm 支持。对很多极客来说，这比 DGX OS 更有吸引力：你可以把它当本地 AI 服务器，也可以把它当一台能跑 Windows 软件的高端小主机。&lt;/p&gt;
&lt;p&gt;M4 Max Mac Studio 的问题就在这里。M4 Max 版本最高 64GB 统一内存，带宽最高 546GB/s，带宽很漂亮，但容量不在一个级别。对于 7B、14B、32B 量化模型，它可以玩得很舒服；但如果你的目标是长期折腾 70B 以上模型，64GB 会让你不停做取舍。&lt;/p&gt;
&lt;p&gt;&lt;img alt="本地大模型的内存墙：64GB、128GB 与模型规模" class="gallery-image" data-flex-basis="426px" data-flex-grow="177" height="941" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/desktop-ai-studio/memory-wall.webp" srcset="https://guige.ai/p/desktop-ai-studio/memory-wall_hu_b720426ddd907364.webp 800w, https://guige.ai/p/desktop-ai-studio/memory-wall_hu_8f502ae911cbe70f.webp 1600w, https://guige.ai/p/desktop-ai-studio/memory-wall.webp 1672w" width="1672"&gt;&lt;/p&gt;
&lt;p&gt;一个极客版判断：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;场景&lt;/th&gt;
 &lt;th&gt;64GB Mac Studio&lt;/th&gt;
 &lt;th&gt;128GB DGX Spark / Ryzen AI Halo&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;7B/14B 本地助手&lt;/td&gt;
 &lt;td&gt;很舒服&lt;/td&gt;
 &lt;td&gt;轻松&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;32B 量化模型&lt;/td&gt;
 &lt;td&gt;可用，需控制上下文&lt;/td&gt;
 &lt;td&gt;更从容&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;70B 量化推理&lt;/td&gt;
 &lt;td&gt;能折腾，但容易受限&lt;/td&gt;
 &lt;td&gt;进入主战场&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;70B 微调/LoRA&lt;/td&gt;
 &lt;td&gt;不适合作为主力&lt;/td&gt;
 &lt;td&gt;DGX Spark 更对口&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;120B/200B 实验&lt;/td&gt;
 &lt;td&gt;基本不是甜点区&lt;/td&gt;
 &lt;td&gt;有实验价值&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;所以，如果你关心的是“我能不能在桌面上把更大的模型塞进去”，答案很直接：&lt;strong&gt;128GB 机器先赢一半。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这也是我看 DGX Spark 和 Ryzen AI Halo 会心痒的原因。4090 台式机的推理速度很香，但显存墙是真实存在的；Mac 的统一内存体验很顺，但 M4 Max 的上限又不够“放肆”。128GB 统一内存的吸引力，不是参数洁癖，而是它允许你少做很多“这个模型能不能塞进去”的心算。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="第二层分水岭软件栈决定你折腾多久"&gt;第二层分水岭：软件栈决定你折腾多久
&lt;/h2&gt;&lt;p&gt;AI 硬件最残酷的地方在于：跑分截图很好看，环境配置很难看。&lt;/p&gt;
&lt;p&gt;同样是本地 AI Studio，三家的软件体验差异非常大。&lt;/p&gt;
&lt;h3 id="dgx-sparkcuda-是护城河也是笼子"&gt;DGX Spark：CUDA 是护城河，也是笼子
&lt;/h3&gt;&lt;p&gt;&lt;img alt="NVIDIA DGX Spark 官方宣传图" class="gallery-image" data-flex-basis="457px" data-flex-grow="190" height="630" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/desktop-ai-studio/dgx-spark-official.webp" srcset="https://guige.ai/p/desktop-ai-studio/dgx-spark-official_hu_dcc5092796665042.webp 800w, https://guige.ai/p/desktop-ai-studio/dgx-spark-official.webp 1200w" width="1200"&gt;&lt;/p&gt;
&lt;p&gt;DGX Spark 最大的优势不是 1 PFLOP FP4，而是 &lt;strong&gt;NVIDIA AI 软件栈默认站在你这边&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;CUDA、TensorRT、NIM、NVIDIA AI Enterprise、DGX OS、开发者论坛、官方 playbook，这些东西加起来，意味着你遇到问题时更容易找到“前人已经踩过的坑”。如果你的工作流最后要上 NVIDIA 数据中心或云 GPU，DGX Spark 的意义就更明显：它是一台桌面上的原型机。&lt;/p&gt;
&lt;p&gt;我在 4090 上折腾 Ollama、Codex、Claude Code 和 Hermes 时，最大的感受就是：&lt;strong&gt;模型速度只是第一层，工具链稳定性才是第二层&lt;/strong&gt;。同一个本地模型，Claude Code 能顺利读文件，Codex 在某些 Linux sandbox 环境里会被权限卡住。这个体验会让人更理解 DGX Spark 的价值：它卖的不是“我也有一颗 GPU”，而是尽量把硬件、驱动、框架、playbook 和支持路径绑成一套。&lt;/p&gt;
&lt;p&gt;它的限制也同样清楚：DGX Spark 官方规格写的是 DGX OS。你不是在买一台泛用 PC，而是在买一台 NVIDIA 定义好的 AI appliance。对于研究者和企业开发者，这是省心；对于喜欢乱装系统、乱插外设、乱改内核的极客，这可能会有点憋。&lt;/p&gt;
&lt;h3 id="ryzen-ai-halorocm-的机会也是变量"&gt;Ryzen AI Halo：ROCm 的机会，也是变量
&lt;/h3&gt;&lt;p&gt;&lt;img alt="AMD Ryzen AI Halo 官方产品展开图" class="gallery-image" data-flex-basis="182px" data-flex-grow="76" height="675" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/desktop-ai-studio/ryzen-ai-halo-official.webp" width="513"&gt;&lt;/p&gt;
&lt;p&gt;AMD 的牌面是：Windows/Linux + ROCm + 128GB 内存 + x86。&lt;/p&gt;
&lt;p&gt;这很诱人。你可以在 Linux 上跑模型，在 Windows 上跑创作和开发工具，还能享受普通 PC 生态的弹性。AMD 页面还直接把自己和 DGX Spark 对比，脚注里写到：测试使用预生产 Ryzen AI Halo、128GB LPDDR5x、Linux OS，对比 DGX Spark，并列出 AMD Ryzen AI Halo $3999、DGX Spark $4699 的零售价。&lt;/p&gt;
&lt;p&gt;但 ROCm 仍然是变量。它比前几年成熟太多，很多 PyTorch 和推理框架已经能跑，但 AI 生态的默认答案依然常常是 CUDA。你要有心理准备：同一个模型，同一个项目，NVIDIA 用户可能 &lt;code&gt;pip install&lt;/code&gt; 后直接跑，AMD 用户可能要查 issue、换 wheel、等适配。&lt;/p&gt;
&lt;p&gt;这不是说 AMD 不值得买，而是它更适合 &lt;strong&gt;愿意换性能/价格/开放性，但能接受折腾成本的人&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id="mac-studio最舒服但不是最开放"&gt;Mac Studio：最舒服，但不是最开放
&lt;/h3&gt;&lt;p&gt;Apple 的 AI 开发体验很奇特：它不是最强的，但往往是最顺的。&lt;/p&gt;
&lt;p&gt;如果你的日常是写代码、跑中小模型、做 demo、剪视频、处理图片、调 UI、用 MLX 或 llama.cpp 跑本地模型，Mac Studio 会非常舒服。它安静、省电、系统稳定、开发工具成熟，而且 M4 Max 的 CPU/GPU/媒体引擎组合对创作者非常友好。&lt;/p&gt;
&lt;p&gt;这也是我现在离不开 Mac 的原因。很多 AI 项目不是一天 24 小时都在跑模型，大量时间其实是在写胶水代码、改提示词、整理素材、剪一段 demo 视频、处理博客图片、部署网页、调试工具链。这个阶段 Mac 的低摩擦体验非常强：你不会因为驱动、风噪、电源、桌面空间这些小事分心。&lt;/p&gt;
&lt;p&gt;问题是，一旦你进入主流深度学习训练、CUDA-only 项目、复杂推理优化、企业级 GPU 部署对齐，macOS 就会露出边界。Metal、MLX、Core ML 都很好，但它们不是 AI 研究社区的默认地面。&lt;/p&gt;
&lt;p&gt;&lt;img alt="三套软件栈：CUDA、ROCm、MLX/Metal" class="gallery-image" data-flex-basis="426px" data-flex-grow="177" height="941" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/desktop-ai-studio/software-stack.webp" srcset="https://guige.ai/p/desktop-ai-studio/software-stack_hu_d7b395f7740e6adf.webp 800w, https://guige.ai/p/desktop-ai-studio/software-stack_hu_c3b041fb5eb74849.webp 1600w, https://guige.ai/p/desktop-ai-studio/software-stack.webp 1672w" width="1672"&gt;&lt;/p&gt;
&lt;p&gt;如果用一句话概括：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;软件栈&lt;/th&gt;
 &lt;th&gt;最舒服的用户&lt;/th&gt;
 &lt;th&gt;最痛的地方&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;CUDA / DGX OS&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;想和 NVIDIA 生产环境对齐的人&lt;/td&gt;
 &lt;td&gt;泛用 PC 自由度低&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;ROCm / Windows / Linux&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;喜欢开放硬件和 PC 工作流的人&lt;/td&gt;
 &lt;td&gt;生态适配仍需耐心&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;MLX / Metal / macOS&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;需要一台安静全能开发主机的人&lt;/td&gt;
 &lt;td&gt;大模型和训练生态不是主场&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="第三层分水岭你到底要跑什么"&gt;第三层分水岭：你到底要跑什么
&lt;/h2&gt;&lt;p&gt;“AI 开发者”这个词太宽了。写 RAG 应用、做模型微调、玩 ComfyUI、跑机器人仿真、做科研复现实验，根本不是一类需求。&lt;/p&gt;
&lt;p&gt;下面按真实工作流拆。&lt;/p&gt;
&lt;h3 id="1-本地-llm-推理和-agent-开发"&gt;1. 本地 LLM 推理和 Agent 开发
&lt;/h3&gt;&lt;p&gt;如果你要做的是本地 Agent、RAG、长上下文代码助手、私有知识库问答，DGX Spark 和 Ryzen AI Halo 明显更像主力机器。&lt;/p&gt;
&lt;p&gt;DGX Spark 的优势是 NVIDIA 官方已经把“本地自主 Agent”写进产品定位。它有 128GB 内存、NVIDIA 软件栈和面向 Agentic workload 的 playbook。你想做的是“本地先跑，未来迁到 NVIDIA 云或数据中心”，DGX Spark 的路径更直。&lt;/p&gt;
&lt;p&gt;Ryzen AI Halo 的优势是自由度和价格。AMD 官方把它定位成 AI developer platform，而且支持 Windows/Linux。你可以把它放在桌上当小服务器，也可以 SSH 进去跑服务，还可以接普通 PC 工作流。对独立开发者和极客来说，这种弹性很香。&lt;/p&gt;
&lt;p&gt;Mac Studio 不是不能做 Agent。相反，很多开发者会更喜欢在 macOS 上写代码、调工具、跑本地小模型。只是当 Agent 需要更大模型、更长上下文、更高并发时，M4 Max 的 64GB 上限会让它更像“开发控制台”，而不是“模型发动机”。&lt;/p&gt;
&lt;p&gt;我的实际分工大概是这样：Mac 负责“人机交互”和日常开发，4090 负责“重推理”和性能测试。如果本地模型要长期作为服务跑，我更愿意让它待在一台可以 SSH、可以监控、可以随时重启的盒子里，而不是占着我的主力开发桌面。按这个逻辑，Ryzen AI Halo 这种 128GB 小盒子会非常诱人；DGX Spark 则更像“如果我要认真走 NVIDIA Agent 路线，就别自己东拼西凑了”。&lt;/p&gt;
&lt;h3 id="2-微调lora-和科研复现"&gt;2. 微调、LoRA 和科研复现
&lt;/h3&gt;&lt;p&gt;这一类需求更偏向 DGX Spark。&lt;/p&gt;
&lt;p&gt;NVIDIA 官方直接写了 Fine-Tuning：用 128GB 统一内存微调最高 70B 参数模型。这里最关键的不是一句营销文案，而是它背后的现实：大量训练、微调、量化、推理优化工具默认优先支持 CUDA。&lt;/p&gt;
&lt;p&gt;Ryzen AI Halo 也能做一部分微调和实验，尤其是 ROCm 支持越来越完整之后。但如果你是研究者，目标是快速复现论文、跑开源训练脚本、少改代码，CUDA 仍然是阻力最小的路线。&lt;/p&gt;
&lt;p&gt;Mac Studio 适合做算法原型、数据处理、小模型实验、MLX 生态尝鲜，但不适合作为“我要复现各种 GitHub 训练项目”的唯一主机。你当然可以折腾，但很多时候不是硬件不行，是生态把你绕远了。&lt;/p&gt;
&lt;h3 id="3-comfyui图像生成和多模态玩法"&gt;3. ComfyUI、图像生成和多模态玩法
&lt;/h3&gt;&lt;p&gt;这个场景 AMD 反而很有看点。&lt;/p&gt;
&lt;p&gt;AMD 页面把 ComfyUI、Visual Studio Code、Python 等预装/同步工具放进 Ryzen AI Halo 的开发者体验里，并且官方测试脚注覆盖了 Stable Diffusion XL、Flux、Qwen Image、Wan 等图像和视频相关工作负载。这里要注意：厂商自测不能当第三方基准，但至少说明 AMD 非常清楚它要争夺哪类用户。&lt;/p&gt;
&lt;p&gt;NVIDIA 当然也强，尤其是各种 CUDA 优化的图像生成工具链仍然更成熟。DGX Spark 的问题不是能力，而是“值不值”：如果你的主要玩法是 ComfyUI 和图片生成，买 DGX Spark 可能有点像为了煎蛋买实验室设备。&lt;/p&gt;
&lt;p&gt;Mac Studio 的优势在创作闭环：图片、视频、剪辑、设计、开发都在一台安静机器上完成。它不一定是生成速度冠军，但它可能是最不打断创作流的机器。&lt;/p&gt;
&lt;p&gt;我自己的感受是：音视频和内容生产这类任务，&lt;strong&gt;峰值性能不是唯一指标，工作流连续性更重要&lt;/strong&gt;。一段视频从素材整理、脚本、配音、剪辑、封面、发布，中间会不断在浏览器、编辑器、终端、设计工具之间切换。Mac 在这里很舒服。4090 更像一个加速器：当你明确知道要批量生成、批量推理、批量转码时，把任务扔给它；但日常创作的主控台，我还是更愿意放在 Mac 上。&lt;/p&gt;
&lt;h3 id="4-机器人边缘-ai-和硬件项目"&gt;4. 机器人、边缘 AI 和硬件项目
&lt;/h3&gt;&lt;p&gt;这类场景 DGX Spark 的 NVIDIA 生态优势最明显。&lt;/p&gt;
&lt;p&gt;NVIDIA 官方明确提到 Isaac、Metropolis、Holoscan 等边缘应用框架。你如果做机器人、视觉检测、边缘推理、智能摄像头原型，NVIDIA 从桌面到 Jetson 到数据中心的生态连贯性很强。&lt;/p&gt;
&lt;p&gt;AMD Ryzen AI Halo 也能做边缘 AI 原型，但它更像“高性能 PC 盒子”。Mac Studio 则适合作为开发主机和可视化工作站，而不是硬件生态中心。&lt;/p&gt;
&lt;p&gt;树莓派 5 在这里给我的提醒很直接：边缘设备上最稀缺的不是“能不能跑一个模型 demo”，而是功耗、散热、常开稳定性、部署维护和成本。桌面 AI Studio 如果只是跑分强，未必能帮助你真正理解边缘场景；但如果它能让你快速训练、量化、测试，再把结果下放到小设备，那才是完整链路。&lt;/p&gt;
&lt;p&gt;&lt;img alt="不同 AI 工作流对应的最佳机器" class="gallery-image" data-flex-basis="426px" data-flex-grow="177" height="941" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/desktop-ai-studio/workflow-map.webp" srcset="https://guige.ai/p/desktop-ai-studio/workflow-map_hu_cf5f430b510d5bf7.webp 800w, https://guige.ai/p/desktop-ai-studio/workflow-map_hu_8d7dc007daa130b8.webp 1600w, https://guige.ai/p/desktop-ai-studio/workflow-map.webp 1672w" width="1672"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="价格可以看但别只看价格"&gt;价格可以看，但别只看价格
&lt;/h2&gt;&lt;p&gt;按 AMD 官方脚注，2026 年 5 月测试口径里，Ryzen AI Halo 零售价为 &lt;strong&gt;$3999&lt;/strong&gt;，DGX Spark 零售价为 &lt;strong&gt;$4699&lt;/strong&gt;。Apple 的 M4 Max Mac Studio 官方规格页能确认配置，但价格会随芯片、内存、存储和地区变化，实际应以 Apple 配置页为准。&lt;/p&gt;
&lt;p&gt;但这篇文章不建议把价格当第一决策因子。&lt;/p&gt;
&lt;p&gt;原因很简单：对 AI 开发者来说，真正贵的不是多花几百美元，而是 &lt;strong&gt;买回来以后三个月都在和驱动、依赖、模型格式、内存限制较劲&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;更合理的价格问题应该这样问：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;你真正购买的是&lt;/th&gt;
 &lt;th&gt;应该问的问题&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;DGX Spark&lt;/td&gt;
 &lt;td&gt;我是否需要 CUDA/DGX/NVIDIA 生产环境一致性？&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Ryzen AI Halo&lt;/td&gt;
 &lt;td&gt;我是否愿意用折腾成本换 128GB、x86 和 Windows/Linux 弹性？&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;M4 Max Mac Studio&lt;/td&gt;
 &lt;td&gt;我是否更需要一台舒服的主力开发/创作机，而不是最大模型机器？&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;如果答案是“我要少踩坑，跟 NVIDIA 生产栈对齐”，DGX Spark 的溢价有意义。&lt;/p&gt;
&lt;p&gt;如果答案是“我要一台能跑大模型、能装 Windows/Linux、还能当 PC 用的极客盒子”，Ryzen AI Halo 更有吸引力。&lt;/p&gt;
&lt;p&gt;如果答案是“我每天要写代码、剪视频、做产品 demo，偶尔跑本地模型”，Mac Studio 可能才是最理性的选择。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="三类人怎么选"&gt;三类人怎么选
&lt;/h2&gt;&lt;h3 id="ai-应用开发者"&gt;AI 应用开发者
&lt;/h3&gt;&lt;p&gt;你关心的是 RAG、Agent、私有知识库、本地 API、开发效率。&lt;/p&gt;
&lt;p&gt;我的排序：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Ryzen AI Halo&lt;/strong&gt;：如果你愿意折腾 ROCm，它的 128GB 内存和 Windows/Linux 弹性很适合做本地 AI 服务盒子。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DGX Spark&lt;/strong&gt;：如果你的应用未来要上 NVIDIA GPU，或者你需要 CUDA/NIM/DGX playbook，优先选它。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;M4 Max Mac Studio&lt;/strong&gt;：适合作为开发主机，不适合作为大模型主力推理服务器。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;鬼哥经验：如果你的开发工作流已经像我一样被 Mac 绑住，不一定要把“主力开发机”和“本地模型服务器”合并成一台。更舒服的架构反而是：Mac 负责写代码和调产品，旁边放一台 128GB AI 小盒子长期跑模型服务。&lt;/p&gt;
&lt;h3 id="研究者和实验室"&gt;研究者和实验室
&lt;/h3&gt;&lt;p&gt;你关心的是论文复现、微调、训练脚本兼容、长期维护。&lt;/p&gt;
&lt;p&gt;我的排序：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;DGX Spark&lt;/strong&gt;：CUDA 生态仍然是研究代码的默认路径，少改代码就是生产力。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ryzen AI Halo&lt;/strong&gt;：适合预算敏感、愿意参与 ROCm 生态、需要 Windows/Linux 弹性的团队。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;M4 Max Mac Studio&lt;/strong&gt;：适合数据处理、写作、可视化、小模型原型，不建议作为唯一 AI 计算节点。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="ai-极客"&gt;AI 极客
&lt;/h3&gt;&lt;p&gt;你关心的是可玩性、模型规模、系统自由度、折腾空间。&lt;/p&gt;
&lt;p&gt;我的排序反而会变：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Ryzen AI Halo&lt;/strong&gt;：x86、128GB、Windows/Linux、ROCm，能折腾的面最大。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DGX Spark&lt;/strong&gt;：如果你想玩 NVIDIA 最新桌面 AI appliance，它很酷，但自由度不一定最高。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;M4 Max Mac Studio&lt;/strong&gt;：体验最好，折腾空间相对最小；适合“我要做东西”，不适合“我要拆机器边界”。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这里我会额外加一句：如果你已经有 4090 台式机，Ryzen AI Halo 和 DGX Spark 不一定是“性能升级”，更可能是“形态升级”。它们吸引人的地方是小、安静、统一内存、可常开，而不是一定能在所有任务里打爆一张高端独显。&lt;/p&gt;
&lt;p&gt;&lt;img alt="三类用户的选择矩阵" class="gallery-image" data-flex-basis="426px" data-flex-grow="177" height="941" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/desktop-ai-studio/decision-matrix.webp" srcset="https://guige.ai/p/desktop-ai-studio/decision-matrix_hu_becf787f1ecd3b72.webp 800w, https://guige.ai/p/desktop-ai-studio/decision-matrix_hu_5fb9e4680eb7ac60.webp 1600w, https://guige.ai/p/desktop-ai-studio/decision-matrix.webp 1672w" width="1672"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="我的最终判断"&gt;我的最终判断
&lt;/h2&gt;&lt;p&gt;如果你把这三台机器都叫“桌面 AI Studio”，会看花眼；如果你把它们看成三条路线，选择就清楚了。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DGX Spark 是桌面版 NVIDIA AI 路线。&lt;/strong&gt; 它适合研究者、企业开发者、Agent 原型团队，以及任何未来要迁移到 NVIDIA 云或数据中心的人。它不是最自由的机器，但它最像一条铺好的路。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ryzen AI Halo 是 PC 阵营的本地 AI 路线。&lt;/strong&gt; 它适合极客、独立开发者、小团队和愿意赌 ROCm 继续成熟的人。它的吸引力不只是便宜几百美元，而是 128GB 统一内存加 Windows/Linux 弹性。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;M4 Max Mac Studio 是创作和开发主机路线。&lt;/strong&gt; 它适合已经在 Apple 生态里、重视安静稳定、需要代码/视频/图像/产品 demo 一体化的人。它可以跑 AI，但不要把它想象成 DGX Spark 或 Ryzen AI Halo 的同类竞品。&lt;/p&gt;
&lt;p&gt;至于我自己，如果现在必须下单，我大概率不会把 Mac 替换掉。Mac 仍然是我的主力创作和开发桌面；4090 台式机会继续承担重推理和测试；树莓派继续做边缘实验。真正让我心痒的是：&lt;strong&gt;能不能在这三者之外，再加一台 128GB、低功耗、可常开的本地模型盒子&lt;/strong&gt;。DGX Spark 和 Ryzen AI Halo 的竞争，正好打在这个空位上。&lt;/p&gt;
&lt;p&gt;但我也会继续等 Apple 的 M5 Mac mini/Mac Studio。不是因为我相信 Apple 会突然变成 CUDA 平替，而是因为 Apple 如果把统一内存容量、NPU/Metal/MLX 生态和桌面小主机形态继续往前推，它仍然可能成为最舒服的“AI 开发主控台”。&lt;/p&gt;
&lt;p&gt;一句话版：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;如果你最在意&lt;/th&gt;
 &lt;th&gt;选&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;CUDA、微调、科研复现、NVIDIA 生产环境对齐&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;DGX Spark&lt;/strong&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;128GB、大模型、本地服务、Windows/Linux、极客可玩性&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;Ryzen AI Halo&lt;/strong&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;macOS、安静稳定、开发创作一体、中小模型实验&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;M4 Max Mac Studio&lt;/strong&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;本地 AI 的下一阶段，拼的不是谁喊出更大的 TOPS，而是谁能让开发者在桌面上更快完成一个闭环：&lt;strong&gt;模型能装进去，工具能跑起来，结果能用出去。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果只买一台，我会先问自己一个很土但很有效的问题：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;这台机器买回来以后，我是每天用它做东西，还是每天用它证明它能跑东西？&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;前者买工作流，后者买玩具。两者都没错，但别买错。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="参考资料"&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://www.nvidia.com/en-us/products/workstations/dgx-spark/" target="_blank" rel="noopener"
 &gt;NVIDIA DGX Spark 官方页面&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://www.amd.com/en/products/processors/desktops/ryzen/ryzen-ai-halo.html" target="_blank" rel="noopener"
 &gt;AMD Ryzen AI Halo 官方页面&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://www.apple.com/mac-studio/specs/" target="_blank" rel="noopener"
 &gt;Apple Mac Studio 技术规格&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://www.apple.com/shop/buy-mac/mac-studio" target="_blank" rel="noopener"
 &gt;Apple Mac Studio 购买配置页&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://guige.ai/p/ollama-local-dev/" &gt;鬼哥：一张 4090 跑 Gemma4 26B：用 Ollama 搭本地 AI 开发环境实测&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;图片来源：NVIDIA DGX Spark 官方页面、AMD Ryzen AI Halo 官方页面&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>一张 4090 跑 Gemma4 26B：用 Ollama 搭本地 AI 开发环境实测</title><link>https://guige.ai/p/ollama-local-dev/</link><pubDate>Mon, 04 May 2026 00:00:00 +0000</pubDate><guid>https://guige.ai/p/ollama-local-dev/</guid><description>&lt;img src="https://guige.ai/" alt="Featured image of post 一张 4090 跑 Gemma4 26B：用 Ollama 搭本地 AI 开发环境实测" /&gt;&lt;p&gt;以前本地大模型像玩具：能聊天，但一进开发工作流就露怯。现在一张 4090 已经能把 &lt;strong&gt;Gemma4 26B&lt;/strong&gt; 跑起来，还能接 Codex、Claude Code、Hermes Agent。问题只剩一个：&lt;strong&gt;它到底是生产力，还是昂贵的电子暖手宝？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这篇文章不讲玄学，直接上手：用 Ollama 部署本地模型、用 API 对话、接入开发工具，再看 RTX 4090 上的真实推理数据。&lt;/p&gt;
&lt;p&gt;&lt;img alt="本地 AI 开发工作站" class="gallery-image" data-flex-basis="426px" data-flex-grow="177" height="941" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/ollama-local-dev/cover.webp" srcset="https://guige.ai/p/ollama-local-dev/cover_hu_8dcc5742ce0bf15c.webp 800w, https://guige.ai/p/ollama-local-dev/cover_hu_3c5675e75fce5a98.webp 1600w, https://guige.ai/p/ollama-local-dev/cover.webp 1672w" width="1672"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="先看结论"&gt;先看结论
&lt;/h2&gt;&lt;p&gt;我这台机器的实测环境：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;项目&lt;/th&gt;
 &lt;th style="text-align: right"&gt;数据&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;GPU&lt;/td&gt;
 &lt;td style="text-align: right"&gt;NVIDIA GeForce RTX 4090&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;nvidia-smi&lt;/code&gt; 显存&lt;/td&gt;
 &lt;td style="text-align: right"&gt;49140 MiB&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;NVIDIA Driver&lt;/td&gt;
 &lt;td style="text-align: right"&gt;570.158.01&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;CUDA&lt;/td&gt;
 &lt;td style="text-align: right"&gt;12.8&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Ollama&lt;/td&gt;
 &lt;td style="text-align: right"&gt;0.23.0&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;模型&lt;/td&gt;
 &lt;td style="text-align: right"&gt;&lt;code&gt;gemma4:26b&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;模型文件大小&lt;/td&gt;
 &lt;td style="text-align: right"&gt;17 GB&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Ollama 加载后显存&lt;/td&gt;
 &lt;td style="text-align: right"&gt;约 24.5 GB&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;持续输出速度&lt;/td&gt;
 &lt;td style="text-align: right"&gt;约 160-166 tokens/s&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;长输出功耗&lt;/td&gt;
 &lt;td style="text-align: right"&gt;约 260-265W&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;长输出温度&lt;/td&gt;
 &lt;td style="text-align: right"&gt;54-60C&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;先打补丁：我这张 4090 在 &lt;code&gt;nvidia-smi&lt;/code&gt; 里显示约 &lt;strong&gt;48GB 显存&lt;/strong&gt;，不是常见 24GB 版本。普通 24GB 4090 也可以参考这篇文章的方法，但长上下文、并发和 Agent 场景要更保守。&lt;/p&gt;
&lt;p&gt;我的结论是：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;本地 26B 模型已经能做日常开发副驾，但还不能无脑替代云端顶级模型。&lt;/strong&gt;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;它适合解释私有代码、写脚本、生成小模块、做初步 code review；但复杂重构、跨仓库规划、长链路 Agent，仍然会被模型能力、上下文和工具链沙盒卡住。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="ollama-解决了什么"&gt;Ollama 解决了什么
&lt;/h2&gt;&lt;p&gt;Ollama 的价值不是让模型变聪明，而是把本地部署降到几条命令：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ollama pull gemma4:26b
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ollama run gemma4:26b
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;没有 Ollama，你要处理权重格式、量化版本、CUDA、服务启动、API 适配。用 Ollama 之后，它更像一个本地模型网关：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;开发工具 / 脚本 / Agent
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; |
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; v
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;http://localhost:11434
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; |
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; v
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;本地 Gemma4 26B
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;img alt="Ollama 本地模型网关" class="gallery-image" data-flex-basis="426px" data-flex-grow="177" height="941" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/ollama-local-dev/ollama-stack.webp" srcset="https://guige.ai/p/ollama-local-dev/ollama-stack_hu_e8309c95dc255628.webp 800w, https://guige.ai/p/ollama-local-dev/ollama-stack_hu_f7897a4b19aa206b.webp 1600w, https://guige.ai/p/ollama-local-dev/ollama-stack.webp 1672w" width="1672"&gt;&lt;/p&gt;
&lt;p&gt;查看模型：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ollama list
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;我本机输出里有：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;NAME SIZE
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;gemma4:26b 17 GB
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;gemma4:e2b 7.2 GB
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;gemma4:latest 9.6 GB
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;gpt-oss:20b 13 GB
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;gpt-oss:120b 65 GB
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;查看运行状态：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ollama ps
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;实测加载后：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;NAME SIZE PROCESSOR CONTEXT
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;gemma4:26b 25 GB 100% GPU 262144
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这行信息很关键：&lt;code&gt;100% GPU&lt;/code&gt; 说明没有明显落到 CPU，&lt;code&gt;262144&lt;/code&gt; 说明上下文窗口很大，但不代表每次都应该塞满。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="先直接对话"&gt;先直接对话
&lt;/h2&gt;&lt;p&gt;命令行对话：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ollama run gemma4:26b
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;然后直接问：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;用三句话解释 Ollama 是什么。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果要从程序里调用，用 Ollama 原生 API：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl http://localhost:11434/api/chat &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -d &lt;span class="s1"&gt;&amp;#39;{
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; &amp;#34;model&amp;#34;: &amp;#34;gemma4:26b&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; &amp;#34;messages&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; {&amp;#34;role&amp;#34;: &amp;#34;user&amp;#34;, &amp;#34;content&amp;#34;: &amp;#34;用三句话解释 Ollama 是什么。&amp;#34;}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; ],
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; &amp;#34;stream&amp;#34;: false
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; }&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Ollama 返回的 JSON 里有性能字段：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;字段&lt;/th&gt;
 &lt;th&gt;含义&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;load_duration&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;模型加载耗时&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;prompt_eval_count&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;输入 token 数&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;prompt_eval_duration&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;输入处理耗时&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;eval_count&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;输出 token 数&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;eval_duration&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;输出生成耗时&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;核心公式：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;输出速度 = eval_count / eval_duration_seconds
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这比手动掐秒表靠谱。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="接入-codex默认沙盒失败授权后跑通"&gt;接入 Codex：默认沙盒失败，授权后跑通
&lt;/h2&gt;&lt;p&gt;Codex CLI 版本：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;codex-cli 0.128.0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;启动方式：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;codex --oss --local-provider ollama -m gemma4:26b
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;我先跑了一个只读任务：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;codex &lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --oss &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --local-provider ollama &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -m gemma4:26b &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -s read-only &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --ephemeral &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;请阅读当前目录的 benchmark.sh，简要说明它会如何测试 Ollama 本地模型性能，不要修改任何文件。&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Codex 成功识别了 Ollama provider：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;model: gemma4:26b
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;provider: ollama
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sandbox: read-only
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;但默认 read-only sandbox 下，内部执行读文件命令时失败：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bwrap: loopback: Failed RTM_NEWADDR: Operation not permitted
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这个结果很有价值：&lt;strong&gt;本地模型速度够，不代表 Agent 工具链一定顺。&lt;/strong&gt; 这次不是模型不行，而是当前 Linux 环境下 bubblewrap sandbox 权限受限。&lt;/p&gt;
&lt;p&gt;随后我显式授权绕过 Codex 内部 sandbox，仍然使用同一个只读任务：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;codex &lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --oss &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --local-provider ollama &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -m gemma4:26b &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --dangerously-bypass-approvals-and-sandbox &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --ephemeral &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;请阅读当前目录的 benchmark.sh，简要说明它会如何测试 Ollama 本地模型性能，不要修改任何文件。&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这次跑通了。Codex 成功执行：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cat benchmark.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;并总结出脚本会调用本地 Ollama &lt;code&gt;/api/chat&lt;/code&gt;，保存原始 JSON，再用 &lt;code&gt;jq&lt;/code&gt; 计算 &lt;code&gt;load_s&lt;/code&gt;、&lt;code&gt;prompt_tokens_per_s&lt;/code&gt;、&lt;code&gt;output_tokens_per_s&lt;/code&gt; 等指标。换句话说，&lt;strong&gt;Codex + Ollama + Gemma4 26B 是可用的，但在这台机器上需要绕过 Codex sandbox 才能读文件。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="Codex 本地模型测试截图" class="gallery-image" data-flex-basis="426px" data-flex-grow="177" height="1080" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/ollama-local-dev/codex-local.webp" srcset="https://guige.ai/p/ollama-local-dev/codex-local_hu_58cb1772fb7c73c8.webp 800w, https://guige.ai/p/ollama-local-dev/codex-local_hu_5037a10b39c2a8a1.webp 1600w, https://guige.ai/p/ollama-local-dev/codex-local.webp 1920w" width="1920"&gt;&lt;/p&gt;
&lt;p&gt;遇到类似问题，优先检查：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;是否在受限容器、远程桌面、特殊 sandbox 里运行&lt;/li&gt;
&lt;li&gt;系统是否允许 user namespace&lt;/li&gt;
&lt;li&gt;Codex sandbox 模式是否过严&lt;/li&gt;
&lt;li&gt;是否需要换普通终端或调整权限策略&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="接入-claude-code真实可用"&gt;接入 Claude Code：真实可用
&lt;/h2&gt;&lt;p&gt;Claude Code 版本：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2.1.126 (Claude Code)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Ollama 提供了 Anthropic-compatible API，所以可以这样接：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;ANTHROPIC_AUTH_TOKEN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;ollama
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;ANTHROPIC_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;ANTHROPIC_BASE_URL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;http://localhost:11434
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;claude --model gemma4:26b
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;我用完整路径跑了一个非交互只读任务：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;env &lt;span class="nv"&gt;ANTHROPIC_AUTH_TOKEN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;ollama &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;ANTHROPIC_BASE_URL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;http://localhost:11434 &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;ANTHROPIC_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; /home/luoli/.local/bin/claude &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -p &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --model gemma4:26b &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --no-session-persistence &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --permission-mode dontAsk &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --tools Read &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --output-format json &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;请阅读当前目录的 benchmark.sh，简要说明它如何测试 Ollama 本地模型性能。不要修改任何文件。&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;结果成功：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;指标&lt;/th&gt;
 &lt;th style="text-align: right"&gt;数据&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;状态&lt;/td&gt;
 &lt;td style="text-align: right"&gt;success&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;总耗时&lt;/td&gt;
 &lt;td style="text-align: right"&gt;7889 ms&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;API 耗时&lt;/td&gt;
 &lt;td style="text-align: right"&gt;7824 ms&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;轮数&lt;/td&gt;
 &lt;td style="text-align: right"&gt;2&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;输入 token&lt;/td&gt;
 &lt;td style="text-align: right"&gt;16319&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;输出 token&lt;/td&gt;
 &lt;td style="text-align: right"&gt;713&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;permission denials&lt;/td&gt;
 &lt;td style="text-align: right"&gt;0&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Claude Code 正确读取了 &lt;code&gt;benchmark.sh&lt;/code&gt;，并总结出脚本会用 5 个 case 调用 Ollama &lt;code&gt;/api/chat&lt;/code&gt;，保存原始 JSON，再用 &lt;code&gt;jq&lt;/code&gt; 提取 &lt;code&gt;total_s&lt;/code&gt;、&lt;code&gt;load_s&lt;/code&gt;、&lt;code&gt;prompt_tokens_per_s&lt;/code&gt;、&lt;code&gt;output_tokens_per_s&lt;/code&gt; 等指标。&lt;/p&gt;
&lt;p&gt;这就是一个正面案例：&lt;strong&gt;同样是 Gemma4 26B，本地模型不只会聊天，也能通过 Claude Code 的 Read 工具进入真实开发上下文。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="Claude Code 本地模型测试截图" class="gallery-image" data-flex-basis="426px" data-flex-grow="177" height="1080" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/ollama-local-dev/claude-code-local.webp" srcset="https://guige.ai/p/ollama-local-dev/claude-code-local_hu_8293d8528b4e4587.webp 800w, https://guige.ai/p/ollama-local-dev/claude-code-local_hu_ba8dcb5692405d72.webp 1600w, https://guige.ai/p/ollama-local-dev/claude-code-local.webp 1920w" width="1920"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="Codex、Claude Code 和 Hermes 接入本地模型" class="gallery-image" data-flex-basis="426px" data-flex-grow="177" height="941" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/ollama-local-dev/codex-claude-hermes.webp" srcset="https://guige.ai/p/ollama-local-dev/codex-claude-hermes_hu_ebe3c6c4cfdeb503.webp 800w, https://guige.ai/p/ollama-local-dev/codex-claude-hermes_hu_f1d95a3b0e8c2050.webp 1600w, https://guige.ai/p/ollama-local-dev/codex-claude-hermes.webp 1672w" width="1672"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="接入-hermes-agent"&gt;接入 Hermes Agent
&lt;/h2&gt;&lt;p&gt;Hermes Agent 版本：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Hermes Agent v0.12.0 (2026.4.30)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;快速启动：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ollama launch hermes
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;也可以 oneshot 测试：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hermes --provider ollama &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -m gemma4:26b &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -z &lt;span class="s2"&gt;&amp;#34;请用三句话说明你当前是否在通过 Ollama 本地模型运行，并给一个开发建议。&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;我本机能跑通。再用：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hermes status
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;看到：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Model: gemma4
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Provider: ollama-launch
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这里有个细节：模型回答里可能说自己是 custom provider，但工具状态显示 &lt;code&gt;ollama-launch&lt;/code&gt;。所以验证 Agent 是否真的接入本地模型，不要只看模型自述，要看工具的 &lt;code&gt;status&lt;/code&gt; 或配置。&lt;/p&gt;
&lt;p&gt;&lt;img alt="Hermes 本地模型状态截图" class="gallery-image" data-flex-basis="426px" data-flex-grow="177" height="1080" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/ollama-local-dev/hermes-local.webp" srcset="https://guige.ai/p/ollama-local-dev/hermes-local_hu_46d6eb2d1357671a.webp 800w, https://guige.ai/p/ollama-local-dev/hermes-local_hu_4759d992f5dbd81b.webp 1600w, https://guige.ai/p/ollama-local-dev/hermes-local.webp 1920w" width="1920"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="4090--gemma4-26b-实测"&gt;4090 + Gemma4 26B 实测
&lt;/h2&gt;&lt;p&gt;我写了一个 benchmark 脚本：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;content/post/ollama-local-dev/benchmark.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;它测试 5 类任务：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Case&lt;/th&gt;
 &lt;th&gt;目的&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Short chat&lt;/td&gt;
 &lt;td&gt;短对话&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Long Chinese output&lt;/td&gt;
 &lt;td&gt;长中文输出&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Code generation&lt;/td&gt;
 &lt;td&gt;代码生成&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Code review&lt;/td&gt;
 &lt;td&gt;代码审查&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Agent planning&lt;/td&gt;
 &lt;td&gt;Agent 规划&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;实测结果：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Case&lt;/th&gt;
 &lt;th style="text-align: right"&gt;总耗时&lt;/th&gt;
 &lt;th style="text-align: right"&gt;输出 tokens&lt;/th&gt;
 &lt;th style="text-align: right"&gt;输出速度&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;短对话&lt;/td&gt;
 &lt;td style="text-align: right"&gt;4.790s&lt;/td&gt;
 &lt;td style="text-align: right"&gt;697&lt;/td&gt;
 &lt;td style="text-align: right"&gt;165.93 tokens/s&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;长中文输出&lt;/td&gt;
 &lt;td style="text-align: right"&gt;18.728s&lt;/td&gt;
 &lt;td style="text-align: right"&gt;2785&lt;/td&gt;
 &lt;td style="text-align: right"&gt;160.84 tokens/s&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;代码生成&lt;/td&gt;
 &lt;td style="text-align: right"&gt;13.337s&lt;/td&gt;
 &lt;td style="text-align: right"&gt;1985&lt;/td&gt;
 &lt;td style="text-align: right"&gt;161.66 tokens/s&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;代码审查&lt;/td&gt;
 &lt;td style="text-align: right"&gt;14.430s&lt;/td&gt;
 &lt;td style="text-align: right"&gt;2143&lt;/td&gt;
 &lt;td style="text-align: right"&gt;161.16 tokens/s&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Agent 规划&lt;/td&gt;
 &lt;td style="text-align: right"&gt;13.631s&lt;/td&gt;
 &lt;td style="text-align: right"&gt;2028&lt;/td&gt;
 &lt;td style="text-align: right"&gt;161.48 tokens/s&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;长输出监控&lt;/td&gt;
 &lt;td style="text-align: right"&gt;24.020s&lt;/td&gt;
 &lt;td style="text-align: right"&gt;3554&lt;/td&gt;
 &lt;td style="text-align: right"&gt;159.79 tokens/s&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;结论很稳定：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Gemma4 26B 在这台机器上的持续输出速度约 160 tokens/s
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;img alt="本地推理性能仪表盘" class="gallery-image" data-flex-basis="426px" data-flex-grow="177" height="941" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/ollama-local-dev/benchmark-dashboard.webp" srcset="https://guige.ai/p/ollama-local-dev/benchmark-dashboard_hu_b5432785d5043b2e.webp 800w, https://guige.ai/p/ollama-local-dev/benchmark-dashboard_hu_ef7de2d628236655.webp 1600w, https://guige.ai/p/ollama-local-dev/benchmark-dashboard.webp 1672w" width="1672"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="显存功耗和温度"&gt;显存、功耗和温度
&lt;/h2&gt;&lt;p&gt;模型加载后：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;GPU Memory: 24527MiB / 49140MiB
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Power: 72W
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Temp: 51C
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Process: /usr/local/bin/ollama
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;长输出期间用：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nvidia-smi dmon -s pucvmet -c &lt;span class="m"&gt;20&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;观察到：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;指标&lt;/th&gt;
 &lt;th style="text-align: right"&gt;数据&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;功耗&lt;/td&gt;
 &lt;td style="text-align: right"&gt;260-265W&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;温度&lt;/td&gt;
 &lt;td style="text-align: right"&gt;54-60C&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;SM 利用率&lt;/td&gt;
 &lt;td style="text-align: right"&gt;82-87%&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;显存占用&lt;/td&gt;
 &lt;td style="text-align: right"&gt;约 24529MB&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;显存利用率&lt;/td&gt;
 &lt;td style="text-align: right"&gt;50-55%&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;显存频率&lt;/td&gt;
 &lt;td style="text-align: right"&gt;10501 MHz&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;核心频率&lt;/td&gt;
 &lt;td style="text-align: right"&gt;2670-2685 MHz&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这说明推理确实主要在 GPU 上跑，而且负载不低。长时间跑 Agent 时，真正要关注的不只是 tokens/s，还有散热、风噪、电费和显存被其他任务抢占。&lt;/p&gt;
&lt;p&gt;&lt;img alt="系统监控摘要截图" class="gallery-image" data-flex-basis="544px" data-flex-grow="227" height="529" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/ollama-local-dev/btop-inference.webp" srcset="https://guige.ai/p/ollama-local-dev/btop-inference_hu_8be79f9a4ca7288f.webp 800w, https://guige.ai/p/ollama-local-dev/btop-inference.webp 1201w" width="1201"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="nvidia-smi dmon 监控截图" class="gallery-image" data-flex-basis="426px" data-flex-grow="177" height="1080" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/ollama-local-dev/nvidia-smi-dmon.webp" srcset="https://guige.ai/p/ollama-local-dev/nvidia-smi-dmon_hu_3ae37218b0b7aca1.webp 800w, https://guige.ai/p/ollama-local-dev/nvidia-smi-dmon_hu_7ce71b247fb5ec8f.webp 1600w, https://guige.ai/p/ollama-local-dev/nvidia-smi-dmon.webp 1920w" width="1920"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="一个容易误判的点thinking-也算-token"&gt;一个容易误判的点：thinking 也算 token
&lt;/h2&gt;&lt;p&gt;第一次烟测里，我只是问：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;用三句话解释 Ollama 是什么。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;但 API 返回里的 &lt;code&gt;eval_count&lt;/code&gt; 到了 887，因为模型生成了不少 thinking 内容。&lt;/p&gt;
&lt;p&gt;所以做 benchmark 时不要只看“用户看到多少字”。对推理耗时来说，模型实际生成的 token 才是成本，包括 thinking。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="适合怎么用"&gt;适合怎么用
&lt;/h2&gt;&lt;p&gt;我建议这样分工：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;场景&lt;/th&gt;
 &lt;th&gt;本地 Gemma4 26B 是否适合&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;私有代码解释&lt;/td&gt;
 &lt;td&gt;很适合&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;写脚本 / 小工具&lt;/td&gt;
 &lt;td&gt;很适合&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;生成测试样例&lt;/td&gt;
 &lt;td&gt;适合&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;初步 code review&lt;/td&gt;
 &lt;td&gt;适合&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;大型重构&lt;/td&gt;
 &lt;td&gt;谨慎&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;跨仓库复杂任务&lt;/td&gt;
 &lt;td&gt;不建议只靠本地&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;高风险生产改动&lt;/td&gt;
 &lt;td&gt;必须人工复核&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;最舒服的用法不是“让本地模型全自动开发完整系统”，而是：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;本地模型负责高频、低风险、隐私敏感任务；
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;云端强模型负责低频、高难度、强推理任务。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;img alt="本地模型能力边界" class="gallery-image" data-flex-basis="426px" data-flex-grow="177" height="941" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/ollama-local-dev/local-ai-boundary.webp" srcset="https://guige.ai/p/ollama-local-dev/local-ai-boundary_hu_f7888c35499b88c9.webp 800w, https://guige.ai/p/ollama-local-dev/local-ai-boundary_hu_75fe98b77b5f6774.webp 1600w, https://guige.ai/p/ollama-local-dev/local-ai-boundary.webp 1672w" width="1672"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="takeaway"&gt;Takeaway
&lt;/h2&gt;&lt;p&gt;回顾一下，搭一个能用于开发的本地 AI 环境，只需要四步：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;用 Ollama 拉取模型：&lt;code&gt;ollama pull gemma4:26b&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;用 API 或 CLI 确认模型能稳定对话&lt;/li&gt;
&lt;li&gt;把 Codex、Claude Code、Hermes 接到 &lt;code&gt;localhost:11434&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;用 tokens/s、显存、功耗、温度和 Agent 成功率一起评估体验&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这次实测最重要的结论不是“4090 很快”，而是：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;本地模型的下限已经很高，但上限取决于工具链。&lt;/strong&gt;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;Claude Code 能顺利读取文件，Codex 在同一环境里被 sandbox 卡住，Hermes 能跑通但 provider 映射要核验。这才是真实的本地 AI 开发体验：模型只是发动机，方向盘、刹车和路况一样重要。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="参考资料"&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://www.ollama.com/library/gemma4" target="_blank" rel="noopener"
 &gt;Ollama Gemma4 模型页&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://docs.ollama.com/openai" target="_blank" rel="noopener"
 &gt;Ollama OpenAI-compatible API 文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://docs.ollama.com/integrations/codex" target="_blank" rel="noopener"
 &gt;Ollama Codex 集成文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://docs.ollama.com/integrations/claude-code" target="_blank" rel="noopener"
 &gt;Ollama Claude Code 集成文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://docs.ollama.com/integrations/hermes" target="_blank" rel="noopener"
 &gt;Ollama Hermes Agent 集成文档&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>