<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="https://manateelazycat.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://manateelazycat.github.io/" rel="alternate" type="text/html" /><updated>2026-09-09T11:00:02+08:00</updated><id>https://manateelazycat.github.io/feed.xml</id><entry><title type="html">GPT负责设计，离线27B负责执行：我超高效率但超省钱的工作流</title><link href="https://manateelazycat.github.io/2026/09/09/gpt-design-27b-execute/" rel="alternate" type="text/html" title="GPT负责设计，离线27B负责执行：我超高效率但超省钱的工作流" /><published>2026-09-09T00:00:00+08:00</published><updated>2026-09-09T00:00:00+08:00</updated><id>https://manateelazycat.github.io/2026/09/09/gpt-design-27b-execute</id><content type="html" xml:base="https://manateelazycat.github.io/2026/09/09/gpt-design-27b-execute/"><![CDATA[<p>分享我超高效率但是超省钱的工作流方式：</p>

<ol>
  <li>和GPT深入探讨设计和方案</li>
  <li>GPT在A项目中给出设计方案，我直接让离线的27B去执行</li>
  <li>27B执行的时候，我在和GPT讨论B项目的设计方案</li>
</ol>

<h4 id="和gpt深入探讨设计和方案">和GPT深入探讨设计和方案</h4>

<p>设计环节用线上GPT的全局规划能力。如图：我让Codex在全局列一下需求，回答尽量简洁，这样内容少了才好全局思考，把需求收拢成几条清晰的要点。</p>

<p><img src="https://manateelazycat.github.io/pics/gpt-design-27b-execute/workflow-2.png" alt="和Codex讨论全局需求" /></p>

<h4 id="让离线的27b在后台慢慢用电干活">让离线的27B在后台慢慢用电干活</h4>

<p>GPT给出设计方案后，我直接把方案丢给离线的27B执行。如图：Qwen 3.8 27B在AIPod上以vLLM方式运行，在Pi里无审查地执行“生成LPK并安装LPK”任务，23分45秒跑了22条命令，中途遇到本机缺unzip、sudo要密码这类问题也自己补了个node版unzip shim解决掉了。</p>

<p><img src="https://manateelazycat.github.io/pics/gpt-design-27b-execute/workflow-1.jpg" alt="离线Qwen 3.8 27B无审查执行任务" /></p>

<h4 id="兼具线上模型的能力与线下模型的省钱">兼具线上模型的能力与线下模型的省钱</h4>

<p>看到了吗？利用线上GPT的全局规划能力，我和GPT在协作设计的时候，27B在后台慢慢用电来干活，而不是用订阅来干活。</p>

<p>这样我兼具了线上GPT模型的能力和线下模型的省钱，因为只要设计好，线下模型现在非常能打了。关键给我节省了90%的订阅费。</p>]]></content><author><name></name></author><category term="AI" /><summary type="html"><![CDATA[分享我超高效率但是超省钱的工作流方式：]]></summary></entry><entry><title type="html">Firefox 插件注册、检测和自动签名方法</title><link href="https://manateelazycat.github.io/2026/09/06/firefox-extension-signing/" rel="alternate" type="text/html" title="Firefox 插件注册、检测和自动签名方法" /><published>2026-09-06T00:00:00+08:00</published><updated>2026-09-06T00:00:00+08:00</updated><id>https://manateelazycat.github.io/2026/09/06/firefox-extension-signing</id><content type="html" xml:base="https://manateelazycat.github.io/2026/09/06/firefox-extension-signing/"><![CDATA[<p>最近给 Firefox 做插件，才发现 Firefox 和 Chrome 的离线插件安装方式完全不一样。</p>

<p>Chrome 可以打开开发者模式，直接加载解压后的插件。Firefox 正式版和 Firefox ESR 安装 XPI 时会强制检查 Mozilla 签名，未签名的 XPI 即使代码完全正常，也会提示插件损坏或者签名无法验证。</p>

<p><code class="language-plaintext highlighter-rouge">about:debugging</code> 虽然可以临时加载未签名插件，但 Firefox 重启以后插件就没了，只适合开发调试，不能用来给用户发布插件。</p>

<p>下面记录一下 Mozilla Firefox 插件的注册、上传检测和获取 API 信息的方法。</p>

<h4 id="注册-mozilla-开发者账号">注册 Mozilla 开发者账号</h4>

<p>先打开 Mozilla 插件开发者中心：</p>

<p>https://addons.mozilla.org/developers/</p>

<p>点击登录，用 Mozilla Account 登录。没有账号就先注册一个，然后同意 Firefox Add-ons 的开发者协议。</p>

<p>Mozilla 不需要提前单独注册一个插件 ID，第一次上传插件以后，开发者中心会自动创建插件项目。但是 manifest 里面一定要写固定的 Gecko ID，例如：</p>

<div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
  </span><span class="nl">"browser_specific_settings"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"gecko"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
      </span><span class="nl">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"my-extension@example.com"</span><span class="p">,</span><span class="w">
      </span><span class="nl">"strict_min_version"</span><span class="p">:</span><span class="w"> </span><span class="s2">"140.0"</span><span class="w">
    </span><span class="p">}</span><span class="w">
  </span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div></div>

<p>这个 ID 相当于 Firefox 插件的身份证。后续更新版本必须继续使用同一个 ID，不能每个版本都随机换。</p>

<h4 id="上传插件并进行检测">上传插件并进行检测</h4>

<p>登录开发者中心以后，点击“提交新附加组件”，Mozilla 会让你选择发布方式：</p>

<ol>
  <li>在 Mozilla Add-ons 上发布：插件会出现在 Firefox 插件商店里，适合公开发布。</li>
  <li>自行分发：Mozilla 只负责检测和签名，签名后的 XPI 由开发者自己放到网站上给用户下载。</li>
</ol>

<p>如果只是想在自己的网站上提供 Firefox 插件下载，就选择“自行分发”，也就是 unlisted 渠道。</p>

<p>然后上传打包好的 XPI。XPI 本质上就是 ZIP 文件，但是要注意 <code class="language-plaintext highlighter-rouge">manifest.json</code> 必须直接位于压缩包根目录，不能在外面多套一层文件夹。</p>

<p>上传以后 Mozilla 会自动检测插件。检测失败就按照页面上的错误逐个修改，常见问题有：</p>

<ol>
  <li><code class="language-plaintext highlighter-rouge">manifest.json</code> 格式错误，或者使用了 Firefox 不支持的 Chrome 字段。</li>
  <li>Gecko ID 缺失，或者新版本和旧版本使用了不同的 ID。</li>
  <li>上传过相同的版本号。每次上传新版都必须增加 manifest 中的 <code class="language-plaintext highlighter-rouge">version</code>。</li>
  <li>插件申请了权限，但是没有正确声明数据收集用途。</li>
  <li>压缩包中包含源代码、临时文件或者不需要的构建文件。</li>
</ol>

<p>Firefox 新版对插件数据收集声明检查得比较严格。比如插件需要读取网页活动和登录信息时，可以在 Gecko 配置中声明：</p>

<div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
  </span><span class="nl">"browser_specific_settings"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"gecko"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
      </span><span class="nl">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"my-extension@example.com"</span><span class="p">,</span><span class="w">
      </span><span class="nl">"strict_min_version"</span><span class="p">:</span><span class="w"> </span><span class="s2">"140.0"</span><span class="p">,</span><span class="w">
      </span><span class="nl">"data_collection_permissions"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
        </span><span class="nl">"required"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">"websiteActivity"</span><span class="p">,</span><span class="w"> </span><span class="s2">"authenticationInfo"</span><span class="p">],</span><span class="w">
        </span><span class="nl">"has_previous_consent"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="w">
      </span><span class="p">}</span><span class="w">
    </span><span class="p">}</span><span class="w">
  </span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div></div>

<p>具体声明要和插件真正读取的数据保持一致，不要直接照抄上面的权限。检测页面报错时，也要以 Mozilla 当时给出的字段说明为准。</p>

<p>检测通过以后继续提交。自行分发的插件不需要上架商店，Mozilla 处理完成后会生成一个已经签名的 XPI，下载这个文件才可以在正式版 Firefox 和 Firefox ESR 中长期安装。</p>

<p>安装签名 XPI 的方法是打开 <code class="language-plaintext highlighter-rouge">about:addons</code>，点击右上角齿轮，选择“从文件安装附加组件”。</p>

<h4 id="获取-firefox-add-ons-api-信息">获取 Firefox Add-ons API 信息</h4>

<p>每次都在开发者中心手工上传和下载太麻烦，Mozilla 提供了 API，可以用 <code class="language-plaintext highlighter-rouge">web-ext</code> 自动上传、检测和下载签名后的 XPI。</p>

<p>登录开发者中心后，打开 API 凭据页面：</p>

<p>https://addons.mozilla.org/developers/addon/api/key/</p>

<p>点击生成新的凭据，页面会显示两项信息：</p>

<ol>
  <li>JWT issuer：这就是 API Key，一般长得像 <code class="language-plaintext highlighter-rouge">user:123456:xxx</code>。</li>
  <li>JWT secret：这就是 API Secret。</li>
</ol>

<p>API Key 不是插件的 Gecko ID，也不是 Mozilla 账号。API Secret 相当于账号密码，不要写进源码，不要提交到 Git，也不要放到公开日志里。如果密钥泄漏了，马上回到这个页面重新生成凭据，让旧密钥失效。</p>

<p>我一般把它们分别保存成两个文件：</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>firefox_addons_api_key.txt
firefox_addons_api_secret.txt
</code></pre></div></div>

<p>然后限制文件权限，并加入 <code class="language-plaintext highlighter-rouge">.gitignore</code>：</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">chmod </span>600 firefox_addons_api_key.txt firefox_addons_api_secret.txt
</code></pre></div></div>

<h4 id="用-web-ext-自动签名">用 web-ext 自动签名</h4>

<p>先确保待签名目录中包含 <code class="language-plaintext highlighter-rouge">manifest.json</code> 和插件需要的所有文件，然后执行：</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">export </span><span class="nv">WEB_EXT_API_KEY</span><span class="o">=</span><span class="s2">"</span><span class="si">$(</span>&lt;firefox_addons_api_key.txt<span class="si">)</span><span class="s2">"</span>
<span class="nb">export </span><span class="nv">WEB_EXT_API_SECRET</span><span class="o">=</span><span class="s2">"</span><span class="si">$(</span>&lt;firefox_addons_api_secret.txt<span class="si">)</span><span class="s2">"</span>

npx <span class="nt">--yes</span> web-ext@latest sign <span class="se">\</span>
  <span class="nt">--channel</span> unlisted <span class="se">\</span>
  <span class="nt">--source-dir</span> ./firefox-extension <span class="se">\</span>
  <span class="nt">--artifacts-dir</span> ./artifacts
</code></pre></div></div>

<p><code class="language-plaintext highlighter-rouge">unlisted</code> 表示自行分发。<code class="language-plaintext highlighter-rouge">web-ext</code> 会把插件上传给 Mozilla，等待检测和签名，再把签名后的 XPI 下载到 <code class="language-plaintext highlighter-rouge">artifacts</code> 目录。</p>

<p>不要把 API Key 和 Secret 直接写在命令行参数中，否则可能进入 Shell 历史或者被进程列表看到。用环境变量传递会稳妥一些，自动构建程序也应该避免打印这两个变量。</p>

<p>每次生成新版 Firefox 插件前，要先增加 manifest 中的 <code class="language-plaintext highlighter-rouge">version</code>。同一个 Gecko ID 和同一个版本号不能重复签名，否则 Mozilla API 会直接拒绝。</p>

<h4 id="怎么确认-xpi-已经签名">怎么确认 XPI 已经签名？</h4>

<p>可以解压 XPI，检查里面是否存在 Mozilla 的签名文件：</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>unzip <span class="nt">-l</span> my-extension.xpi | <span class="nb">grep </span>META-INF
</code></pre></div></div>

<p>正常会看到类似下面的文件：</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>META-INF/mozilla.rsa
META-INF/mozilla.sf
META-INF/cose.sig
</code></pre></div></div>

<p>不过最终还是要在正式版 Firefox 或 Firefox ESR 中实际安装一次。能通过 <code class="language-plaintext highlighter-rouge">about:addons</code> 正常安装，并且重启 Firefox 后插件仍然存在，才算整个签名和发布流程真正跑通。</p>

<p>简单总结一下：开发阶段用 <code class="language-plaintext highlighter-rouge">about:debugging</code> 临时加载，交付用户时走 unlisted 自动签名，想公开推广时再发布到 Firefox 插件商店。三种方式不要混在一起，就不会一直被 Firefox 的签名错误折腾。</p>]]></content><author><name></name></author><category term="Tech" /><category term="Web" /><summary type="html"><![CDATA[最近给 Firefox 做插件，才发现 Firefox 和 Chrome 的离线插件安装方式完全不一样。]]></summary></entry><entry><title type="html">自由泳最关键的是手臂要伸直</title><link href="https://manateelazycat.github.io/2026/09/03/freestyle-arm-straight-entry/" rel="alternate" type="text/html" title="自由泳最关键的是手臂要伸直" /><published>2026-09-03T00:00:00+08:00</published><updated>2026-09-03T00:00:00+08:00</updated><id>https://manateelazycat.github.io/2026/09/03/freestyle-arm-straight-entry</id><content type="html" xml:base="https://manateelazycat.github.io/2026/09/03/freestyle-arm-straight-entry/"><![CDATA[<p>这两天受教练的指导发现：其实自由泳最关键的是手要伸直，手没有伸直的时候，侧身就会扭曲导致身体摇摆，而不是自由泳的流线型。</p>

<h4 id="原来手臂一直是弯的">原来手臂一直是弯的</h4>

<p>之前一直以为手臂入水是直的，拍了视频才发现是弯的，如同敬礼的状态。</p>

<h4 id="矫枉过正以毒攻毒">矫枉过正，以毒攻毒</h4>

<p>教练最后说，你这种自学的人，直接来个矫枉过正，以毒攻毒吧，你手臂入水的时候用八字方式入水。</p>

<p>果然，这一下手臂入水直了，身体摆动和游速都快多了。</p>]]></content><author><name></name></author><category term="Life" /><summary type="html"><![CDATA[这两天受教练的指导发现：其实自由泳最关键的是手要伸直，手没有伸直的时候，侧身就会扭曲导致身体摇摆，而不是自由泳的流线型。]]></summary></entry><entry><title type="html">30B 稠密模型就能解决个人编码的需求</title><link href="https://manateelazycat.github.io/2026/09/01/30b-dense-model-personal-coding/" rel="alternate" type="text/html" title="30B 稠密模型就能解决个人编码的需求" /><published>2026-09-01T00:00:00+08:00</published><updated>2026-09-01T00:00:00+08:00</updated><id>https://manateelazycat.github.io/2026/09/01/30b-dense-model-personal-coding</id><content type="html" xml:base="https://manateelazycat.github.io/2026/09/01/30b-dense-model-personal-coding/"><![CDATA[<p>我今天针对一个 AI 模型做深入分析，Qwen 3.8 27B xhigh 的速度比 GPT 5.6 sol Max 快 5 倍不止，而且 Qwen 3.8 27B 分析的结论非常严密。</p>

<p>包括今天和英伟达的芯片架构师聊过，他的一个观点：</p>

<blockquote>
  <p>“30B 的稠密模型就能解决个人编码的需求，以后不需要高显存带宽的更贵机器，因为 AI 模型本身会进化”</p>
</blockquote>

<p>这句话就像我今晚做的试验一样，Qwen 3.8 27B 的足够能力，让我觉得，其实 GPT 再强大，它后台的服务器集群再牛逼，也许分到每个用户身上，就是 30B 的算力资源。</p>]]></content><author><name></name></author><category term="AI" /><summary type="html"><![CDATA[我今天针对一个 AI 模型做深入分析，Qwen 3.8 27B xhigh 的速度比 GPT 5.6 sol Max 快 5 倍不止，而且 Qwen 3.8 27B 分析的结论非常严密。]]></summary></entry><entry><title type="html">离线AI设备买的是什么?</title><link href="https://manateelazycat.github.io/2026/09/01/offline-ai-device-investment/" rel="alternate" type="text/html" title="离线AI设备买的是什么?" /><published>2026-09-01T00:00:00+08:00</published><updated>2026-09-01T00:00:00+08:00</updated><id>https://manateelazycat.github.io/2026/09/01/offline-ai-device-investment</id><content type="html" xml:base="https://manateelazycat.github.io/2026/09/01/offline-ai-device-investment/"><![CDATA[<p>今天用 Qwen 3.8 27B 写代码的时候，和一个用户聊了一晚上，分享一下我对离线 AI 设备的看法。</p>

<h4 id="成本账深度用户才划算">成本账：深度用户才划算</h4>

<p>深度 AI 用户，7x24 小时地用，跑长线任务，肯定硬件划算，一年就赚钱。但是你平常用线上 API 都不超过 2000 块，确实离线 AI 设备帮不了你。</p>

<h4 id="macdecode-优秀prefill-很弱">Mac：Decode 优秀，Prefill 很弱</h4>

<p>Mac 的显存带宽和 Decode 能力非常优秀，但是 Mac 的 Prefill 非常差，并发也很差，CUDA 不支持。Mac 从来不说这些，所以买东西要理性，多看多对比，理性选择自己想要的东西。</p>

<h4 id="买设备是买认知">买设备是买认知</h4>

<p>你只用线上 API，你在 AI 上的认知就和所有用线上 API 的人的认知是一样的，而 AI 未来的发展一定会让每家每户都有离线 GPT。你早一天用离线设备，就早一天获得竞争性优势，因为你比别人更懂离线 AI，就跟 20 年前你比别人更早玩电脑编程一个道理，那时候大家都还在犹豫要不要买一台笔记本？</p>

<p>所以，买 AI 设备，不能光看成本，要看你能用自己的设备做出哪些不一样的产品来？离线 AI 设备的目的不是否定在线 AI，而是在在线 AI 也用的情况下，你能通过折腾离线 AI 设备获得哪些未来在社会上的竞争力？</p>

<p>简单来说，买设备从来都是投资，而不是省钱，只比省钱是没法赚钱的。</p>]]></content><author><name></name></author><category term="AI" /><category term="Think" /><summary type="html"><![CDATA[今天用 Qwen 3.8 27B 写代码的时候，和一个用户聊了一晚上，分享一下我对离线 AI 设备的看法。]]></summary></entry><entry><title type="html">世界纪录，Qwen 3.8 Flash Next 单台 102 TPS</title><link href="https://manateelazycat.github.io/2026/08/31/qwen-3-8-flash-next-102-tps/" rel="alternate" type="text/html" title="世界纪录，Qwen 3.8 Flash Next 单台 102 TPS" /><published>2026-08-31T00:00:00+08:00</published><updated>2026-08-31T00:00:00+08:00</updated><id>https://manateelazycat.github.io/2026/08/31/qwen-3-8-flash-next-102-tps</id><content type="html" xml:base="https://manateelazycat.github.io/2026/08/31/qwen-3-8-flash-next-102-tps/"><![CDATA[<p>世界纪录，Qwen 3.8 Flash Next 单台 102 TPS！</p>

<p>经过三天的优化，我已经把 Qwen 3.8 Flash Next 在单台算力舱的 Decode 速度实现了从 23 TPS -&gt; 65 TPS -&gt; 102 TPS 的跨越，应该还可以再提升一点。</p>

<p>在 102 TPS decode 速度下，18K Prefill 的速度实现了 2588 TPS，30K TTFT 实现 11.43s。</p>

<p>这个数据估计很多两台 DGX 都很难达到，因为在 FP4 的精度下，我们算力舱的 T5000 芯片的算力是 2070T，DGX G10 是 1000T。相当于算力舱一台的价格，就可以实现两台 DGX G10 组合才能达到的性能。</p>]]></content><author><name></name></author><category term="AI" /><category term="Tech" /><summary type="html"><![CDATA[世界纪录，Qwen 3.8 Flash Next 单台 102 TPS！]]></summary></entry><entry><title type="html">Qwen 3.8 Flash Next：101 TPS + 320K 上下文</title><link href="https://manateelazycat.github.io/2026/08/31/qwen-3-8-flash-next-320k-context/" rel="alternate" type="text/html" title="Qwen 3.8 Flash Next：101 TPS + 320K 上下文" /><published>2026-08-31T00:00:00+08:00</published><updated>2026-08-31T00:00:00+08:00</updated><id>https://manateelazycat.github.io/2026/08/31/qwen-3-8-flash-next-320k-context</id><content type="html" xml:base="https://manateelazycat.github.io/2026/08/31/qwen-3-8-flash-next-320k-context/"><![CDATA[<p>Qwen 3.8 Flash Next 在单台懒猫AI算力舱上反复优化，这个应该达到极限了：Decode 100 ~ 102 TPS，Prefill 2070 ~ 2609 TPS，TTFT 5K 1.9s。</p>

<p><img src="https://manateelazycat.github.io/pics/qwen-3-8-flash-next-320k-context/102-tps-hot-state.png" alt="102 TPS 热态结果" /></p>

<p>接下来把上下文增大。官方是 265K 的上下文，但是显存没用满呀，所以我通过 YaRN 技术把 Qwen 3.8 Flash Next 的 KV Cache 调大到 16GB，这样上下文就从 265K 搞到 320K 了。</p>

<p><img src="https://manateelazycat.github.io/pics/qwen-3-8-flash-next-320k-context/262k-vs-320k.png" alt="262K 基线与 320K 热态对比" /></p>

<p>除了 Fresh Decode 稍微下降一点点，其他的指标兜没变，甚至 Edit Decode 速度还提升了，哈哈哈哈。</p>

<p>优化了72小时后，Qwen 3.8 Flash Next 终于被我调教的差不多了，明天整要给图形化的部署程序给懒猫AI算力舱的用户用。</p>

<p>而社区DGX GB10要两台才能做到 100+ TPS，为啥算力舱可以一台搞定呢？因为 FP4 的算力，算力舱是GB10的2倍，因为算力够，显存够，一台算力舱直接访问显存的速度要比两台GB10的光口快太多了，反而效率更高。</p>]]></content><author><name></name></author><category term="AI" /><category term="Tech" /><summary type="html"><![CDATA[Qwen 3.8 Flash Next 在单台懒猫AI算力舱上反复优化，这个应该达到极限了：Decode 100 ~ 102 TPS，Prefill 2070 ~ 2609 TPS，TTFT 5K 1.9s。]]></summary></entry><entry><title type="html">懒猫读书 iPad OOM 问题排查与修复</title><link href="https://manateelazycat.github.io/2026/08/29/lazycat-reader-oom-debugging/" rel="alternate" type="text/html" title="懒猫读书 iPad OOM 问题排查与修复" /><published>2026-08-29T00:00:00+08:00</published><updated>2026-08-29T00:00:00+08:00</updated><id>https://manateelazycat.github.io/2026/08/29/lazycat-reader-oom-debugging</id><content type="html" xml:base="https://manateelazycat.github.io/2026/08/29/lazycat-reader-oom-debugging/"><![CDATA[<p>20 年古法编程，非遗手法就是 “远程把脉”。</p>

<p>今天有一个用户反映懒猫读书会导致平板卡死，我一看，好家伙，超大文件 PDF 彩印文件。</p>

<h4 id="排查过程">排查过程</h4>

<ol>
  <li>先排除是不是机械盘 IO 问题——用户说用的固态盘，排除 IO 瓶颈。</li>
  <li>扫描 PDF 的后台有渲染进程，问题肯定出在这条逻辑支流上。</li>
  <li>问了一下用户，是打开就卡死，没有做缩放操作，排除缩放分支。</li>
  <li>让用户试一下手机，手机没问题。再问平板内存，iPad 6。</li>
</ol>

<p>原因很清楚了：PDF 过于大，首屏渲染高清图片加上后面几页预加载，瞬间内存过大触发了果子家的 OOM，直接把前端 WebView 进程干死了。</p>

<h4 id="修复方案">修复方案</h4>

<p>做更精细的视口渲染，保持清晰度和操作不变的情况下，让后端只发屏幕区域和缩放比例的图，把内存占用控制在常量，减少 90% 的内存占用，这样果子就不会杀进程了。</p>

<p>远程定位问题，三下五除二找到根因，这就是二十年老程序员的手感。</p>]]></content><author><name></name></author><category term="Tech" /><summary type="html"><![CDATA[20 年古法编程，非遗手法就是 “远程把脉”。]]></summary></entry><entry><title type="html">算力舱AI模型适配实录</title><link href="https://manateelazycat.github.io/2026/08/29/model-adaptation-record/" rel="alternate" type="text/html" title="算力舱AI模型适配实录" /><published>2026-08-29T00:00:00+08:00</published><updated>2026-08-29T00:00:00+08:00</updated><id>https://manateelazycat.github.io/2026/08/29/model-adaptation-record</id><content type="html" xml:base="https://manateelazycat.github.io/2026/08/29/model-adaptation-record/"><![CDATA[<p>算力舱AI模型适配实录：</p>

<h4 id="deepseek-v4-flash">DeepSeek V4 Flash</h4>

<p>通过两台协同计算的方式，一台计算一半最终对结果，实现稳定 70 TPS 的效果，顺带把上下文从 131K 拉到了 382K。主打日常 Agent 全能。</p>

<h4 id="qwen-38-27b">Qwen 3.8 27B</h4>

<p>稠密计算模型小钢炮，通过 DFlash2 优化，最终实现单流 125 ~ 133 TPS、8 并发 231 TPS 的效果。虽然 27B 稠密模型计算非常耗费性能，但是显存消耗不多，可以做大量 KV Cache。最终通过 YaRN 技术把上下文从官方的 265K 拉到恐怖的 900K，代码智力爆表 + 超大上下文。主打离线代码 GPT。</p>

<h4 id="qwen-38-flash-next">Qwen 3.8 Flash Next</h4>

<p>相对于社区两台方案，昨晚实现单台就可以稳定跑。昨晚首先测试了 n-gram 的方案，虽然 decode 速度最高可以到 92 TPS，但发现这个方案纯粹是噱头——只有抄重复代码的时候快，Prefill 只有 100 多，而且上下文太小只有 64K。最后还是换传统的 MTP 方案，现在日常解码稳定在 60 TPS，Prefill 2232 TPS，上下文也增大了 265K，这样的数据更适合日常写代码。</p>

<p>看看我晚上能优化到什么水平？</p>

<p>等 Qwen 3.8 Flash Next 优化完，我准备继续挑战两台 GLM 5.3 Flash。大佬们你们想要我移植什么 AI 模型？评论区留下你的建议 😎</p>]]></content><author><name></name></author><category term="AI" /><category term="Tech" /><summary type="html"><![CDATA[算力舱AI模型适配实录：]]></summary></entry><entry><title type="html">Qwen 3.8 27B 实现 900K 代码上下文</title><link href="https://manateelazycat.github.io/2026/08/28/qwen-3-8-27b-900k-context/" rel="alternate" type="text/html" title="Qwen 3.8 27B 实现 900K 代码上下文" /><published>2026-08-28T00:00:00+08:00</published><updated>2026-08-28T00:00:00+08:00</updated><id>https://manateelazycat.github.io/2026/08/28/qwen-3-8-27b-900k-context</id><content type="html" xml:base="https://manateelazycat.github.io/2026/08/28/qwen-3-8-27b-900k-context/"><![CDATA[<p>挑战成功，Qwen 3.8 27B 实现 900K 的代码上下文。</p>

<p>利用 YaRN 技术实现 Qwen 3.8 27B 模型从 786K 提升到 900K 的挑战，整个模型占了 120GB 的显存。</p>

<p><img src="https://manateelazycat.github.io/pics/qwen-3-8-27b-900k-context/900k-verify.png" alt="900K 上下文调整并验证完成" /></p>

<p>900K 的上下文无限接近于 1M 上下文，意味着世界上 99% 的代码项目，利用 Qwen 3.8 27B 本地 AI 都很难遇到因为上下文不足而降智的问题。</p>

<p>做个对比：</p>

<ul>
  <li>懒猫 AI 算力舱单流可以实现 133 Tokens 的速度，4090 只能实现 40 ~ 50 Tokens</li>
  <li>懒猫 AI 算力舱上下文可以达到 900K，4090 因为显存太小最多只能实现 128K 的上下文</li>
  <li>4090 上你只能跑 Qwen 3.8 27B，但是你一旦遇到大型的代码项目，马上就会因为上下文不足降智</li>
</ul>

<p><img src="https://manateelazycat.github.io/pics/qwen-3-8-27b-900k-context/900k-statusline.png" alt="Pi Agent 状态栏里的 900K 上下文" /></p>

<p>懒猫 AI 算力舱跑 Qwen 3.8 27B 不但速度超快，还可以不降智地支持 99% 的大型代码项目稳定运行。</p>]]></content><author><name></name></author><category term="AI" /><category term="Tech" /><category term="Pi" /><summary type="html"><![CDATA[挑战成功，Qwen 3.8 27B 实现 900K 的代码上下文。]]></summary></entry></feed>