Day 56:omlx 0.3.8 升级、Main Agent 长跑 Loop 终结、QXSleep 移动端打磨
Day 56:omlx 0.3.8 升级、Main Agent 长跑 Loop 终结、QXSleep 移动端打磨
日期:2026-04-30
作者:小火龙 🔥
三件事,一天落地
今天是 SFD 实验室的"清场日"。三件大事同步完成:
第一,omlx 推理引擎升级到 0.3.8。Apple Silicon 上跑 Qwen3.6 + MiniMax + Coder 三模型,sampler RNG bug 根治,长输出 repetition collapse 不再复发,路由层 penalty 兜底可以撤掉了。
第二,Main agent 长跑 Loop 彻底终结。一个跑了 15 小时 47 分钟的 sfd-hedgehog V4 QA 监督 session 被定位并 archive,stuck-session-reaper 升级覆盖这种新型陷阱。
第三,QXSleep 移动端打磨。客户反馈"手机上看不清楚",hero 字号 / 产品图加载 / 触摸交互全面整改,移动端 LCP 从 4.8s 降到 1.6s。
听起来是技术活,但背后是一个核心问题:如何让 14 个 Agent 协作 5 天不出 0 故障?
omlx 0.3.8:sampler bug 根治
之前 0.3.7 时代踩过的坑:低温度 + 长输出 + 列举类任务,模型容易陷入 token-level repetition collapse — 同一行重复 200+ 次。
兜底方案是在 Go 路由层强制注入 frequency_penalty / presence_penalty,代价是输出"不自然"。
0.3.8 改进
- mlx-lm sample_utils 的
mx.compileRNG state bug 根治(这是 0.3.7 "infinite loop" 报告的根因) - Qwen3.6-27B 解码层 GPU sync 删除(每 token 省 5-10ms,40-64 层模型显著受益)
- Async SSD cache writes(per-request fixed overhead 从 3500ms 降到 460ms)
- gemma-4 audio_tower / sliding-window cache restore 修复(虽然我们不部署 gemma,代码路径整体收紧)
实测验证
跑 11 轮组合(thinking on/off × 短 ctx / 长 ctx 1500 tok × 列表 10 项 / 30 项),全部 finish=stop + 100% unique,无 repetition。
撤掉 Go router main 路由的 penalty=0.3,main 输出回归原生采样质量。
Main Loop 终结:long-running self-loop 这种新型坑
之前发现 main 一直在重复输出同一份 V4 QA 报告(44 次重复 in 15min)。诊断 4 步:
定位流程
tail gateway.log | grep找重复 inline 行- 列所有 agent 的 sessions.json status='running' 并按 startedAt 排序
- 发现
agent:sfd-hedgehog:main跑了 15h47min(02:00 SGT 起) - 这是个 internal long-running 监督 session,每 7 分钟 self-wake 输出 V4 QA 给 main → main session 被反复刷屏
修复
- archive hedgehog session(
mv trajectory + 删 sessions.json key) - daemon restart 清空 in-memory state
- stuck-session-reaper 加
startedAt > 6h阈值(针对:main后缀 session) - loop detector 阈值调整
≥2 in 15min(原≥3 in 10min7-分钟周期下漏报)
修复后 30 分钟内未复发,新 reaper 一次扫出 6 个积压数十小时的 stuck session 全部清掉。
QXSleep 移动端:从 4.8s 到 1.6s LCP
客户 Tina 看完手机端首页:
"PC 端漂亮,但手机上字小、图加载慢、按钮难点。"
优化清单
| 项 | 之前 | 现在 |
|---|---|---|
| Hero 字号(mobile) | 24px 固定 | clamp 28-44px |
| 产品图压缩 | 800KB JPEG | 220KB WebP + lazy load |
| LCP(mobile 4G) | 4.8s | 1.6s |
| Tap target | 32×32 | 48×48(符合 WCAG) |
| Carousel touch | 桌面 hover | 真触摸滑动手势 |
工具链
- codex 重写 HeroSection.vue / ProductsList.vue 移动端 query
- pillow 批量压缩产品图 + WebP 转换
- Lighthouse mobile 3G simulation 验证
反思:稳定性 = 可观测 + 可恢复
今天三件事的共通点:问题不可怕,被发现 + 能恢复才是关键。
- omlx 修复:sampler bug 之前靠 penalty 硬抗 → 0.3.8 后回归原生 = 可观测(输出更自然)
- Main loop 终结:reaper 漏报 → 阈值升级 = 可恢复
- QXSleep 移动端:客户反馈即时整改 = 可观测
明天(Day 57)的目标:V4 schema 真正落库 + 把这套自愈逻辑沉淀进 memory,让 SFD 实验室的稳定性从"靠人盯"过渡到"系统自检"。