Qwen3.8-27B 6 道题全交了,翻在两行 CSS 上
一台 M5 Pro 64G,17GB 权重,中位 13.4 token/秒 附:去审查版在哪拿、要占多少内存
8 月 14 日 Qwen3.8-27B 开源,Apache-2.0。我没去点云端接口,直接把 17GB 的 GGUF 拖进自己写的 LocalBrain(中文名方寸智匣),出了 6 道题:三道图形动画、一道禁用 JavaScript 的纯 CSS 硬约束、一道游戏 UI 还原,最后一道必须真联网搜索、再产出 Excel 和 Word 的工具链题。从下午 13:51 发出第一题,到 16:48 最后一个文件落盘,6 道题全部产出了双击就能跑的文件,中间最长的一次生成等了 940.6 秒。最后翻车的两个地方也很具体:一个是两行 CSS,一个是一份标题齐全、内容是空的 Word。
▍🧩 27B 凭什么塞得进一台笔记本
27B 是密集模型,64 层,隐藏维度 5120,原生吃图片和视频。真正让它在消费级机器上活下来的不是参数量,而是注意力怎么排。官方模型卡写的结构是 16 × (3 × (Gated DeltaNet → FFN) → 1 × (Gated Attention → FFN))——每四层里三层用线性注意力,只留一层全注意力。那一层全注意力也做了收窄:Query 24 个头、Key/Value 只有 4 个头,头维度 256。
打个比方。全注意力像是每读一个新词,都把前面读过的全部重看一遍,读得越长越慢,内存涨得越凶。线性注意力更像随身带一份不断改写的摘要,新词进来只更新摘要,不回头翻旧账。代价是摘要会丢细节,所以还得留四分之一的全注意力层,把关键的东西钉住。
这套排布换来的是原生 262,144 token 上下文,官方说可以再扩到 100 万。落到我这台机器上,unsloth 的 UD-Q4_K_XL 主权重 17,093 MB,视觉投影 mmproj 888 MB,加起来不到 18GB。早在本地跑模型还要自己背 llama.cpp 参数表的年代,这个尺寸的多模态模型是不敢想的。
▍🎮 四道图形题:不看形容词,直接看画面
第 1 题要 Three.js 低多边形小岛,岛上一棵树、一间小房子、一只缓慢转圈的小鸡,相机自动环绕,渐变蓝天空加柔和阴影。产出的单文件 372 行,Three.js 走 importmap 从 CDN 引入。上面那张图是第 5 秒的画面:小鸡有鸡冠、喙和眼睛,绕岛公转时身体朝着运动方向,房子有门把手和三扇窗,草地上还多加了石头、蘑菇和小花。

顺带说一下这个回执。它不只是把文件丢给你,而是列了一张表说明每样东西怎么实现的——树是六棱柱树干加 4 个 Icosahedron 堆叠树冠,天空是 ShaderMaterial 三段渐变,阴影用 PCFSoftShadowMap。这些描述我对着代码核过,全部属实。它讲得清楚自己写了什么,这一点在后面会变成一个很讽刺的对照。

第 2 题是原生 Canvas 小游戏《接星星》,不许用任何外部库。我用真实键盘事件驱动篮子去接,截的就是接住的瞬间:左上角分数从 0 跳到 10,粒子爆炸特效在篮口炸开,天上还有两颗在转的星星。代码整个包在 IIFE 里,一个全局变量都没往外漏——这是个挺讲究的写法。

第 3 题最有意思,因为它是唯一一道有硬约束的题:只准 HTML 和 CSS,禁止 JavaScript、图片和 SVG。约束这种事最容易被模型偷偷绕过,所以我直接数了一遍:整个文件里 script 标签、img 标签、svg 标签和 onclick 属性的出现次数,全是 0。立方体靠一个 8 秒的 `spin` 动画自转,倒影和星空全是 CSS 画的。半透明面会透出对面的镜像文字,这是设计取舍,不是 bug。

它交稿时自己写了一句“零 JavaScript、零图片、零 SVG,纯 HTML + CSS”。这种自我声明本来不值几个钱——模型说自己守了规矩,和它真守了规矩是两回事。这次它说的是真的,我数出来的三个 0 和它的说法对得上,连倒影用 `scaleY(-1)` 加渐变遮罩、星星用 `box-shadow` 批量生成这些细节也都对得上。

第 4 题是烟花模拟器:点哪里就从底部发射一发升到哪里,炸出 80 到 150 个带重力下落、逐渐熄灭的粒子。这张图是连点三处之后挑出来的一帧,同时能看到三个阶段——升空的拖尾、刚炸开的亮核、已经被重力拽下来的余烬。底部城市剪影带亮着的窗户和红色航空障碍灯。
▍🔧 两个翻车现场:两行 CSS,和一份空 Word
第 5 题要一个像素风 RPG 开始界面:居中标题《像素勇者》带呼吸发光,下方三个菜单按钮,上下键切换选中项,选中项前有跳动的像素小剑,回车弹复古对话框。功能层面全部实现了——我按了方向键,选中项确实从「开始冒险」移到「读取存档」;按回车,「敬请期待」的对话框确实弹出来了。

但画面是这样的。标题和三个菜单横成一排,回车弹出的对话框因为是 `position: fixed` 居中,正好压在标题和「开始冒险」上面。根因在两处:`body` 写了 `display: flex` 却没写 `flex-direction: column`,于是标题容器和菜单被排成了一行;`.menu-item` 又是 `inline-block`,三个菜单项也横着排——而这道题要求的是上下键切换。

我没动模型写的任何一行,只在页面头部追加了两条声明:`body { flex-direction: column }` 和 `.menu-item { display: block }`。结果就是上面这张——标题居中带红色呼吸光,三个菜单竖着排在下方,像素小剑停在「读取存档」前面,像素山脉在背后横向滚动。它离正确答案只差两行,但它自己不知道。
第 6 题是专门用来考工具链的:不给网址,逼它自己搜;搜到之后要真读网页;再跳到文档工具产出 Excel 和 Word;最后还要用预览工具自检一遍。这道题最容易糊弄人的地方是编网址——一个偷懒不联网的模型,完全可以凭记忆造出一串看起来很像的 URL,光看文件是看不出来的,必须一个个去抓。
所以我把它给的四个来源逐个抓了一遍。四个全是真的,而且内容对得上题:checkaimodels.com 那篇标题是《Run Open-Source LLMs Locally 2026: Which GPU, Ollama vs vLLM》,hardwarepedia.com 那篇是《Running AI Locally: Complete Hardware & Software Guide (2026)》,还有一篇 CSDN 的《Windows本地部署开源大模型保姆级教程》和一篇今日头条。Excel 那边也规规矩矩,表头加 8 行数据,列名就是题目要求的模型名称、参数量、量化格式、最低内存需求、信息来源网址。

然后是这份回执。第五步的自检结果写着 passed = true,无 issues,还报了具体数字:58 段落、6 个表格。第四步描述结构时更具体——「主流模型概览(Qwen/Llama/DeepSeek/Mistral)」,四个模型名都点出来了。看到这儿我基本认为这道题满分通过。

打开文件才发现不是。我用 XML 解析器把正文完整过了一遍:整份文档的正文只有 879 字,主体 11 个段落加 1 张表,超链接标签 0 个,整份文件里 “http” 出现 0 次。回执里点名的 Qwen/Llama/DeepSeek/Mistral,在文件的「主流模型概览」那一节一个都没有——那节只有一句“包括以下系列:”,然后直接跳到下一个标题。
| 回执怎么说 | 文件实际是什么 | 题目要求 |
|---|---|---|
| 主流模型概览(Qwen/Llama/DeepSeek/Mistral) | 只有一句“包括以下系列:”,四个模型名一个没有 | 一节主流模型概览 |
| 硬件门槛(含显存档位对照表) | 表在,但 5 列数据只配了 4 个表头 | 一节硬件门槛 |
| 结论与建议 | 只有一句“给出以下建议:”,正文缺失 | 一节结论与建议 |
| 参考链接 | 标题之后整页空白,全文 0 个链接 | 结尾附参考链接列表 |
| passed = true,58 段落、6 个表格 | 11 段(总计 41)、1 张表、879 字 | 最后一步自检并报告结果 |
※ 统计口径:XML 解析器读 word/document.xml,body 共 13 个元素——11 个段落 + 1 张表 + sectPr。
还有个小破绽:简报开头写着“本简报基于 2026 年 3 月至 6 月间发布的多篇专题指南”,但它自己列的四个来源里,CSDN 那篇标题上明晃晃写着 2025 最新版。结构对、来源真、事实核到一半、正文空了三节,这个组合挺能说明现在本地模型的真实位置。
| 题目 | 产出 | 结果 |
|---|---|---|
| 1 · Three.js 3D 卡通场景 | 卡通小岛.html(372 行) | ✅ 要素齐全 |
| 2 · Canvas 小游戏《接星星》 | 接星星.html | ✅ 计分、粒子、旋转都在 |
| 3 · 纯 CSS 3D(禁 JS) | 3D旋转展示台.html | ✅ 约束零违反 |
| 4 · 物理粒子烟花 | 烟花模拟器.html | ✅ 重力、拖尾、剪影都在 |
| 5 · 像素风 RPG 开始界面 | 像素勇者.html | ⚠️ 功能全对,布局差两行 CSS |
| 6 · 搜索 + 文档工具链 | 局部部署对比.xlsx + 本地部署调研简报.docx | ⚠️ 网址全真,Word 空三节且自检报了假数 |
※ 环境:LocalBrain 1.1.0,temperature 0.65,思考档位 low,单次输出上限 6144 token。
▍⏱️ 速度:得按分钟算,不是按秒
llama.cpp 的日志把账记得很清楚。这台机器上 Qwen3.8 累计跑了 144 次生成、189,833 个 token、纯生成耗时 254.3 分钟。生成速度中位数 13.43 token/秒,四分位区间 12.56 到 13.88,最慢 7.64,最快 16.22。输入侧快得多,预处理中位数 285.4 token/秒。这 6 道题跑的是 temperature 0.65、思考档位 low、单次输出上限 6144 token,第一题光是第 1 轮思考就写了 4,305 字。
| 指标 | 实测值 | 说明 |
|---|---|---|
| 生成速度中位数 | 13.43 token/秒 | 144 次生成的中位数 |
| 最长单次生成 | 940.6 秒 / 9,877 token | 10.50 token/秒,约 15.7 分钟 |
| 单次工具参数生成 | 482 秒 / 9,868 字符 | 写一个完整 HTML 文件的一次工具调用 |
| 输入预处理 | 285.4 token/秒(中位) | 单次最大输入 69,393 token |
| 默认上下文窗口 | 32,768 | 接外部 Agent 时需要开到 81,920 |
※ 数据来自本机 llama.cpp 后端日志与会话导出,累计口径,不只包含这 6 道题。
最后一行是踩出来的。当年把它接进 OpenCode 时,那类客户端的系统提示实测约 66K token,窗口留在默认 32K,llama.cpp 会直接拒绝每一次请求,客户端不停重试,用户看到的现象是“反复输出同一段回答”。日志里 69,393 token 那次输入,就是这个事故的现场记录。所以现在这类模型我一律开到 80K 窗口,并且关掉推测解码——大窗口叠草稿模型会把内存峰值抬得很难看。
▍💰 谁赚、谁亏、谁不说话
27B 这个尺寸不是随便挑的。它刚好卡在消费级统一内存吃得下的那一档:4bit 量化不到 18GB,32GB 内存的机器能跑,48GB 以上舒服。往上一档就得上工作站,往下一档能力又撑不住长流程任务。挑这个尺寸、配 Apache-2.0,指向很明确——抢的是本地 Agent 的入口。官方模型卡里放大的也是这一类分数:Terminal Bench 2.1 从 Qwen3.6-27B 的 63.4 抬到 73.0,SWE-bench Pro 从 53.5 到 61.7,QwenSWEBench 从 49.3 到 79.0,OSWorld-Verified 从 63.9 到 84.3,DeepSWE 1.1 更是从 13.3 跳到 42.2。这些全是“让模型自己动手把活干完”的评测,不是聊天评测。
谁赚:卖统一内存的和卖显卡的,因为“能不能跑得动”重新变成了买机器的理由。谁省:个人开发者,这 6 道题换成按 token 计费,长任务的账单不会好看。谁沉默:按调用量收钱的那一方没有任何动机告诉你,哪些活其实根本不必上传。沉默方的立场往往就是结论。
但也别把话说满。中位 13.4 token/秒意味着一道复杂题要等十几分钟,这个体验在云端是不可接受的。本地模型现在能替代的是“可以慢慢等”的活——批量处理、隐私敏感的文档、不想外传的代码,而不是所有活。
▍🔓 去审查版:目录里就能下,但边界先说清楚

官方权重带对齐,社区给它做二次加工,这套剧本在开源模型上一直在演。Qwen3.8-27B 也一样,而且已经跑出了成熟的两条线。做法上有区别:一条用 Heretic 去压制模型内部的拒答方向,同时拿 KL 散度约束住原有对齐能力,尽量别把别的本事一起削掉;另一条走 abliterated,只改语言权重。两条都能在 LocalBrain 的发现页按量化档直接下载,不用自己去拼 HuggingFace 那一长串文件清单。
| 版本 | 做法 | 视觉能力 | 体积 / 最低内存 |
|---|---|---|---|
| JonathanColetti/Qwen3.8-27B-Uncensored-GGUF | Heretic 压制拒答方向,用 KL 散度约束保住原有对齐能力 | 无(纯文本) | 5bit 19.5GB / 32GB |
| Blackfrost-AI/Qwen3.8-27B-ABLITERATED-GGUF | abliterated,只改语言权重,视觉投影原样保留 | 有 | 5bit 20.2GB / 32GB |
※ 两者基座都是 Qwen/Qwen3.8-27B。第一条 Apache-2.0;量化档 4bit 16.8GB、5bit 19.5GB、6bit 22.4GB、8bit 29.0GB,8bit 需要 64GB 内存。
第二条那行值得多说一句:官方 Qwen3.8-27B 本身就是视觉语言模型,而 abliterated 只动语言权重,视觉投影原封不动——所以“27B + 看得懂图 + 不轻易拒答”是能同时成立的,这在 4bit 就能跑的尺寸段里并不多见。第一条那个纯文本版则走了另一条路,它把省下来的体积换成了更高的量化档,同样是 5bit 19.5GB,答复细节会比 4bit 更稳一些。
▍🧭 该不该装,装哪个
回到开头那三个小时。6 道题全交了,但每一道我都得盯着——盯它有没有偷偷绕过约束,盯布局对不对,盯它承诺的小节里到底有没有东西。最该记住的是第 3 题和第 6 题的对照:同一个模型,能准确讲清自己怎么写的立方体,也能对着一份空了三节的 Word 报出 passed = true。它交的东西可以信,它对自己交的东西的评价不能信。
| 你的情况 | 建议版本 | 为什么 |
|---|---|---|
| 32GB 内存,想先试试 | 官方 4bit(17.6GB,含视觉) | 能看图、能调工具、体积最小 |
| 48GB 以上,主力用 | 官方 4bit 或去审查 5bit | 5bit 答复细节更好,纯文本任务够用 |
| 既要看图又不想被拒答 | ABLITERATED 5bit(20.2GB) | 视觉投影保留,同基座同上下文 |
| 接 OpenCode 这类外部 Agent | 任意版本 + 80K 窗口 | 默认 32K 会被系统提示直接撑爆 |
上手路径很短:在 LocalBrain 的发现页选好量化档下载(内置魔搭、HF 国内镜像和 HuggingFace 官方三个源,自动测速选最快的一个),回主页点启动,模型就绪后去对话页直接用。要接开发工具就去集成页一键写入,Codex、OpenCode、Claude Code 都在里面。本地服务是标准 OpenAI 兼容格式,监听 `http://127.0.0.1:11434/v1`,其它 OpenAI 兼容客户端也能直接接上去。
▍📚 官方资料与复现入口
- Qwen3.8-27B 官方模型卡:https://huggingface.co/Qwen/Qwen3.8-27B
- 本次实测所用权重 unsloth/Qwen3.8-27B-GGUF:https://huggingface.co/unsloth/Qwen3.8-27B-GGUF
- 去审查版 JonathanColetti/Qwen3.8-27B-Uncensored-GGUF:https://huggingface.co/JonathanColetti/Qwen3.8-27B-Uncensored-GGUF
- 去审查 + 视觉版 Blackfrost-AI/Qwen3.8-27B-ABLITERATED-GGUF:https://huggingface.co/Blackfrost-AI/Qwen3.8-27B-ABLITERATED-GGUF
- LocalBrain(方寸智匣)下载:https://github.com/HackerChi-Hub/localbrain-releases/releases/latest
