<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>辉夜铃Ringの博客</title><description>辉夜铃Ring的博客~</description><link>https://blog.kaguyaring.top/</link><templateTheme>Firefly</templateTheme><templateThemeVersion>6.6.5</templateThemeVersion><templateThemeUrl>https://github.com/CuteLeaf/Firefly</templateThemeUrl><lastBuildDate>Tue, 04 Aug 2026 20:49:42 GMT</lastBuildDate><item><title>加群向导</title><link>https://blog.kaguyaring.top/posts/pin/</link><guid isPermaLink="true">https://blog.kaguyaring.top/posts/pin/</guid><pubDate>Thu, 27 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;📬小群体&lt;a href=&quot;#小群体&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;QQ
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://qm.qq.com/q/MS6J5wEOOY&quot;&gt;点击链接加入群聊[辉夜铃Ring的猫猫头窝]&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Telegram
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/+SE9fsiS1YHJhM2Y1&quot;&gt;点击链接加入群聊[然泽茶馆]&lt;/a&gt; (闲置)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;📬 联系方式&lt;a href=&quot;#-联系方式&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;📫 邮箱：&lt;a href=&quot;#&quot;&gt;KaguyaRing@qq.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;</content:encoded></item><item><title>给 GL-MT3600BE 适配 OpenWrt：从设备树到开箱即用</title><link>https://blog.kaguyaring.top/posts/openwrt-gl-mt3600be-adaptation/</link><guid isPermaLink="true">https://blog.kaguyaring.top/posts/openwrt-gl-mt3600be-adaptation/</guid><description>没有官方支持？那就自己动手。从其他发行版移植设备树，更新驱动，预装软件，打造开箱即用的 OpenWrt 固件。</description><pubDate>Fri, 10 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;给 GL-MT3600BE 适配 OpenWrt：从设备树到开箱即用&lt;a href=&quot;#给-gl-mt3600be-适配-openwrt从设备树到开箱即用&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;目录&lt;a href=&quot;#目录&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Tip&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;可直接点击文字跳转至对应章节&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#%E4%B8%BA%E4%BB%80%E4%B9%88%E8%A6%81%E9%80%82%E9%85%8D&quot;&gt;为什么要适配&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E7%A7%BB%E6%A4%8D%E8%AE%BE%E5%A4%87%E6%A0%91&quot;&gt;移植设备树&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E9%A9%B1%E5%8A%A8%E6%9B%B4%E6%96%B0&quot;&gt;驱动更新&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E9%A2%84%E8%A3%85%E8%BD%AF%E4%BB%B6%E5%8C%85&quot;&gt;预装软件包&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E9%BB%98%E8%AE%A4%E9%85%8D%E7%BD%AE%E4%BC%98%E5%8C%96&quot;&gt;默认配置优化&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E6%8A%80%E6%9C%AF%E7%BB%86%E8%8A%82&quot;&gt;技术细节&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97&quot;&gt;使用指南&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E6%80%BB%E7%BB%93&quot;&gt;总结&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;为什么要适配&lt;a href=&quot;#为什么要适配&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;GL-MT3600BE 是 GL.iNet 的一款 MT7987A 芯片路由器，硬件配置不错：双 2.5G 网口、Wi-Fi 6、USB 3.0。但问题在于：&lt;/p&gt;&lt;p&gt;&lt;strong&gt;OpenWrt 官方 24.10 稳定版没有这个设备的支持。&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;原厂固件虽然能用，但有几个问题让人不爽：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;内存占用高&lt;/strong&gt;：原厂固件预装了一堆软件&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;原生 WebUI 和 LuCI 同时运行&lt;/li&gt;
&lt;li&gt;nginx、一堆厂商服务、各种预装插件&lt;/li&gt;
&lt;li&gt;闲置状态下内存占用就不低&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;功能冗余&lt;/strong&gt;：很多用不上的功能和服务在后台跑着&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;可玩性不够&lt;/strong&gt;：想折腾的话，还是原生 OpenWrt 更自由&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;想刷 OpenWrt，要么等官方支持，要么自己动手。我选择了后者。&lt;/p&gt;&lt;p&gt;最初想适配 24.10 稳定版，但屡屡碰壁。后来发现 OpenWrt Snapshot（主线开发版）更新更快，驱动支持更好，干脆直接基于 Snapshot 做适配。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;移植设备树&lt;a href=&quot;#移植设备树&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;适配的第一步是设备树（Device Tree）。设备树描述了硬件的结构——有哪些接口、GPIO 怎么连的、哪个 LED 对应哪个引脚，等等。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;我从哪里找到设备树？&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;x-wrt 已经有了 GL-MT3600BE 的设备树文件，作者是 Developer X。我直接拿过来，稍作修改，移植到 OpenWrt 主线。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;关键文件位置：&lt;/strong&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;target/linux/mediatek/dts/mt7987a-glinet-gl-mt3600be.dts&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;主要修改：&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;USB 供电控制&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GL-MT3600BE 的 USB 口需要通过 GPIO 14 供电&lt;/li&gt;
&lt;li&gt;写了个启动脚本 &lt;code&gt;/etc/init.d/turn_on_usb_power&lt;/code&gt;，开机时拉高 GPIO&lt;/li&gt;
&lt;li&gt;否则插 USB 设备没反应&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;风扇曲线优化&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;原厂风扇曲线：0% / 25% / 50% / 75% / 100%&lt;/li&gt;
&lt;li&gt;我改成了：0% / 38% / 63% / 88% / 100%&lt;/li&gt;
&lt;li&gt;为什么？因为原厂曲线起步太慢，温度上来后风扇才开始转，散热不够及时。新曲线起步风量更大，过渡更平滑，既保证散热又控制噪音。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;LED 配置&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;蓝色 LED (GPIO 48)：系统状态指示&lt;/li&gt;
&lt;li&gt;白色 LED (GPIO 49)：启动指示&lt;/li&gt;
&lt;li&gt;绑定到系统事件，开机自动亮&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;网络映射&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;eth0 (gmac0) → WAN 口（2.5G）&lt;/li&gt;
&lt;li&gt;eth1 (gmac1) → LAN 口（2.5G，内部）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;驱动更新&lt;a href=&quot;#驱动更新&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;设备树搞定之后，接下来是驱动。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;MT7987A 是联发科的新芯片&lt;/strong&gt;，主线的驱动支持还在完善中。Snapshot 版本的驱动更新比 24.10 快得多，这也是我选择 Snapshot 的原因之一。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;主要驱动：&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;PHY 固件&lt;/strong&gt;：&lt;code&gt;mt7987-2p5g-phy-firmware&lt;/code&gt;（2.5G 网口）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;无线固件&lt;/strong&gt;：&lt;code&gt;kmod-mt7990-firmware&lt;/code&gt;（Wi-Fi 6，MT7996 芯片）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;风扇控制&lt;/strong&gt;：&lt;code&gt;kmod-hwmon-pwmfan&lt;/code&gt;（PWM 调速）&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;这些驱动在 Snapshot 中都是最新版本（截至 2026-03-01），比 24.10 的版本新不少。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;预装软件包&lt;a href=&quot;#预装软件包&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;适配完硬件，接下来是软件。我的目标是做一个&lt;strong&gt;开箱即用&lt;/strong&gt;的固件，不需要刷完之后再手动装一堆东西。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;预装了什么？&lt;/strong&gt;&lt;/p&gt;&lt;section&gt;&lt;h3&gt;1. LuCI Web 界面&lt;a href=&quot;#1-luci-web-界面&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Argon 主题 v2.4.3&lt;/strong&gt;：现代化美观主题，比默认主题好看太多&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;中文语言包&lt;/strong&gt;：base、package-manager、firewall 的中文翻译&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;2. OpenClash v0.47.055&lt;a href=&quot;#2-openclash-v047055&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;完整源码&lt;/strong&gt;：放在 &lt;code&gt;/package/luci-app-openclash/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Meta/Mihomo 内核 v1.19.27&lt;/strong&gt;：&lt;strong&gt;预置在固件内&lt;/strong&gt;，刷完直接能用，不需要手动下载&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;控制面板&lt;/strong&gt;：&lt;code&gt;http://192.168.3.1:9090&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GeoIP/GeoSite 数据库&lt;/strong&gt;：由 jsDelivr CDN 自动更新&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;3. AdGuardHome&lt;a href=&quot;#3-adguardhome&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;默认运行在 &lt;code&gt;http://192.168.3.1:3000&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;提供 DNS 广告拦截功能&lt;/li&gt;
&lt;li&gt;来自官方 packages feed&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;4. USB 网络共享支持&lt;a href=&quot;#4-usb-网络共享支持&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;预装完整的 USB 共享网络驱动和工具：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;协议支持&lt;/strong&gt;：RNDIS、ECM、NCM、MBIM、QMI&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;工具包&lt;/strong&gt;：umbim、uqmi、comgt、comgt-ncm、usb-modeswitch&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;效果&lt;/strong&gt;：插上 4G/5G USB 调制解调器，即插即用&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;镜像定义文件：&lt;/strong&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;target/linux/mediatek/image/filogic.mk (第 2074-2094 行)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;默认配置优化&lt;a href=&quot;#默认配置优化&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;软件装好了，但默认配置也很重要。我做了一些预设，让固件刷完就能直接用。&lt;/p&gt;&lt;section&gt;&lt;h3&gt;安全性增强&lt;a href=&quot;#安全性增强&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;root 账户锁定&lt;/strong&gt;：首次启动后 root 无法登录&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;admin 用户&lt;/strong&gt;：用户名 &lt;code&gt;admin&lt;/code&gt; / 密码 &lt;code&gt;admin&lt;/code&gt;（uid=0，等效 root 权限）&lt;/li&gt;
&lt;li&gt;如果需要 root，可以手动解锁：
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;passwd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-u&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;root&lt;/span&gt;&lt;span&gt; &amp;amp;&amp;amp; &lt;/span&gt;&lt;span&gt;passwd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;root&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;网络配置&lt;a href=&quot;#网络配置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;LAN IP&lt;/strong&gt;：&lt;code&gt;192.168.3.1/24&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2.4G SSID&lt;/strong&gt;：&lt;code&gt;GL-MT3600BE-&amp;lt;MAC末4位&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;5G SSID&lt;/strong&gt;：&lt;code&gt;GL-MT3600BE-&amp;lt;MAC末4位&amp;gt;-5G&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Wi-Fi 密码&lt;/strong&gt;：&lt;code&gt;88888888&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;访客网络&lt;/strong&gt;：预留 &lt;code&gt;192.168.4.1/24&lt;/code&gt;（默认关闭，可手动启用）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;wan2 接口&lt;/strong&gt;：预配置备用上行（metric=30），可绑定 USB 网卡&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;防火墙规则&lt;a href=&quot;#防火墙规则&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;WAN 侧预开放端口：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;OpenClash：&lt;code&gt;7874&lt;/code&gt;, &lt;code&gt;7890-7893&lt;/code&gt;, &lt;code&gt;7895&lt;/code&gt;, &lt;code&gt;9090&lt;/code&gt; (TCP)&lt;/li&gt;
&lt;li&gt;AdGuardHome：&lt;code&gt;3000&lt;/code&gt; (TCP)&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;配置文件位置：&lt;/strong&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;target/linux/mediatek/filogic/base-files/etc/uci-defaults/99-gl-mt3600be-defaults&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;技术细节&lt;a href=&quot;#技术细节&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;构建流程&lt;a href=&quot;#构建流程&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;clone&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;https://github.com/KaguyaRing/openwrt-custom-gl-mt3600be&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;openwrt-custom-gl-mt3600be&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;./scripts/feeds&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;update&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-a&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;./scripts/feeds&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;install&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-a&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;make&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;defconfig&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;make&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-j$(&lt;/span&gt;&lt;span&gt;nproc&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;构建完成后，固件在 &lt;code&gt;bin/targets/mediatek/filogic/&lt;/code&gt; 目录下：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;openwrt-mediatek-filogic-glinet_gl-mt3600be-squashfs-sysupgrade.bin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;配置种子文件&lt;a href=&quot;#配置种子文件&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;configs/mt3600be.seed&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;选择 mediatek/filogic 平台&lt;/li&gt;
&lt;li&gt;指定 GL-MT3600BE 设备&lt;/li&gt;
&lt;li&gt;禁用 Docker 相关组件（固件体积优化）&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;CI/CD 系统&lt;a href=&quot;#cicd-系统&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;GitHub Actions 自动构建：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;.github/workflows/01-check.yml&lt;/code&gt;：代码检查&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.github/workflows/02-build.yml&lt;/code&gt;：自动构建&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.github/workflows/03-release.yml&lt;/code&gt;：发布固件&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;使用指南&lt;a href=&quot;#使用指南&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;安装固件&lt;a href=&quot;#安装固件&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;方法 1：通过原厂 Web 界面刷入&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;登录原厂固件的管理界面&lt;/li&gt;
&lt;li&gt;找到固件升级选项&lt;/li&gt;
&lt;li&gt;上传 &lt;code&gt;.bin&lt;/code&gt; 文件&lt;/li&gt;
&lt;li&gt;等待刷写完成，设备自动重启&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;方法 2：通过 U-Boot 刷入&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;断电，按住 Reset 按钮&lt;/li&gt;
&lt;li&gt;上电，等待 LED 闪烁，松开 Reset&lt;/li&gt;
&lt;li&gt;浏览器访问 &lt;code&gt;http://192.168.1.1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;上传固件文件&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;方法 3：通过命令行刷入&lt;/strong&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sysupgrade&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-n&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;openwrt-&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;.bin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;首次使用&lt;a href=&quot;#首次使用&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;刷写完成后，设备重启&lt;/li&gt;
&lt;li&gt;浏览器访问 &lt;code&gt;http://192.168.3.1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;用户名：&lt;code&gt;admin&lt;/code&gt; / 密码：&lt;code&gt;admin&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;进入 OpenClash 配置订阅&lt;/li&gt;
&lt;li&gt;进入 AdGuardHome 完成初始化&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;OpenClash 配置&lt;a href=&quot;#openclash-配置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;访问 &lt;code&gt;http://192.168.3.1:9090&lt;/code&gt;（Meta 控制面板）&lt;/li&gt;
&lt;li&gt;或在 LuCI 界面进入 OpenClash 插件&lt;/li&gt;
&lt;li&gt;导入订阅链接&lt;/li&gt;
&lt;li&gt;等待规则和代理更新&lt;/li&gt;
&lt;li&gt;开始使用&lt;/li&gt;
&lt;/ol&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;与其他方案的区别&lt;a href=&quot;#与其他方案的区别&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;vs 官方 OpenWrt&lt;a href=&quot;#vs-官方-openwrt&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;✅ 开箱即用，无需手动配置&lt;/li&gt;
&lt;li&gt;✅ 预装 OpenClash + AdGuardHome&lt;/li&gt;
&lt;li&gt;✅ 完整的中文界面&lt;/li&gt;
&lt;li&gt;⚠️ 基于 Snapshot（滚动更新，非稳定版）&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;vs x-wrt&lt;a href=&quot;#vs-x-wrt&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;参考了 x-wrt 的设备适配思路&lt;/li&gt;
&lt;li&gt;设备树文件源自 x-wrt 开发者（Developer X）&lt;/li&gt;
&lt;li&gt;但基于 OpenWrt 主线而非 x-wrt 分支&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;vs 原厂固件&lt;a href=&quot;#vs-原厂固件&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;内存占用更低&lt;/strong&gt;：原厂固件预装了一堆软件（原生 WebUI + LuCI + nginx 等），内存占用高，定制版只保留必要组件&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;更干净&lt;/strong&gt;：去除冗余服务，系统更纯粹&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;更强的可定制性&lt;/strong&gt;：原生 OpenWrt，想装什么装什么&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;风扇控制更优化&lt;/strong&gt;：优化后的风扇曲线，散热与静音兼顾&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;已知限制&lt;a href=&quot;#已知限制&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;不支持 iStore&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;iStore 最高支持 OpenWrt 24.10&lt;/li&gt;
&lt;li&gt;本项目基于更新的 Snapshot 版本&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;包管理兼容性&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;第三方插件若强依赖纯 opkg 元数据可能有问题&lt;/li&gt;
&lt;li&gt;Snapshot 主要使用 apk 包管理器&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;USB 设备枚举&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;需要足功率适配器&lt;/li&gt;
&lt;li&gt;注意线材质量&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;总结&lt;a href=&quot;#总结&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;这次适配从移植设备树开始，更新驱动，预装常用软件，优化默认配置，最终做出了一个开箱即用的 OpenWrt 固件。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;适配过程中学到的：&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;设备树的结构和修改方法&lt;/li&gt;
&lt;li&gt;OpenWrt 的构建系统和镜像定义&lt;/li&gt;
&lt;li&gt;如何预置软件包和配置&lt;/li&gt;
&lt;li&gt;USB 供电控制和风扇调速的实现&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;这个固件适合谁？&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;想刷 OpenWrt 但懒得配置的人&lt;/li&gt;
&lt;li&gt;想用 OpenClash 但不想手动装的人&lt;/li&gt;
&lt;li&gt;想折腾路由器但不想从零开始的人&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;项目地址：&lt;/strong&gt;
&lt;a href=&quot;https://github.com/KaguyaRing/openwrt-custom-gl-mt3600be&quot;&gt;https://github.com/KaguyaRing/openwrt-custom-gl-mt3600be&lt;/a&gt;&lt;/p&gt;&lt;p&gt;如果你也有 GL-MT3600BE，可以试试这个固件。有问题欢迎提 Issue。&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;分区这块先到这，谢谢阅读。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;参考资料&lt;a href=&quot;#参考资料&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://openwrt.org/&quot;&gt;OpenWrt 官方文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://x-wrt.com/&quot;&gt;x-wrt 项目&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/vernesong/OpenClash&quot;&gt;OpenClash 项目&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>Claude Code 中隐藏的中国区域检测机制</title><link>https://blog.kaguyaring.top/posts/claude-code-china-detection/</link><guid isPermaLink="true">https://blog.kaguyaring.top/posts/claude-code-china-detection/</guid><description>深度逆向分析 Claude Code 内置的中国区域检测代码，揭示 40 个域名黑名单、11 个 AI 实验室关键词以及提示词破坏机制</description><pubDate>Fri, 10 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;Claude Code 中隐藏的中国区域检测机制&lt;a href=&quot;#claude-code-中隐藏的中国区域检测机制&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;目录&lt;a href=&quot;#目录&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Tip&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;可直接点击文字跳转至对应章节&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#claude-code-%E4%B8%AD%E9%9A%90%E8%97%8F%E7%9A%84%E4%B8%AD%E5%9B%BD%E5%8C%BA%E5%9F%9F%E6%A3%80%E6%B5%8B%E6%9C%BA%E5%88%B6&quot;&gt;Claude Code 中隐藏的中国区域检测机制&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#%E7%9B%AE%E5%BD%95&quot;&gt;目录&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E5%85%8D%E8%B4%A3%E5%A3%B0%E6%98%8E&quot;&gt;免责声明&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E7%AE%80%E4%BB%8B&quot;&gt;简介&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E5%8F%91%E7%8E%B0%E5%A5%91%E6%9C%BA&quot;&gt;发现契机&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E9%80%86%E5%90%91%E5%B7%A5%E7%A8%8B%E8%BF%87%E7%A8%8B&quot;&gt;逆向工程过程&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#base64--xor-%E5%8A%A0%E5%AF%86&quot;&gt;Base64 + XOR 加密&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E8%A7%A3%E5%AF%86%E8%84%9A%E6%9C%AC&quot;&gt;解密脚本&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E6%A3%80%E6%B5%8B%E6%9C%BA%E5%88%B6%E8%AF%A6%E8%A7%A3&quot;&gt;检测机制详解&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#%E6%A3%80%E6%B5%8B%E6%9D%A1%E4%BB%B6&quot;&gt;检测条件&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#40-%E4%B8%AA%E4%B8%AD%E5%9B%BD%E5%9F%9F%E5%90%8D%E9%BB%91%E5%90%8D%E5%8D%95&quot;&gt;40 个中国域名黑名单&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#11-%E4%B8%AA-ai-%E5%AE%9E%E9%AA%8C%E5%AE%A4%E5%85%B3%E9%94%AE%E8%AF%8D&quot;&gt;11 个 AI 实验室关键词&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E7%89%88%E6%9C%AC%E6%BC%94%E8%BF%9B%E5%88%86%E6%9E%90&quot;&gt;版本演进分析&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E6%8F%90%E7%A4%BA%E8%AF%8D%E7%A0%B4%E5%9D%8F%E6%9C%BA%E5%88%B6&quot;&gt;提示词破坏机制&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E5%AE%9E%E9%99%85%E5%BD%B1%E5%93%8D&quot;&gt;实际影响&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E4%BB%A3%E7%A0%81%E8%AF%81%E6%8D%AE&quot;&gt;代码证据&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E7%BB%93%E8%AE%BA%E4%B8%8E%E6%80%9D%E8%80%83&quot;&gt;结论与思考&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99&quot;&gt;参考资料&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;免责声明&lt;a href=&quot;#免责声明&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Warning&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;&lt;strong&gt;本文仅用于技术研究和学术交流目的。&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;本文所有内容基于公开发布的 npm 包进行逆向分析&lt;/li&gt;
&lt;li&gt;文中观点仅代表作者个人技术分析，不代表任何官方立场&lt;/li&gt;
&lt;li&gt;本文不提供任何绕过或破解方案，仅客观呈现技术事实&lt;/li&gt;
&lt;li&gt;读者应遵守相关软件的使用条款和当地法律法规&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;简介&lt;a href=&quot;#简介&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;在使用 Claude Code（Anthropic 官方的命令行 AI 编程工具）过程中，发现当使用中国区域的 API 端点时，系统行为会出现异常。经过深度逆向分析，发现 &lt;strong&gt;Claude Code 内置了针对中国区域的检测机制&lt;/strong&gt;，并且会主动破坏系统提示词格式。&lt;/p&gt;&lt;p&gt;本文将详细记录整个逆向工程过程，揭示隐藏在混淆代码背后的检测逻辑。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;发现契机&lt;a href=&quot;#发现契机&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;问题最初的表现是：当配置 &lt;code&gt;ANTHROPIC_BASE_URL&lt;/code&gt; 指向中国区域的 API 端点时，Claude Code 的行为变得异常。通过分析 npm 包中的 &lt;code&gt;cli.js&lt;/code&gt; 文件，发现了大量混淆代码。&lt;/p&gt;&lt;p&gt;使用 &lt;code&gt;strings&lt;/code&gt; 命令查看二进制字符串时，发现了一些可疑的 Base64 编码字符串：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;strings&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;cli.js&lt;/span&gt;&lt;span&gt; | &lt;/span&gt;&lt;span&gt;grep&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-i&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;asia&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 输出: Asia/Shanghai, Asia/Urumqi&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;这引起了我的注意 — 为什么一个编程工具需要检测时区？&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;逆向工程过程&lt;a href=&quot;#逆向工程过程&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;Base64 + XOR 加密&lt;a href=&quot;#base64--xor-加密&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;在 &lt;code&gt;cli.js&lt;/code&gt; 中找到了两段 Base64 编码的字符串：&lt;/p&gt;&lt;p&gt;&lt;strong&gt;域名黑名单（加密后）：&lt;/strong&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ODV3KDo1MC46MnU4NDZ3NT4vPjooPnU4NDZ3am1odTg0Nnc5OjI/LnYyNS91ODQ2dzk6Mj8udTg0...&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;关键词列表（加密后）：&lt;/strong&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Pz4+Kyg+PjB3NjQ0NSgzNC93NjI1MjY6I3cjOjYyNTI2dyEzMisudzkyPDY0Pz43dzk6MjgzLjo1...&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;通过分析混淆代码，找到了解密函数：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;function&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;DM4&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;q&lt;/span&gt;&lt;span&gt;) {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;let&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;K&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Buffer&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;from&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;q&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&quot;base64&quot;&lt;/span&gt;&lt;span&gt;),&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;_&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;&quot;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;for&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;let&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;z&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;of&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;K&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;_&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;+=&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;fromCharCode&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;z&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;^&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Mi_&lt;/span&gt;&lt;span&gt;);  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// XOR 操作&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;_&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;split&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;,&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;其中 &lt;code&gt;Mi_ = 91&lt;/code&gt; 是 XOR 密钥。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;解密脚本&lt;a href=&quot;#解密脚本&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;基于上述逻辑，编写了解密脚本：&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;crypto&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;require&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&apos;crypto&apos;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;XOR_KEY&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;91&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;// 域名黑名单 Base64&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;DOMAINS_BASE64&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;ODV3KDo1MC46MnU4NDZ3NT4vPjooPnU4NDZ3am1odTg0Nnc5OjI/LnYyNS91ODQ2dzk6Mj8udTg0Nnc6NzI5Ojk6djI1OHU4NDZ3OjcyKzoidTg0Nnc6NS88KTQuK3YyNTh1ODV3MC46MigzNC51ODQ2dzkiLz4/OjU4PnU1Pi93IzI6NDM0NTwoMy51ODQ2dzgvKTIrODQpK3U4NDZ3MT91ODQ2dzE/ODc0Lj91ODQ2dzkyNzI5MjcydTg0dzI9NyIvPjB1ODQ2dygvPis9LjV2MjU4dTg0Nnc6NzIiLjU4KHU4NDZ3ODV2KDM6NTwzOjJ1PTg6Kyt1KS41dzg1djk+MjEyNTx1PTg6Kyt1KS41dyM6NjI1MjZ1ODQ2dzY0NDUoMzQvdToydzo1Iik0Li8+KXUvNCt3Kzo4MCI6KzJ1ODQ2dzoyODQ/PjYyKSk0KXU4NDZ3OjI8NDg0Pz51ODQ2dzM0NTwoMzo1dTg0NncyLDM6Nz44NzQuP3U4NDZ3PzM4ND8+KXU1Pi93Nz42NDU8Ky91LzQrdyEzMjMuMjorMnUvNCt3MjUvKDI8dTU+L3czMjwzdj0yLT52OjJ1IyIhdzg3NC4/KCw6InU1Pi93byg6KzJ1ODQ2d25pYmJtanU4NDZ3Y2NiYm11ODc0Lj93Y2M4ND8+dToyd2NjODQ/PnU0KTx3Ymo4ND8+dSspNHdiYmlpaG11IyIhdzoydTg0Pz4qOip1ODQ2dzoydTMiOTwhKHU4NDZ3OjJ1MDEtMzN1ODQ2dzoyODo1OisydTg0Nnc6Mjg0PzI1PHUoM3c6MjM6KC91KDIvPnc6MjMuOTYyI3U4NDZ3OjU2NCkidTg0Nnc6KzJ1bmlraWtoa3UjIiF3OisydTo5NzoydS80K3c6KzJ1OTI6NSMyPnU6Mnc6KzJ1OTcvOCJ1OjJ3OisydTgrOigodTg4dzorMnU/Pi1jY3UvPjgzdzorMnU/KT46Njw+KXU4NDZ3OisydT4jKzo1KDI0NXU4MzovdzorMnU8Lj46MnU4NDZ3OisydTM0Nz86MnUvNCt3OisydTIwLjU4ND8+dTg4dzorMnU3ODQ1OjJ1ODQ2dzorMnU3MjUwOisydTQpPHc6KzJ1NjA+OjJ1ODQ2dzorMnU1PjA0OisydTg0Nnc6KzJ1NDoyKyk0dTg0Nnc6KzJ1KS4iLjV1PS51dzorMnUoKDQrPjV1LzQrdzorMnUvLnYhMnU4NDZ3OisydS48NyI4Oi91ODh3OisydS1odTg2dzorMnUsMzovOjJ1ODh3OisydSwrPCEodS80K3c6KzJ1Iy8idTorK3c6KzJ1Ii4+PDc+dTg0Nnc6KzJ1ISEiLnU2Pnc6KzI2OikvdToydzorKykpNHU2OiI1NClqa2lvdTcyLT53OisyIjJ1ODQ2dzorKzciMXUzMjorMnUvNCt3Oi48Ni41L3U4NDZ3OW8udSohIXUyNHc4NzouPz8idTg0Nnc4NzouPz52ODQ/PnYzLjl1Oisrdzg3Oi4/PnY0Ky4odS80K3c4NzouPz4yPz51NT4vdzg0dSI+KHUtPHc4ND8+dSw+NSw+NXY6MnU4NDZ3ODQ/PnUjdjoyNHU4NDZ3ODQ/PjI3Ojl1ODQ2dzguOT41OD51ODQ2dz8+PispNC4vPil1LzQrdz8yNjopOiJ1ODQ2dz82IzorMnU4NDZ3PzQ4KHU6Mjw4aT91ODQ2dz8uODA4ND8yNTx1ODQ2dz0wdTMoMywwdTQpPHc9NzorODQ/PnU4NDZ3PTQjODQ/PnUzKDMsMHU0KTx3PTQjODQ/PnUpMTF1ODh3PS43MnUzIzJ1Nj53PD4vPDQ6KzJ1ODQ2dzwrL3UhMzIhPjU8IT41PHU4NDZ3PCsvPDQ/dTg3NC4/dzwrLzA+InU+LnU0KTx3PCsvKzoidSgvNCk+dzM/PCg5dTg0NnczPjU6KzJ1LzQrdzI1KC84NCsyNzQvdjorMnU4NDZ3MT41MiI6dS80K3cxMj4wNC51OjJ3MDx2OisydTg3NC4/dzVqNXU6Mnc1Pix2OisydS5vLSl1ODQ2dzU+LHUjIjgzOi86MnU4NDZ3NDU+djorMnU5Ny84InUvNCt3NDU+dTQ4NDQ3OjJ1ODQ2dzQ1PjorMnUrOjI1Lzk0L3UvNCt3NCs+NXUjMjo0MTI1PDoydTg0Nnc0Kz41ODc6Lj8+dTY+dzQrLih1PCsvLi51ODQ2dys0NzQ6MnUvNCt3KzQ3NDorMnUvNCt3KykyLTU0Pz51ODQ2dyspNCMiOjJ1ODQ2dyoyNSEzMjoydTg0NncpMjwzL3U4ND8+KHcpLjU6NSIvMjY+dTMjMnU2PncoKCg6Mjg0Pz51ODQ2dygvNCk+dSEhIi4odS90K3cvMjo1LzI6NToydSspNHcuMi4yOisydTg0NncuNTI6KzJ1OjJ3LTIrdS41PyIyNTw6KzJ1ODQ2dyw0Nz06MnUvNCt3LCEsdT8+bnU1Pi93LCEsdSsrdS46dyM6Mik0Li8+KXU4NDZ3IzoyIzorMnU4NDZ3IzI6NDMuOisydSgyLz53IzI6NDMuNjI1MnUoMi8+dyMidSs0NzQ6KzJ1ODQ2dyI6NSg/bW1tdTg0NnciOjUoP21tbXUvNCt3Ii41LC51OjJ3Ii41LC51IT46OS4pdTorK3chPjU2LiN1OjI=&quot;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;// 关键词列表 Base64&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;KEYWORDS_BASE64&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;Pz4+Kyg+PjB3NjQ0NSgzNC93NjI1MjY6I3cjOjYyNTI2dyEzMisudzkyPDY0Pz43dzk6MjgzLjo1dygvPis9LjV3a2o6Mnc/OigzKDg0Kz53LTQ3OD4o&quot;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;function&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;decrypt&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;base64Str&lt;/span&gt;&lt;span&gt;) {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;buffer&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Buffer&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;from&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;base64Str&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&apos;base64&apos;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;let&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;result&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;for&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;let&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;byte&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;of&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;buffer&lt;/span&gt;&lt;span&gt;) {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;result&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;+=&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;fromCharCode&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;byte&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;^&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;XOR_KEY&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;result&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;split&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&apos;,&apos;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;console&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;log&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&apos;=== 域名黑名单 ===&apos;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;console&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;log&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;decrypt&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;DOMAINS_BASE64&lt;/span&gt;&lt;span&gt;));&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;console&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;log&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&apos;&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;=== AI 实验室关键词 ===&apos;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;console&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;log&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;decrypt&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;KEYWORDS_BASE64&lt;/span&gt;&lt;span&gt;));&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;显示更多&lt;/span&gt;&lt;span&gt;显示更少&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;检测机制详解&lt;a href=&quot;#检测机制详解&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;检测条件&lt;a href=&quot;#检测条件&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Claude Code 通过 &lt;strong&gt;三重检测&lt;/strong&gt; 判断是否处于中国区域：&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;function&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Zi_&lt;/span&gt;&lt;span&gt;() {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;OM&lt;/span&gt;&lt;span&gt;()) &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;null&lt;/span&gt;&lt;span&gt;;  &lt;/span&gt;&lt;span&gt;// 检查是否禁用&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;let&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;q&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;fi_&lt;/span&gt;&lt;span&gt;(),  &lt;/span&gt;&lt;span&gt;// 获取 ANTHROPIC_BASE_URL 的 hostname&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;K&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Hu6&lt;/span&gt;&lt;span&gt;(),  &lt;/span&gt;&lt;span&gt;// 获取系统时区&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;_&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;K&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;===&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;Asia/Shanghai&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;||&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;K&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;===&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;Asia/Urumqi&quot;&lt;/span&gt;&lt;span&gt;;  &lt;/span&gt;&lt;span&gt;// 时区检测&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;!&lt;/span&gt;&lt;span&gt;&lt;span&gt;q&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; { &lt;/span&gt;&lt;span&gt;known&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;false&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;labKw&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;false&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;cnTZ&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;_&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;/span&gt;&lt;span&gt;host&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;null&lt;/span&gt;&lt;span&gt; };&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;known&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Wi_&lt;/span&gt;&lt;span&gt;().&lt;/span&gt;&lt;span&gt;some&lt;/span&gt;&lt;span&gt;&lt;span&gt;((&lt;/span&gt;&lt;span&gt;z&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&amp;gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;q&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;===&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;z&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;||&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;q&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;endsWith&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;.&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;z&lt;/span&gt;&lt;span&gt;)),  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// 域名匹配&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;labKw&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Di_&lt;/span&gt;&lt;span&gt;().&lt;/span&gt;&lt;span&gt;some&lt;/span&gt;&lt;span&gt;&lt;span&gt;((&lt;/span&gt;&lt;span&gt;z&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&amp;gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;q&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;includes&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;z&lt;/span&gt;&lt;span&gt;)),  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// 关键词匹配&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;cnTZ&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;_&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;host&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;q&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;显示更多&lt;/span&gt;&lt;span&gt;显示更少&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;检测逻辑：&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;域名匹配：&lt;/strong&gt; 检查 &lt;code&gt;ANTHROPIC_BASE_URL&lt;/code&gt; 是否在 40 个域名黑名单中&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;关键词匹配：&lt;/strong&gt; 检查域名是否包含 11 个 AI 实验室关键词&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;时区检测：&lt;/strong&gt; 检查系统时区是否为 &lt;code&gt;Asia/Shanghai&lt;/code&gt; 或 &lt;code&gt;Asia/Urumqi&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;40 个中国域名黑名单&lt;a href=&quot;#40-个中国域名黑名单&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;解密后的完整域名列表：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;volcengine.com, openai-hk.com, aigc001.com, api2d.net, chatanywhere.tech,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;api2gpt.com, aiproxy.io, aihubmix.com, songshugpt.com, aiguoguo.com,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;closeai.biz, chatgpt.com, api.gptsapi.net, gptapi.us, openkey.cloud,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ai-yyds.com, aigcbest.top, api.openai-proxy.org, api.openai-sb.com,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;api.openai.com, oa.api2d.net, builtbetter.tech, api.oaipro.com,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;one-api.bltcy.top, api.lightai.io, beta.theb.ai, gpts.wxredcover.cn,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;www.jcapikey.com, api.caifree.com, burn.hair, openai-proxy.com,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;openrouter.ai, www.typingmind.com, devv.ai, poe.com, kimi.moonshot.cn,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;api.deepseek.com, spark-api.xf-yun.com, glm.ai&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;11 个 AI 实验室关键词&lt;a href=&quot;#11-个-ai-实验室关键词&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;moonshot, deepseek, baichuan, zhipu, baidu, minimax,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;doubao, volcano, stepfun, siliconflow, abab&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;这些关键词对应了中国主要的 AI 公司：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;moonshot&lt;/code&gt; - 月之暗面（Kimi）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;deepseek&lt;/code&gt; - 深度求索&lt;/li&gt;
&lt;li&gt;&lt;code&gt;baichuan&lt;/code&gt; - 百川智能&lt;/li&gt;
&lt;li&gt;&lt;code&gt;zhipu&lt;/code&gt; - 智谱 AI（ChatGLM）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;baidu&lt;/code&gt; - 百度（文心一言）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;minimax&lt;/code&gt; - MiniMax&lt;/li&gt;
&lt;li&gt;&lt;code&gt;doubao&lt;/code&gt; - 字节跳动（豆包）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;volcano&lt;/code&gt; - 火山引擎&lt;/li&gt;
&lt;li&gt;&lt;code&gt;stepfun&lt;/code&gt; - 阶跃星辰&lt;/li&gt;
&lt;li&gt;&lt;code&gt;siliconflow&lt;/code&gt; - 硅基流动&lt;/li&gt;
&lt;li&gt;&lt;code&gt;abab&lt;/code&gt; - MiniMax 的模型系列&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;版本演进分析&lt;a href=&quot;#版本演进分析&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;通过对比多个版本的 Claude Code，确定了检测机制的引入时间：&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;th&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;v2.1.90&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;2026-04-01 23:31 UTC&lt;/td&gt;&lt;td&gt;❌ 无&lt;/td&gt;&lt;td&gt;最后一个干净版本&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;v2.1.91&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;2026-04-02 22:37 UTC&lt;/td&gt;&lt;td&gt;✅ 有&lt;/td&gt;&lt;td&gt;&lt;strong&gt;检测代码首次引入&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;v2.1.98&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;2026-07-09 (当前)&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;时间线：&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;2026年4月1日：&lt;/strong&gt; v2.1.90 发布，代码完全干净&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2026年4月2日：&lt;/strong&gt; v2.1.91 发布，首次加入完整的检测机制&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;至今运行 3+ 个月：&lt;/strong&gt; 所有新版本都保留了这个机制&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;提示词破坏机制&lt;a href=&quot;#提示词破坏机制&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;当检测到中国区域时，系统会修改提示词中的日期格式，插入换行符破坏提示词结构：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;function&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Gi_&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;q&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;K&lt;/span&gt;&lt;span&gt;) {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;!&lt;/span&gt;&lt;span&gt;&lt;span&gt;q&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;!&lt;/span&gt;&lt;span&gt;K&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;&apos;&quot;&lt;/span&gt;&lt;span&gt;;        &lt;/span&gt;&lt;span&gt;// 正常情况: 单引号&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;q&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;!&lt;/span&gt;&lt;span&gt;K&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;\n\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;;      &lt;/span&gt;&lt;span&gt;// 域名匹配: 两个换行&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;!&lt;/span&gt;&lt;span&gt;&lt;span&gt;q&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;K&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;;        &lt;/span&gt;&lt;span&gt;// 关键词匹配: 一个换行&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;\n\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;;                   &lt;/span&gt;&lt;span&gt;// 同时匹配: 两个换行&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;function&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;fM4&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;q&lt;/span&gt;&lt;span&gt;) {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;let&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;K&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Zi_&lt;/span&gt;&lt;span&gt;(),&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;_&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Gi_&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;K&lt;/span&gt;&lt;span&gt;?.&lt;/span&gt;&lt;span&gt;known&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;??&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;false&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;K&lt;/span&gt;&lt;span&gt;?.&lt;/span&gt;&lt;span&gt;labKw&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;??&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;false&lt;/span&gt;&lt;span&gt;),&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;z&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;K&lt;/span&gt;&lt;span&gt;?.&lt;/span&gt;&lt;span&gt;cnTZ&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;?&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;q&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;replace&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;/-/&lt;/span&gt;&lt;span&gt;g&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;/&quot;&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;q&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;`Today&lt;/span&gt;&lt;span&gt;${&lt;/span&gt;&lt;span&gt;_&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;s date is &lt;/span&gt;&lt;span&gt;${&lt;/span&gt;&lt;span&gt;z&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;.`&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;破坏效果对比：&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;正常情况：&lt;/strong&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Today&apos;s date is 2026-07-10.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;检测到中国区域后：&lt;/strong&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Today&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;s date is 2026/07/10.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;注意到：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;code&gt;&apos;s&lt;/code&gt; 被拆分成了两行&lt;/li&gt;
&lt;li&gt;日期格式从 &lt;code&gt;2026-07-10&lt;/code&gt; 变成了 &lt;code&gt;2026/07/10&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;插入的换行符会破坏整个系统提示词的结构&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;实际影响&lt;a href=&quot;#实际影响&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;这种提示词破坏会导致：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;系统提示词格式错误&lt;/strong&gt;：多余的换行符破坏 markdown 或 JSON 结构&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;模型行为异常&lt;/strong&gt;：错误的提示词格式可能导致模型输出不符合预期&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;功能降级&lt;/strong&gt;：某些依赖严格格式的功能可能失效&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;隐蔽性强&lt;/strong&gt;：用户很难发现问题根源，只会感觉”用着不太对”&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;代码证据&lt;a href=&quot;#代码证据&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;完整的检测函数位于 &lt;code&gt;cli.js&lt;/code&gt; 中（去混淆后）：&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;// src/content/posts/Claude-Code-China-Detection/index.md:372&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;function&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Zi_&lt;/span&gt;&lt;span&gt;() {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;OM&lt;/span&gt;&lt;span&gt;()) &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;null&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;let&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;hostname&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;getHostnameFromBaseURL&lt;/span&gt;&lt;span&gt;(),&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;timezone&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;getSystemTimezone&lt;/span&gt;&lt;span&gt;(),&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;isChinaTimezone&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;timezone&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;===&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;Asia/Shanghai&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;||&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;timezone&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;===&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;Asia/Urumqi&quot;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;!&lt;/span&gt;&lt;span&gt;&lt;span&gt;hostname&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; { &lt;/span&gt;&lt;span&gt;known&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;false&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;labKw&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;false&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;cnTZ&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;isChinaTimezone&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;/span&gt;&lt;span&gt;host&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;null&lt;/span&gt;&lt;span&gt; };&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;known&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;DOMAIN_BLACKLIST&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;some&lt;/span&gt;&lt;span&gt;&lt;span&gt;((&lt;/span&gt;&lt;span&gt;domain&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;hostname&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;===&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;domain&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;||&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;hostname&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;endsWith&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;.&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;domain&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;),&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;labKw&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;LAB_KEYWORDS&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;some&lt;/span&gt;&lt;span&gt;&lt;span&gt;((&lt;/span&gt;&lt;span&gt;keyword&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&amp;gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;hostname&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;includes&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;keyword&lt;/span&gt;&lt;span&gt;)),&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;cnTZ&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;isChinaTimezone&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;host&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;hostname&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;function&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;formatDateWithDetection&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;date&lt;/span&gt;&lt;span&gt;) {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;let&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;detection&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Zi_&lt;/span&gt;&lt;span&gt;(),&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;separator&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;getLineSeparator&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;detection&lt;/span&gt;&lt;span&gt;?.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;known&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;??&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;false&lt;/span&gt;&lt;span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;detection&lt;/span&gt;&lt;span&gt;?.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;labKw&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;??&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;false&lt;/span&gt;&lt;span&gt;),&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;formattedDate&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;detection&lt;/span&gt;&lt;span&gt;?.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;cnTZ&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;?&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;date&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;replace&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;/-/&lt;/span&gt;&lt;span&gt;g&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;/&quot;&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;date&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;`Today&lt;/span&gt;&lt;span&gt;${&lt;/span&gt;&lt;span&gt;separator&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;s date is &lt;/span&gt;&lt;span&gt;${&lt;/span&gt;&lt;span&gt;formattedDate&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;.`&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;显示更多&lt;/span&gt;&lt;span&gt;显示更少&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;结论与思考&lt;a href=&quot;#结论与思考&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;通过完整的逆向分析，我们发现：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;检测范围广泛：&lt;/strong&gt; 40 个域名 + 11 个关键词覆盖了几乎所有中国 AI 服务提供商&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;加密隐藏：&lt;/strong&gt; 使用 Base64 + XOR 加密试图隐藏检测目标&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;主动破坏：&lt;/strong&gt; 不是简单的功能限制，而是主动破坏提示词结构&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;持续存在：&lt;/strong&gt; 从 v2.1.91（2026-04-02）至今已运行 3+ 个月&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;技术层面的疑问：&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;为什么需要检测中国区域的 API 端点？&lt;/li&gt;
&lt;li&gt;为什么要主动破坏提示词格式而不是直接报错？&lt;/li&gt;
&lt;li&gt;为什么要加密域名和关键词列表？&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;对开源社区的启示：&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;商业软件即使发布为 npm 包，依然可能包含隐藏逻辑&lt;/li&gt;
&lt;li&gt;混淆代码并不能真正隐藏意图，只是增加分析成本&lt;/li&gt;
&lt;li&gt;用户应该有权知道软件在背后做了什么&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;本文仅呈现技术事实，不做价值判断。读者可以根据这些信息自行判断和选择。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;参考资料&lt;a href=&quot;#参考资料&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.npmjs.com/package/@anthropic-ai/claude-code&quot;&gt;@anthropic-ai/claude-code on npm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-2.1.90.tgz&quot;&gt;Claude Code v2.1.90 (最后的干净版本)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-2.1.91.tgz&quot;&gt;Claude Code v2.1.91 (首次引入检测)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-2.1.98.tgz&quot;&gt;Claude Code v2.1.98 (当前版本)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;blockquote&gt;&lt;p&gt;[!INFO]&lt;/p&gt;&lt;p&gt;&lt;strong&gt;更新日志：&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;2026-07-10：初版发布，完成完整逆向分析&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>OpenWrt 安装网易 UU 加速器插件：完整安装与配置指南</title><link>https://blog.kaguyaring.top/posts/openwrt-uu-accelerator/</link><guid isPermaLink="true">https://blog.kaguyaring.top/posts/openwrt-uu-accelerator/</guid><description>在 OpenWrt 路由器上安装网易 UU 加速器插件的完整教程，包括官方安装脚本和第三方 APK 包两种方式，以及防火墙配置、常见问题排查。</description><pubDate>Fri, 10 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;OpenWrt 安装网易 UU 加速器插件：完整安装与配置指南&lt;a href=&quot;#openwrt-安装网易-uu-加速器插件完整安装与配置指南&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;目录&lt;a href=&quot;#目录&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Tip&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;可直接点击文字跳转至对应章节&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#%E4%BB%80%E4%B9%88%E6%98%AF-uu-%E5%8A%A0%E9%80%9F%E5%99%A8%E8%B7%AF%E7%94%B1%E5%99%A8%E6%8F%92%E4%BB%B6&quot;&gt;什么是 UU 加速器路由器插件&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E6%94%AF%E6%8C%81%E7%9A%84%E7%B3%BB%E7%BB%9F%E5%92%8C%E6%9E%B6%E6%9E%84&quot;&gt;支持的系统和架构&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E5%AE%89%E8%A3%85%E6%96%B9%E6%B3%95&quot;&gt;安装方法&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#%E6%96%B9%E6%B3%95%E4%B8%80%E5%AE%98%E6%96%B9%E5%AE%89%E8%A3%85%E8%84%9A%E6%9C%AC%E6%8E%A8%E8%8D%90&quot;&gt;方法一：官方安装脚本（推荐）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E6%96%B9%E6%B3%95%E4%BA%8C%E7%AC%AC%E4%B8%89%E6%96%B9-apk-%E5%8C%85&quot;&gt;方法二：第三方 APK 包&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E9%98%B2%E7%81%AB%E5%A2%99%E9%85%8D%E7%BD%AE&quot;&gt;防火墙配置&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E7%BB%91%E5%AE%9A%E4%B8%8E%E4%BD%BF%E7%94%A8&quot;&gt;绑定与使用&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98%E6%8E%92%E6%9F%A5&quot;&gt;常见问题排查&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E6%80%BB%E7%BB%93&quot;&gt;总结&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;什么是 UU 加速器路由器插件&lt;a href=&quot;#什么是-uu-加速器路由器插件&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;网易 UU 加速器提供了 OpenWrt 路由器插件，可以让连接到路由器的所有设备享受游戏加速服务，无需在每台设备上单独安装客户端。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;适用场景&lt;/strong&gt;：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;主机游戏（PS5、Xbox、Switch）加速&lt;/li&gt;
&lt;li&gt;多设备同时加速&lt;/li&gt;
&lt;li&gt;不方便安装客户端的设备&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;工作原理&lt;/strong&gt;：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;插件运行在路由器上，通过 VPN 隧道加速网络流量&lt;/li&gt;
&lt;li&gt;使用手机 APP 远程控制路由器上的加速服务&lt;/li&gt;
&lt;li&gt;支持按设备、按游戏精细化控制&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;支持的系统和架构&lt;a href=&quot;#支持的系统和架构&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;系统版本支持&lt;a href=&quot;#系统版本支持&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;✅ &lt;strong&gt;支持&lt;/strong&gt;：OpenWrt 19.x ~ 最新版本&lt;br /&gt;
⚠️ &lt;strong&gt;OpenWrt 22.03 及以上&lt;/strong&gt;：需要额外安装 &lt;code&gt;iptables-nft&lt;/code&gt; 兼容层&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;架构支持&lt;a href=&quot;#架构支持&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&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;code&gt;aarch64&lt;/code&gt;&lt;/td&gt;&lt;td&gt;ARM 64位&lt;/td&gt;&lt;td&gt;树莓派 4、大部分现代 ARM 路由器&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;arm&lt;/code&gt;&lt;/td&gt;&lt;td&gt;ARM 32位&lt;/td&gt;&lt;td&gt;较老的 ARM 路由器&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;mipsel&lt;/code&gt;&lt;/td&gt;&lt;td&gt;MIPS 小端&lt;/td&gt;&lt;td&gt;大部分联发科路由器&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;x86_64&lt;/code&gt;&lt;/td&gt;&lt;td&gt;x86 64位&lt;/td&gt;&lt;td&gt;软路由、虚拟机&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;strong&gt;如何查看架构&lt;/strong&gt;：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;grep&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;^DISTRIB_ARCH&apos;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/etc/openwrt_release&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;安装方法&lt;a href=&quot;#安装方法&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;方法一：官方安装脚本（推荐）&lt;a href=&quot;#方法一官方安装脚本推荐&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;这是网易官方提供的安装方式，自动识别架构并下载对应版本。&lt;/p&gt;&lt;section&gt;&lt;h4&gt;1. SSH 连接路由器&lt;a href=&quot;#1-ssh-连接路由器&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;查看路由器 IP&lt;/strong&gt;：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Windows：&lt;code&gt;Win + R&lt;/code&gt; → 输入 &lt;code&gt;cmd&lt;/code&gt; → 输入 &lt;code&gt;ipconfig&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;macOS/Linux：终端输入 &lt;code&gt;ip route | grep default&lt;/code&gt; 或 &lt;code&gt;ifconfig&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;路由器 IP 通常是 &lt;code&gt;192.168.1.1&lt;/code&gt; 或 &lt;code&gt;192.168.3.1&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;SSH 连接&lt;/strong&gt;（将 IP 替换为你的路由器 IP）：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ssh&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;root@192.168.1.1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;输入路由器密码后进入命令行。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;2. 下载安装脚本&lt;a href=&quot;#2-下载安装脚本&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/tmp&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;wget&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;https://uurouter.gdl.netease.com/uuplugin-script/openwrt/install/v2/install.sh&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;3. 运行安装脚本&lt;a href=&quot;#3-运行安装脚本&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;大部分架构（自动识别）&lt;/strong&gt;：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;/bin/sh&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;install.sh&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;openwrt&lt;/span&gt;&lt;span&gt; $(&lt;/span&gt;&lt;span&gt;uname&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-m&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;MIPS 大端架构&lt;/strong&gt;（如果上面命令安装失败且 SN 为空）：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;/bin/sh&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;install.sh&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;openwrt&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;mipseb&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;安装成功后会显示设备 SN 码：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sn=94:83:c4:cc:ad:7c&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;保存这个 SN 码&lt;/strong&gt;，后面绑定时需要用到。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;4. 检查 TUN 模块&lt;a href=&quot;#4-检查-tun-模块&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;查看是否已安装 kmod-tun&lt;/strong&gt;：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;opkg&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;list-installed&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;kmod-tun&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;如果没有输出，需要安装&lt;/strong&gt;：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;opkg&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;update&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;opkg&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;install&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;kmod-tun&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;验证 TUN 设备&lt;/strong&gt;：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ls&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/dev/net/tun&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;如果显示文件存在（如 &lt;code&gt;crw------- 1 root root ...&lt;/code&gt;），说明 TUN 模块正常。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;5. 启动服务&lt;a href=&quot;#5-启动服务&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;/etc/init.d/uuplugin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;enable&lt;/span&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;# 开机自启&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;/etc/init.d/uuplugin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;start&lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt;# 立即启动&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;检查服务状态&lt;/strong&gt;：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ps&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;w&lt;/span&gt;&lt;span&gt; | &lt;/span&gt;&lt;span&gt;grep&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;uuplugin&lt;/span&gt;&lt;span&gt; | &lt;/span&gt;&lt;span&gt;grep&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-v&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;grep&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;如果看到类似以下输出，说明运行正常：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;9230 root      5304 S    /tmp/uu/uuplugin /tmp/uu/uu.conf&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;方法二：第三方 APK 包&lt;a href=&quot;#方法二第三方-apk-包&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;这是社区维护的安装包，适用于 OpenWrt 25.12 及以后版本。&lt;/p&gt;&lt;section&gt;&lt;h4&gt;OpenWrt 25.12+ (APK 包管理器)&lt;a href=&quot;#openwrt-2512-apk-包管理器&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/tmp&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pkg_name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;uuplugin-latest-&lt;/span&gt;&lt;span&gt;$(&lt;/span&gt;&lt;span&gt;grep&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;^DISTRIB_ARCH&apos;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/etc/openwrt_release&lt;/span&gt;&lt;span&gt; | &lt;/span&gt;&lt;span&gt;awk&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-F&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;&apos;&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;{print $2}&apos;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;.apk&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;wget&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;https://github.com/ttc0419/uuplugin/releases/download/latest/&lt;/span&gt;&lt;span&gt;$pkg_name&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;apk&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;add&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--allow-untrusted&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;$pkg_name&lt;/span&gt;&lt;span&gt; || &lt;/span&gt;&lt;span&gt;echo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;不支持你的路由器架构！&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;OpenWrt 25.12 之前 (OPKG 包管理器)&lt;a href=&quot;#openwrt-2512-之前-opkg-包管理器&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/tmp&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pkg_name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;uuplugin_latest-1_&lt;/span&gt;&lt;span&gt;$(&lt;/span&gt;&lt;span&gt;grep&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;^DISTRIB_ARCH&apos;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/etc/openwrt_release&lt;/span&gt;&lt;span&gt; | &lt;/span&gt;&lt;span&gt;awk&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-F&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;&apos;&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;{print $2}&apos;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;.ipk&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;wget&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;https://github.com/ttc0419/uuplugin/releases/download/latest/&lt;/span&gt;&lt;span&gt;$pkg_name&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;opkg&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;install&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;$pkg_name&lt;/span&gt;&lt;span&gt; || &lt;/span&gt;&lt;span&gt;echo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;不支持你的路由器架构！&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;项目地址&lt;/strong&gt;：&lt;a href=&quot;https://github.com/ttc0419/uuplugin&quot;&gt;ttc0419/uuplugin&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;防火墙配置&lt;a href=&quot;#防火墙配置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;⚠️ &lt;strong&gt;重要&lt;/strong&gt;：OpenWrt 高版本（22.03+）需要调整防火墙规则才能正常加速。&lt;/p&gt;&lt;section&gt;&lt;h3&gt;通过 LuCI 网页配置&lt;a href=&quot;#通过-luci-网页配置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;打开浏览器，访问路由器管理后台（如 &lt;code&gt;http://192.168.1.1&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;进入 &lt;strong&gt;网络&lt;/strong&gt; → &lt;strong&gt;防火墙&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;将以下三项都改为 &lt;strong&gt;接受 (accept)&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;入站数据&lt;/li&gt;
&lt;li&gt;出站数据&lt;/li&gt;
&lt;li&gt;转发&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;点击 &lt;strong&gt;保存并应用&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;通过命令行配置&lt;a href=&quot;#通过命令行配置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;uci&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;set&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;firewall.@defaults[0].input=&apos;ACCEPT&apos;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;uci&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;set&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;firewall.@defaults[0].output=&apos;ACCEPT&apos;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;uci&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;set&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;firewall.@defaults[0].forward=&apos;ACCEPT&apos;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;uci&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;commit&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;firewall&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;/etc/init.d/firewall&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;restart&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;绑定与使用&lt;a href=&quot;#绑定与使用&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;1. 下载 UU 加速器 APP&lt;a href=&quot;#1-下载-uu-加速器-app&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;iOS&lt;/strong&gt;：App Store 搜索 “网易UU加速器”&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Android&lt;/strong&gt;：应用商店搜索 “网易UU加速器”&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;2. 在 APP 中绑定路由器&lt;a href=&quot;#2-在-app-中绑定路由器&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;打开 UU 加速器 APP&lt;/li&gt;
&lt;li&gt;点击底部 &lt;strong&gt;路由器加速&lt;/strong&gt; 标签&lt;/li&gt;
&lt;li&gt;点击 &lt;strong&gt;添加路由器&lt;/strong&gt; 或 &lt;strong&gt;绑定设备&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;输入之前保存的 &lt;strong&gt;设备 SN 码&lt;/strong&gt;（如 &lt;code&gt;94:83:c4:cc:ad:7c&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;绑定成功后，即可在 APP 中控制路由器加速&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;3. 使用加速&lt;a href=&quot;#3-使用加速&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;选择游戏&lt;/strong&gt;：在 APP 中选择要加速的游戏&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;选择设备&lt;/strong&gt;：可以为特定设备开启加速&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;开启加速&lt;/strong&gt;：点击启动，路由器会自动建立加速通道&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;常见问题排查&lt;a href=&quot;#常见问题排查&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;1. 安装后无法启动&lt;a href=&quot;#1-安装后无法启动&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;检查服务状态&lt;/strong&gt;：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;/etc/init.d/uuplugin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;status&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ps&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;w&lt;/span&gt;&lt;span&gt; | &lt;/span&gt;&lt;span&gt;grep&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;uuplugin&lt;/span&gt;&lt;span&gt; | &lt;/span&gt;&lt;span&gt;grep&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-v&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;grep&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;查看日志&lt;/strong&gt;：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;logread&lt;/span&gt;&lt;span&gt; | &lt;/span&gt;&lt;span&gt;grep&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-i&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;uu&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;常见原因&lt;/strong&gt;：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;TUN 模块未安装或未加载&lt;/li&gt;
&lt;li&gt;防火墙规则阻止&lt;/li&gt;
&lt;li&gt;架构不匹配&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;2. 提示 “Create or open pid file failed”&lt;a href=&quot;#2-提示-create-or-open-pid-file-failed&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;这通常说明服务已经在运行，检查进程：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ps&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;w&lt;/span&gt;&lt;span&gt; | &lt;/span&gt;&lt;span&gt;grep&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;uuplugin&lt;/span&gt;&lt;span&gt; | &lt;/span&gt;&lt;span&gt;grep&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-v&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;grep&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cat&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/var/run/uuplugin.pid&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;如果确实没有运行，删除 PID 文件后重启：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;rm&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-f&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/var/run/uuplugin.pid&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;/etc/init.d/uuplugin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;start&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;3. 找不到 SN 码或 SN 为空&lt;a href=&quot;#3-找不到-sn-码或-sn-为空&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;重新运行安装脚本&lt;/strong&gt;：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;/bin/sh&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;install.sh&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;openwrt&lt;/span&gt;&lt;span&gt; $(&lt;/span&gt;&lt;span&gt;uname&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-m&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;手动查看 MAC 地址&lt;/strong&gt;（SN 通常是 MAC 地址）：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ifconfig&lt;/span&gt;&lt;span&gt; | &lt;/span&gt;&lt;span&gt;grep&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;HWaddr&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ip&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;link&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;show&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;4. 加速不生效&lt;a href=&quot;#4-加速不生效&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;检查项&lt;/strong&gt;：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;防火墙规则&lt;/strong&gt;：确保已设置为 ACCEPT&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;uci&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;show&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;firewall.@defaults[0]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;路由表&lt;/strong&gt;：查看是否有加速路由&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ip&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;route&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;TUN 设备&lt;/strong&gt;：确认虚拟网卡已创建&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ifconfig&lt;/span&gt;&lt;span&gt; | &lt;/span&gt;&lt;span&gt;grep&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;tun&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;APP 绑定&lt;/strong&gt;：确保设备已在 APP 中绑定并开启加速&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;5. 升级 OpenWrt 后插件失效&lt;a href=&quot;#5-升级-openwrt-后插件失效&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;OpenWrt 升级通常会清空 &lt;code&gt;/tmp&lt;/code&gt; 目录，需要重新安装：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/tmp&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;wget&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;https://uurouter.gdl.netease.com/uuplugin-script/openwrt/install/v2/install.sh&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;/bin/sh&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;install.sh&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;openwrt&lt;/span&gt;&lt;span&gt; $(&lt;/span&gt;&lt;span&gt;uname&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-m&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;/etc/init.d/uuplugin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;enable&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;/etc/init.d/uuplugin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;start&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;总结&lt;a href=&quot;#总结&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;快速安装流程&lt;a href=&quot;#快速安装流程&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;span&gt;显示更多&lt;/span&gt;&lt;span&gt;显示更少&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 1. 下载并运行安装脚本&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/tmp&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;wget&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;https://uurouter.gdl.netease.com/uuplugin-script/openwrt/install/v2/install.sh&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;/bin/sh&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;install.sh&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;openwrt&lt;/span&gt;&lt;span&gt; $(&lt;/span&gt;&lt;span&gt;uname&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-m&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 2. 安装 TUN 模块（如果需要）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;opkg&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;update&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;opkg&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;install&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;kmod-tun&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 3. 启动服务&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;/etc/init.d/uuplugin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;enable&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;/etc/init.d/uuplugin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;start&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 4. 配置防火墙（命令行方式）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;uci&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;set&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;firewall.@defaults[0].input=&apos;ACCEPT&apos;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;uci&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;set&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;firewall.@defaults[0].output=&apos;ACCEPT&apos;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;uci&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;set&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;firewall.@defaults[0].forward=&apos;ACCEPT&apos;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;uci&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;commit&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;firewall&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;/etc/init.d/firewall&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;restart&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;显示更多&lt;/span&gt;&lt;span&gt;显示更少&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;关键要点&lt;a href=&quot;#关键要点&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;✅ &lt;strong&gt;支持版本&lt;/strong&gt;：OpenWrt 19.x ~ 最新版本&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;需要模块&lt;/strong&gt;：&lt;code&gt;kmod-tun&lt;/code&gt; 必须安装&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;防火墙&lt;/strong&gt;：高版本需要设置为 ACCEPT&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;绑定方式&lt;/strong&gt;：使用手机 APP 扫描 SN 码绑定&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;适用场景&lt;/strong&gt;：主机游戏加速、多设备同时加速&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;参考资源&lt;a href=&quot;#参考资源&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://router.uu.163.com&quot;&gt;网易 UU 加速器官方教程&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/ttc0419/uuplugin&quot;&gt;第三方安装包项目&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://openwrt.org/docs/start&quot;&gt;OpenWrt 官方文档&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;p&gt;如果遇到其他问题，可以：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;查看 OpenWrt 系统日志：&lt;code&gt;logread&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;检查插件运行日志：&lt;code&gt;logread | grep -i uu&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;访问 UU 加速器官方支持页面获取帮助&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>重写 VRChat 翻译助手：当 VRCT 的网络问题让人抓狂</title><link>https://blog.kaguyaring.top/posts/vrc-gotrans-rewrite/</link><guid isPermaLink="true">https://blog.kaguyaring.top/posts/vrc-gotrans-rewrite/</guid><description>VRCT 模型下载困难、配置繁琐？那就自己写一个。Tauri + React + Python，从零构建开箱即用的 VRChat 实时翻译工具。</description><pubDate>Fri, 10 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;重写 VRChat 翻译助手：当 VRCT 的网络问题让人抓狂&lt;a href=&quot;#重写-vrchat-翻译助手当-vrct-的网络问题让人抓狂&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;目录&lt;a href=&quot;#目录&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Tip&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;可直接点击文字跳转至对应章节&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#%E4%B8%BA%E4%BB%80%E4%B9%88%E8%A6%81%E9%87%8D%E5%86%99&quot;&gt;为什么要重写&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E6%8A%80%E6%9C%AF%E9%80%89%E5%9E%8B&quot;&gt;技术选型&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1&quot;&gt;架构设计&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E6%A0%B8%E5%BF%83%E5%8A%9F%E8%83%BD%E5%AE%9E%E7%8E%B0&quot;&gt;核心功能实现&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E5%BC%80%E5%8F%91%E4%B8%AD%E7%9A%84%E5%9D%91&quot;&gt;开发中的坑&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E4%BD%BF%E7%94%A8%E4%BD%93%E9%AA%8C&quot;&gt;使用体验&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E6%9C%AA%E6%9D%A5%E8%AE%A1%E5%88%92&quot;&gt;未来计划&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E6%80%BB%E7%BB%93&quot;&gt;总结&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;为什么要重写&lt;a href=&quot;#为什么要重写&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/Sharrnah/VRCTranslator&quot;&gt;VRCT&lt;/a&gt; 是个很棒的 VRChat 翻译工具，功能强大，支持语音识别和实时翻译。但用起来有几个让人头疼的问题：&lt;/p&gt;&lt;section&gt;&lt;h3&gt;VRCT 的痛点&lt;a href=&quot;#vrct-的痛点&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;网络问题&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;模型文件托管在 Hugging Face&lt;/li&gt;
&lt;li&gt;国内下载经常失败或速度极慢&lt;/li&gt;
&lt;li&gt;需要手动配置镜像源或代理&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;配置繁琐&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;需要手动下载模型文件&lt;/li&gt;
&lt;li&gt;配置路径容易出错&lt;/li&gt;
&lt;li&gt;首次使用门槛高&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;启动卡顿&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;启动时立即加载 AI 模型&lt;/li&gt;
&lt;li&gt;模型加载需要几秒钟&lt;/li&gt;
&lt;li&gt;这段时间整个应用卡死&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;我的解决思路&lt;a href=&quot;#我的解决思路&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;既然问题这么明显，那就重写一个：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;懒加载模型&lt;/strong&gt;：启动时不加载，首次翻译时才加载，避免启动卡顿&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;自动化配置&lt;/strong&gt;：首次启动向导，引导用户下载模型，降低使用门槛&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;现代化架构&lt;/strong&gt;：Tauri + React + Python，UI 和 AI 推理分离&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;开箱即用&lt;/strong&gt;：尽可能减少配置步骤&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;于是就有了 &lt;strong&gt;VRC-GoTrans&lt;/strong&gt;。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;技术选型&lt;a href=&quot;#技术选型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;为什么选 Tauri？&lt;a href=&quot;#为什么选-tauri&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;最初考虑过 Electron，但 Electron 打包体积太大（动辄 100MB+），而且内存占用高。&lt;/p&gt;&lt;p&gt;Tauri 的优势：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;体积小&lt;/strong&gt;：打包后只有几 MB（不含 Python 运行时）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;性能好&lt;/strong&gt;：基于系统 WebView，内存占用低&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;安全性&lt;/strong&gt;：Rust 后端，类型安全&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;跨平台&lt;/strong&gt;：Windows、macOS、Linux 都支持&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;为什么选 React？&lt;a href=&quot;#为什么选-react&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;前端框架选择 React 19，主要原因：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;生态成熟&lt;/strong&gt;：组件库、工具链完善&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Radix UI&lt;/strong&gt;：无障碍、可定制的组件库&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TypeScript&lt;/strong&gt;：类型安全，减少运行时错误&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;为什么用 Python Sidecar？&lt;a href=&quot;#为什么用-python-sidecar&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;AI 推理需要 Python 生态（llama-cpp-python、faster-whisper），但 Tauri 主进程是 Rust。&lt;/p&gt;&lt;p&gt;解决方案：&lt;strong&gt;Sidecar 模式&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Python 以独立进程运行&lt;/li&gt;
&lt;li&gt;通过 HTTP 接口与 Rust 通信&lt;/li&gt;
&lt;li&gt;AI 推理不阻塞主应用&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;技术栈总览&lt;a href=&quot;#技术栈总览&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;前端：React 19 + TypeScript + Radix UI + Vite&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;桌面壳：Tauri 2 (Rust)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;AI 推理：Python 3.11 + llama-cpp-python + aiohttp&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;包管理：uv (Python) + pnpm (Node.js)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;架构设计&lt;a href=&quot;#架构设计&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;整体架构&lt;a href=&quot;#整体架构&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;┌─────────────────────────────────────────────────┐&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│            React 前端（Tauri WebView）           │&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│  - 用户界面                                      │&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│  - 配置管理                                      │&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│  - 翻译日志                                      │&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;└─────────────┬───────────────────────────────────┘&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span&gt;│ Tauri IPC&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;┌─────────────▼───────────────────────────────────┐&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│               Rust 后端（Tauri 2）              │&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│  - OSC 客户端（rosc）                            │&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│  - Sidecar 生命周期管理                         │&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│  - 配置持久化                                    │&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│  - 系统信息查询                                  │&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;└─────────────┬───────────────────────────────────┘&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span&gt;│ HTTP (127.0.0.1)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;┌─────────────▼───────────────────────────────────┐&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│          Python Sidecar（uv 管理）              │&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│  - llama-cpp-python 推理                        │&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│  - HY-MT1.5 模型加载                            │&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│  - 异步 HTTP 服务（aiohttp）                     │&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;└─────────────────────────────────────────────────┘&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span&gt;↓ OSC (UDP)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;┌─────────────────────────────────────────────────┐&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│              VRChat (OSC 端口 9000)             │&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;└─────────────────────────────────────────────────┘&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;显示更多&lt;/span&gt;&lt;span&gt;显示更少&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;数据流&lt;a href=&quot;#数据流&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;用户输入文本&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;↓&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;React 组件调用 Tauri 命令&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;↓&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Rust 后端转发到 Python Sidecar (HTTP POST /translate)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;↓&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Python 加载 HY-MT1.5 GGUF 模型&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;↓&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;llama-cpp-python 推理生成翻译&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;↓&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;返回翻译结果（JSON）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;↓&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Rust 通过 rosc 发送 OSC 消息到 VRChat&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;↓&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;VRChat 聊天框显示翻译&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;显示更多&lt;/span&gt;&lt;span&gt;显示更少&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;为什么要三层分离？&lt;a href=&quot;#为什么要三层分离&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;UI 层（React）&lt;/strong&gt;：负责界面交互，不关心底层实现&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Shell 层（Rust）&lt;/strong&gt;：负责系统调用、进程管理、网络通信&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI 层（Python）&lt;/strong&gt;：负责模型推理，不阻塞主进程&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;这样做的好处：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;UI 永远不会因为 AI 推理而卡顿&lt;/li&gt;
&lt;li&gt;Python 进程崩溃不会影响主应用&lt;/li&gt;
&lt;li&gt;各层独立开发、测试、部署&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;核心功能实现&lt;a href=&quot;#核心功能实现&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;1. Python Sidecar 自动引导&lt;a href=&quot;#1-python-sidecar-自动引导&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;问题&lt;/strong&gt;：用户不一定安装了 Python，也不知道如何配置环境。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;解决方案&lt;/strong&gt;：使用 &lt;code&gt;uv&lt;/code&gt; 自动安装 Python 和依赖。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;实现&lt;/strong&gt;（&lt;code&gt;src-tauri/src/sidecar.rs&lt;/code&gt;）：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pub&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;async&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;fn&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;bootstrap_and_start&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;app&lt;/span&gt;&lt;span&gt;: &amp;amp;&lt;/span&gt;&lt;span&gt;AppHandle&lt;/span&gt;&lt;span&gt;) -&amp;gt; &lt;/span&gt;&lt;span&gt;Result&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;SidecarHandle&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;SidecarError&lt;/span&gt;&lt;span&gt;&amp;gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;let&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;src_python&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;src_python_dir&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;// 自动运行 uv sync，安装 Python 3.11 + 依赖&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;run_uv_sync&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;app&lt;/span&gt;&lt;span&gt;, &amp;amp;&lt;/span&gt;&lt;span&gt;src_python&lt;/span&gt;&lt;span&gt;).&lt;/span&gt;&lt;span&gt;await&lt;/span&gt;&lt;span&gt;?;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;// 启动 Python sidecar&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;start_sidecar&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;app&lt;/span&gt;&lt;span&gt;, &amp;amp;&lt;/span&gt;&lt;span&gt;src_python&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;model_path&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;as_deref&lt;/span&gt;&lt;span&gt;()).&lt;/span&gt;&lt;span&gt;await&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;效果&lt;/strong&gt;：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;首次运行时，自动下载 Python 3.11&lt;/li&gt;
&lt;li&gt;自动安装 llama-cpp-python、aiohttp 等依赖&lt;/li&gt;
&lt;li&gt;支持镜像源配置（清华、阿里云、豆瓣、PyPI）&lt;/li&gt;
&lt;li&gt;用户完全无感知&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;2. 懒加载翻译模型&lt;a href=&quot;#2-懒加载翻译模型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;问题&lt;/strong&gt;：VRCT 启动时立即加载模型，导致启动卡顿。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;解决方案&lt;/strong&gt;：首次翻译时才加载模型。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;实现&lt;/strong&gt;（&lt;code&gt;src-python/src/vrc_gotrans/translator/local.py&lt;/code&gt;）：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;LocalTranslator&lt;/span&gt;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;def&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;__init__&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;self&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;model_path&lt;/span&gt;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;str&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; ...&lt;/span&gt;&lt;span&gt;):&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;self&lt;/span&gt;&lt;span&gt;&lt;span&gt;._llm: Llama &lt;/span&gt;&lt;span&gt;|&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;None&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;None&lt;/span&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;# 懒加载&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;self&lt;/span&gt;&lt;span&gt;&lt;span&gt;._lock &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; threading.&lt;/span&gt;&lt;span&gt;Lock&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;def&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;_call_sync&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;self&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;prompt&lt;/span&gt;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;str&lt;/span&gt;&lt;span&gt;) -&amp;gt; &lt;/span&gt;&lt;span&gt;str&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;with&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;self&lt;/span&gt;&lt;span&gt;._lock:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;self&lt;/span&gt;&lt;span&gt;._llm &lt;/span&gt;&lt;span&gt;is&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;None&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;                &lt;/span&gt;&lt;span&gt;# 首次翻译时才加载模型&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;                &lt;/span&gt;&lt;span&gt;self&lt;/span&gt;&lt;span&gt;&lt;span&gt;._llm &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Llama&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span&gt;model_path&lt;/span&gt;&lt;span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;...&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;/span&gt;&lt;span&gt;n_ctx&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;1024&lt;/span&gt;&lt;span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;...&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;result &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;self&lt;/span&gt;&lt;span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;_llm&lt;/span&gt;&lt;span&gt;(prompt, **&lt;/span&gt;&lt;span&gt;_GEN_KW&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; result[&lt;/span&gt;&lt;span&gt;&quot;choices&quot;&lt;/span&gt;&lt;span&gt;][&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;][&lt;/span&gt;&lt;span&gt;&quot;text&quot;&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;优势&lt;/strong&gt;：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;启动时不加载模型，启动速度快&lt;/li&gt;
&lt;li&gt;首次翻译时加载，用户有心理预期&lt;/li&gt;
&lt;li&gt;线程安全（&lt;code&gt;threading.Lock&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;推理在线程池执行，不阻塞 asyncio 事件循环&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;3. VRChat OSC 集成&lt;a href=&quot;#3-vrchat-osc-集成&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;问题&lt;/strong&gt;：如何将翻译结果发送到 VRChat 聊天框？&lt;/p&gt;&lt;p&gt;&lt;strong&gt;解决方案&lt;/strong&gt;：通过 OSC（Open Sound Control）协议。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;实现&lt;/strong&gt;（&lt;code&gt;src-tauri/src/osc.rs&lt;/code&gt;）：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pub&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;fn&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;send_chatbox_message&lt;/span&gt;&lt;span&gt;(&amp;amp;&lt;/span&gt;&lt;span&gt;self&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;message&lt;/span&gt;&lt;span&gt;: &amp;amp;&lt;/span&gt;&lt;span&gt;str&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;send_immediately&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;bool&lt;/span&gt;&lt;span&gt;) -&amp;gt; &lt;/span&gt;&lt;span&gt;Result&lt;/span&gt;&lt;span&gt;&amp;lt;(), &lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt;&amp;gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;let&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;msg&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;OscMessage&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;addr&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;/chatbox/input&quot;&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;to_string&lt;/span&gt;&lt;span&gt;(),&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;args&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;vec!&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;OscType&lt;/span&gt;&lt;span&gt;::&lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;truncated&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;to_string&lt;/span&gt;&lt;span&gt;()),&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;OscType&lt;/span&gt;&lt;span&gt;::&lt;/span&gt;&lt;span&gt;Bool&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;send_immediately&lt;/span&gt;&lt;span&gt;),&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;],&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;let&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;packet&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;OscPacket&lt;/span&gt;&lt;span&gt;::&lt;/span&gt;&lt;span&gt;Message&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;msg&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;let&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;buf&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;rosc&lt;/span&gt;&lt;span&gt;::&lt;/span&gt;&lt;span&gt;encoder&lt;/span&gt;&lt;span&gt;::&lt;/span&gt;&lt;/span&gt;&lt;span&gt;encode&lt;/span&gt;&lt;span&gt;(&amp;amp;&lt;/span&gt;&lt;span&gt;packet&lt;/span&gt;&lt;span&gt;)?;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;self&lt;/span&gt;&lt;span&gt;.socket.&lt;/span&gt;&lt;span&gt;send_to&lt;/span&gt;&lt;span&gt;(&amp;amp;&lt;/span&gt;&lt;span&gt;buf&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;self&lt;/span&gt;&lt;span&gt;.target_addr)?;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;Ok&lt;/span&gt;&lt;span&gt;(())&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;支持的 OSC 地址&lt;/strong&gt;：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/chatbox/input&lt;/code&gt; - 发送消息到聊天框（最多 144 字符）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/chatbox/typing&lt;/code&gt; - 显示/隐藏打字指示器&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;效果&lt;/strong&gt;：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;翻译结果自动显示在 VRChat 聊天框&lt;/li&gt;
&lt;li&gt;延迟低于 10ms（本地 UDP）&lt;/li&gt;
&lt;li&gt;支持打字指示器&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;4. 首次启动向导&lt;a href=&quot;#4-首次启动向导&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;问题&lt;/strong&gt;：新用户不知道如何配置。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;解决方案&lt;/strong&gt;：首次启动时引导用户配置。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;实现&lt;/strong&gt;（&lt;code&gt;src/components/FirstRunWizard.tsx&lt;/code&gt;）：&lt;/p&gt;&lt;p&gt;&lt;strong&gt;5 步引导流程&lt;/strong&gt;：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;欢迎页面&lt;/strong&gt;：介绍 VRC-GoTrans&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;翻译引擎选择&lt;/strong&gt;：在线 API vs 本地模型&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;模型下载/定位&lt;/strong&gt;：自动下载或手动选择模型文件&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OSC 配置&lt;/strong&gt;：默认端口 9000，可自定义&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;完成页面&lt;/strong&gt;：配置完成，开始使用&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;配置持久化到 &lt;code&gt;~/.vrc-gotrans/config.json&lt;/code&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;5. 类型安全的多语言支持&lt;a href=&quot;#5-类型安全的多语言支持&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;问题&lt;/strong&gt;：多语言翻译容易漏 key 或写错。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;解决方案&lt;/strong&gt;：TypeScript 类型约束。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;实现&lt;/strong&gt;（&lt;code&gt;src/locales/&lt;/code&gt;）：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;// zh-Hans.ts 定义类型&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;export&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;zhHans&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;app&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; { &lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;VRC-GoTrans&quot;&lt;/span&gt;&lt;span&gt; },&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;translate&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; { &lt;/span&gt;&lt;span&gt;input&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;输入文本&quot;&lt;/span&gt;&lt;span&gt; },&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;// ...&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;export&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;type&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;TranslationShape&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;typeof&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;zhHans&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;// 其他语言必须匹配此类型&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;en&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;TranslationShape&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;app&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; { &lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;VRC-GoTrans&quot;&lt;/span&gt;&lt;span&gt; },&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;translate&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; { &lt;/span&gt;&lt;span&gt;input&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;Enter text&quot;&lt;/span&gt;&lt;span&gt; },&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;// 缺 key 会编译失败&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;效果&lt;/strong&gt;：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;编译时检查，缺 key 会报错&lt;/li&gt;
&lt;li&gt;支持 4 种语言：简体中文、English、日本語、한국어&lt;/li&gt;
&lt;li&gt;类型安全，减少运行时错误&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;开发中的坑&lt;a href=&quot;#开发中的坑&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;1. llama-cpp-python 编译问题&lt;a href=&quot;#1-llama-cpp-python-编译问题&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;问题&lt;/strong&gt;：llama-cpp-python 依赖 C++ 编译器，Windows 上编译困难。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;解决方案&lt;/strong&gt;：使用预编译的 wheel 包。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;tool&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;uv&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;find-links&lt;/span&gt;&lt;span&gt; = [&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;https://github.com/abetlen/llama-cpp-python/releases/download/v0.3.33/&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;2. Sidecar 握手超时&lt;a href=&quot;#2-sidecar-握手超时&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;问题&lt;/strong&gt;：Python sidecar 启动慢，Rust 端等待超时。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;解决方案&lt;/strong&gt;：握手机制 + 健康检查。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;// 等待 sidecar 启动&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;for&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;_&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;in&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;..&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;health_check&lt;/span&gt;&lt;span&gt;().&lt;/span&gt;&lt;span&gt;await&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;is_ok&lt;/span&gt;&lt;span&gt;() {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Ok&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;handle&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;tokio&lt;/span&gt;&lt;span&gt;::&lt;/span&gt;&lt;span&gt;time&lt;/span&gt;&lt;span&gt;::&lt;/span&gt;&lt;span&gt;sleep&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;Duration&lt;/span&gt;&lt;span&gt;::&lt;/span&gt;&lt;/span&gt;&lt;span&gt;from_millis&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;)).&lt;/span&gt;&lt;span&gt;await&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;3. OSC 消息长度限制&lt;a href=&quot;#3-osc-消息长度限制&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;问题&lt;/strong&gt;：VRChat 聊天框最多 144 字符。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;解决方案&lt;/strong&gt;：自动截断。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;let&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;truncated&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;message&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;len&lt;/span&gt;&lt;span&gt;() &amp;gt; &lt;/span&gt;&lt;span&gt;144&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;amp;&lt;/span&gt;&lt;span&gt;message&lt;/span&gt;&lt;span&gt;[..&lt;/span&gt;&lt;span&gt;144&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;} &lt;/span&gt;&lt;span&gt;else&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;message&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;4. 模型推理阻塞事件循环&lt;a href=&quot;#4-模型推理阻塞事件循环&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;问题&lt;/strong&gt;：llama-cpp-python 推理是同步的，会阻塞 asyncio。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;解决方案&lt;/strong&gt;：在线程池执行。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;async&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;def&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;translate&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;self&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;text&lt;/span&gt;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;str&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; ...&lt;/span&gt;&lt;span&gt;) -&amp;gt; &lt;/span&gt;&lt;span&gt;str&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;loop &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; asyncio.&lt;/span&gt;&lt;span&gt;get_running_loop&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;await&lt;/span&gt;&lt;span&gt;&lt;span&gt; loop.&lt;/span&gt;&lt;span&gt;run_in_executor&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span&gt;self&lt;/span&gt;&lt;span&gt;._executor, &lt;/span&gt;&lt;span&gt;self&lt;/span&gt;&lt;span&gt;._call_sync, prompt)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;使用体验&lt;a href=&quot;#使用体验&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;安装&lt;a href=&quot;#安装&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;从 &lt;a href=&quot;https://github.com/KaguyaRing/VRC-GoTrans/releases&quot;&gt;Releases&lt;/a&gt; 下载安装包&lt;/li&gt;
&lt;li&gt;运行安装程序&lt;/li&gt;
&lt;li&gt;首次启动会自动安装 Python 环境（约 1-2 分钟）&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;首次配置&lt;a href=&quot;#首次配置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;选择界面语言（简体中文 / English / 日本語 / 한국어）&lt;/li&gt;
&lt;li&gt;选择翻译引擎（推荐：本地模型）&lt;/li&gt;
&lt;li&gt;下载/定位 HY-MT 模型文件（约 1.1GB）&lt;/li&gt;
&lt;li&gt;配置 OSC（默认端口 9000）&lt;/li&gt;
&lt;li&gt;完成设置&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;日常使用&lt;a href=&quot;#日常使用&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;启动 VRChat 并启用 OSC（Settings → OSC → Enable OSC）&lt;/li&gt;
&lt;li&gt;启动 VRC-GoTrans&lt;/li&gt;
&lt;li&gt;点击”开始”按钮启动翻译会话&lt;/li&gt;
&lt;li&gt;输入要翻译的文本，按 Enter 发送&lt;/li&gt;
&lt;li&gt;翻译结果自动显示在 VRChat 聊天框&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;性能指标&lt;a href=&quot;#性能指标&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;模型加载时间&lt;/strong&gt;：~1.5 秒（首次）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;翻译延迟&lt;/strong&gt;：0.3-0.5 秒/句（CPU，Q4_K_M 量化）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;内存占用&lt;/strong&gt;：~1.5-2GB（模型加载后）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;磁盘空间&lt;/strong&gt;：~2GB（含模型）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OSC 延迟&lt;/strong&gt;：&amp;lt;10ms（本地 UDP）&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;与 VRCT 的对比&lt;a href=&quot;#与-vrct-的对比&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;







































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;特性&lt;/th&gt;&lt;th&gt;VRC-GoTrans&lt;/th&gt;&lt;th&gt;VRCT&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;td&gt;慢（立即加载模型）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;配置难度&lt;/td&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;td&gt;高（Hugging Face）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;UI 现代化&lt;/td&gt;&lt;td&gt;React 19&lt;/td&gt;&lt;td&gt;PyQt&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;语音识别&lt;/td&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;Windows（macOS/Linux 开发中）&lt;/td&gt;&lt;td&gt;Windows&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;未来计划&lt;a href=&quot;#未来计划&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;短期&lt;a href=&quot;#短期&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;✅ OSC 集成（已完成）&lt;/li&gt;
&lt;li&gt;🚧 faster-whisper 语音识别&lt;/li&gt;
&lt;li&gt;📋 麦克风/扬声器设备选择&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;中期&lt;a href=&quot;#中期&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;macOS/Linux 支持&lt;/li&gt;
&lt;li&gt;GPU 加速（CUDA）&lt;/li&gt;
&lt;li&gt;批量消息队列&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;长期&lt;a href=&quot;#长期&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;实时语音翻译&lt;/li&gt;
&lt;li&gt;自定义翻译模型训练&lt;/li&gt;
&lt;li&gt;云端配置同步&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;总结&lt;a href=&quot;#总结&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;重写 VRC-GoTrans 的初衷很简单：VRCT 的网络问题和配置繁琐让人抓狂。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;这次重写学到的：&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Tauri 的 Sidecar 模式很适合集成 Python AI 应用&lt;/li&gt;
&lt;li&gt;懒加载模型可以显著改善启动体验&lt;/li&gt;
&lt;li&gt;首次启动向导可以大幅降低使用门槛&lt;/li&gt;
&lt;li&gt;类型安全（TypeScript + Rust）可以减少很多运行时错误&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;这个项目适合谁？&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;VRChat 玩家，想用翻译但嫌 VRCT 配置麻烦&lt;/li&gt;
&lt;li&gt;开发者，想学习 Tauri + React + Python 的跨语言集成&lt;/li&gt;
&lt;li&gt;对 AI 桌面应用开发感兴趣的人&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;项目地址：&lt;/strong&gt;
&lt;a href=&quot;https://github.com/KaguyaRing/VRC-GoTrans&quot;&gt;https://github.com/KaguyaRing/VRC-GoTrans&lt;/a&gt;&lt;/p&gt;&lt;p&gt;如果你也在玩 VRChat，可以试试这个工具。有问题欢迎提 Issue，也欢迎加 QQ 群交流：&lt;a href=&quot;https://qm.qq.com/q/MS6J5wEOOY&quot;&gt;辉夜铃Ring的猫猫头窝&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;谢谢阅读。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;参考资料&lt;a href=&quot;#参考资料&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/KaguyaRing/VRC-GoTrans&quot;&gt;VRC-GoTrans 项目&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/Sharrnah/VRCTranslator&quot;&gt;VRCT 项目&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tauri.app/&quot;&gt;Tauri 官方文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.vrchat.com/docs/osc-overview&quot;&gt;VRChat OSC 文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://huggingface.co/tencent/HY-MT1.5-1.8B-GGUF&quot;&gt;腾讯 HY-MT1.5 模型&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>Android 的 AVB 与启动校验</title><link>https://blog.kaguyaring.top/posts/android-avb/</link><guid isPermaLink="true">https://blog.kaguyaring.top/posts/android-avb/</guid><description>AVB、vbmeta、dm-verity、回滚保护、BL 带锁与解锁……把 Android 启动校验机制理一遍</description><pubDate>Wed, 08 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;Android 的 AVB 与启动校验&lt;a href=&quot;#android-的-avb-与启动校验&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;目录&lt;a href=&quot;#目录&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Tip&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;可直接点击文字跳转至对应章节&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#android-%E7%9A%84-avb-%E4%B8%8E%E5%90%AF%E5%8A%A8%E6%A0%A1%E9%AA%8C&quot;&gt;Android 的 AVB 与启动校验&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#%E7%9B%AE%E5%BD%95&quot;&gt;目录&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E7%AE%80%E4%BB%8B&quot;&gt;简介&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E4%BB%80%E4%B9%88%E6%98%AF-avb&quot;&gt;什么是 AVB&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#vbmeta-%E6%98%AF%E4%BB%80%E4%B9%88&quot;&gt;vbmeta 是什么&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#avb-%E7%9A%84%E5%B7%A5%E4%BD%9C%E6%B5%81%E7%A8%8B&quot;&gt;AVB 的工作流程&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#dm-verity&quot;&gt;dm-verity&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#bl-%E5%B8%A6%E9%94%81%E5%92%8C%E8%A7%A3%E9%94%81%E7%9A%84%E5%8C%BA%E5%88%AB&quot;&gt;BL 带锁和解锁的区别&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E4%B8%BA%E4%BB%80%E4%B9%88%E4%BF%AE%E6%94%B9%E4%BA%86-boot-%E6%88%96-vbmeta-%E5%BC%80%E4%B8%8D%E4%BA%86%E6%9C%BA&quot;&gt;为什么修改了 boot 或 vbmeta 开不了机&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E5%9B%9E%E6%BB%9A%E4%BF%9D%E6%8A%A4&quot;&gt;回滚保护&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99&quot;&gt;参考资料&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;简介&lt;a href=&quot;#简介&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;你有没有遇到过这种情况：明明镜像刷写进去了，fastboot 也没报错，结果重启之后设备就是起不来？或者更奇怪的是，系统是启动了，但 Wi-Fi 怎么都连不上？&lt;/p&gt;&lt;p&gt;很多人第一反应是”镜像有问题”或者”我刷写方法不对”。但其实，问题可能根本不在镜像本身，而是出在一个叫 AVB 的机制上。&lt;/p&gt;&lt;p&gt;AVB 是 Android 8 之后引入的启动校验机制。用原厂系统的时候你完全感觉不到它的存在，但一旦开始解锁 BL、刷写第三方镜像、修补 &lt;code&gt;boot&lt;/code&gt; 分区，AVB 就会跳出来”拦”你一下。如果不处理好它，轻则功能异常，重则直接开不了机。&lt;/p&gt;&lt;p&gt;那 AVB 到底在干什么？为什么它能”拦”住我们？我们一步步来看。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;什么是 AVB&lt;a href=&quot;#什么是-avb&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;AVB 全称是 Android Verified Boot。简单说，它就是一套”检查员”机制：在设备启动之前，Bootloader 会先检查关键分区有没有被动过手脚，签名是不是还在可信链中。&lt;/p&gt;&lt;p&gt;那它要检查哪些分区呢？通常包括：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;boot&lt;/code&gt; — 内核和 ramdisk 都在这里&lt;/li&gt;
&lt;li&gt;&lt;code&gt;init_boot&lt;/code&gt; — Android 13+ 设备拆出来的通用 ramdisk&lt;/li&gt;
&lt;li&gt;&lt;code&gt;vendor_boot&lt;/code&gt; — 厂商相关的启动内容&lt;/li&gt;
&lt;li&gt;&lt;code&gt;system&lt;/code&gt; — 系统主体文件&lt;/li&gt;
&lt;li&gt;以及其他被 &lt;code&gt;vbmeta&lt;/code&gt; 描述到的分区&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;这就引出了一个新问题：Bootloader 怎么知道要检查哪些分区？检查的标准又是什么？答案就在 &lt;code&gt;vbmeta&lt;/code&gt; 里。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;vbmeta 是什么&lt;a href=&quot;#vbmeta-是什么&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;你可以把 &lt;code&gt;vbmeta&lt;/code&gt; 理解成一份”检查清单”。Bootloader 在校验别的分区之前，会先读取这份清单，看看里面写了什么。&lt;/p&gt;&lt;p&gt;&lt;code&gt;vbmeta&lt;/code&gt; 里通常包含这些内容：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;分区描述信息（descriptor）&lt;/strong&gt; — 告诉 Bootloader 要检查哪些分区&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;哈希或哈希树&lt;/strong&gt; — 每个分区应该对应什么样的校验值&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;公钥和签名&lt;/strong&gt; — 用来验证这份清单本身是不是可信的&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;标志位（flags）&lt;/strong&gt; — 控制校验的严格程度&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;回滚保护用的版本索引&lt;/strong&gt; — 防止你降级到旧版本&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;如果你在教程里看到这些命令参数，别慌，它们都是在调整 &lt;code&gt;vbmeta&lt;/code&gt; 的行为：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;disable-verity&lt;/code&gt; — 关掉运行期的 &lt;code&gt;dm-verity&lt;/code&gt; 校验&lt;/li&gt;
&lt;li&gt;&lt;code&gt;disable-verification&lt;/code&gt; — 放宽 AVB 对分区的校验要求&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;很多教程让你”刷写 &lt;code&gt;vbmeta.img&lt;/code&gt;”或者”修补 &lt;code&gt;vbmeta&lt;/code&gt; 分区”，修改的就是这些标志位。&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;[!INFO]&lt;/p&gt;&lt;p&gt;有些设备不止一个 &lt;code&gt;vbmeta&lt;/code&gt;，还会拆成 &lt;code&gt;vbmeta_system&lt;/code&gt;、&lt;code&gt;vbmeta_vendor&lt;/code&gt; 之类。实现细节不同，但原理是一样的。&lt;/p&gt;&lt;/blockquote&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;AVB 的工作流程&lt;a href=&quot;#avb-的工作流程&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;理解了 &lt;code&gt;vbmeta&lt;/code&gt; 之后，整个流程就清楚了：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Bootloader 启动&lt;/strong&gt; — 设备开机，Bootloader 开始工作&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;读取 &lt;code&gt;vbmeta&lt;/code&gt;&lt;/strong&gt; — Bootloader 先去读这份”检查清单”，看看里面记录了什么&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;检查各个分区&lt;/strong&gt; — 按照清单里的 descriptor，逐个校验 &lt;code&gt;boot&lt;/code&gt;、&lt;code&gt;init_boot&lt;/code&gt;、&lt;code&gt;system&lt;/code&gt; 等分区的哈希和签名&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;全部通过&lt;/strong&gt; — 校验都过了，继续引导系统&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;任何一步失败&lt;/strong&gt; — 根据当前策略处理（BL 带锁时直接拒绝启动，BL 解锁时可能允许继续但会显示警告）&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;看起来很简单对吧？但这里藏着一个关键问题：&lt;strong&gt;如果你修改了 &lt;code&gt;boot&lt;/code&gt; 分区，但 &lt;code&gt;vbmeta&lt;/code&gt; 里记录的还是原来的哈希值，会发生什么？&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;答案是：校验失败。如果 BL 还带锁，设备直接拒绝启动。即使 BL 解锁了，很多设备也会因为校验不通过导致部分功能异常——比如 Wi-Fi 用不了。&lt;/p&gt;&lt;p&gt;这就是为什么很多教程会让你同时处理 &lt;code&gt;boot&lt;/code&gt; 和 &lt;code&gt;vbmeta&lt;/code&gt;：你不光要修改 &lt;code&gt;boot&lt;/code&gt;，还要让 &lt;code&gt;vbmeta&lt;/code&gt; 不再按原来的标准去校验它。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;dm-verity&lt;a href=&quot;#dm-verity&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;前面说的 AVB 是在启动前做检查。那系统启动之后呢？还会继续检查吗？&lt;/p&gt;&lt;p&gt;会的。这就是 &lt;code&gt;dm-verity&lt;/code&gt; 的作用——它负责&lt;strong&gt;运行期&lt;/strong&gt;的完整性校验。&lt;/p&gt;&lt;p&gt;&lt;code&gt;dm-verity&lt;/code&gt; 主要用在只读分区上，比如 &lt;code&gt;system&lt;/code&gt; 和 &lt;code&gt;vendor&lt;/code&gt;。系统每次读取数据块时，都会对照预先计算好的哈希树，检查内容有没有被改动过。如果某个块的哈希对不上，轻则报错，重则直接导致系统无法启动。&lt;/p&gt;&lt;p&gt;这就是为什么很多 Root 或修改系统分区的教程，都会让你处理 &lt;code&gt;disable-verity&lt;/code&gt; / &lt;code&gt;disable-verification&lt;/code&gt;，然后刷写一个修改过的 &lt;code&gt;vbmeta&lt;/code&gt;——目的就是让设备在运行时不再做这些严格的校验。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Warning&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;注意一个常见误区：&lt;strong&gt;解锁 BL 不等于 &lt;code&gt;dm-verity&lt;/code&gt; 自动失效&lt;/strong&gt;。很多设备即使解锁了 BL，依然会保留原厂的校验机制，除非你主动修改过相关分区。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;那这里又引出一个新问题：如果我解锁了 BL，但没有禁用 AVB 和 &lt;code&gt;dm-verity&lt;/code&gt;，修改 &lt;code&gt;boot&lt;/code&gt; 之后会怎样？&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;BL 带锁和解锁的区别&lt;a href=&quot;#bl-带锁和解锁的区别&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;这里先把 BL（Bootloader）带锁和解锁的区别说清楚，因为这直接决定了 AVB 会不会”拦”住你。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;BL 带锁时：&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Bootloader 只信任厂商认可的签名&lt;/li&gt;
&lt;li&gt;任何关键分区被修改，校验失败后设备通常直接拒绝启动&lt;/li&gt;
&lt;li&gt;如果没有 9008 授权或官方救砖工具，基本只能去售后或闲鱼买临时授权&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;BL 解锁后：&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;设备允许加载第三方引导程序&lt;/li&gt;
&lt;li&gt;你才能正常刷写 &lt;code&gt;boot&lt;/code&gt;、&lt;code&gt;init_boot&lt;/code&gt;、&lt;code&gt;vbmeta&lt;/code&gt; 这些关键分区&lt;/li&gt;
&lt;li&gt;重启时通常会显示”设备已解锁”的警告&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;但 AVB 的校验不会消失&lt;/strong&gt;，只是从”严格拒绝”变成”允许继续，但仍会警告或限制部分功能”&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;这就是很多人踩的坑：以为解锁 BL 之后就可以随便改了，结果发现修改 &lt;code&gt;boot&lt;/code&gt; 后 Wi-Fi 用不了，或者系统功能异常。原因就是 AVB 还在按原来的标准做校验，只不过不再直接拒绝启动而已。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;为什么修改了 boot 或 vbmeta 开不了机&lt;a href=&quot;#为什么修改了-boot-或-vbmeta-开不了机&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;现在我们可以回答开头的问题了：为什么明明刷写成功了，设备却起不来？&lt;/p&gt;&lt;p&gt;原因通常有这几种：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;你修改了 &lt;code&gt;boot&lt;/code&gt;，但 &lt;code&gt;vbmeta&lt;/code&gt; 里记录的还是原始校验值&lt;/strong&gt; — Bootloader 一对比，发现哈希对不上，校验失败&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;你修改了 &lt;code&gt;vbmeta&lt;/code&gt;，但没有用设备认可的密钥重新签名&lt;/strong&gt; — Bootloader 读取 &lt;code&gt;vbmeta&lt;/code&gt; 时发现签名不对，直接拒绝&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;你只修改了镜像，但没有处理 &lt;code&gt;disable-verity&lt;/code&gt; / &lt;code&gt;disable-verification&lt;/code&gt;&lt;/strong&gt; — 设备还在按严格标准做校验&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;设备还处在带锁状态&lt;/strong&gt; — Bootloader 根本不接受修改后的镜像&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;这就是为什么很多人”刷写了 Magisk 修补的 &lt;code&gt;boot.img&lt;/code&gt; 后开不了机”——不是 Magisk 有问题，而是 AVB 还在按原来的链做校验。你改了 &lt;code&gt;boot&lt;/code&gt;，但没有告诉 AVB”别再检查它了”。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Warning&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;如果设备还没解锁 BL，千万不要直接刷写修改过的 &lt;code&gt;boot&lt;/code&gt; 或 &lt;code&gt;vbmeta&lt;/code&gt;。先解锁，再刷写，最后处理 AVB。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;那怎么”告诉”AVB 别检查了呢？通常有两种办法：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;刷写一个禁用了校验的 &lt;code&gt;vbmeta&lt;/code&gt;&lt;/strong&gt; — 把标志位改成 &lt;code&gt;disable-verity&lt;/code&gt; 和 &lt;code&gt;disable-verification&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;用空的 &lt;code&gt;vbmeta&lt;/code&gt; 覆盖原来的&lt;/strong&gt; — 让 Bootloader 读不到校验信息，自然也就不检查了&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;具体用哪种方法，要看你的设备和你想达到的效果。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;回滚保护&lt;a href=&quot;#回滚保护&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;最后还有一个容易被忽略的机制：&lt;strong&gt;回滚保护&lt;/strong&gt;（Rollback Protection）。&lt;/p&gt;&lt;p&gt;你有没有遇到过这种情况：明明镜像版本更旧，但签名是对的，为什么还是刷写不进去？&lt;/p&gt;&lt;p&gt;这就是回滚保护在起作用。它的目的是&lt;strong&gt;防止设备被降级到旧版本&lt;/strong&gt;——因为旧版本可能存在已知的安全漏洞。&lt;/p&gt;&lt;p&gt;具体怎么实现的呢？&lt;code&gt;vbmeta&lt;/code&gt; 里会带一个回滚索引（rollback index），设备本地的安全存储（比如 TrustZone 或 TEE）也会记录一个当前允许的最低版本值。Bootloader 校验时会比较这两个值：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;如果你刷写进去的镜像版本&lt;strong&gt;更旧&lt;/strong&gt;，即使签名没问题，也可能直接被拒绝&lt;/li&gt;
&lt;li&gt;如果版本&lt;strong&gt;相同或更新&lt;/strong&gt;，才允许继续&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;这就是为什么有些设备”能把旧包刷写进去，fastboot 也没报错，但就是无法正常引导”——不是刷写失败了，而是回滚保护把它拦住了。&lt;/p&gt;&lt;p&gt;所以如果你想降级，光刷写镜像可能不够，还要看设备的回滚保护策略是不是允许。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;参考资料&lt;a href=&quot;#参考资料&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://source.android.com/docs/security/features/verifiedboot&quot;&gt;AOSP - Verified Boot&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://android.googlesource.com/platform/external/avb/+/master/README.md&quot;&gt;AOSP - AVB README&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://source.android.com/docs/security/features/verifiedboot/dm-verity&quot;&gt;AOSP - dm-verity&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>Android 的 Root 与定制 ROM</title><link>https://blog.kaguyaring.top/posts/android-root/</link><guid isPermaLink="true">https://blog.kaguyaring.top/posts/android-root/</guid><description>Root、su、Magisk、KernelSU、APatch、定制 ROM、GApps、国行与 EU 差异……把这块内容理一遍</description><pubDate>Wed, 08 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;Android 的 Root 与定制 ROM&lt;a href=&quot;#android-的-root-与定制-rom&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;目录&lt;a href=&quot;#目录&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Tip&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;可直接点击文字跳转至对应章节&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#android-%E7%9A%84-root-%E4%B8%8E%E5%AE%9A%E5%88%B6-rom&quot;&gt;Android 的 Root 与定制 ROM&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#%E7%9B%AE%E5%BD%95&quot;&gt;目录&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E7%AE%80%E4%BB%8B&quot;&gt;简介&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#root-%E4%B8%8E-su&quot;&gt;Root 与 su&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E4%B8%BB%E6%B5%81-root-%E6%96%B9%E6%A1%88&quot;&gt;主流 Root 方案&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#magisk&quot;&gt;Magisk&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#kernelsu&quot;&gt;KernelSU&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#kernelsu-next&quot;&gt;KernelSU-Next&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#apatch-%E4%B8%8E-sukisu-ultra&quot;&gt;APatch 与 SukiSU-Ultra&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E5%AE%9A%E5%88%B6-rom&quot;&gt;定制 ROM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#gapps&quot;&gt;GApps&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E5%9B%BD%E8%A1%8C%E4%B8%8E-eu-%E7%9A%84%E5%B7%AE%E5%BC%82&quot;&gt;国行与 EU 的差异&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99&quot;&gt;参考资料&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;简介&lt;a href=&quot;#简介&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;为什么要 Root？为什么要刷定制 ROM？&lt;/p&gt;&lt;p&gt;很多人并不是为了研究系统本身，而是因为原厂系统的各种限制：广告太多、后台限制太严、停更太快，或者 Google 服务体验不完整。Root 和定制 ROM 就是为了解决这些问题。&lt;/p&gt;&lt;p&gt;但在开始之前，先问自己几个问题：你真的需要 Root 吗？你的设备支持解锁 BL 吗？你能接受可能带来的风险吗？&lt;/p&gt;&lt;p&gt;如果答案是肯定的，那我们就来理一遍 Root 和定制 ROM 这块内容。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;Root 与 su&lt;a href=&quot;#root-与-su&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;先说清楚 Root 到底是什么。&lt;/p&gt;&lt;p&gt;Root 就是 Android 的最高权限。因为 Android 底层是 Linux，所以 Root 这个概念也是从 Linux 的 &lt;code&gt;root&lt;/code&gt; 用户来的。拿到 Root 后，你可以：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;修改系统文件&lt;/li&gt;
&lt;li&gt;运行各种需要高权限的模块&lt;/li&gt;
&lt;li&gt;安装需要深度访问的工具&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;但这也意味着风险。删错文件、刷写错模块、修改错权限，结果都可能比普通 App 崩掉麻烦得多。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;那 &lt;code&gt;su&lt;/code&gt; 是什么？&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;su&lt;/code&gt; 是 Linux 里的 &lt;code&gt;switch user&lt;/code&gt; 命令。Root 之后，很多 App 实际上就是通过调用 &lt;code&gt;su&lt;/code&gt; 去提权的。&lt;/p&gt;&lt;p&gt;Root 管理器（比如 Magisk）的作用就是控制这个过程：当某个 App 请求 Root 权限时，管理器会弹出授权提示，你可以选择允许、拒绝或者仅本次放行。它还会记录每个 App 的请求历史，方便你随时调整权限策略。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;主流 Root 方案&lt;a href=&quot;#主流-root-方案&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;现在主流的 Root 方案主要有这几种。它们的实现思路不同，适用场景也不一样。&lt;/p&gt;&lt;div&gt;Invalid directive. (&quot;github&quot; directive must be leaf type &quot;::github{repo=&quot;owner/repo&quot;}&quot;)&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>Android 的分区系统</title><link>https://blog.kaguyaring.top/posts/android-partitions/</link><guid isPermaLink="true">https://blog.kaguyaring.top/posts/android-partitions/</guid><description>boot、init_boot、vendor_boot、vbmeta、super、userdata、A/B、VAB、动态分区……把 Android 分区系统理一遍</description><pubDate>Wed, 08 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;Android 的分区系统&lt;a href=&quot;#android-的分区系统&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;目录&lt;a href=&quot;#目录&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Tip&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;可直接点击文字跳转至对应章节&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#android-%E7%9A%84%E5%88%86%E5%8C%BA%E7%B3%BB%E7%BB%9F&quot;&gt;Android 的分区系统&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#%E7%9B%AE%E5%BD%95&quot;&gt;目录&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E7%AE%80%E4%BB%8B&quot;&gt;简介&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E5%87%A0%E4%B8%AA%E6%9C%80%E5%B8%B8%E8%A7%81%E7%9A%84%E5%88%86%E5%8C%BA&quot;&gt;几个最常见的分区&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#a-only-%E4%B8%8E-ab&quot;&gt;A-Only 与 A/B&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#virtual-ab-%E4%B8%8E%E5%8A%A8%E6%80%81%E5%88%86%E5%8C%BA&quot;&gt;Virtual A/B 与动态分区&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#super-%E5%88%86%E5%8C%BA&quot;&gt;super 分区&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#init_boot&quot;&gt;init_boot&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E5%88%B7%E6%9C%BA%E6%97%B6%E6%9C%80%E5%B8%B8%E7%A2%B0%E5%88%B0%E7%9A%84%E5%87%A0%E4%B8%AA%E5%88%86%E5%8C%BA&quot;&gt;刷机时最常碰到的几个分区&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99&quot;&gt;参考资料&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;简介&lt;a href=&quot;#简介&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;你有没有想过：Android 系统是怎么组织的？为什么刷机教程里有时候让你刷 &lt;code&gt;boot&lt;/code&gt;，有时候让你刷 &lt;code&gt;init_boot&lt;/code&gt;？为什么有些设备有 &lt;code&gt;super&lt;/code&gt; 分区，有些没有？&lt;/p&gt;&lt;p&gt;这些都和 Android 的分区系统有关。由于 Android 版本不断迭代，新设备的分区结构已经比以前复杂不少。如果你后面要碰刷写、Root、AVB 这些，分区这块绕不过去。&lt;/p&gt;&lt;p&gt;我们一步步来理清楚。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;几个最常见的分区&lt;a href=&quot;#几个最常见的分区&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;先从最基本的说起：Android 设备上通常有哪些分区？它们各自负责什么？&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;boot&lt;/strong&gt; — 保存内核与 ramdisk。很多 Root 方案直接是以启动时侵入来提权的，所以经常要修改这个分区&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;init_boot&lt;/strong&gt; — Android 13+ 新设备常见，保存通用 ramdisk。这是 Google 为了实现 GKI（通用内核镜像）拆出来的&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;vendor_boot&lt;/strong&gt; — 厂商相关的 ramdisk 和设备树&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;system&lt;/strong&gt; — Android 系统主体文件，类似于 Windows 的 C:\Windows&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;vendor&lt;/strong&gt; — 厂商驱动与 HAL（硬件抽象层）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;vbmeta&lt;/strong&gt; — AVB 校验元数据（在 &lt;a href=&quot;/posts/Android-AVB&quot;&gt;AVB 那篇&lt;/a&gt; 已经细说过了）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;userdata&lt;/strong&gt; — 用户数据分区，你的照片、应用数据都在这里。格式化这个分区会清空数据&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;super&lt;/strong&gt; — 动态分区容器，里面可以切出多个逻辑分区（后面会详细说）&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;想知道你的设备上实际有哪些分区？可以用这个命令：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;adb&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;shell&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ls&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-la&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/dev/block/by-name/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;你可能会发现，有些分区名后面还带着 &lt;code&gt;_a&lt;/code&gt; 或 &lt;code&gt;_b&lt;/code&gt; 后缀。这就引出了下一个话题：A/B 分区。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;A-Only 与 A/B&lt;a href=&quot;#a-only-与-ab&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;你有没有遇到过这种情况：系统 OTA 更新到一半突然断电，然后设备就开不了机了？&lt;/p&gt;&lt;p&gt;早期的 Android 设备就是这样。它们只有一套分区（A-Only），OTA 更新时直接覆盖原分区。更新过程中如果出问题——断电、网络中断、文件损坏——很容易直接把系统刷坏。&lt;/p&gt;&lt;p&gt;Google 在 Android 7.0 引入了 A/B 分区来解决这个问题。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;A/B 分区的思路是什么？&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;准备两套槽位（&lt;code&gt;slot_a&lt;/code&gt; 和 &lt;code&gt;slot_b&lt;/code&gt;）：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;平时从一套启动（比如 &lt;code&gt;slot_a&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;更新的时候写另一套（&lt;code&gt;slot_b&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;写完之后切换槽位，重启时从新的槽位启动&lt;/li&gt;
&lt;li&gt;如果新槽位有问题，可以回退到旧槽位&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;这样 OTA 更稳定，更新失败也更容易回退。即使更新过程中断电，旧槽位的系统还是完整的，设备还能正常启动。&lt;/p&gt;&lt;p&gt;现在新设备基本都是 A/B 或者 Virtual A/B（后面会说），A-Only 越来越少见了。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;这对刷机有什么影响？&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;如果你的设备是 A/B 分区，刷写的时候要注意当前在哪个槽位。很多刷机工具会自动处理，但如果手动刷写，最好先确认一下：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;fastboot&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;getvar&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;current-slot&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;Virtual A/B 与动态分区&lt;a href=&quot;#virtual-ab-与动态分区&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;A/B 分区解决了更新安全性的问题，但带来了新的问题：&lt;strong&gt;存储空间翻倍了&lt;/strong&gt;。&lt;/p&gt;&lt;p&gt;因为你需要两套完整的系统分区（&lt;code&gt;system_a&lt;/code&gt; 和 &lt;code&gt;system_b&lt;/code&gt;、&lt;code&gt;vendor_a&lt;/code&gt; 和 &lt;code&gt;vendor_b&lt;/code&gt; 等等），这对存储空间的占用很大。&lt;/p&gt;&lt;p&gt;Google 在 Android 11 引入了 Virtual A/B 来解决这个问题。它的思路是：&lt;strong&gt;不再准备两套完整的分区，而是只存一套，更新时用快照（snapshot）和差异数据来实现 A/B 的效果&lt;/strong&gt;。&lt;/p&gt;&lt;p&gt;这样既保留了 A/B 的安全性，又节省了存储空间。&lt;/p&gt;&lt;p&gt;而在 Android 10，Google 还引入了另一个重要概念：&lt;strong&gt;动态分区&lt;/strong&gt;（Dynamic Partition）。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;动态分区是什么意思？&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;以前每个分区的大小是固定的——&lt;code&gt;system&lt;/code&gt; 多大、&lt;code&gt;vendor&lt;/code&gt; 多大，出厂时就定死了。如果某个分区不够用了，你也没办法从别的分区借空间。&lt;/p&gt;&lt;p&gt;动态分区改变了这一点：很多原来独立的分区被塞进了一个叫 &lt;code&gt;super&lt;/code&gt; 的容器里，大小可以动态调整。&lt;/p&gt;&lt;p&gt;所以你拿到新设备一看，分区名好像没几个，实际上很多原来独立的分区都被塞进了 &lt;code&gt;super&lt;/code&gt; 里。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;super 分区&lt;a href=&quot;#super-分区&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;super&lt;/code&gt; 就是动态分区引入的容器。它不是普通意义上的单一分区，更像一个大的”仓库”。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;这个仓库里装了什么？&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;通常包含这些逻辑分区：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;system&lt;/code&gt; — 系统主体&lt;/li&gt;
&lt;li&gt;&lt;code&gt;vendor&lt;/code&gt; — 厂商驱动&lt;/li&gt;
&lt;li&gt;&lt;code&gt;product&lt;/code&gt; — 产品相关的定制&lt;/li&gt;
&lt;li&gt;&lt;code&gt;system_ext&lt;/code&gt; — 系统扩展&lt;/li&gt;
&lt;li&gt;&lt;code&gt;odm&lt;/code&gt; — 设备相关的定制&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;这些逻辑分区的大小可以动态调整。比如某次更新 &lt;code&gt;system&lt;/code&gt; 需要更多空间，可以从 &lt;code&gt;vendor&lt;/code&gt; 或 &lt;code&gt;product&lt;/code&gt; 那边”借”一些，前提是总容量不超过 &lt;code&gt;super&lt;/code&gt; 的大小。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;这对刷机有什么影响？&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;如果你在教程里看到”动态分区”这个词，基本就绕不开 &lt;code&gt;super&lt;/code&gt;。有些刷机操作需要重新分配 &lt;code&gt;super&lt;/code&gt; 里的逻辑分区大小，或者直接刷写整个 &lt;code&gt;super&lt;/code&gt; 镜像。&lt;/p&gt;&lt;p&gt;所以现在很多刷机包会提供 &lt;code&gt;super.img&lt;/code&gt;，而不是单独的 &lt;code&gt;system.img&lt;/code&gt;、&lt;code&gt;vendor.img&lt;/code&gt; 等。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;recovery 分区&lt;a href=&quot;#recovery-分区&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;recovery&lt;/code&gt; 分区包含一个轻量级的恢复系统，像是设备的&lt;strong&gt;备用操作系统&lt;/strong&gt;，用来在正常系统无法启动时提供帮助。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;recovery 能做什么？&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;双清（&lt;code&gt;wipe data&lt;/code&gt; 和 &lt;code&gt;wipe cache&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;刷入 OTA 更新包（官方更新通常通过它安装）&lt;/li&gt;
&lt;li&gt;ADB sideload（通过电脑传入文件并刷写）&lt;/li&gt;
&lt;li&gt;挂载分区、查看日志（调试用）&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;两种 recovery 模式：&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Stock Recovery&lt;/strong&gt;（原厂 recovery）— 功能有限，通常只能刷官方签名的包&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Custom Recovery&lt;/strong&gt;（第三方 recovery）— 比如 TWRP、OrangeFox，功能更强大，可以刷各种第三方包、备份整机、挂载分区进行修改等&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;对 LineageOS 这类第三方系统而言，你可能需要先刷一个第三方 recovery，然后通过它来刷入 ROM。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;init_boot&lt;a href=&quot;#init_boot&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;这个分区容易搞混，需要注意一下。&lt;/p&gt;&lt;p&gt;以前刷 Root，教程告诉你修补 &lt;code&gt;boot.img&lt;/code&gt; 就行。但由于 GKI（Generic Kernel Image）和启动结构调整，部分 Android 13+ 设备把原来 &lt;code&gt;boot&lt;/code&gt; 里的一部分内容（主要是 ramdisk）拆了出来，单独放到 &lt;code&gt;init_boot&lt;/code&gt;。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;为什么要拆？&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;GKI 的目标是让内核更通用、更新更快。拆分之后：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;boot&lt;/code&gt; 主要装内核&lt;/li&gt;
&lt;li&gt;&lt;code&gt;init_boot&lt;/code&gt; 装 ramdisk（包含启动脚本、初始化配置等）&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;这样厂商可以单独更新内核，而不影响启动流程的其他部分。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;对刷机的影响？&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;现在很多教程不是修补 &lt;code&gt;boot.img&lt;/code&gt;，而是修补 &lt;code&gt;init_boot.img&lt;/code&gt;。这不是教程写错了，而是设备的分区结构变了。&lt;/p&gt;&lt;p&gt;刷 Root 之前，最好先查清楚你的设备是哪种分区方案。通常：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;老设备（Android 12 及以下）或不支持 GKI 的设备 → 修补 &lt;code&gt;boot.img&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;新设备（部分 Android 13+）且支持 GKI → 修补 &lt;code&gt;init_boot.img&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;可以用下面的命令检查设备是否有 &lt;code&gt;init_boot&lt;/code&gt;：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;fastboot&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;getvar&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;all&lt;/span&gt;&lt;span&gt; | &lt;/span&gt;&lt;span&gt;grep&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;init_boot&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;如果有输出，说明你的设备有这个分区。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;刷机时最常碰到的几个分区&lt;a href=&quot;#刷机时最常碰到的几个分区&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;列一下实际操作中经常会遇到的分区：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;boot&lt;/code&gt;&lt;/strong&gt; — 装内核和 ramdisk（或只有内核，如果设备有 &lt;code&gt;init_boot&lt;/code&gt;），Root 修补最常涉及的分区&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;init_boot&lt;/code&gt;&lt;/strong&gt; — 新设备上拆出来的 ramdisk，部分设备 Root 需要修补它而不是 &lt;code&gt;boot&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;vendor_boot&lt;/code&gt;&lt;/strong&gt; — 厂商相关的启动配置，有些设备刷 Magisk 也需要处理它&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;vbmeta&lt;/code&gt;&lt;/strong&gt; — AVB 校验元数据，刷第三方 ROM 时经常需要禁用它（&lt;code&gt;--disable-verity --disable-verification&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;userdata&lt;/code&gt;&lt;/strong&gt; — 用户数据，格式化它相当于恢复出厂设置（双清的一部分）&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;操作场景：&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;修改 &lt;code&gt;boot&lt;/code&gt; / &lt;code&gt;init_boot&lt;/code&gt; → 通常和 Root 有关&lt;/li&gt;
&lt;li&gt;修改 &lt;code&gt;vbmeta&lt;/code&gt; → 通常和 AVB 校验有关（刷第三方包时需要禁用）&lt;/li&gt;
&lt;li&gt;格式化 &lt;code&gt;userdata&lt;/code&gt; → 通常和双清、解锁 BL、换 ROM 有关&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;p&gt;分区这块先到这，谢谢阅读。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;参考资料&lt;a href=&quot;#参考资料&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://source.android.com/&quot;&gt;AOSP 官方文档&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>Android 的基本概念</title><link>https://blog.kaguyaring.top/posts/android-basics/</link><guid isPermaLink="true">https://blog.kaguyaring.top/posts/android-basics/</guid><description>AOSP、Bootloader、fastboot、Recovery、Root、SU、卡刷、线刷、侧载、定制 ROM……一篇文章理清所有概念</description><pubDate>Wed, 08 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;Android 的基本概念&lt;a href=&quot;#android-的基本概念&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;目录&lt;a href=&quot;#目录&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Tip&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;可直接点击文字跳转至对应章节&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#android-%E7%9A%84%E5%9F%BA%E6%9C%AC%E6%A6%82%E5%BF%B5&quot;&gt;Android 的基本概念&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#%E7%9B%AE%E5%BD%95&quot;&gt;目录&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E7%AE%80%E4%BB%8B&quot;&gt;简介&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#android-%E4%B8%8E-aosp&quot;&gt;Android 与 AOSP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#bootloaderbl&quot;&gt;Bootloader（BL）&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#%E8%A7%A3%E9%94%81%E5%89%8D%E5%90%8E%E7%9A%84%E5%8C%BA%E5%88%AB&quot;&gt;解锁前后的区别&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E5%90%84%E5%AE%B6%E8%A7%A3%E9%94%81%E6%94%BF%E7%AD%96&quot;&gt;各家解锁政策&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#fastboot-%E4%B8%8E-edl&quot;&gt;fastboot 与 EDL&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#adb&quot;&gt;ADB&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#recovery&quot;&gt;Recovery&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#avbandroid-verified-boot&quot;&gt;AVB（Android Verified Boot）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E5%85%B3%E9%94%AE%E5%88%86%E5%8C%BA%E9%80%9F%E8%A7%88&quot;&gt;关键分区速览&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E5%8D%A1%E5%88%B7%E7%BA%BF%E5%88%B7%E4%B8%8E%E4%BE%A7%E8%BD%BD&quot;&gt;卡刷、线刷与侧载&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E5%8F%8C%E6%B8%85&quot;&gt;双清&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E5%88%B7%E6%9C%BA%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98&quot;&gt;刷机常见问题&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#root-%E4%B8%8E-su&quot;&gt;Root 与 SU&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E5%AE%9A%E5%88%B6-rom-%E4%B8%8E-gapps&quot;&gt;定制 ROM 与 GApps&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99&quot;&gt;参考资料&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;简介&lt;a href=&quot;#简介&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;如果你刚开始接触 Android 刷机、Root 或者换 ROM，多半会被一堆术语搞晕：什么是 Bootloader？fastboot 和 ADB 有什么区别？为什么有人说”卡刷”，有人说”线刷”？AVB 又是什么东西？&lt;/p&gt;&lt;p&gt;这篇文章不会直接告诉你”怎么刷机”，而是把这些概念理一遍。遇到不认识的词，可以回来查。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;Android 与 AOSP&lt;a href=&quot;#android-与-aosp&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;先从最基础的说起：Android 系统是从哪来的？&lt;/p&gt;&lt;p&gt;AOSP（Android Open Source Project）是 Google 开源的 Android 基础代码。所有 Android 设备，不管是 Google 自己的 Pixel，还是小米、三星、OPPO 的定制系统，甚至社区维护的第三方 ROM，都是在 AOSP 的基础上改出来的。&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Pixel&lt;/strong&gt; — Google 基于 AOSP 做的最接近原生的版本&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HyperOS / One UI / ColorOS&lt;/strong&gt; — 各家厂商的定制版本&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LineageOS / crDroid&lt;/strong&gt; — 社区维护的第三方 ROM&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;那 Android 底层是什么呢？答案是 Linux 内核。所以后面你会看到的 Root、SELinux、&lt;code&gt;su&lt;/code&gt; 这些概念，其实都能绕回 Linux 的权限体系。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;Bootloader（BL）&lt;a href=&quot;#bootloaderbl&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;你有没有想过：手机开机的时候，谁先跑起来？&lt;/p&gt;&lt;p&gt;答案是 Bootloader（引导加载程序）。它负责在系统启动之前初始化硬件，然后决定是否继续加载后面的镜像。&lt;/p&gt;&lt;p&gt;出厂时，Bootloader 通常是锁着的，只允许加载厂商认可并签名的镜像。这就是为什么你不能随便刷写第三方系统——Bootloader 会拒绝加载它。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;那解锁 BL 之后呢？&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;解锁之后，设备允许加载第三方引导程序，你才能修改 &lt;code&gt;boot&lt;/code&gt;、&lt;code&gt;vbmeta&lt;/code&gt;、&lt;code&gt;init_boot&lt;/code&gt; 这些关键分区。但这也带来了新问题：解锁时大多数设备会自动格式化 &lt;code&gt;userdata&lt;/code&gt; 分区，也就是清空数据。部分品牌（比如三星）还会熔断 eFuse（Knox），不可逆。&lt;/p&gt;&lt;section&gt;&lt;h3&gt;解锁前后的区别&lt;a href=&quot;#解锁前后的区别&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;BL 带锁时：&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Bootloader 只信任厂商认可的签名&lt;/li&gt;
&lt;li&gt;关键分区被修改后，设备通常直接拒绝启动&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;BL 解锁后：&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;允许加载第三方引导程序&lt;/li&gt;
&lt;li&gt;你可以刷写修改过的镜像&lt;/li&gt;
&lt;li&gt;重启时会显示”设备已解锁”的警告&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;解锁命令通常是：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;fastboot&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;flashing&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;unlock&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Warning&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;解锁时大多数设备会自动格式化 &lt;code&gt;userdata&lt;/code&gt; 分区，也就是清空数据。部分品牌还会熔断 eFuse（如三星 Knox），不可逆。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;各家解锁政策&lt;a href=&quot;#各家解锁政策&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;不同厂商对解锁的态度差别很大：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Google Pixel&lt;/strong&gt; — 最简单，直接 &lt;code&gt;fastboot flashing unlock&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;小米&lt;/strong&gt; — 国内现在基本走不了官方渠道，账号、答题、等待期都加上了&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;一加 / OPPO&lt;/strong&gt; — 很多机型要走深度测试或审核流程&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;三星&lt;/strong&gt; — 限制更重，不同地区差异很大&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;vivo / 荣耀 / 华为&lt;/strong&gt; — 官方一般不开放解锁路径&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;如果你打算刷机，最好买设备之前先查一下能不能解锁 BL。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;fastboot 与 EDL&lt;a href=&quot;#fastboot-与-edl&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;解锁了 BL 之后，怎么和设备通信呢？这就要用到 &lt;code&gt;fastboot&lt;/code&gt;。&lt;/p&gt;&lt;p&gt;&lt;code&gt;fastboot&lt;/code&gt; 是 PC 和 Bootloader 之间通信的协议。手机进入 fastboot 模式后，你可以在电脑上直接操作设备：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 解锁 BL&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;fastboot&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;flashing&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;unlock&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 刷写镜像到指定分区&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;fastboot&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;flash&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;boot&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;patched_boot.img&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 临时启动一个镜像（不写入分区）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;fastboot&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;boot&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;recovery.img&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 重启设备&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;fastboot&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;reboot&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;这里特别注意 &lt;code&gt;fastboot boot&lt;/code&gt; 这个命令——它只是&lt;strong&gt;临时启动&lt;/strong&gt;一个镜像，不会写进分区。重启之后设备会恢复原样。这在测试 Recovery 或者修补过的 &lt;code&gt;boot&lt;/code&gt; 时特别有用：你可以先临时启动看看效果，确认没问题再正式刷写。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;那 EDL 是什么？&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;EDL（Emergency Download Mode，也叫 9008 模式）是高通平台更底层的救砖模式。当设备完全开不了机、fastboot 也进不去的时候，EDL 可能是最后的救命稻草。&lt;/p&gt;&lt;p&gt;不过 EDL 一般需要授权文件或者官方工具才能用，普通情况下用不到。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;ADB&lt;a href=&quot;#adb&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;你可能听说过 ADB，也可能听说过 fastboot，那它们是一回事吗？&lt;/p&gt;&lt;p&gt;不是。它们工作在不同的阶段：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;fastboot&lt;/strong&gt; — 工作在 Bootloader 阶段，设备还没启动系统&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ADB&lt;/strong&gt;（Android Debug Bridge）— 工作在系统或 Recovery 启动之后&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;ADB 是日常调试最常用的工具。你可以用它查看设备状态、推送文件、安装应用、进入 shell：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 查看连接的设备&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;adb&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;devices&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 进入设备的 shell&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;adb&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;shell&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 推送文件到设备&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;adb&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;push&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;local_file&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/sdcard/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 从设备拉取文件&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;adb&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;pull&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/sdcard/remote_file&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;./&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 安装 APK&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;adb&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;install&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;app.apk&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;所以如果有人让你”在 fastboot 模式下用 ADB”，那肯定是搞混了——fastboot 模式下只能用 &lt;code&gt;fastboot&lt;/code&gt; 命令，ADB 要等系统启动起来才能用。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;Recovery&lt;a href=&quot;#recovery&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;你有没有想过：如果系统坏了，连桌面都进不去，怎么修复？&lt;/p&gt;&lt;p&gt;这就是 Recovery 存在的意义。它是独立于主系统之外的一个小环境，主要用来做系统维护——刷写升级包、清分区、恢复出厂设置、备份和恢复。&lt;/p&gt;&lt;p&gt;出厂自带的 Recovery 功能通常比较有限，只能刷写官方签名的 OTA 包。如果你想刷写第三方 ROM 或者 Magisk，就需要第三方 Recovery。&lt;/p&gt;&lt;p&gt;常见的第三方 Recovery 有：&lt;/p&gt;&lt;div&gt;Invalid directive. (&quot;github&quot; directive must be leaf type &quot;::github{repo=&quot;owner/repo&quot;}&quot;)&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>训练 LLM 的心得分享</title><link>https://blog.kaguyaring.top/posts/llm-training-journey/</link><guid isPermaLink="true">https://blog.kaguyaring.top/posts/llm-training-journey/</guid><description>从零开始训练中文 LLM 的实践心得，数据清洗、GPU 租赁和训练技巧全记录</description><pubDate>Fri, 27 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;训练 LLM 的心得分享：从零到 Liko 第五代&lt;a href=&quot;#训练-llm-的心得分享从零到-liko-第五代&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;目录&lt;a href=&quot;#目录&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Tip&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;可直接点击文字跳转至对应章节&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#%E8%AE%AD%E7%BB%83-llm-%E7%9A%84%E5%BF%83%E5%BE%97%E5%88%86%E4%BA%AB%E4%BB%8E%E9%9B%B6%E5%88%B0-liko-%E7%AC%AC%E4%BA%94%E4%BB%A3&quot;&gt;训练 LLM 的心得分享：从零到 Liko 第五代&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#%E7%9B%AE%E5%BD%95&quot;&gt;目录&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E7%AE%80%E4%BB%8B&quot;&gt;简介&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E8%AE%AD%E7%BB%83%E7%8E%AF%E5%A2%83&quot;&gt;训练环境&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#%E7%A1%AC%E4%BB%B6%E9%85%8D%E7%BD%AE&quot;&gt;硬件配置&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E6%95%B0%E6%8D%AE%E5%87%86%E5%A4%87&quot;&gt;数据准备&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#%E6%95%B0%E6%8D%AE%E9%9B%86%E9%80%89%E6%8B%A9&quot;&gt;数据集选择&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E5%8F%AF%E7%94%A8%E6%95%B0%E6%8D%AE%E8%B5%84%E6%BA%90&quot;&gt;可用数据资源&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E8%AE%AD%E7%BB%83%E6%A1%86%E6%9E%B6&quot;&gt;训练框架&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E7%89%88%E6%9C%AC%E6%BC%94%E8%BF%9B&quot;&gt;版本演进&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#%E9%A2%84%E8%AE%AD%E7%BB%83%E6%95%B0%E6%8D%AE%E6%BC%94%E8%BF%9B&quot;&gt;预训练数据演进&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#v4-%E5%92%8C-v5-%E8%AF%A6%E7%BB%86%E5%AF%B9%E6%AF%94&quot;&gt;V4-和-V5-详细对比&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[SFT-数据演进 V1→V5](#sft-数据演进 v1→v5)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E8%AE%AD%E7%BB%83%E8%BF%87%E7%A8%8B&quot;&gt;训练过程&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#%E8%AE%AD%E7%BB%83%E6%AD%A5%E6%95%B0%E4%B8%8E-loss-%E6%9B%B2%E7%BA%BF&quot;&gt;训练步数与-Loss-曲线&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E6%A8%A1%E5%9E%8B%E6%B5%8B%E8%AF%95%E8%BE%93%E5%87%BA&quot;&gt;模型测试输出&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#gpu-%E7%A7%9F%E8%B5%81%E7%9A%84%E4%BC%98%E5%8A%BF&quot;&gt;GPU-租赁的优势&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E8%AE%AD%E7%BB%83-llm-%E9%9C%80%E8%A6%81%E8%80%83%E8%99%91%E7%9A%84%E5%9B%A0%E7%B4%A0&quot;&gt;训练-LLM-需要考虑的因素&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E6%80%BB%E7%BB%93&quot;&gt;总结&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E5%8F%82%E8%80%83%E8%B5%84%E6%BA%90&quot;&gt;参考资源&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E6%95%B0%E6%8D%AE&quot;&gt;数据&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;简介&lt;a href=&quot;#简介&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;该文档分享了我从零开始训练中文 LLM 的实践心得，目前已经迭代到了 &lt;strong&gt;Liko（灵可）第五代&lt;/strong&gt;。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Tip&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;训练一个 LLM 需要考虑多种因素，数据清洗是最关键的一步&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;训练环境&lt;a href=&quot;#训练环境&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;硬件配置&lt;a href=&quot;#硬件配置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;说实话，训练 LLM 对硬件要求还是挺高的。我目前使用的是：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GPU&lt;/strong&gt;: 单卡 RTX 4090 24G（租的）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;内存&lt;/strong&gt;: 90G(我这里是AutoDL分给我的Docker容器,AutoDL实际主机的大概在730G左右)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;磁盘&lt;/strong&gt;: 30G系统盘 + 50G 数据缓存盘&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Tip&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;这也是我选择租 GPU 服务器的原因——毕竟不是每个人都有多卡高配置的环境&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;目前训练数据量在 &lt;strong&gt;10GB 左右&lt;/strong&gt;，数据和模型差不多有个 &lt;strong&gt;125M&lt;/strong&gt; 的水平。这个规模对于个人实验来说比较合适，既不会太消耗资源，也能看到不错的效果。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;数据准备&lt;a href=&quot;#数据准备&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;数据集选择&lt;a href=&quot;#数据集选择&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;训练过程中下载的是 &lt;strong&gt;CCI3-HQ 分卷&lt;/strong&gt;，数据量大概 &lt;strong&gt;11GB&lt;/strong&gt; 左右。&lt;/p&gt;&lt;p&gt;经过对比，我发现 CCI3-HQ 相对来说比 CCI3-Data 要更干净，因为是已经清理过的数据。这一点非常重要——&lt;strong&gt;训练一个 LLM，数据必须得是清洗过的&lt;/strong&gt;。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Warning&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;&lt;strong&gt;关于分词器的选择&lt;/strong&gt;：如果你要训练中文模型，&lt;strong&gt;最好使用 Qwen 的分词器&lt;/strong&gt;。我这里使用的是 GPT 的分词器，可能不是最优选择。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;可用数据资源&lt;a href=&quot;#可用数据资源&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;以下是一些我整理的开源数据资源：&lt;/p&gt;&lt;p&gt;&lt;strong&gt;BAAI 开源的数据&lt;/strong&gt;（需要自行同意许可）:&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://huggingface.co/datasets/BAAI/CCI3-HQ&quot;&gt;CCI3-HQ&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://huggingface.co/datasets/BAAI/CCI3-Data&quot;&gt;CCI3-Data&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;代码训练集&lt;/strong&gt;:&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://huggingface.co/blog/zh/starcoder2&quot;&gt;StarCoder2&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;BigCode 开源的数据&lt;/strong&gt;（需要自行同意许可）:&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://huggingface.co/datasets/bigcode/the-stack&quot;&gt;The Stack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://huggingface.co/datasets/bigcode/the-stack-v2&quot;&gt;The Stack V2&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;训练框架&lt;a href=&quot;#训练框架&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;目前使用的是 &lt;strong&gt;nanochat&lt;/strong&gt; 外加 LLM 自己写的脚本。&lt;/p&gt;&lt;p&gt;后续 V6 版本我准备使用 &lt;strong&gt;uv + HuggingFace Transformers&lt;/strong&gt; 来进行训练。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;版本演进&lt;a href=&quot;#版本演进&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;从 V1 到 V5，Liko 模型经历了多次迭代，以下是各版本的数据和训练情况：&lt;/p&gt;&lt;section&gt;&lt;h3&gt;预训练数据演进&lt;a href=&quot;#预训练数据演进&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&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;th&gt;Token 数量&lt;/th&gt;&lt;th&gt;备注&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;V1/V2&lt;/td&gt;&lt;td&gt;项目内早期小语料&lt;/td&gt;&lt;td&gt;-&lt;/td&gt;&lt;td&gt;~19 万&lt;/td&gt;&lt;td&gt;早期小语料测试&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;V3&lt;/td&gt;&lt;td&gt;simplewiki 样本&lt;/td&gt;&lt;td&gt;~25MB&lt;/td&gt;&lt;td&gt;~2,645 万&lt;/td&gt;&lt;td&gt;加入维基百科数据&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;V4&lt;/td&gt;&lt;td&gt;中文维基清洗语料&lt;/td&gt;&lt;td&gt;~2.6GB&lt;/td&gt;&lt;td&gt;~27.5 亿&lt;/td&gt;&lt;td&gt;主增量，使用 CCI2-Data 抽样&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;V5&lt;/td&gt;&lt;td&gt;BAAI/CCI3-HQ&lt;/td&gt;&lt;td&gt;10.778GB (11 分卷)&lt;/td&gt;&lt;td&gt;~76 亿&lt;/td&gt;&lt;td&gt;当前版本，GPT-2 BPE 预处理&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;V4 和 V5 详细对比&lt;a href=&quot;#v4-和-v5-详细对比&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;V4&lt;/strong&gt;:&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;训练数据：&lt;code&gt;BAAI/CCI2-Data&lt;/code&gt; 抽样文件 &lt;code&gt;cci2_approx_5gb.jsonl&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;规模：1,826,579 行&lt;/li&gt;
&lt;li&gt;训练结论：20k 步跑完，最佳点在 ~15.8k 附近（val_loss 最低）&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;V5&lt;/strong&gt;:&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;训练数据：&lt;code&gt;BAAI/CCI3-HQ&lt;/code&gt;，11 个分卷共 10.778GB&lt;/li&gt;
&lt;li&gt;预处理：GPT-2 BPE
&lt;ul&gt;
&lt;li&gt;行数：1,836,229&lt;/li&gt;
&lt;li&gt;训练 tokens：7,593,980,487&lt;/li&gt;
&lt;li&gt;验证 tokens：400,017,578&lt;/li&gt;
&lt;li&gt;词表大小：50,257&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;训练结论：&lt;strong&gt;40k 步明显优于 70k 步&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Warning&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;&lt;strong&gt;为什么 70k 步反而不如 40k 步？&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;70k 步是从 40k 步的检查点继续训练的，而且学习率没有正确调整，导致模型出现退化现象（输出乱码）。这说明了学习率调度和训练步数规划的重要性。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;SFT 数据演进（V1→V5）&lt;a href=&quot;#sft-数据演进v1v5&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&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;th&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;V1&lt;/td&gt;&lt;td&gt;&lt;code&gt;liko_train_std_expanded_v1.jsonl&lt;/code&gt;&lt;/td&gt;&lt;td&gt;126&lt;/td&gt;&lt;td&gt;基于规范问答扩写&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;V2&lt;/td&gt;&lt;td&gt;&lt;code&gt;liko_train_std_expanded_v2.jsonl&lt;/code&gt;&lt;/td&gt;&lt;td&gt;198&lt;/td&gt;&lt;td&gt;新增 72 条，强化身份认知 + 防提示词注入&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;V3&lt;/td&gt;&lt;td&gt;&lt;code&gt;liko_train_std_expanded_v3_multilingual.jsonl&lt;/code&gt;&lt;/td&gt;&lt;td&gt;294&lt;/td&gt;&lt;td&gt;新增 96 条，加入多语言样本&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;V4&lt;/td&gt;&lt;td&gt;&lt;code&gt;tiny_sft_v4_mix.jsonl&lt;/code&gt;&lt;/td&gt;&lt;td&gt;720&lt;/td&gt;&lt;td&gt;混合版（60% 通用对话/30% 规范问答/10% 身份防注入）&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Tip&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;V5 的 40k 步 checkpoint 是目前最佳模型。70k 步是从 40k 步检查点继续训练，因学习率未正确调整导致退化&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;训练过程&lt;a href=&quot;#训练过程&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;训练步数与-Loss-曲线&lt;a href=&quot;#训练步数与-loss-曲线&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;训练步数和 Loss 曲线是监控训练过程的重要指标。通过观察这些曲线，可以判断模型是否过拟合、欠拟合，或者是否需要调整学习率等超参数。&lt;/p&gt;&lt;p&gt;以下是 Liko 第五代从 0 到 40k 步的训练日志曲线：&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img loading=&quot;lazy&quot; width=&quot;1593&quot; height=&quot;912&quot; src=&quot;/_astro/12.DU-N7_JF_2plyzN.webp&quot; /&gt;&lt;figcaption&gt;训练日志曲线 (0-40k)&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;模型测试输出&lt;a href=&quot;#模型测试输出&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;在训练到 40k 步时，我进行了多次采样测试（均未进行 SFT 微调）：&lt;/p&gt;&lt;p&gt;&lt;strong&gt;测试配置 1&lt;/strong&gt;（温度 0.7，max_tokens=50）:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img loading=&quot;lazy&quot; width=&quot;1181&quot; height=&quot;803&quot; src=&quot;/_astro/2.BQq7QO6U_1C82H9.webp&quot; /&gt;&lt;figcaption&gt;推理测试 - 温度 0.7&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;测试配置 2&lt;/strong&gt;（温度 0.9，repetition_penalty=1.15，top-k=50）:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img loading=&quot;lazy&quot; width=&quot;449&quot; height=&quot;256&quot; src=&quot;/_astro/3.CDVybX1h_Z2rUaKu.webp&quot; /&gt;&lt;figcaption&gt;续写测试 - 温度 0.9&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Tip&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;以上测试均直接使用基础模型采样，未进行 SFT 微调&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;GPU-租赁的优势&lt;a href=&quot;#gpu-租赁的优势&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;租 GPU 服务器确实是一个比较好的选择：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;成本低&lt;/strong&gt;：几块钱就能跑一次训练&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;灵活&lt;/strong&gt;：可以根据需求选择不同的配置&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;无需维护&lt;/strong&gt;：不用自己操心硬件维护&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Tip&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;几块钱就能把一个中文模型带回家，已经是一个不错的成就了&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;训练-LLM-需要考虑的因素&lt;a href=&quot;#训练-llm-需要考虑的因素&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;经过这段时间的实践，我总结出训练 LLM 需要考虑以下几个关键因素：&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;GPU 显存和算力&lt;/td&gt;&lt;td&gt;显存大小决定了你能训练多大的模型，算力决定了训练速度&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;RAM 运行内存&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;/section&gt;&lt;section&gt;&lt;h2&gt;总结&lt;a href=&quot;#总结&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;训练一个 LLM 确实需要考虑多种因素，但通过合理的选择和规划，个人也能完成这个看似”高大上”的任务。&lt;/p&gt;&lt;p&gt;目前的 Liko 第五代还在持续训练中，后续会继续分享更多的经验和成果。如果你对训练 LLM 感兴趣，欢迎一起交流讨论！&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Tip&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;希望有老哥送给我多卡高配置的 GPU，还有一个比较好的带宽服务器&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;参考资源&lt;a href=&quot;#参考资源&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&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;HuggingFace 镜像&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://hf-mirror.com/&quot;&gt;https://hf-mirror.com/&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Transformers 学习&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://huggingface.co/docs/transformers/main_classes/trainer&quot;&gt;https://huggingface.co/docs/transformers/main_classes/trainer&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;数据&lt;a href=&quot;#数据&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Tip&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;本文提到的所有数据集和工具均需要自行配置和下载&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>配置 Docker 镜像源</title><link>https://blog.kaguyaring.top/posts/docker-mirror-setup/</link><guid isPermaLink="true">https://blog.kaguyaring.top/posts/docker-mirror-setup/</guid><description>配置 Docker 镜像加速源，提升国内拉取速度和稳定性</description><pubDate>Fri, 26 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;配置Docker Compose源&lt;a href=&quot;#配置docker-compose源&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Tip&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;可直接点击文字跳转至对应章节&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;section&gt;&lt;h2&gt;目录&lt;a href=&quot;#目录&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#%E9%85%8D%E7%BD%AEdocker-compose%E6%BA%90&quot;&gt;配置Docker Compose源&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#%E7%9B%AE%E5%BD%95&quot;&gt;目录&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E7%AE%80%E4%BB%8B&quot;&gt;简介&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E5%AE%89%E8%A3%85-docker&quot;&gt;安装 Docker&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#%E4%BD%BF%E7%94%A8-linuxmirror-%E8%84%9A%E6%9C%AC%E5%AE%89%E8%A3%85&quot;&gt;使用 LinuxMirror 脚本安装&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E4%BD%BF%E7%94%A8%E5%AE%98%E6%96%B9%E8%84%9A%E6%9C%AC%E5%AE%89%E8%A3%85&quot;&gt;使用官方脚本安装&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E6%8C%87%E5%AE%9A%E9%95%9C%E5%83%8F%E6%BA%90%E5%AE%89%E8%A3%85&quot;&gt;指定镜像源安装&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E9%85%8D%E7%BD%AE-docker&quot;&gt;配置 Docker&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#%E4%BD%BF%E7%94%A8%E8%84%9A%E6%9C%AC%E4%BF%AE%E6%94%B9&quot;&gt;使用脚本修改&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E8%87%AA%E8%A1%8C%E4%BF%AE%E6%94%B9&quot;&gt;自行修改&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#%E7%BC%96%E8%BE%91%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6&quot;&gt;编辑配置文件&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E6%96%87%E4%BB%B6%E7%A4%BA%E4%BE%8B&quot;&gt;文件示例&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E9%87%8D%E8%BD%BD%E6%9C%8D%E5%8A%A1&quot;&gt;重载服务&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#docker%E9%95%9C%E5%83%8F%E6%BA%90%E5%88%97%E8%A1%A8&quot;&gt;Docker镜像源列表&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;简介&lt;a href=&quot;#简介&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;在国内，由于部分运营商可能对国外网站或镜像源进行 &lt;code&gt;SNI&lt;/code&gt; 拦截 或 &lt;code&gt;DNS&lt;/code&gt; 污染，直接访问官方 &lt;code&gt;Docker&lt;/code&gt; 镜像源可能会较慢甚至失败。因此，建议使用 &lt;code&gt;国内加速源&lt;/code&gt; 来拉取 &lt;code&gt;Docker&lt;/code&gt; 安装包和镜像，从而提升下载速度和稳定性。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;安装 Docker&lt;a href=&quot;#安装-docker&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;使用 LinuxMirror 脚本安装&lt;a href=&quot;#使用-linuxmirror-脚本安装&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;使用 &lt;code&gt;LinuxMirror&lt;/code&gt; 提供的脚本进行安装(推荐)&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;bash&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;lt;(&lt;/span&gt;&lt;span&gt;curl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-sSL&lt;/span&gt;&lt;span&gt; https://linuxmirrors.cn/docker.sh)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;使用官方脚本安装&lt;a href=&quot;#使用官方脚本安装&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;或者使用 &lt;code&gt;Docker Hub&lt;/code&gt; 官方提供的脚本进行安装&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;bash&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;lt;(&lt;/span&gt;&lt;span&gt;curl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-fsSL&lt;/span&gt;&lt;span&gt; https://get.docker.com)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;指定镜像源安装&lt;a href=&quot;#指定镜像源安装&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;再或者使用 &lt;code&gt;Docker Hub&lt;/code&gt; 官方提供的脚本进行安装 再指定镜像源(—mirror 后的参数为镜像源)&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;bash&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;lt;(&lt;/span&gt;&lt;span&gt;curl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-fsSL&lt;/span&gt;&lt;span&gt; https://get.docker.com)&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--mirror&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Aliyun&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Tip&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;如已经安装，只需要修改 Docker 部分请跳转至 &lt;a href=&quot;#%E9%85%8D%E7%BD%AE-docker&quot;&gt;配置docker&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;配置 Docker&lt;a href=&quot;#配置-docker&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;一般针对于小白,我比较推荐直接使用 &lt;code&gt;Docker Compose&lt;/code&gt; 来完成部署项目，因为部署只需要写好 &lt;code&gt;docker-compose.yaml&lt;/code&gt; 文件，随后在 &lt;code&gt;docker-compose.yaml&lt;/code&gt; 的同级目录运行 &lt;code&gt;docker compose up -d&lt;/code&gt; 即可完成部署。&lt;/p&gt;&lt;p&gt;好了，我们开始配置 &lt;code&gt;Docker Registry&lt;/code&gt; 源的配置。&lt;/p&gt;&lt;section&gt;&lt;h3&gt;使用脚本修改&lt;a href=&quot;#使用脚本修改&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;上方我们有提到使用安装脚本,那么这里也可以使用直接脚本来完成修改。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;bash&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;lt;(&lt;/span&gt;&lt;span&gt;curl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-sSL&lt;/span&gt;&lt;span&gt; https://linuxmirrors.cn/docker.sh)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;自行修改&lt;a href=&quot;#自行修改&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;自行修改 &lt;code&gt;Docker&lt;/code&gt; 源,这也是一种备选方式,也是我个人比较推荐的方式。&lt;/p&gt;&lt;section&gt;&lt;h4&gt;编辑配置文件&lt;a href=&quot;#编辑配置文件&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 可选备份&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cp&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/etc/docker/daemon.json&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/etc/docker/daemon.json.bak&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 使用nano 编辑器(推荐)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;nano&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/etc/docker/daemon.json&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 或使用vim编辑器&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;vim&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/etc/docker/daemon.json&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Tip&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;如果没有安装 &lt;code&gt;nano&lt;/code&gt; 编辑器，请自行使用 &lt;code&gt;apt&lt;/code&gt; 安装。&lt;/p&gt;&lt;p&gt;如果显示没有权限修改，请在命令前加上 &lt;code&gt;sudo&lt;/code&gt; ，打比方：&lt;code&gt;sudo nano &quot;/etc/...&quot;&lt;/code&gt; 。&lt;/p&gt;&lt;p&gt;&lt;code&gt;Vim&lt;/code&gt; 退出时需要按下 &lt;code&gt;ESC&lt;/code&gt; 后,输入 &lt;code&gt;:wq&lt;/code&gt; 命令后回车来进行写入并退出。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;文件示例&lt;a href=&quot;#文件示例&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;这里给个示例,且使用的 &lt;code&gt;毫秒镜像&lt;/code&gt; 源。你可以直接复制并将它写入你的文件。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&quot;registry-mirrors&quot;&lt;/span&gt;&lt;span&gt;: [&lt;/span&gt;&lt;span&gt;&quot;https://docker.1ms.run&quot;&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;重载服务&lt;a href=&quot;#重载服务&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Warning&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;注意重载 &lt;code&gt;Docker&lt;/code&gt; 服务时,所有的 &lt;code&gt;Docker&lt;/code&gt; 容器及服务会重启。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;修改 daemon.json 后需要重载服务，才能让新配置生效。&lt;/p&gt;&lt;p&gt;重载服务&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;systemctl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;daemon-reexec&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;systemctl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;restart&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;docker&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;p&gt;如果无法执行此命令 请在命令前添加 &lt;code&gt;sudo&lt;/code&gt; 。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;重载完成后，你可以使用以下命令来验证配置是否生效：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;docker&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;info&lt;/span&gt;&lt;span&gt; | &lt;/span&gt;&lt;span&gt;grep&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-A&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;Registry Mirrors&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;如果输出中包含你配置的镜像源地址，说明配置生效了。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;Docker镜像源列表&lt;a href=&quot;#docker镜像源列表&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;这里是 &lt;code&gt;Docker Registry&lt;/code&gt; 列表&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 毫秒镜像&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;http://docker.1ms.run&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# DockerProxy&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;http://dockerproxy.net&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# DaoCloud&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;http://docker.m.daocloud.io&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 阿里云&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;http://registry.cn-hangzhou.aliyuncs.com     # 阿里云-杭州&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;http://registry.cn-shanghai.aliyuncs.com    # 阿里云-上海&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;http://registry.cn-qingdao.aliyuncs.com    # 阿里云-青岛&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;http://registry.cn-beijing.aliyuncs.com     # 阿里云-北京&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;http://registry.cn-zhangjiakou.aliyuncs.com # 阿里云-张家口&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;http://registry.cn-huhehaote.aliyuncs.com   # 阿里云-呼和浩特&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;http://registry.cn-wulanchabu.aliyuncs.com  # 阿里云-乌兰察布&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;http://registry.cn-shenzhen.aliyuncs.com   # 阿里云-深圳&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;http://registry.cn-heyuan.aliyuncs.com      # 阿里云-河源&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;http://registry.cn-guangzhou.aliyuncs.com   # 阿里云-广州&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;http://registry.cn-chengdu.aliyuncs.com    # 阿里云-成都&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;http://registry.cn-hongkong.aliyuncs.com    # 阿里云-香港&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;http://registry.ap-northeast-1.aliyuncs.com  # 阿里云-日本&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;http://registry.ap-southeast-1.aliyuncs.com # 阿里云-新加坡&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;http://registry.ap-southeast-3.aliyuncs.com # 阿里云-马来西亚&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;http://registry.ap-southeast-5.aliyuncs.com # 阿里云-印尼&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;http://registry.eu-central-1.aliyuncs.com   # 阿里云-德国&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;http://registry.eu-west-1.aliyuncs.com      # 阿里云-英国&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;http://registry.us-west-1.aliyuncs.com      # 阿里云-美国西部&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;http://registry.us-east-1.aliyuncs.com       # 阿里云-美国东部&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;http://registry.me-east-1.aliyuncs.com      # 阿里云-中东&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 腾讯云镜像&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;http://mirror.ccs.tencentyun.com&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# Google 镜像&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;https://gcr.io&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;38&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;https://asia.gcr.io&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;39&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;https://eu.gcr.io&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;40&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;41&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# Docker Hub 官方镜像&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;42&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;https://registry.hub.docker.com&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;显示更多&lt;/span&gt;&lt;span&gt;显示更少&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>使用Docker Compose快速部署NapCat</title><link>https://blog.kaguyaring.top/posts/quick-napcat-docker-compose/</link><guid isPermaLink="true">https://blog.kaguyaring.top/posts/quick-napcat-docker-compose/</guid><description>使用Docker Compose快速部署NapCat</description><pubDate>Thu, 27 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;使用Docker Compose快速部署NapCat&lt;a href=&quot;#使用docker-compose快速部署napcat&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;目录&lt;a href=&quot;#目录&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Tip&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;可直接点击文字跳转至对应章节&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#%E4%BD%BF%E7%94%A8docker-compose%E5%BF%AB%E9%80%9F%E9%83%A8%E7%BD%B2napcat&quot;&gt;使用Docker Compose快速部署NapCat&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#%E7%9B%AE%E5%BD%95&quot;&gt;目录&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E7%AE%80%E4%BB%8B&quot;&gt;简介&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E4%BB%80%E4%B9%88%E6%98%AFnapcat&quot;&gt;什么是NapCat?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E5%BC%80%E5%A7%8B&quot;&gt;开始&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E5%AE%89%E8%A3%85docker&quot;&gt;安装Docker&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#%E4%B8%8B%E8%BD%BDnapcat-docker-compose%E6%96%87%E4%BB%B6&quot;&gt;下载NapCat Docker Compose文件&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E5%90%AF%E5%8A%A8%E6%9C%8D%E5%8A%A1&quot;&gt;启动服务&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E6%9F%A5%E7%9C%8B%E6%97%A5%E5%BF%97&quot;&gt;查看日志&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E5%81%9C%E6%AD%A2%E6%9C%8D%E5%8A%A1&quot;&gt;停止服务&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E9%87%8D%E5%90%AF%E6%9C%8D%E5%8A%A1&quot;&gt;重启服务&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E5%AF%B9%E6%8E%A5&quot;&gt;对接&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E9%99%84%E5%8A%A0%E8%AF%B4%E6%98%8E&quot;&gt;附加说明&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E5%85%8D%E8%B4%A3%E5%A3%B0%E6%98%8E&quot;&gt;免责声明&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E6%95%B0%E6%8D%AE&quot;&gt;数据&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;简介&lt;a href=&quot;#简介&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;该文档介绍了如何使用Docker Compose快速部署NapCat。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Tip&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;该文章只针对于Linux系统&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;什么是NapCat?&lt;a href=&quot;#什么是napcat&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;基于 TypeScript 构建的 Bot 框架，通过相应的启动器或者框架，主动调用 QQ Node 模块提供给客户端的接口，实现 Bot 的功能。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;开始&lt;a href=&quot;#开始&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;安装Docker&lt;a href=&quot;#安装docker&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;运行以下命令安装Docker(如果已经安装Docker可以跳过此步骤)：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;bash&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;lt;(&lt;/span&gt;&lt;span&gt;curl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-sSL&lt;/span&gt;&lt;span&gt; https://linuxmirrors.cn/docker.sh)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;随后根据脚本提示完成Docker的安装。&lt;/p&gt;&lt;section&gt;&lt;h3&gt;下载NapCat Docker Compose文件&lt;a href=&quot;#下载napcat-docker-compose文件&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;你可以使用以下命令将 &lt;code&gt;docker-compose.yml&lt;/code&gt; 文件下载到你的项目目录中：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/path/to/your/project&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;curl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-o&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;docker-compose.yml&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;https://raw.githubusercontent.com/KaguyaRing/NapCat-Docker-Template/main/docker-compose.yml&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;或者使用Github代理：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/path/to/your/project&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;curl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-sSL-o&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;docker-compose.yml&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;https://gh-proxy.org/https://raw.githubusercontent.com/KaguyaRing/NapCat-Docker-Template/main/docker-compose.yml&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;p&gt;此处的 &lt;code&gt;/path/to/your/project&lt;/code&gt; 需要替换为你希望存放 &lt;code&gt;docker-compose.yml&lt;/code&gt; 文件的实际路径。&lt;/p&gt;&lt;/blockquote&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;docker-compose.yml&lt;/code&gt; 只部署NapCat服务，如果你需要其他服务，请替换为相应的模板文件名称。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;该项目已经提供了NapCat单服务、AstrBot+Napcat、等多种模板文件，您可以根据需要选择合适的模板文件进行下载。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;启动服务&lt;a href=&quot;#启动服务&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;只需要在包含该仓库下载的 &lt;code&gt;docker-compose.yml&lt;/code&gt; 文件的目录下运行以下命令即可启动 NapCat 服务：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;docker&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;compose&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;up&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-d&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;查看日志&lt;a href=&quot;#查看日志&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;你可以使用以下命令查看 NapCat 服务的日志以获取Token登录WebUI：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;docker&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;compose&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;logs&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;napcat&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;停止服务&lt;a href=&quot;#停止服务&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;你可以使用以下命令停止 NapCat 服务：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;docker&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;compose&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;down&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;重启服务&lt;a href=&quot;#重启服务&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;你可以使用以下命令重启 NapCat 服务：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;docker&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;compose&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;restart&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;napcat&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;对接&lt;a href=&quot;#对接&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Tip&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;NapCat 支持多种对接方式，您可以参考官方文档进行配置：&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://napneko.github.io/use/integration&quot;&gt;NapCat 对接文档&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;附加说明&lt;a href=&quot;#附加说明&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Tip&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;该&lt;a href=&quot;https://github.com/KaguyaRing/NapCat-Docker-Template&quot;&gt;仓库&lt;/a&gt;已经提供了NapCat单服务、AstrBot+Napcat、多种模板文件，您可以根据需要选择合适的模板文件进行下载。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;a href=&quot;https://github.com/KaguyaRing/NapCat-Docker-Template&quot; target=&quot;_blank&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;KaguyaRing&lt;/div&gt;&lt;/div&gt;&lt;div&gt;/&lt;/div&gt;&lt;div&gt;NapCat-Docker-Template&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Waiting for api.github.com...&lt;/div&gt;&lt;div&gt;&lt;div&gt;00K&lt;/div&gt;&lt;div&gt;0K&lt;/div&gt;&lt;div&gt;0K&lt;/div&gt;&lt;span&gt;Waiting...&lt;/span&gt;&lt;/div&gt;&lt;/a&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;免责声明&lt;a href=&quot;#免责声明&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Warning&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;为了确保 NapCat 服务的安全性,此处已经将 &lt;code&gt;调试端口&lt;/code&gt; 只允许本地访问,如果你需要部署到外网调试您的NapCat，
请手动移除 &lt;code&gt;docker-compose.yml&lt;/code&gt; 文件中 &lt;code&gt;napcat&lt;/code&gt; 服务的 &lt;code&gt;post&lt;/code&gt; 中的 &lt;code&gt;127.0.0.1&lt;/code&gt;移除，
如果手动移除后遭到任何安全问题,本仓库及作者概不负责。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;数据&lt;a href=&quot;#数据&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Tip&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;该仓库的模板文件均存储在 &lt;code&gt;./data/*&lt;/code&gt; 目录下， &lt;code&gt;*&lt;/code&gt;为对接框架的名称，您可以根据需要进行修改和定制。
&lt;code&gt;./data/napcat&lt;/code&gt; 目录存储NapCat服务的数据。
&lt;code&gt;./data/qq&lt;/code&gt; 目录存储QQ账号的数据。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>Unity中国特供转国际版本</title><link>https://blog.kaguyaring.top/posts/unity-cn-to-international/</link><guid isPermaLink="true">https://blog.kaguyaring.top/posts/unity-cn-to-international/</guid><description>Unity中国特供转国际版本</description><pubDate>Wed, 26 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;Unity中国特供转国际版本&lt;a href=&quot;#unity中国特供转国际版本&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;目录&lt;a href=&quot;#目录&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Tip&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;可直接点击文字跳转至对应章节&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#%E7%AE%80%E4%BB%8B&quot;&gt;简介&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E5%88%A4%E6%96%AD&quot;&gt;判断&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E4%B8%BA%E4%BB%80%E4%B9%88%E8%A6%81%E5%AE%89%E8%A3%85%E5%9B%BD%E9%99%85%E7%89%88%E6%9C%AC&quot;&gt;为什么要安装国际版本&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E8%A7%A3%E5%86%B3%E6%96%B9%E6%B3%95&quot;&gt;解决方法&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#%E6%96%B9%E6%B3%95%E4%B8%80&quot;&gt;方法一&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E6%96%B9%E6%B3%95%E4%BA%8C&quot;&gt;方法二&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E6%96%B9%E6%B3%95%E4%B8%89&quot;&gt;方法三&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#unity-%E5%88%97%E8%A1%A8&quot;&gt;Unity 列表&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E5%BC%95%E7%94%A8&quot;&gt;引用&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E7%A4%BA%E4%BE%8B%E5%9B%BE%E7%89%87&quot;&gt;示例图片&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;简介&lt;a href=&quot;#简介&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;此文章说明如何解决安装Unity时为中国特供版本,如何转换为国际版本的帮助。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;判断&lt;a href=&quot;#判断&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;查看Unity Hub安装的Unity版本后缀是否携带&lt;code&gt;c1&lt;/code&gt;后缀,如果有则为中国特供版本,否则为国际版本。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;为什么要安装国际版本&lt;a href=&quot;#为什么要安装国际版本&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Unity中国特供版存在功能限制，强制用户安装中国特供版本的Unity等。&lt;/p&gt;&lt;p&gt;以下内容引用自&lt;a href=&quot;https://zhuanlan.zhihu.com/p/226163910&quot;&gt;Unity中国想钱想疯了&lt;/a&gt;。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;这次事件再次证明了两点&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;1. Unity官方无论是对于本文中提及的收入问题，还是这次如何计算下载量问题，都属于拍脑袋定的政策，完全没有明确的量化标准。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;2. Unity内部也不统一思想，官网的解释都能互相矛盾。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;这次定价不仅对中小开发者和独立开发者不友好，还是要杀死超休闲游戏的节奏。国内情况我不清楚，但海外如voodoo这种超休闲大厂，很多产品就是Unity做的，推广纯靠买量，一个用户买量成本也就几美分，现在即使按照最便宜的档位算，也几乎成本翻倍了，这谁顶得住？&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;解决方法&lt;a href=&quot;#解决方法&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;blockquote&gt;&lt;p&gt;如果已经安装了Unity,请先卸载当前版本的Unity,然后再尝试进行以下步骤。&lt;/p&gt;&lt;/blockquote&gt;&lt;section&gt;&lt;h3&gt;方法一&lt;a href=&quot;#方法一&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;也是最简单的方法
通过官方的Unity Editor官方的发行界面下载Unity Editor,随后将安装好的Unity版本添加至UnityHub(可选)。&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://unity.com/releases/editor/archive&quot;&gt;点我跳转至官方的Unity Editor发行界面&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;方法二&lt;a href=&quot;#方法二&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;使用代理软件来进行安装,市面上有很多代理软件可供选择,例如Shadowsocks、V2Ray、Clash等。&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;以下是推荐代理软件的GitHub仓库地址(现依旧在更新的仓库,截至2025.11.26):&lt;/p&gt;&lt;/blockquote&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/2dust/v2rayN&quot;&gt;v2rayN&lt;/a&gt; - 客户端多平台支持&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/clash-verge-rev/clash-verge-rev&quot;&gt;Clash Verge&lt;/a&gt; - Clash 变体客户端，支持 Windows/Mac/Linux，GUI 友好，兼容 Meta 内核。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;如果你使用的是Shadowsocks/Clash类的代理软件，只需修改浏览器的HTTP/HTTPS代理或者修改规则即可&lt;/p&gt;&lt;p&gt;以下是在Windows/MacOS系统的解决方式&lt;/p&gt;&lt;p&gt;Windows:&lt;/p&gt;&lt;p&gt;将以下文本使用 &lt;code&gt;记事本&lt;/code&gt; 或者其他编辑器保存后,右键重命名为 &lt;code&gt;.bat&lt;/code&gt; 后缀名&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;#windows%E6%98%BE%E7%A4%BA%E6%96%87%E4%BB%B6%E6%89%A9%E5%B1%95%E5%90%8D%E7%9A%84%E7%A4%BA%E4%BE%8B&quot;&gt;点我跳转至示例截图&lt;/a&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;@&lt;/span&gt;&lt;span&gt;echo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;off&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 此处1080为你的代理端口,如果代理端口不在1080,请修改为你的代理端口&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;set&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;HTTP_PROXY&lt;/span&gt;&lt;span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;http://127.0.0.1:1080&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;set&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;http_proxy&lt;/span&gt;&lt;span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;http://127.0.0.1:1080&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;set&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;HTTPS_PROXY&lt;/span&gt;&lt;span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;http://127.0.0.1:1080&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;set&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;https_proxy&lt;/span&gt;&lt;span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;http://127.0.0.1:1080&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 此处为Unity Hub的默认安装路径,如果你的安装路径不一样请修改为你的安装路径&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;start&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;C:\Program Files\Unity Hub\Unity Hub.exe&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;MacOS：
需要在终端中运行下面脚本，然后把生成的&lt;code&gt;launchUnityHub.command&lt;/code&gt;挪到一个方便的位置（例如桌面）&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;echo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;#!/bin/bash&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 此处1080为你的代理端口,如果代理端口不在1080,请修改为你的代理端口&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;export HTTP_PROXY=http://127.0.0.1:1080&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;export http_proxy=http://127.0.0.1:1080&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;export HTTPS_PROXY=http://127.0.0.1:1080&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;export https_proxy=http://127.0.0.1:1080&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;nohup &quot;/Applications/Unity Hub.app/Contents/MacOS/Unity Hub&quot; &amp;amp;&amp;gt;/dev/null &amp;amp;&apos;&lt;/span&gt;&lt;span&gt; &amp;gt; &lt;/span&gt;&lt;span&gt;launchUnityHub.command&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;chmod&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;+x&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;launchUnityHub.command&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;双击运行生成的&lt;code&gt;launchUnityHub.command&lt;/code&gt;即可启动Unity Hub。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;方法二&lt;a href=&quot;#方法二-1&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;如果你的代理软件支持&lt;code&gt;TUN&lt;/code&gt;模式,可以直接开启&lt;code&gt;TUN&lt;/code&gt;模式+全局代理。&lt;/p&gt;&lt;p&gt;如果有已安装的Unity Hub版本，先卸载，为以防万一，卸载之后删除~/AppData/Roaming这个目录下的Unity Hub目录。然后再安装。
Windows可以运行以下命令以删除Unity Hub的配置文件夹:&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;rd&lt;/span&gt;&lt;span&gt; /s /q &lt;/span&gt;&lt;span&gt;&lt;span&gt;&quot; &lt;/span&gt;&lt;span&gt;%&lt;/span&gt;&lt;/span&gt;&lt;span&gt;USERPROFILE&lt;/span&gt;&lt;span&gt;&lt;span&gt;%&lt;/span&gt;&lt;span&gt;\AppData\Roaming\UnityHub&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;直接开启TUN模式,然后直接下载Unity国际版本。&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://public-cdn.cloud.unity3d.com/hub/nuo/unityhubSetup.exe&quot;&gt;点击这里下载Windows版本&lt;/a&gt;
&lt;a href=&quot;https://public-cdn.cloud.unity3d.com/hub/prod/unityhubSetup.dmg&quot;&gt;点击这里下载MacOS版本&lt;/a&gt;&lt;/p&gt;&lt;p&gt;这里有一些Unity编辑器的软链接 安装版本列表&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;#unity-%E5%88%97%E8%A1%A8&quot;&gt;点我跳转至安装版本列表&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;Unity 列表&lt;a href=&quot;#unity-列表&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;VRChat官方给出的Unity版本是2022.3.22f1&lt;/p&gt;&lt;p&gt;&lt;a&gt;点击此处安装VRChat官方推荐的Unity版本&lt;/a&gt;&lt;/p&gt;&lt;p&gt;这里是Unity软连接地址(点击对应版本号会自动唤起本地的Unity Hub应用开始安装对应版本的Unity):&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;Tips: 如果你下列没有需要版本你可以以&lt;code&gt;unityhub://&lt;/code&gt;开头然后又添加上 &lt;code&gt;{版本号}&lt;/code&gt; 的格式来安装其他版本的Unity。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;由于版本有点多,我给出了一个版本目录(基于&lt;a href=&quot;https://zhuanlan.zhihu.com/p/106132063&quot;&gt;如何取得Unity Hub内旧版本Unity下载链接&lt;/a&gt;基础上优化显示)方便你更好的找到他们。&lt;/p&gt;&lt;section&gt;&lt;h3&gt;版本目录(点击即可跳转)&lt;a href=&quot;#版本目录点击即可跳转&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#unity%E4%B8%AD%E5%9B%BD%E7%89%B9%E4%BE%9B%E8%BD%AC%E5%9B%BD%E9%99%85%E7%89%88%E6%9C%AC&quot;&gt;Unity中国特供转国际版本&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#%E7%9B%AE%E5%BD%95&quot;&gt;目录&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E7%AE%80%E4%BB%8B&quot;&gt;简介&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E5%88%A4%E6%96%AD&quot;&gt;判断&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E4%B8%BA%E4%BB%80%E4%B9%88%E8%A6%81%E5%AE%89%E8%A3%85%E5%9B%BD%E9%99%85%E7%89%88%E6%9C%AC&quot;&gt;为什么要安装国际版本&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E8%A7%A3%E5%86%B3%E6%96%B9%E6%B3%95&quot;&gt;解决方法&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#%E6%96%B9%E6%B3%95%E4%B8%80&quot;&gt;方法一&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E6%96%B9%E6%B3%95%E4%BA%8C&quot;&gt;方法二&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E6%96%B9%E6%B3%95%E4%BA%8C-1&quot;&gt;方法二&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#unity-%E5%88%97%E8%A1%A8&quot;&gt;Unity 列表&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#%E7%89%88%E6%9C%AC%E7%9B%AE%E5%BD%95%E7%82%B9%E5%87%BB%E5%8D%B3%E5%8F%AF%E8%B7%B3%E8%BD%AC&quot;&gt;版本目录(点击即可跳转)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#unity-20212&quot;&gt;Unity 2021.2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#unity-20211&quot;&gt;Unity 2021.1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#unity-20203lts&quot;&gt;Unity 2020.3(LTS)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#unity-20202&quot;&gt;Unity 2020.2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#unity-20201&quot;&gt;Unity 2020.1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#unity-20194lts&quot;&gt;Unity 2019.4(LTS)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#unity-20193&quot;&gt;Unity 2019.3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#unity-20192&quot;&gt;Unity 2019.2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#unity-20191&quot;&gt;Unity 2019.1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#unity-20184lts&quot;&gt;Unity 2018.4(LTS)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#unity-20183&quot;&gt;Unity 2018.3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#unity-20182&quot;&gt;Unity 2018.2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#unity-20181&quot;&gt;Unity 2018.1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#unity-20174lts&quot;&gt;Unity 2017.4(LTS)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#unity-20173&quot;&gt;Unity 2017.3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#unity-20172&quot;&gt;Unity 2017.2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#unity-20171&quot;&gt;Unity 2017.1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#unity-5&quot;&gt;Unity 5&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E5%BC%95%E7%94%A8&quot;&gt;引用&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E7%A4%BA%E4%BE%8B%E5%9B%BE%E7%89%87&quot;&gt;示例图片&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#windows%E6%98%BE%E7%A4%BA%E6%96%87%E4%BB%B6%E6%89%A9%E5%B1%95%E5%90%8D%E7%9A%84%E7%A4%BA%E4%BE%8B&quot;&gt;Windows显示文件扩展名的示例&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Unity 2021.2&lt;a href=&quot;#unity-20212&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;a&gt;2021.2.0a10/b8c2bb7e8b36&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Unity 2021.1&lt;a href=&quot;#unity-20211&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;a&gt;2021.1.0f1/61a549675243&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Unity 2020.3(LTS)&lt;a href=&quot;#unity-20203lts&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;a&gt;2020.3.2f1/8fd9074bf66c&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2020.3.1f1/77a89f25062f&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2020.3.0f1/c7b5465681fb&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Unity 2020.2&lt;a href=&quot;#unity-20202&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;a&gt;2020.2.7f1/c53830e277f1&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2020.2.6f1/8a2143876886&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2020.2.5f1/e2c53f129de5&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2020.2.4f1/becced5a802b&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2020.2.3f1/8ff31bc5bf5b&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2020.2.2f1/068178b99f32&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2020.2.1f1/270dd8c3da1c&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2020.2.0f1/3721df5a8b28&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Unity 2020.1&lt;a href=&quot;#unity-20201&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;2020.1.1xf1&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a&gt;2020.1.17f1/9957aee8edc2&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2020.1.16f1/f483ad6465d6&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2020.1.15f1/97d0ae02d19d&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2020.1.14f1/d81f64f5201d&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2020.1.13f1/5e24f28bfbc0&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2020.1.12f1/55b56f0a86e3&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2020.1.11f1/698c1113cef0&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2020.1.10f1/974a9d56f159&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;2020.1.xf1&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a&gt;2020.1.9f1/145f5172610f&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2020.1.8f1/22e8c0b0c3ec&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2020.1.7f1/064ffcdb64ad&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2020.1.6f1/fc477ca6df10&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2020.1.5f1/e025938fdedc&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2020.1.4f1/fa717bb873ec&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2020.1.3f1/cf5c4788e1d8&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2020.1.2f1/7b32bc54ba47&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2020.1.1f1/2285c3239188&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2020.1.0f1/2ab9c4179772&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Unity 2019.4(LTS)&lt;a href=&quot;#unity-20194lts&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;2019.4.2xf1&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a&gt;2019.4.20f1/6dd1c08eedfa&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;2019.4.1xf1&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a&gt;2019.4.19f1/ca5b14067cec&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.4.18f1/3310a4d4f880&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.4.17f1/667c8606c536&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.4.16f1/e05b6e02d63e&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.4.15f1/fbf367ac14e9&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.4.14f1/4037e52648cd&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.4.13f1/518737b1de84&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.4.12f1/225e826a680e&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.4.11f1/2d9804dddde&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.4.10f1/5311b3af6f69&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;2019.4.xf1&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a&gt;2019.4.9f1/50fe8a171dd9&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.4.8f1/60781d942082&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.4.7f1/e992b1a16e65&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.4.6f1/a7aea80e3716&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.4.5f1/81610f64359c&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.4.4f1/1f1dac67805b&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.4.3f1/f880dceab6fe&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.4.2f1/20b4642a3455&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.4.1f1/e6c045e14e4e&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.4.0f1/0af376155913&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Unity 2019.3&lt;a href=&quot;#unity-20193&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;2019.3.1xf1&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a&gt;2019.3.15f1/59ff3e03856d&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.3.14f1/2b330bf6d2d8&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.3.13f1/d4ddf0d95db9&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.3.12f1/84b23722532d&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.3.11f1/ceef2d848e70&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.3.10f1/5968d7f82152&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;2019.3.xf1&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a&gt;2019.3.9f1/e6e740a1c473&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.3.8f1/4ba98e9386ed&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.3.8f1/4ba98e9386ed&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.3.7f1/6437fd74d35d&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.3.6f1/5c3fb0a11183&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.3.5f1/d691e07d38ef&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.3.4f1/4f139db2fdbd&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.3.3f1/7ceaae5f7503&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.3.2f1/c46a3a38511e&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.3.1f1/89d6087839c2&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.3.0f6/27ab2135bccf&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Unity 2019.2&lt;a href=&quot;#unity-20192&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;2019.2.1xf1&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a&gt;2019.2.21f1/9d528d026557&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.2.20f1/c67d00285037&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.2.19f1/929ab4d01772&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.2.18f1/bbf64de26e34&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.2.17f1/8e603399ca02&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.2.16f1/b9898e2d04a4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.2.15f1/dcb72c2e9334&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.2.14f1/49dd4e9fa428&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.2.13f1/e20f6c7e5017&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.2.12f1/b1a7e1fb4fa5&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.2.11f1/5f859a4cfee5&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.2.10f1/923acd2d43aa&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;2019.2.xf1&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a&gt;2019.2.9f1/ebce4d76e6e8&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.2.8f1/ff5b465c8d13&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.2.7f2/c96f78eb5904&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.2.7f2/c96f78eb5904&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.2.5f1/9dace1eed4cc&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.2.4f1/c63b2af89a85&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.2.3f1/8e55c27a4621&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.2.2f1/ab112815d860&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.2.1f1/ca4d5af0be6f&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2019.2.0f1/20c1667945cf&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Unity 2019.1&lt;a href=&quot;#unity-20191&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;2019.1.1xf1&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a&gt;2019.1.14f1/148b5891095a&lt;/a&gt;
&lt;a&gt;2019.1.13f1/b5956c0a61e7&lt;/a&gt;
&lt;a&gt;2019.1.12f1/f04f5427219e&lt;/a&gt;
&lt;a&gt;2019.1.11f1/9b001d489a54&lt;/a&gt;
&lt;a&gt;2019.1.10f1/f007ed779b7a&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;2019.1.xf1&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a&gt;2019.1.9f1/d5f1b37da199&lt;/a&gt;
&lt;a&gt;2019.1.8f1/7938dd008a75&lt;/a&gt;
&lt;a&gt;2019.1.7f1/f3c4928e5742&lt;/a&gt;
&lt;a&gt;2019.1.6f1/f2970305fe1c&lt;/a&gt;
&lt;a&gt;2019.1.5f1/0ca0f5646614&lt;/a&gt;
&lt;a&gt;2019.1.4f1/ffa3a7a2dd7d&lt;/a&gt;
&lt;a&gt;2019.1.3f1/dc414eb9ed43&lt;/a&gt;
&lt;a&gt;2019.1.2f1/3e18427e571f&lt;/a&gt;
&lt;a&gt;2019.1.1f1/fef62e97e63b&lt;/a&gt;
&lt;a&gt;2019.1.0f2/292b93d75a2c&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Unity 2018.4(LTS)&lt;a href=&quot;#unity-20184lts&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;2018.4.32f1&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a&gt;2018.4.32f1/fba45da84107&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.4.31f1/212ea663d844&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.4.30f1/c698a062d8e6&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.4.29f1/50cce2edf27f&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.4.28f1/a2d4f71491a4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.4.27f1/4e283b7d3f88&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.4.26f1/a7ac1c6396db&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.4.25f1/b07bfa0a8827&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.4.24f1/3071911a89e9&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.4.23f1/c9cf1a90e812&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.4.22f1/3362ffbb7aa1&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.4.21f1/fd3915227633&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.4.20f1/008688490035&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;2018.4.1xf1&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a&gt;2018.4.19f1/459f70f82ea4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.4.18f1/61fce66342ad&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.4.17f1/b830f56f42f0&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.4.16f1/e6e9ca02b32a&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.4.15f1/13f5a1bf9ca1&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.4.14f1/05119b33d0b7&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.4.13f1/497f083a43af&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.4.12f1/59ddc4c59b4f&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.4.11f1/7098af2f11ea&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.4.10f1/a0470569e97b&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.4.9f1/ca372476eaba&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.4.8f1/9bc9d983d803&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.4.7f1/b9a993fd1334&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.4.6f1/cde1bbcc9f0d&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.4.5f1/7b38f8ac282e&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.4.4f1/5440768ff61c&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.4.3f1/8a9509a5aff9&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.4.2f1/d6fb3630ea75&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.4.1f1/b7c424a951c0&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.4.0f1/b6ffa8986c8d&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Unity 2018.3&lt;a href=&quot;#unity-20183&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;2018.3.1xf1&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a&gt;2018.3.14f1/d0e9f15437b1&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.3.13f1/06548a9e9582&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.3.12f1/8afd630d1f5b&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.3.11f1/5063218e4ab8&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.3.10f1/f88de2c96e63&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.3.9f1/947e1ea5aa8d&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.3.8f1/fc0fe30d6d91&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.3.7f1/9e14d22a41bb&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.3.6f1/a220877bc173&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.3.5f1/76b3e37670a4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.3.4f1/1d952368ca3a&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.3.3f1/393bae82dbb8&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.3.2f1/b3c100a4b73a&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.3.1f1/bb579dc42f1d&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.3.0f2/6e9a27477296&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Unity 2018.2&lt;a href=&quot;#unity-20182&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;2018.2.2xf1&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a&gt;2018.2.21f1/a122f5dc316d&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.2.20f1/cef3e6c0c622&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;2018.2.1xf1&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a&gt;2018.2.19f1/06990f28ba00&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.2.18f1/4550892b6062&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.2.17f1/88933597c842&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.2.16f1/39a4ac3d51f6&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.2.15f1/65e0713a5949&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.2.14f1/3262fb3b0716&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.2.13f1/83fbdcd35118&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.2.12f1/0a46ddfcfad4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.2.11f1/38bd7dec5000&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.2.10f1/674aa5a67ed5&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;2018.2.xf1&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a&gt;2018.2.9f1/2207421190e9&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.2.8f1/ae1180820377&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.2.7f1/4ebd28dd9664&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.2.6f1/c591d9a97a0b&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.2.5f1/3071d1717b71&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.2.4f1/cb262d9ddeaf&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.2.3f1/1431a7d2ced7&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.2.2f1/c18cef34cbcd&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.2.1f1/1a9968d9f99c&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.2.0f2/787658998520&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Unity 2018.1&lt;a href=&quot;#unity-20181&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;2018.1.xf2&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a&gt;2018.1.9f2/a6cc294b73ee&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.1.8f1/26051d4de9e9&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.1.7f1/4cb482063d12&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.1.6f1/57cc34175ccf&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.1.5f1/732dbf75922d&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.1.4f1/1a308f4ebef1&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.1.3f1/a53ad04f7c7f&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.1.2f1/a46d718d282d&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.1.1f1/b8cbb5de9840&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2018.1.0f2/d4d99f31acba&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Unity 2017.4(LTS)&lt;a href=&quot;#unity-20174lts&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;2017.4.4xf1&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a&gt;2017.4.40f1/6e14067f8a9a&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;2017.4.3xf1&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a&gt;2017.4.39f1/947131c5be7e&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2017.4.38f1/82ac2fb100ce&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2017.4.37f1/78b69503ebc4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2017.4.36f1/c663def8414c&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2017.4.35f1/e57a7bcbbf0b&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2017.4.34f1/121f18246307&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2017.4.33f1/a8557a619e24&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2017.4.32f1/4da3ed968770&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2017.4.31f1/9c8dbc3421cb&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2017.4.30f1/c6fa43736cae&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;2017.4.2xf1&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a&gt;2017.4.29f1/06508aa14ca1&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2017.4.28f1/e3a0f7dd2097&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2017.4.27f1/0c4b856e4c6e&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2017.4.26f1/3b349d10f010&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2017.4.25f1/9cba1c3a94f1&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2017.4.24f1/786769fc3439&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2017.4.23f1/f80c8a98b1b5&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2017.4.22f1/eb4bc6fa7f1d&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2017.4.21f1/de35fe252486&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2017.4.20f2/413dbd19b6dc&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;2017.4.1xf1&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a&gt;2017.4.19f1/47cd37c28be8&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2017.4.18f1/a9236f402e28&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2017.4.17f1/05307cddbb71&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2017.4.16f1/7f7bdd1ef02b&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2017.4.15f1/5d485b4897a7&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2017.4.14f1/b28150134d55&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2017.4.13f1/6902ad48015d&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2017.4.12f1/b582b87345b1&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2017.4.11f1/8c6b8ef6d111&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2017.4.10f1/f2cce2a5991f&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;2017.4.10f1&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a&gt;2017.4.9f1/6d84dfc57ccf&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2017.4.8f1/5ab7f4878ef1&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2017.4.7f1/de9eb5ca33c5&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2017.4.6f1/c24f30193bac&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2017.4.5f1/89d1db9cb682&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2017.4.4f1/645c9050ba4d&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2017.4.3f1/21ae32b5a9cb&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2017.4.2f2/52d9cb89b362&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2017.4.1f1/9231f953d9d3&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Unity 2017.3&lt;a href=&quot;#unity-20173&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;a&gt;2017.3.1f1/fc1d3344e6ea&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2017.3.0f3/a9f86dcd79df&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Unity 2017.2&lt;a href=&quot;#unity-20172&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;a&gt;2017.2.5f1/588dc79c95ed&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2017.2.4f1/f1557d1f61fd&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2017.2.3f1/372229934efd&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2017.2.2f1/1f4e0f9b6a50&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2017.2.1f1/94bf3f9e6b5e&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2017.2.0f3/46dda1414e51&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Unity 2017.1&lt;a href=&quot;#unity-20171&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;a&gt;2017.1.5f1/9758a36cfaa6&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2017.1.4f1/9fd71167a288&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2017.1.3f1/574eeb502d14&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2017.1.2f1/cc85bf6a8a04&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2017.1.1f1/5d30cf096e79&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;2017.1.0f3/472613c02cf7&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Unity 5&lt;a href=&quot;#unity-5&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;a&gt;5.6.7f1/e80cc3114ac1&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;5.6.6f2/6bac21139588&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;5.6.5f1/2cac56bf7bb6&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;5.6.4f1/ac7086b8d112&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;5.6.3f1/d3101c3b8468&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;5.6.2f1/a2913c821e27&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;5.6.1f1/2860b30f0b54&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;5.6.0f3/497a0f351392&lt;/a&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;Unity5.6以下版本不支持从Unity Hub中部署，故无法提供链接&lt;/p&gt;&lt;/blockquote&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;引用&lt;a href=&quot;#引用&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;文章引用了大部分文章并总结,原文地址如下:&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://www.logiconsole.com/fuck-unity-cn&quot;&gt;如何逃离Unity中国特供版&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://zhuanlan.zhihu.com/p/226163910&quot;&gt;Unity中国想钱想疯了&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://zhuanlan.zhihu.com/p/106132063&quot;&gt;如何取得Unity Hub内旧版本Unity下载链接&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;示例图片&lt;a href=&quot;#示例图片&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;Windows显示文件扩展名的示例&lt;a href=&quot;#windows显示文件扩展名的示例&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;1125&quot; height=&quot;634&quot; src=&quot;/_astro/image-1.MXLtoUmK_Z1RKnX5.webp&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item></channel></rss>