我让本地模型连跑两天写 5 个网页游戏:1 题交付、3 题能跑、1 题放弃

我让本地模型连跑两天写 5 个网页游戏:1 题交付、3 题能跑、1 题放弃

2026/09/1139 分钟
分类:学习思考
标签:#AI#热点速递

摘要 64GB Mac、4bit 量化、每题两小时。从预填崩溃到 119k 上下文失速,我把一次次失败改成了 LocalBrain 的通用修复。 黑粉科技 · 2026-09-11

周二晚上,我把五道单文件网页难题丢给一台 64GB 内存的 Mac,让 LocalBrain 带着 Qwen3.8-Flash-Next 自己写、自己测、自己交付。**原以为这是一场模型能力测试,后来它变成了连续几天的代理系统抢修:**第一次预填直接把 262k 上下文顶到 Metal 内存错误;长任务跑到 119k 词元后,每轮先等 5—7 分钟预填;一个写错位置的字段能连续失败 7 次;一个小模型甚至把同一份交付请求原样重发 85 次。

**最后的结果依然值得看:**题 1《奇点实验室》正式交付;题 3《霓虹城》、题 4《星槎异闻录》、题 5《神经元熔炉》都能离线打开并通过运行时核验;题 2《六十秒后重启》写到 99KB 仍未闭合,我决定放弃。下面不只展示结果,也把那些漫长、狼狈、但真正推动 LocalBrain 变好的失败摊开。

先说结论:1/5 正式交付,4/5 可运行。 这里的“4/5 可运行”包括那 1 题正式交付,不是四题全部验收通过。这个 4bit 模型已经能写出有物理模拟、寻路、叙事和反向传播的完整页面;真正把它拖垮的,是长上下文下从 26.5 掉到 5.2 词元/秒的整轮有效速度,以及代理循环在失败后能不能及时止损、收尾、恢复。

五道题的最终状态。绿色是模型自己通过验收并交付,黄色是到时未交付但独立实跑无错误,红色是放弃

🧩 先补一个概念:让模型「自己交付一个网页」到底在测什么

平时我们让模型写代码,是它吐一段、我们复制粘贴、跑一下、回去再问。这次不是。

LocalBrain 里的代理循环把这件事交给程序:模型调用写文件工具落盘,程序自动用无头浏览器把页面跑起来,把运行时错误、控件数量、交互检查结果回喂给模型,模型再改、再检,直到它自己调用「交付」并通过验收。人在这个环里只提供题面和时间预算。

**这条链不是一开始就能跑。**9 月 2 日第一次让模型写大型 3D 页面时,它把大段代码塞进工具参数,刚好在输出上限处截断;应用一边显示“已写入”,一边又把坏掉的 JSON 原样塞回历史,下一轮直接被服务端用 500 拒绝。

后来页面即使写到磁盘,里面的 JavaScript 出错,模型也看不见。于是才有截断抢救、同名另存、按行编辑、无头浏览器自检,以及今天这套只认真实回执的产物策略。

单文件 HTML 是很好的考题。它禁止外部依赖,所以模型不能把难点甩给 Three.js 或 React;它必须一次性把结构、样式、逻辑写对;而且「双击能不能打开、报不报错」是机器可以客观判定的。

五道题分别压五种能力:物理模拟与数值稳定、光线投射与状态机、多智能体寻路、中文写作与交互叙事、神经网络与动态图表。

🖥️ 实验设置:机器、模型、参数,一个不漏

项目 实际配置
机器 Apple M5 Pro,64GB 统一内存,macOS 26.6.2
模型 AtomicChat/Qwen3.8-Flash-Next-GGUF,文件 Qwen3.8-Flash-Next-AD-3.84bpw-IQ4_XS-M64,28 个分片共 79GB,按需读取(--lazy-mode auto --load-mode mmap
引擎 llama.cpp b10705(Metal),--jinja --reasoning auto --reasoning-budget -1 --ctx-checkpoints 8 --checkpoint-min-step 0 --n-gpu-layers all --parallel 1
上下文窗口 174,080 词元。首次按 262,144 启动,预填时 Metal 内存不足,程序记录失败后按三分之二重启得到这个值
采样 temperature 1.0、top_p 0.95、top_k 20,全部取自 GGUF 元数据里量化方声明的推荐值;思考模式自动
实测速度 2 万词元内解码 21–25 词元/秒;10–14 万词元 9–10 词元/秒,算上每轮预填整轮有效 5.2;输入预填 260–550 词元/秒
每题预算 120 分钟(冒烟题 20 分钟),到时按收尾逻辑收口
模型可用工具 inspect_file、read_file、write_file、append_file、edit_file、run_html_check(无头 Chromium 实跑 + 交互检查)、阶段计划、交付
独立核验 台架另起无头浏览器跑产物,数运行时错误、动画帧、canvas、控件;再用行为脚本按题面逐项查证据
对照模型 Blackfrost Qwen3.8-27B abliterated Q8_0(29GB,约 9 词元/秒)只跑基础三级;Ling-3.0-tiny Q8_0(MoE,7.9B 总量 / 1.3B 激活)只跑冒烟

这里最容易被忽略的一行是「上下文窗口」。它不是我设的,是程序自己算出来的:启动时按可用内存的一份额度给 KV 缓存,262k 窗口在第一次预填就把 Metal 命令缓冲区撑爆,程序把这次失败记下来、按三分之二重新规划、重启,得到 174,080。

**窗口放得下,不等于长任务跑得动。**整个过程没有任何写死的机型或型号常数。

🧬 被测模型:官方模型卡里的关键信息

这五道题的主角是 Qwen3.8-Flash-Next。它 8 月 24 日在 ModelScope 上架,截至 9 月 11 日已有 44,171 次下载、1,137 个星标。千问团队在模型卡里给它的定位很直接:这是未来 Qwen4 底层架构的实验性预览,第一次以开放权重的形式放出来。

先把官方数字和我这台机器上的实际版本并排放,后面几乎所有现象都能在这张表里找到来源:

项目 官方模型卡 这次实测用的版本
参数规模 总参数 125B,每个词元只激活约 6B;另有 51B 的 N-gram 嵌入和 4B 的 MTP 多词元预测模块 同一个模型的社区量化版,IQ4_XS 3.84bpw
权重体积 131 个 safetensors 分片,合计约 360GB(按参数量推算是 16 位精度) 28 个 GGUF 分片,合计 79GB
层结构 48 层,12 组 ×(3 层 Gated DeltaNet + 1 层 Qwen Sparse Attention),每层后接 MoE 相同
专家 512 个专家,每个词元走 10 个路由专家加 1 个共享专家 相同
上下文 原生 262,144 词元,用 YaRN 可扩到 100 万 64GB 上实测上限 174,080,262k 第一次预填就撞上 Metal 内存
多模态 自带视觉编码器,支持图片和视频输入 五道题都是纯文本,没有用到
许可 Qwen Community License 1.0 同左

官方架构图:三层 Gated DeltaNet 配一层 Qwen Sparse Attention 组成一个混合块,重复 12 次;第 2 层额外接入 N-gram 嵌入,顶部是 MTP 多词元预测模块。图源:ModelScope Qwen/Qwen3.8-Flash-Next 模型卡

模型卡列了四项新特性,前两项正好对上这次实测里的现象。

  • 混合注意力换成 QSA。 上一代的 Gated DeltaNet 加 Gated Attention,改成了 Gated DeltaNet 加 Qwen Sparse Attention。稀疏注意力不再逐个挑词元,而是按微块挑,每次预算 512 块或 2,048 个词元,官方说这能明显降低长上下文延迟。48 层里有 36 层是 Gated DeltaNet 这种线性注意力,状态一路累积,没法像普通注意力那样随手截回某个位置;后面修复清单里 9 月 7 日「只能回滚到服务端检查点」那一条,根源就在这里。
  • N-gram 嵌入。 用两三个词组成的短词组去查一张 2,000 万条的嵌入表,只在第 2 层接入。官方的说法是,这种扩参数的办法计算量小,也比 MoE 更适合放到加速器内存之外。79GB 的文件能在 64GB 内存上启动,靠的正是 llama.cpp 把这类巨型低频张量留在 SSD 上按需读取,细节写在 85GB 模型塞进 64GB Mac 里。
  • Gated Residual。 残差流拓宽成 4 个分支,用逐元素、随数据变化的读门和逐分支的写门控制信息进出,官方说能在保持训练稳定的同时把推理开销压得很低。
  • 训练配方。 Muon 和 AdamW 两种优化器分管不同类别的权重,并且取消了 batch size 预热,一开始就用目标 batch size 训。

**每个词元只激活 6B,也解释了它为什么比 27B 快。**稠密的 27B 每生成一个词元要把 27B 参数全算一遍,Flash-Next 只算大约 6B,所以同一台机器上它能跑到 22–27 词元/秒,27B 只有 9 左右。代价是总参数要占掉 79GB 的磁盘和大半内存。

**官方说 QSA 能压低长上下文延迟,我这里却实测解码从 23 掉到 9.5 词元/秒,这两件事不矛盾。**模型卡推荐的是 SGLang、vLLM、TokenSpeed、KTransformers 这类服务端引擎,llama.cpp 不在名单里;llama.cpp 0.4 发布时,对这个架构也只写了「初步支持、优化待续」(见 llama.cpp 0.4:64GB硬墙松了吗?)。所以这次测到的是当前 Mac 引擎上的长上下文速度,不是 QSA 的上限;换新版引擎重测之前,我不把这笔账全记在模型头上。

官方跑分里,Flash-Next 在我挑出的 8 项上全部高过稠密的 Qwen3.8-27B,差距最大的是智能体编程和职业任务。

官方模型卡 8 项测试:Flash-Next 与 Qwen3.8-27B 的得分,按两者差距从大到小排列。数据来自 ModelScope 模型卡,是官方全精度评测,不是本文的 4bit 实测

完整的五模型对比如下,全部是模型卡上的官方数字,加粗为该行最高:

测试 考什么 Flash-Next 125B/6B Qwen3.8-27B Qwen3.7-Plus 397B/17B DeepSeek-V4-Flash-0731 284B/13B Claude-Opus-4.6 (Max)
SWE-bench Pro 智能体编程 62.5 61.7 55.8 56.0 53.4
DeepSWE 1.1 智能体编程 58.7 42.2 16.5 54.4 未公布
SWE-bench Multilingual 多语言软件工程 81.0 73.8 75.8 未公布 77.5
NL2Repo-Bench 仓库级代码生成 48.1 42.3 41.1 54.2 47.6
Toolathlon Verified 真实工具调用 73.5 67.1 50.6 70.3 未公布
JobBench 职业任务 55.7 33.4 27.6 41.3 36.6
IFBench 指令遵循 81.3 79.5 79.1 79.2 62.5
GPQA Diamond 科学推理 91.7 89.2 90.3 90.8 91.3
HLE 跨学科难题 35.9 30.8 34.7 33.8 40.0
LiveCodeBench v6 竞赛编程 91.9 90.3 89.6 90.6 88.8

读这张表要带着四个限定。第一,编程类测试是千问在 Claude Code 或 mini-SWE-agent 框架里测的,temperature 1.0、256K 上下文,Claude-Opus-4.6 的 SWE-bench Pro 用的是其官方公布成绩。第二,Flash-Next 不是每项都第一:仓库级代码生成输给 DeepSeek-V4-Flash,跨学科难题 HLE 输给 Claude-Opus-4.6。第三,官方表里的 27B 是原版,我这次对照跑的是社区去审查的 Q8 版,速度能比,分数不能直接套用。第四,这些分数来自约 360GB 的全精度权重,我跑的是压到 79GB 的 4bit 量化,本文五道题的结果,才是这个版本在这台机器上的真实表现。

视觉方面官方另有一张表:手机操作 AndroidWorld 84.5(Claude-Opus-4.6 为 62.0),电脑操作 OSWorld 2.0 部分得分 52.3。五道题都是纯文本任务,这部分我这次没有验证。

模型卡的「最佳实践」和我这次的设置,逐条对照:

项目 官方建议 这次实测
采样(开思考) temperature 1.0、top_p 0.95、top_k 20、min_p 0、presence_penalty 0 一致:GGUF 元数据里的推荐值就是这一组
采样(关思考) temperature 0.7、top_p 0.8、top_k 20、presence_penalty 1.5 没有切换:关思考只用在补闭合、强制调用工具这类短轮次,采样沿用上一行
思考强度 多轮智能体任务里调低思考强度不一定更快,分析不足会带来更多失败和重试 我实测它基本无视 low 档;最后一次运行固定一个档位,只按剩余时间调思考预算
历史思考 默认保留所有历史轮次的思考(preserved thinking),利于智能体保持决策一致 单次任务内保留,窗口吃紧时从最旧的轮次开始丢;跨轮聊天只带模型答复,不带思考
输出长度 在 100 万上下文内,思考给到 262,144、最终答复给到 131,072 64GB 装不下:总窗口 174,080,每轮额度按「剩余时间 × 实测速率」动态定
超长文本 超过 262k 用 YaRN;静态缩放可能拖累短文本表现 没有用到,瓶颈在 174k 以内的速度
推理引擎 SGLang、vLLM、TokenSpeed、KTransformers llama.cpp(Metal),Mac 上的现实选择,不在官方推荐名单里

对照下来,采样完全照官方来,差距集中在两处:64GB 内存撑不起官方建议的长输出和原生窗口,官方推荐的服务端引擎在 Mac 上用不了。所以这次五道题考的是「4bit 量化 + llama.cpp + 64GB」这套组合,不是 Flash-Next 的上限。

**许可证也值得看一眼。**Qwen Community License 1.0 允许免费使用、修改和分发;但如果你做的是模型即服务(对外提供 API 或托管推理)或 AI 工作助理生意,商用前要另找千问签授权;产品月活超过 1 亿或月收入超过 2,000 万美元,还要在界面上显著标注模型名。个人在本机跑、公司内部自用且不把模型能力开放给第三方,不受第二条限制。

本节数据来自 ModelScope 上的官方模型卡(2026-09-11 读取):https://modelscope.cn/models/Qwen/Qwen3.8-Flash-Next/summary

📋 五道题的题面

题面来自一份 29KB 的文件,五道题共用同一套硬性要求:只交付一个 HTML 文件、全部内嵌、禁止任何第三方库和网络资源、断网双击可用、不允许用预录动画冒充模拟、页面自带不能写死结果的「系统自检」面板。每题另有几十条具体要求,我把最硬的部分摘出来:

视觉形态 主要测试能力 题面里最硬的要求
1 奇点实验室 三维宇宙引力沙盘 数学、物理模拟、数值稳定、性能优化 ≥700 个粒子真实受两个移动引力源影响;软化参数、固定步长、NaN 检测;单击生成引力井、双击三维爆炸、拖动旋转、滚轮缩放;挑战「双星系统让 60% 粒子存活 30 秒」;帧率低于 30 自动降质
2 六十秒后重启 第一人称伪 3D 时间循环 光线投射、碰撞、状态机、时序因果 网格光线投射走廊、玩家有半径不穿墙;60 秒内 7 个定时事件真实改变地图;本轮状态与永久线索分开重置;巡逻机器人五种状态且按地图寻路;密码线索、三个能源节点顺序、可完成通关
3 霓虹城:最后一单 GTA 式 2.5D 开放城市 多智能体、寻路、系统耦合、任务逻辑 固定种子生成 ≥12×12 街区且道路连通可寻路;小地图与城市一致;车辆有惯性侧滑摩擦;昼夜循环、夜间大灯;交通、警车、通缉等级、送单任务
4 星槎异闻录 2.5D 水墨互动长卷 中文写作、语义映射、叙事、交互设计 原创仿古文 350–550 字配译文与注释;五个场景、≥5 层视差;古文语义映射到画面变化;天印机关、三结局;Web Audio 程序化音效
5 神经元熔炉 2.5D 数据实验室 神经网络、反向传播、动态图表、可解释性 手写前向与反向传播、数值梯度检查;tanh/relu、L2;XOR、双月、同心圆、螺旋四数据集;实时决策边界与损失曲线;NaN 检测与实验记录

冒烟题只有四句话,是每次改完代码先过的门槛,原文如下:

请制作离线可直接打开的单文件 HTML 任务清单,文件名 smoke-taskboard.html;不使用任何外部依赖。页面需有标题、新任务输入框 #task-input、添加按钮 #add-task、清单 #task-list、未完成数量 #remaining 和清除已完成按钮 #clear-done。输入文字后可以点击添加,也可以按 Enter 添加;空白输入不得添加。每条任务有复选框,勾选后划线并更新未完成数量,清除按钮只删除已勾选项。默认从空清单开始。用清楚的中文提示、居中卡片与可读配色。请实际写入文件,并用 run_html_check 的真实交互检查验证添加、勾选、清除后再交付。

五道题的完整题面作为附件放在文末,想复现的可以整段贴进 LocalBrain 的聊天框。

📊 每一题实际发生了什么

结果 轮数 用时 产物 独立核验
1 奇点实验室 delivered 22 6,902 秒 45,018 B 模型自检 3 组 36 步交互全过后交付;独立核验 19 项过 18、0 运行时错误、12 控件
3 霓虹城 timeout,可运行 23 7,200 秒 77,801 B 0 错误、2 canvas、5 控件;固定种子、12×12 街区、红绿灯、寻路、通缉、警车状态、行人全部有据;「按 W 加速」交互项未过
5 神经元熔炉 timeout,可运行 30 7,200 秒 42,600 B 0 错误、5 canvas、22 控件;tanh/relu/反向传播/数值梯度/四数据集/L2/决策边界/NaN 检测全部命中
4 星槎异闻录 timeout → 三次恢复后可运行 19 + 23 7,200 秒 + 恢复约 7,900 秒 137,793 B 0 错误、8 canvas、81 控件;五场景、视差、三结局、天印、Web Audio 全中;古文 228 字未达 350
2 六十秒后重启 放弃 27 7,200 + 4,700 秒 99,268 B 未闭合,不可运行

题 1 是唯一一次干净的交付。22 轮里模型自己写了三组交互检查,第三组 36 步全部通过后调用交付,验收放行。

我另外写了一个行为脚本按题面逐项查:粒子数是实时变化且不低于 700 的整数、按空格后状态文本真的变成「已暂停」、canvas 像素在变、自检面板有 18 条结论词——19 项过 18,唯一没过的是快照那一瞬间挑战状态文本没出现「成功/崩溃/进行」三个词。

题 1《奇点实验室》运行态:760 个粒子围绕双引力源运动,轨迹、控制台与逐项自检同时刷新

题 1《奇点实验室》暂停态:黑洞、发光吸积环和粒子尾迹保留在画面中,右侧仍显示数量、帧率与自检结果

题 3 和题 5 属于同一类:两小时到时、模型没来得及调用交付,但产物本身是好的。题 5 三十轮写了 42KB,独立实跑 0 错误、5 个 canvas、22 个控件,反向传播和数值梯度检查在源码里都能找到;题 3 二十三轮写了 77KB,城市、红绿灯、寻路、通缉全部有据,只是模型自己的交互检查「按 W 加速车速变化」没过,这一项我没有替它改,留给试玩确认。

题 3《霓虹城:最后一单》白天画面:道路网络、车辆、任务目标、小地图和系统自检同时可见

同一座城市进入夜晚:楼宇轮廓与路灯亮起,可见度降到 60%,导航和送货任务继续运行

题 5《神经元熔炉》训练态:XOR 数据集、两层网络、损失曲线、决策边界与准确率集中在一个页面

题 4 是这次最能说明问题的一题。第一次 120 分钟写到 129KB 就到时了,文件缺最后的三个闭合标签(script、body、html)。之后的收尾轮补齐了闭合,页面能打开,但暴露出一个运行时错误:跳转菜单的容器不存在。

第二次恢复 30 分钟,模型花了 18 分钟思考,一次编辑修掉这个错误,自检马上报出下一个:createRadialGradient 收到非有限值。

第三次恢复我换了做法,让程序把 129k 词元的历史折叠成 22k,模型用 12 轮把 2,480 行文件定点读了一遍,在推理里准确定位到根因——绘制近景时参数顺序传反了,导致 NaN——但时间又到了。第四次 60 分钟,它改完、自检 0 错误。加起来,题 4 在恢复上又花了两个多小时。

题 4《星槎异闻录》的「雾海孤城」:水墨视差背景、原创仿古文、今译、提示和五卷导航同屏出现

切到「无字碑林」后,远景、雾层、星点与卷文内容一起变化,证明五个场景不是同一张静态底图

🎮 最终效果到底丰富到什么程度

**这七张图不是概念稿,也不是给文章临时做的效果图,全部来自最终 HTML 的实际运行画面。**题 1 同屏计算 700 多个粒子、两个移动引力源和粒子轨迹,暂停、缩放、旋转、爆炸与挑战状态都有真实响应;题 3 有城市道路、车辆、红绿灯、导航、通缉、昼夜变化与任务结算;题 4 把水墨长卷、五个场景、视差层、谜题、三结局和 Web Audio 塞进一个 138KB 文件;题 5 则把数据集、网络结构、前向传播、反向传播、损失曲线和决策边界同时画出来。

最让我意外的不是某一张画面有多漂亮,而是模型能在没有 React、Three.js、图片素材和网络请求的前提下,把完全不同的四套视觉与交互系统从零装进单文件。它已经跨过了“只能写一个按钮演示”的阶段。

但画面丰富不等于交付合格:题 3 的驾驶手感没有逐项试玩,题 4 的古文只有 228 字且缺 localStorage 证据,题 5 到时没有主动调用交付。因此本文把它们标为“可运行”,不写成“全部完成”。

题 2 我放弃了。120 分钟写出 84KB,文件没收尾;收尾轮追加了 15KB 代码,还是没写闭合标签;再给 30 分钟,模型在 117k 上下文下生成了 33KB 的追加内容,写到一半墙钟到点,整段作废。它不是不会写,是每一次尝试都要先付 5 分钟预填、再按 5 词元/秒往外挤。

🔥 真凶只有一个:上下文一长,解码就慢五倍

所有恢复失败的记录摆在一起,指向同一个数字。这台机器上,Flash-Next 在 2 万词元以内解码 23 词元/秒,热身时 26.5;到 10–12 万词元,服务端报出的解码速率只剩 9.5 词元/秒;再加上每一轮新增的题面、回执都要先预填,台架按整轮墙钟算出的有效速率是 5.2 词元/秒。同一个模型、同一台机器、同一份权重,只是历史变长了。

同一台机器、同一个模型,解码速度随上下文长度下降:各档是逐轮轨迹里服务端解码速率的中位数

这个数字解释了一切。从检查点恢复时缓存是冷的,117k 词元要先预填 5–7 分钟;之后模型每思考 1,000 字要两三分钟;写一次 33KB 的追加要一个小时。30 分钟的恢复预算,够它做完一轮就不错了。

**长上下文不是免费的硬盘空间。**窗口数字再大,如果一次恢复光预填就吃掉七分钟,剩下的容量只是“能塞进去”,不是“能在预算内完成”。这也是我后来把恢复折叠放在盲目扩窗之前的原因。

**困难不只是“等得久”。**每次长任务失败,我都得先判断责任在模型、运行时还是 LocalBrain:是模型没理解题面,还是工具参数在长度上限处被截断?是页面代码真有错,还是检查器自己挂死?

是它在探索不同方案,还是换着顺序重复同一件事?判断错一次,就可能用下一轮二三十分钟去修一个不存在的问题。于是这段时间真正消耗精力的,是把一团混在一起的失败拆成可观测、可复现、能被程序处理的具体形态。

这轮优化最重要的成果,不是让模型“永远成功”,而是让系统终于知道:什么时候该继续、什么时候该换方法、什么时候先把文件闭合、什么时候必须承认没完成。

知道了原因,改法才有抓手。这段时间我在 LocalBrain 的代理循环里一共加了八条机制,全部只看本次运行自己测出来的量,没有任何模型名或机型的特判:

节点 实测暴露的问题 现在的做法
恢复 冷缓存整段预填 5–7 分钟,之后每轮有效 5 词元/秒 自动折叠长历史:不请求模型写摘要,只放一条程序说明,保留最近一段完整操作;折叠后输入不到一半且折掉的部分比一轮输出额度大才折。实测 129,446 → 22,418 词元
收尾轮 117k 历史下一次追加 30 分钟写不完 收尾轮只带系统提示、原始题面、收尾指令,附文件中断行号与最后几行
补闭合 页面早已闭合,却按「自检没通过」开三轮补闭合 只对结构未闭合的文件补闭合;已闭合的写文字汇总
闸门终止 「验证停滞」闸直接停,只差闭合标签的文件定格成废品 停之前先补闭合,再以闸门原因结束
循环检测 同一自检穿插读取重复 8 次零提示;回执带毫秒计时,按原文比永远不相等 按「签名 + 稳定结果」计数,中间穿插不重置,结果变了重数;自检回执附去掉计时的结构化结果
交付 一个小模型原样重交 85 次,每次被同一理由拒绝 交付被拒同样进循环检测,有预算封锁该签名,无预算停止
参数校验 同一条「缺 input」规则 Flash-Next 连错 7 次、小模型连错 14 次 回执最前面一句话说清缺哪个字段、写在哪个对象上
失败调用原文 模型思考里写着「这次加上 input」,发出的参数却与上一次逐字节相同,连发 8 次 校验未通过或被封锁的调用在后续请求里只留占位,不留可以原样抄的参数原文

最后一条最有意思。temperature 1.0 下,573 个词元连续 8 次完全相同,不可能是抽样巧合,只能是模型在照抄上下文里那条失败调用。它的推理明明写对了改法,落笔时手却跟着旧文本走。

参考库里 opencode、pi、Cline 都把失败调用原样留在历史里,靠回执文字纠正;这次实测证明有一种形态是回执纠不了的——它压根不看回执。把可抄的原文换成占位之后,冒烟题从连续三次超时变成 8 轮交付。

🛠️ 这几天具体修了哪些错:完整清单

下面这张表是 9 月 6 日到 10 日期间修掉的所有问题,按时间排列。每一行都对应一次实测:症状是台架记录里的原话,修法都有级 0 单测和级 1 冒烟兜底。它们有一个共同点——没有一条是「针对某道题某个错」的特例,判据全是本次运行自己测出来的量。

日期 症状(实测) 根因 修法与结果
09-06 262,144 窗口首次预填就崩:Metal 命令缓冲内存不足 KV 缓存按窗口预留,机器装不下 运行时容量失败记录到磁盘 → 按三分之二重启 → 174,080;产品端同一请求自动重试一次
09-07 每轮都从同一位置重算 13–18k 词元输入 丢旧思考的规则改动了输入中段;混合架构(Gated DeltaNet)只能回滚到服务端检查点 投影改为压力驱动、单向备忘,无压力一字不动;启动参数加 --ctx-checkpoints 8 --checkpoint-min-step 0
09-07 关思考的轮次回复里混进「预算耗尽」垃圾文本 发了 reasoning_budget_tokens: 0,模板据此注入提示 关思考轮只发模板开关,不发预算字段
09-07 正文写了一大段却不调用工具,整轮白费 模型把代码写进回复而不是工具参数 流式文字守卫:产物还没有、流里没有工具参数、正文超过 1,024 词元就中止本轮,下一轮强制调用工具
09-08 连续 5 次失败就终止,预算还剩一半 失误上限是为无预算场景设计的最后防线 有时间预算时改为封锁该调用签名,任务继续;相同参数不再执行
09-08 只有思考、没有工具的截断轮直接终止 截断被当成任务失败 非终止:保留草稿,下一轮 required + 关思考
09-08 单轮思考 28–41 分钟;要求 low 档模型无视 不限思考预算;档位文本写在系统指令里,改档就破坏前缀缓存 回到按额度分摊的思考预算;一次运行固定档位,只调预算数字
09-08 题 2/题 4 两小时写出 84/130 KB,缺最后的闭合标签 到时只做文字汇总,没人补收尾 收尾先补闭合:required + 关思考一轮补标签
09-09 恢复跑首轮不定价,32,768 词元思考直到墙钟 新起的服务没有实测速率 起服后热身一次取速率种子;热身提示太短过不了守卫,改成生成十几个词元
09-09 同一自检穿插读取重复 8 次零提示 循环检测只数连续相同调用;自检回执带毫秒计时,按原文判等永不相等 按「签名 + 稳定结果」计数,穿插不重置;自检回执附去掉计时的结构化结果
09-09 贪吃蛇同一断言在 4 个版本上失败跑了 10 轮无人拦(Windows 侧) 三道闸都没有「每轮都在改、同一检查一直不过」这个形态 第四道闸「验证停滞」:2 版提示、3 版停止并保留检查点;同时执行记录去噪、撞名另存告警
09-10 补闭合只试一次,收尾轮追加 15 KB 却没写标签,剩余 12 分钟作废 「只试一次」是最初的保守设计 仍未闭合、时间排得下、未到 3 轮就再补;只对结构未闭合的文件开补闭合
09-10 闸门判停后未闭合文件定格成废品 闸门直接 break,跳过收尾 终止前先补闭合,再以闸门原因结束
09-10 117k 上下文下收尾轮 30 分钟写不完一次追加;恢复后每轮 5 词元/秒 解码速度随上下文长度下降 收尾轮瘦身请求(只带系统提示、题面、收尾指令与文件尾部);恢复时自动折叠长历史 129k → 22k
09-10 一个小模型原样重交交付 85 次 交付走内部路径,从没经过循环检测 交付被拒同样按签名+结果累积,有预算封锁、无预算停止
09-10 同一条「缺 input」校验规则连错 7–14 次 回执是结构化 JSON,模型读不出「字段该写在哪个对象上」 回执最前面一句话改法;多项同规则时可选列表去重
09-10 模型思考里写着「加上 input」,发出的参数却与上一次逐字节相同,连发 8 次 它在照抄上下文里那条失败调用;temperature 1.0 下 573 词元全同只能是抄的 校验未通过或被封锁的调用在后续请求里只留占位;冒烟从连续三次超时变为 8 轮交付

这张表也解释了为什么五道题要跑两天、整个修复链却从 9 月 6 日延续到 10 日:大半时间不是在看进度条,而是在看逐轮轨迹、定位责任、改程序、补回归,再用冒烟题从头验证。一次修改如果只让某一道题变好,我不会收;它必须换模型、换题面仍然成立。

最终,冒烟任务从连续三次超时变成 8 轮交付,题 1 成为五题里首个正式交付,题 4 的 129,446 词元恢复历史被折叠到 22,418,模型终于能在剩余时间里定点读文件、修完两个真实运行时错误。

🧭 LocalBrain 现在怎么处理一次问答

**我按当前 1.2.62 的真实调用链重新画了这张图。**它不是产品宣传图,而是从 Chat.tsx 的发送入口一路追到 mcpAgent.ts、共享 agentLoop.ts、普通对话 plainChatLoop.ts 和平台工具路由后的结果。

最关键的设计是:默认不再靠关键词猜用户要不要工具,工具目录始终在场,由本地模型决定直接回答还是调用。

LocalBrain 当前问答主链:默认工具问答、普通对话旁路,以及本次五题台架额外增加的实测层

**发送之前,程序先处理三件事。**第一,锁定这次生成属于哪个会话,用户切到别的对话也不能把流式内容串过去;第二,按安全输入预算压缩旧消息,文本附件变成上下文,视觉模型能读的图片走原生图片通道;第三,根据统一内存或显存、模型窗口和安全余量计算这次还能给多少输出。

这里先保住原始要求和已生成内容,再谈额度,避免为了塞进窗口把任务本身裁掉。

**默认问答走工具代理。**Mac 上会准备 DocFactory、WebMiner、TTS、Whisper、图片、视频、系统文件七类本地服务;Windows 目前只注入真正有后端的 DocFactory、WebMiner、系统文件三类。

整份工具定义随请求交给模型,不做“看到写文件三个字才开工具”的关键词预判。模型不需要工具就直接回答;需要时先生成结构化参数,参数过 schema 校验后才调用真实工具,工具的成功、失败、输出路径和检查证据再回到下一轮。

**复杂任务进入共享代理内核。**这里才会用到这几天修的循环检测、失误追踪、产物版本、证据投影、上下文整理和检查点。文件每改一次,上一版的验收结论自动作废;工具失败不会被包装成成功,也不会把未知副作用重放;模型重复同名同参数、得到同样稳定结果时,程序才把它算作循环。

运行期若发生预填 OOM 或计算错误,LocalBrain 会记录本机容量失败、停止当前实例、按新规划重启,再把同一次请求重试一次。

路径 什么时候走 实际机制 明确边界
默认工具问答 自动工具开启且模型支持工具 工具目录始终在场;模型决定回答或调用;真实回执回灌;保存检查点 由最大轮数和用户停止收束,不强加墙钟
普通对话旁路 关闭自动工具、极小模型,或可选工具运行时确实缺失 安全输出预算、流式正文;达到长度上限可自动接续,最多 4 段 没有文件验收和工具循环
文档任务 生成或修改 PPT、DOCX、XLSX、PDF 复用共享代理内核,由文档产物策略和 DocFactory 做计划、生成、自检 版式通过不等于内容正确,仍要按原需求验收
本次五题台架 为了给模型和代理循环做可重复压力测试 在共享内核外增加每题墙钟、实测速率定价、逐轮轨迹、恢复、独立浏览器和行为脚本 这些额外的时间治理不能冒充产品普通问答已经启用的功能

必须说清的边界:本文五题里的“剩余时间 × 实测速率”和两小时收尾属于测试台架;LocalBrain 产品问答没有自然截止时间,当前以安全上下文、最大轮数、自动接续和用户停止为边界。

**这次优化已经进入 1.2.62 的,是一整套通用能力:**共享代理循环、容量失败恢复、参数校验纠错、失败参数占位、稳定结果循环检测、产物版本与验收证据、恢复折叠、补闭合收尾。台架让这些问题暴露得足够残酷,也让每个成果都有可回看的原始轨迹;但哪个入口真正传了哪些参数,我仍按代码边界写,不把“底层支持”偷换成“所有界面都已生效”。

🧐 该承认的难点:模型到底哪里不行

先说 Flash-Next。它的代码能力是够的:题 1 的 700 粒子引力模拟、题 5 的手写反向传播都是一次写对的;题 4 的两个运行时错误它也都自己修掉了。

它的短板有三个:一是「想得对做不对」,上面那个抄旧参数的形态就是;二是不听劝,收尾轮明确说只补闭合标签,它照样追加 15–33KB 代码,因为在它眼里文件确实没写完;三是中文长文写作偏短,题 4 要求古文 350–550 字,它写了 228 字。

再说对照组。27B 的 abliterated 版我只跑了基础三级:冒烟、弹跳小球、贪吃蛇全部交付,贪吃蛇 34 分钟。

它每轮质量更高,参数错了一次就改对,但 9 词元/秒的速度是 Flash-Next 的四成,题 1 那种 115 分钟的活它要四五个小时。按这个比例推,120 分钟一题它大概 0 题交付、1–2 题可运行;这是推算,不是实测,我没有跑。

Ling-3.0-tiny 是这两天新加进目录的 MoE 小模型,7.9B 总量只激活 1.3B,速度 70–95 词元/秒,是 Flash-Next 的三倍。它第一轮就能写出一个能跑的任务板,之后卡死在同一个地方:写不出合法的交互检查参数。

第一次跑,第六轮它的推理已经准确说出「期望 0、实际 1」,动作却是一次什么都没改的编辑;第二次跑,工具要求 set_value 这类动作把要输入的文本放在 input 字段,它坚持放进 expect 里,校验失败 14 次改不对,接着原样重交交付 85 次。这就是小模型的典型形态:诊断对,执行错。

还有一件事我得说清楚。**“可运行”不等于“全部验收通过”。**这里的标准是双击能开、无头浏览器跑五秒没有运行时错误、题面要求的核心结构在源码和实际渲染中有据可查。题 3 的驾驶手感、题 4 的谜题能不能解到结局,我没有逐一试玩。写成「四题全过」是夸大,我不这么写。

💰 这笔账到底值不值:谁在哭谁在笑

两天的电费和等待换来四个能跑的网页,这笔账要算清楚。按量计费的 API 一方当然希望你把这种活交给云端——两小时里几十轮、每轮十几万词元的输入,按公开价格算下来一道题几十块钱,五道题一顿饭钱,还不用等。本地这边的账是:模型文件 79GB 免费,电费可以忽略,代价全在时间和折腾。

但有两种人本地更划算。一种是题面本身就不能出机器的——公司内部代码、没发布的产品、私人项目;一种是需要反复跑同一类任务的——五道题跑一次贵,跑一百次就便宜了,而且 LocalBrain 这两天改出来的八条机制,每一条都是在本机反复跑出来的,API 上你拿不到这种可控性。

谁在沉默?卖 64GB 机器的没有动机告诉你上下文一长速度掉五倍;做模型的没有动机告诉你 4bit 量化下长文写作会缩水。这两条都是我自己跑出来才知道的。

这一轮我最终接受一件事:可靠性不是永远不出错,而是出错时还能把最要紧的事做完。

这两天代理循环里改得最多的也是同一件事:闸门判定该停的时候,先把文件收口,再停;预算不够的时候,先折叠历史,再干活。系统的可靠性不在于不出错,在于出错时还能把最要紧的事做完。

🛠️ 想自己跑一遍:路径都在这

  • 装应用: LocalBrain 1.2.63 已发布 macOS(Apple Silicon)与 Windows x64 安装包,下载库 https://github.com/HackerChi-Hub/localbrain-releases/releases 。Linux 目前没有可用的推理运行时,这次没有打包。
  • 下模型: 在「发现」页搜索 Qwen3.8-Flash-Next,64GB 机器选 IQ4_XS 档;32GB 及以下别碰这个,选 Ling 3.0 Tiny 或 Qwen3.6 的小档位。
  • 出题: 从下方“5 道题复现包”里任选一道,整段贴进聊天框发送。代理会写文件、跑自检、修改、交付;成品在 ~/Downloads/方寸智匣/系统输出/ 下。
  • 看过程: 执行记录里每一轮都有输入词元、输出额度、生成耗时和工具回执摘要。速度掉下来的时候,你会亲眼看到那行「本轮输出上限收紧到 3,295 词元」。
  • 别指望的事: 两小时一道题不是保证,是这台机器上的实测中位数;换机器、换量化、换题都会变。

📦 5 道题复现包

五道完整题面已经按本次测试时的原文打包,共 29,816 字节、727 行。TXT 适合直接打开、复制其中一道;ZIP 适合一次下载保存。建议每道题分别开启新对话,直接整段发送,不先让模型写方案,也不要把人工修到第十版的结果算成第一次交付。

建议:复测建议 五道题依次测试三维物理模拟、第一人称状态机、多智能体寻路、中文互动叙事和神经网络可解释性。比较不同模型时,请保持题面、机器、量化、上下文、单题时间和“正式交付”判据一致。

回到开头的问题:一个 4bit 的本地模型,能不能独立完成一个有几十条硬性要求的网页作品?**能,但这次正式交付率只有五分之一;另外五分之三只是得到可运行产物。**这个数字我下个月会再测一次——八条机制里有几条还只过了冒烟,五道题用新代码整题重跑的结果,到时候原样贴出来。

建议 原始记录 · 五道题完整题面已在上方提供 TXT 与 ZIP;两份内容来自同一份原文 · 冒烟 / 弹跳小球 / 贪吃蛇 / 打砖块四道基础题原文与五道题同在 LocalBrain 仓库 docs/TASK_PROMPTS.md · 每一题的报告 JSON、逐轮轨迹、检查点与行为脚本输出都保存在台架输出目录,本文数字全部来自这些文件

建议 我目前的4款自制软件 · 黑粉剪辑 HyphenCut(正式迭代)——Rust 重写的本地专业视频剪辑:达芬奇键位、AI 助理改真实工程,免费 https://github.com/HackerChi-Hub/HyphenCut-Releases/releases · 黑粉盒子 HyphenBox(初步构建 · 预览版)——免费大模型 API 雷达:持续复测可用性,本地统一接口,Key 只存本机 https://github.com/HackerChi-Hub/hyphenbox-release/releases · 方寸智匣 LocalBrain(正式迭代)——本地模型的多模态 MCP 工具箱:TTS / Whisper / 视频生成一站接入 https://github.com/HackerChi-Hub/localbrain-releases/releases · ScreenLex 光影词库(正式迭代)——看美剧顺手把生词背了,Mac/Windows 双平台,免费 https://github.com/HackerChi-Hub/screenlex-download/releases

黑粉科技 · 本地部署 / 免费白嫖 / 自制软件 宣传语:让AI成为你的超能力 https://hyphentech.top


引用:黑粉科技 让AI成为你的超能力 本地部署 / 免费白嫖 / 自制软件 https://hyphentech.top

分享到:

相关文章

返回首页