不得不应对的电子产品涨价

<p>近两年,AI 产业野蛮生长带动了整个内存产业涨价,而内存价格上涨又进一步传导到了消费电子领域。</p> <p>SSD、显卡、手机、电脑、NAS……</p> <p>几乎所有电子产品都在变贵。</p> <p>而且从目前来看,这场涨价潮大概率还会持续至少两年以上。</p> <p>既然改变不了,那普通人能做什么?</p> <p>我分享一下我这些年踩过坑之后总结出来的一些经验。</p> <p>很多事情其实我几年前就已经开始布局了。</p> <p><img src="https://halo.gadore.top/upload/ChatGPT%20Image%202026%E5%B9%B47%E6%9C%8814%E6%97%A5%2010_59_56.png"></p> <h1 id="手机:主动降级消费"><a href="#手机:主动降级消费" class="headerlink" title="手机:主动降级消费"></a>手机:主动降级消费</h1><h2 id="1、把手机拍照功能拆给相机"><a href="#1、把手机拍照功能拆给相机" class="headerlink" title="1、把手机拍照功能拆给相机"></a>1、把手机拍照功能拆给相机</h2><p>两年前,我突然意识到一件事情:</p> <p>手机摄影已经非常强了,但最终效果还是打不过相机。</p> <p>于是我决定:</p> <p><strong>以后不再为影像旗舰的高溢价买单。</strong></p> <p>直接采用:</p> <blockquote> <p>次旗舰手机 + 专业相机</p> </blockquote> <p><img src="https://halo.gadore.top/upload/2024_alpha6700_01.jpg"></p> <p>这样的组合。</p> <p>好处非常明显:</p> <ul> <li><p>手机两三年一换,不心疼;</p> </li> <li><p>相机可以长期使用;</p> </li> <li><p>相机的拍摄能力在短时间内根本不可能被手机追上。</p> </li> </ul> <p>摄影圈有一句老话:</p> <blockquote> <p>底大一级压死人。</p> </blockquote> <p>这句话直到今天依旧成立。</p> <p>哪怕是最基础的相机,也能给你一种明显越级的拍摄体验。</p> <p>至于便携性……</p> <p>随手拍的话,现在任何手机都已经够用了。</p> <p>当然了,相机买镜头的花销又是另一个悲伤的故事了 P(T_T)q</p> <h2 id="2、降低手机存储空间溢价"><a href="#2、降低手机存储空间溢价" class="headerlink" title="2、降低手机存储空间溢价"></a>2、降低手机存储空间溢价</h2><p>2020 年买了 NAS 之后,我就在有意识地降低自己对 iCloud 的依赖。</p> <p>仔细想想,我们付费购买 iCloud,原因无非两个:</p> <p>1、照片太多,需要同步;</p> <p>2、依赖 iCloud 的第三方软件越来越多,例如 Obsidian。</p> <p>而 NAS 刚好能同时解决这两个问题。</p> <p>相册方面,我已经完全迁移到了 Immich。</p> <p>它拥有完全不输官方相册的体验,而且 AI 搜索更智能。</p> <p>更重要的是:<strong>全平台支持。</strong></p> <p>安卓、网页、Windows,访问体验甚至比 iCloud 更方便。</p> <p>至于 iCloud Drive,那就更是 NAS 的舒适区了。</p> <p><img src="https://halo.gadore.top/upload/iShot_2026-07-02_13.45.45.png"></p> <p>苹果官方一年的订阅价格,很多时候已经足够买一块容量大得多的硬盘。</p> <p>如果你想要自己的 NAS 在 iOS 上达到类似 iCloud 后台同步的体验,可以试试 <a href="https://apps.apple.com/cn/app/synosync/id6762731663">SynoSync</a>。</p> <h2 id="3、次旗舰和旧旗舰"><a href="#3、次旗舰和旧旗舰" class="headerlink" title="3、次旗舰和旧旗舰"></a>3、次旗舰和旧旗舰</h2><blockquote> <p>请注意,本篇文章不讨论 NAS 的整备价格,有时候一个路由器 + 一块机械硬盘同样可以满足基础的存储服务需求。</p> </blockquote> <p>有了 NAS 或者家庭存储服务器后,购买次旗舰或者旧旗舰就变成了一件非常合理的事情。</p> <p>现在消费电子涨价已经成为共识。</p> <p>一些厂商也开始主动延长设备生命周期。</p> <p>例如:谷歌最近三年的旗舰设备都拥有超过 5 年的系统更新周期,还有苹果公司在 iOS 27 所做的 30% 性能优化。</p> <p>现在手机性能真的已经够用了。</p> <p>真正的问题是:</p> <p>互联网公司的业务膨胀速度远远快于硬件的发展速度。</p> <p>开发越来越粗放,软件越来越臃肿,各家都恨不得把一个大型商超放到你的手机 App 里。</p> <p>最后导致用户不得不购买更贵的设备来运行这些越来越重的软件,</p> <p>这合理吗?难道软件做得差,最后买单的人反而是消费者?</p> <p>引用某演员的话:</p> <p><img src="https://halo.gadore.top/upload/OIP-C.webp"></p> <blockquote> <p>“贱不贱呐?”</p> </blockquote> <p>我一直有一个原则:<strong>谁优化做得好,我就优先用谁。</strong></p> <p>这个原则我已经坚持很多年了。</p> <h2 id="4、使用轻量化软件"><a href="#4、使用轻量化软件" class="headerlink" title="4、使用轻量化软件"></a>4、使用轻量化软件</h2><p>现在很多 App 已经变成了:</p> <blockquote> <p>在广告里边加了一点 App 功能。</p> </blockquote> <p>打开先给你来:开屏广告、会员广告、平台推荐、第三方推荐、自动播放的视频广告。</p> <p>尤其是自动播放视频广告。</p> <p>现在几乎所有国产主流 App 都喜欢干这个。</p> <p>不仅消耗性能,还消耗电量。</p> <p>最重要的是消耗心情。</p> <p>这一点,B 站 UP 主 「苏星河牛通」讲得更加透彻,感兴趣移步观看:<a href="https://www.bilibili.com/video/BV1seegzzEnH">真的没有人能管管,早已泛滥的软件广告吗?</a></p> <h4 id="我不用你行不行?"><a href="#我不用你行不行?" class="headerlink" title="我不用你行不行?"></a>我不用你行不行?</h4><p>爱优腾,已经三年以上没打开过了。</p> <p>广告软件 + 低水平影视工业流水线,最终产出的往往也是流水线内容。</p> <p>当然,无意冒犯;不过互联网寻找资源这门祖传手艺,感觉真的要在我们这一代失传了。</p> <h3 id="B-站"><a href="#B-站" class="headerlink" title="B 站"></a>B 站</h3><p>长期使用国际版。</p> <p>安卓选择甚至更多:</p> <ul> <li><p>PiliPlus</p> </li> <li><p>PiliPala</p> </li> </ul> <h3 id="微博"><a href="#微博" class="headerlink" title="微博"></a>微博</h3><p>iPhone:</p> <ul> <li><p>VVebo</p> </li> <li><p>国际版</p> </li> </ul> <p>安卓:</p> <ul> <li>See</li> </ul> <h3 id="购物软件"><a href="#购物软件" class="headerlink" title="购物软件"></a>购物软件</h3><p>淘宝、京东平时全部使用网页或者小程序。</p> <p>只有付款的时候才打开 App。</p> <h3 id="QQ"><a href="#QQ" class="headerlink" title="QQ"></a>QQ</h3><p>坚持使用 TIM。</p> <p>干净。</p> <p>好用。</p> <p>无广告。</p> <p>无虚幻引擎。</p> <h3 id="银行-App"><a href="#银行-App" class="headerlink" title="银行 App"></a>银行 App</h3><p>全部开启大字体模式。</p> <p>如果支持的话。</p> <h3 id="X"><a href="#X" class="headerlink" title="X"></a>X</h3><p>现在甚至连 X 都开始有国产 App 的味道了。</p> <p>于是果断换成了 Spring。</p> <p>非常清爽。</p> <p>非常舒服。</p> <p>另外:</p> <p>请关闭所有国产流氓软件的后台运行权限。</p> <p>包括 iOS 和 Android。</p> <p>真的有效。</p> <p>在完成这一轮轻量化替换之后你会发现:</p> <p>很多所谓的“性能不够”,其实根本不是性能问题。</p> <p>很多年前的手机依旧还能流畅使用。</p> <p>真正拖慢手机的,从来都不是芯片。</p> <p>而是软件。</p> <h4 id="至于微信……"><a href="#至于微信……" class="headerlink" title="至于微信……"></a>至于微信……</h4><p>我们只能被动抗争。</p> <p>作为国民级 App,我们唯一能做的,大概就是让更多低配置、中配置设备继续运行微信。</p> <p>这样微信后台统计出来的低端设备占比,才不会过早下降到一个可以忽略优化的程度。</p> <p>你今天还能比较流畅地使用微信,背后其实有无数旧手机用户在默默发力。</p> <h1 id="电脑:修修补补再三年"><a href="#电脑:修修补补再三年" class="headerlink" title="电脑:修修补补再三年"></a>电脑:修修补补再三年</h1><h2 id="1、旧平台真没有那么差"><a href="#1、旧平台真没有那么差" class="headerlink" title="1、旧平台真没有那么差"></a>1、旧平台真没有那么差</h2><p>现在很多装机讨论一开口就是:</p> <blockquote> <p>不是 DDR5 能用?</p> </blockquote> <blockquote> <p>不是 i7 能用?</p> </blockquote> <p>还真能。</p> <p>前段时间我买了一台<br>Intel Core i3-12100<br>主机做开发测试。</p> <p>采购经理专门跑过来问我:</p> <blockquote> <p>你确定买 i3?能用吗?</p> </blockquote> <p>我回:那也得看是谁家的 i3 啊(笑)。</p> <p>12100 已经强到离谱了。</p> <p>办公完全没问题。</p> <p>甚至很多 3A 游戏都完全够用。</p> <p>前提是你的显卡别拖后腿。</p> <p>对于办公和开发来说:</p> <p>DDR4 平台依旧是性价比之王。</p> <h2 id="2、找到真正的瓶颈"><a href="#2、找到真正的瓶颈" class="headerlink" title="2、找到真正的瓶颈"></a>2、找到真正的瓶颈</h2><h4 id="Mac-Mini-M4-16GB-256GB-的困境"><a href="#Mac-Mini-M4-16GB-256GB-的困境" class="headerlink" title="Mac Mini M4 16GB + 256GB 的困境"></a>Mac Mini M4 16GB + 256GB 的困境</h4><p>我 ¥ 3500 首发购买的 Mac mini M4 已经使用了接近两年了,16GB + 256 GB 的配置的确是有点儿捉襟见肘了,每次用 XCode 开发测试完 iPad 之后,就得立刻启动 Cleaner for XCode 赶紧把 iPad 的 SDK 给清除掉,这样就可以省出来 5GB 的磁盘空间,我又可以去打开 VSCode 去测试 Flutter 应用了。</p> <p><img src="https://halo.gadore.top/upload/IMG_0987.jpeg"></p> <p>6月苹果决定 Mac 集体涨价 20% 的时候,我是崩溃的,看来短期内便宜买到 Mac mini M5 的可能性无了,索性把苹果涨价的一千多块钱购入了 1TB 的硬盘,直接拆机替换掉了。</p> <p>外接硬盘盒后把苹果系统装到硬盘盒也是一个选择,但经过了一年的使用,我还是无法忍受以下缺点:</p> <ul> <li><p>开关机要比原生磁盘慢 30 - 50s</p> </li> <li><p>任何一次 Mac mini 的位置移动,或者插拔数据线不小心碰到硬盘盒的线的时候,Mac 都可能会立刻卡死,然后过了一两分钟后重启。</p> </li> </ul> <h4 id="群晖-DS-920-CPU-过于孱弱的问题"><a href="#群晖-DS-920-CPU-过于孱弱的问题" class="headerlink" title="群晖 DS 920+ CPU 过于孱弱的问题"></a>群晖 DS 920+ CPU 过于孱弱的问题</h4><p><img src="https://halo.gadore.top/upload/Beelink-EQi-13500H__08_8f44593d-4f8c-4967-b658-1174ef6acb22.webp"></p> <p>DS 920+ 已经在我家服役超过 4 年,它完全承担了我新的相册服务(Immich)托管、影音托管、漫画托管等等。但他一直有一个问题无法解决:自带的 J4105 赛扬处理器性能实在过于孱弱,有时候批量上传超过 100 张照片,Immich 在后台做 AI 分析的时候,Emby 影视服务就会受到影响;或者我在看 Komga 托管的漫画的时候,PDF 解析占用的 CPU 资源也会导致 Emby 软解码失败。</p> <p>我在 6 月份以 ¥1700 左右 抢到了零刻 EQi 13 的准系统,拥有 15-13500H 的处理器,将 Docker 十多个服务全部迁移到 EQi 13 上,同时影音服务也迁移到了飞牛 OS,使用运行在 EQi 13 的飞牛 OS 负责计算任务,群晖仅仅提供 SMB 文件托管服务,同时挂载在飞牛的群晖远程文件夹也配置了低权限访问,存算分离的同时也拥有了安全的保障,也比购买一个性能更强的 NAS 要便宜很多。</p> <p><img src="https://halo.gadore.top/upload/Beelink-EQi-13500H__05_26c8ef9c-6c77-4782-a14a-655eb72db899.webp"></p> <p>购买 EQi 的最主要原因,除了支持 DDR4 内存外,还有一个重要的原因:内置电源,内置电源好文明!希望成为 mini 主机的标准。</p> <p>对了,在抢不到 EQi 13 的情况下,还可以考虑 EQi 12,用作 NAS 的计算完全是性能过剩的,价格也更便宜,大概 ¥1100 ~¥ 1300。</p> <h1 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h1><p>回头看,这几年做得最正确的事情,大概有三件:</p> <ul> <li><p>购入 NAS,迁移一切可迁移的服务到 NAS 中去,降低对手机厂家云服务的依赖</p> </li> <li><p>购入相机,拆分手机的拍照能力</p> </li> <li><p>大量设备从二手平台购买</p> </li> </ul> <p>长期主义最大的优势就在这里。</p> <p>很多消费决策看起来是在省钱。</p> <p>但本质上是在避免支付不必要的溢价。</p> <p>毕竟:</p> <p>电子产品越来越贵,大概率已经不是一个周期问题,而是未来很多年的新常态。</p> <p>既然如此,我们能做的就只有一件事:</p> <p>尽量把钱花在真正影响体验的地方。</p> <p><a href="https://halo.gadore.top/about"></a></p>

2026/7/14
阅读更多

SynoSync(时刻同步) 1.2.1:支持 MacOS (完全免费) + iOS 版本内购四折优惠!

<blockquote> <p>SynoSync 在移动端的稳定性已经拥有了大部分用户的验证了,现在我也终于有余力腾出手来做 MacOS 端的兼容,首先我要坦诚:MacOS 端使用的是 Catalyst 兼容运行,因为这样的方案下移植工作量是最小的,毕竟 SynoSync 第一优先的仍旧是移动端的功能稳定,现在通过 Catalyst 让 MacOS 平台的用户也用上了 SynoSync 的绝大多数功能。</p> </blockquote> <p>如果你还不了解 SynoSync,可以通过以下文章进行了解:</p> <p>我的博客网站:</p> <ol> <li><p><a href="https://blog.gadore.top/archives/synosync">时刻同步(SynoSync):iOS 缺失的现代化文件同步</a></p> </li> <li><p><a href="https://blog.gadore.top/archives/synosync-update-log">时刻同步(SynoSync)1.1.5 版本更新:iOS 低版本支持</a></p> </li> </ol> <p>国内用户可以访问少数派:</p> <ul> <li><p><a href="https://sspai.com/post/109465">SynoSync|让群晖与 iOS 之间的文件同步真正「现代化」 - 少数派</a></p> </li> <li><p><a href="https://sspai.com/post/110597">时刻同步(SynoSync)1.1.5 版本更新:iOS 低版本支持 - 少数派</a></p> </li> </ul> <h2 id="SynoSync-时刻同步-版本-1-2-1-更新主要更新了啥?"><a href="#SynoSync-时刻同步-版本-1-2-1-更新主要更新了啥?" class="headerlink" title="SynoSync (时刻同步) 版本 1.2.1 更新主要更新了啥?"></a>SynoSync (时刻同步) 版本 1.2.1 更新主要更新了啥?</h2><h3 id="bug-修复-🐛"><a href="#bug-修复-🐛" class="headerlink" title="bug 修复 🐛"></a>bug 修复 🐛</h3><ul> <li><p>同名文件覆盖失败问题</p> </li> <li><p>优化服务器超时时间统一设置</p> </li> </ul> <h3 id="功能优化-🛠️"><a href="#功能优化-🛠️" class="headerlink" title="功能优化 🛠️"></a>功能优化 🛠️</h3><ul> <li><p>DSM 连接模式下,增加移动到回收站的选项</p> </li> <li><p>活动界面增加同步热力图展示</p> </li> </ul> <h3 id="Mac-OS-支持-💻"><a href="#Mac-OS-支持-💻" class="headerlink" title="Mac OS 支持 💻"></a>Mac OS 支持 💻</h3><p>优先支持搭载 M 系列处理器的 Mac,当前版本是基于 iOS 版本的代码基础,使用 Catalyst 进行兼容支持的,相比较我当前正在使用的 Synology Drive Client 客户端,SynoSync 拥有:</p> <table> <thead> <tr> <th>对比项</th> <th>Synology Drive Client</th> <th>SynoSync</th> </tr> </thead> <tbody><tr> <td>安装体积</td> <td>200 MB +</td> <td>13 MB</td> </tr> <tr> <td>界面信息</td> <td>传统,信息模糊,同步进度难以追踪</td> <td>现代化,信息清晰明了,同步进度信息面面俱到</td> </tr> <tr> <td>同步速度</td> <td>局域网较快,外网巨慢(超~级~慢)</td> <td>局域网和外网都非常快,仅仅取决于网络速度</td> </tr> </tbody></table> <p><img src="https://halo.gadore.top/upload/iShot_2026-06-15_13.12.10.png"></p> <p>图:永远处于连接中的 Synology Drive Client</p> <p><img src="https://halo.gadore.top/upload/iShot_2026-06-15_13.05.39.png"></p> <p>图:安装体积高达 253.8 MB 的 Synology Drive Client</p> <p><img src="https://halo.gadore.top/upload/iShot_2026-06-15_11.07.33.png"></p> <p>直观且同步速度极快的 SynoSync</p> <p><img src="https://halo.gadore.top/upload/iShot_2026-06-15_13.05.54.png"></p> <p>安装体积仅仅 13.7 MB</p> <p><strong>Mac OS 版本的 SynoSync (时刻同步) 完全免费!!!</strong></p> <p><strong>Mac OS 版本的 SynoSync (时刻同步) 完全免费!!!</strong></p> <p><strong>Mac OS 版本的 SynoSync (时刻同步) 完全免费!!!</strong></p> <p>因为程序跟 iOS 端使用的同一个上架配置,所以可能会在 Mac App Store 显示有内购,但实际上完全没有任何内购!!!所有功能完全免费使用!!!去下载啊!!!</p> <h2 id="下载方式"><a href="#下载方式" class="headerlink" title="下载方式"></a>下载方式</h2><p>App Store 搜索:SynoSync,或者访问下方链接</p> <p>时刻同步 (SynoSync):iOS&#x2F;MacOS 缺失的现代化文件同步: <a href="https://apps.apple.com/cn/app/synosync/id6762731663?platform=mac"><strong>App Store 下载地址</strong></a></p> <h2 id="SynoSync-时刻同步-移动端内购「四折」限时优惠码"><a href="#SynoSync-时刻同步-移动端内购「四折」限时优惠码" class="headerlink" title="SynoSync(时刻同步) 移动端内购「四折」限时优惠码"></a>SynoSync(时刻同步) 移动端内购「四折」限时优惠码</h2><h3 id="移动端内购之后你将获得:"><a href="#移动端内购之后你将获得:" class="headerlink" title="移动端内购之后你将获得:"></a>移动端内购之后你将获得:</h3><ul> <li><p>解锁 iOS 平台<strong>后台</strong>调度权限,让你的文档可以在<strong>后台静默同步</strong></p> </li> <li><p>解锁 iOS 平台的<strong>长时间同步模式</strong>,适合经常同步超大型文档库的使用场景</p> </li> <li><p>快捷<strong>指令 Intent 调用</strong>,解锁更加进阶的同步调用方式</p> </li> <li><p>更有设计感的图标更换</p> </li> <li><p>我的<strong>感激之情</strong> 🙏</p> </li> </ul> <h3 id="使用方式:"><a href="#使用方式:" class="headerlink" title="使用方式:"></a>使用方式:</h3><p><strong>请注意,以下优惠链接是给到 iOS 设备的,也就是 iPhone 和 iPad,请不要在 MacOS 端打开!!!</strong></p> <ol> <li><p>下载 SynoSync 到你的 iOS 设备上</p> </li> <li><p>打开下方我提供的折扣链接</p> </li> <li><p>通过折扣使用更低价格付款</p> </li> </ol> <h3 id="折扣链接-(100个)-🔗"><a href="#折扣链接-(100个)-🔗" class="headerlink" title="折扣链接 (100个) 🔗"></a>折扣链接 (100个) 🔗</h3><blockquote> <p>使用之后记得在评论区说哦</p> </blockquote> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=N48WX87WKPEX8NE86F">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=N48WX87WKPEX8NE86F</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=EA4TYHFK4WHJFK36YN">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=EA4TYHFK4WHJFK36YN</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=47NYXEY8JTHYP6HMR8">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=47NYXEY8JTHYP6HMR8</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=ATEN3W34W3MTYPM3JA">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=ATEN3W34W3MTYPM3JA</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=7W6XAKFAAEEKT883WF">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=7W6XAKFAAEEKT883WF</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=7K4KPNLJLYRFLEXRK4">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=7K4KPNLJLYRFLEXRK4</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=WJ4W8XTAP8KJMHPHF8">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=WJ4W8XTAP8KJMHPHF8</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=Y34RTMYWWNEW3866LK">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=Y34RTMYWWNEW3866LK</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=M3E6PXAPYMX33TLL43">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=M3E6PXAPYMX33TLL43</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=EHT37MEFA6RNEJYLJP">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=EHT37MEFA6RNEJYLJP</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=NT68PXJJ33J88LWJY3">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=NT68PXJJ33J88LWJY3</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=RPH4YL3LHKXL88NN8Y">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=RPH4YL3LHKXL88NN8Y</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=FNY3EF4XELXR447APL">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=FNY3EF4XELXR447APL</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=473AKJPLRF8WRJ7TNR">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=473AKJPLRF8WRJ7TNR</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=RLM8RJNKPRMKFYRMPJ">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=RLM8RJNKPRMKFYRMPJ</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=8LE8P7KYT8X8RL4KRE">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=8LE8P7KYT8X8RL4KRE</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=TKTJP8RPMXXLA6KFHP">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=TKTJP8RPMXXLA6KFHP</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=WEJNK3T7P4AREMEYWN">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=WEJNK3T7P4AREMEYWN</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=NK6Y87KJKJN3YWP4M7">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=NK6Y87KJKJN3YWP4M7</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=NJW4JNJ6XLXTXFLXJK">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=NJW4JNJ6XLXTXFLXJK</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=6XJJMMAR7HTMEK4K3P">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=6XJJMMAR7HTMEK4K3P</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=RHFN8T63LANH46RHXR">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=RHFN8T63LANH46RHXR</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=6K3AEPWHWAYA3RKLML">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=6K3AEPWHWAYA3RKLML</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=FJMARARTN8AE3MAN8L">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=FJMARARTN8AE3MAN8L</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=NYX74YXLY6XKR3FTN7">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=NYX74YXLY6XKR3FTN7</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=P7N8FEE4HA336ERAEY">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=P7N8FEE4HA336ERAEY</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=MXFH8TW43TEEA7AY8W">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=MXFH8TW43TEEA7AY8W</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=R8AA6NE4WYENYMY78R">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=R8AA6NE4WYENYMY78R</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=AKHTJTP4JTYR4T8RPL">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=AKHTJTP4JTYR4T8RPL</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=67HWF7NA7YT6KN34AN">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=67HWF7NA7YT6KN34AN</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=JMAJKNHXN6KXE46X6R">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=JMAJKNHXN6KXE46X6R</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=NT7TEY8AR6Y8TK4EKH">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=NT7TEY8AR6Y8TK4EKH</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=RAFLTL8P7KAT3HPMME">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=RAFLTL8P7KAT3HPMME</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=WHHK3WPRY4AEFPPM88">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=WHHK3WPRY4AEFPPM88</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=6K743KMK3XHWNXM634">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=6K743KMK3XHWNXM634</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=76TA6RNEYXHW4K36WF">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=76TA6RNEYXHW4K36WF</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=78JRTPHR7LTM3M4K6F">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=78JRTPHR7LTM3M4K6F</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=3H838FTAMLTR8M343Y">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=3H838FTAMLTR8M343Y</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=L8YHNPRHYJJWY7F6LH">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=L8YHNPRHYJJWY7F6LH</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=TH33YYT74L4JJ8EKL3">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=TH33YYT74L4JJ8EKL3</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=L484R6JTWY3J3H3WMJ">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=L484R6JTWY3J3H3WMJ</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=34HEANEL6XWAAWA6ME">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=34HEANEL6XWAAWA6ME</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=YYRFEHWY8Y6E3KYTYN">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=YYRFEHWY8Y6E3KYTYN</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=JLKHTYPLM686M74H84">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=JLKHTYPLM686M74H84</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=6XXYRJTM8RJF44H8JE">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=6XXYRJTM8RJF44H8JE</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=TL3J88T4WNWXXLH3HE">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=TL3J88T4WNWXXLH3HE</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=HRH7MYKWHFN37TTXHM">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=HRH7MYKWHFN37TTXHM</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=4KY4N4AL8KTFFKJYNA">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=4KY4N4AL8KTFFKJYNA</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=F7747P6HP6HEKM6NKH">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=F7747P6HP6HEKM6NKH</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=L7363RHTHYWFFEXLFP">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=L7363RHTHYWFFEXLFP</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=37MLPHHXXHWLAJ63M8">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=37MLPHHXXHWLAJ63M8</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=L8M6LLTH4A8EYN3TEH">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=L8M6LLTH4A8EYN3TEH</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=8K4884P3L7LXJ3FP6E">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=8K4884P3L7LXJ3FP6E</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=WYFEENPKWXK84RPF3M">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=WYFEENPKWXK84RPF3M</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=LF6HMPRKFLYEYMTWM8">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=LF6HMPRKFLYEYMTWM8</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=Y466HK7L34NMFFEX3F">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=Y466HK7L34NMFFEX3F</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=WMREWNR764K8RL4WY7">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=WMREWNR764K8RL4WY7</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=4ARPT88RNLAXH3MPEH">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=4ARPT88RNLAXH3MPEH</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=XRF4HMKNPNLXYXXJM8">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=XRF4HMKNPNLXYXXJM8</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=LP3WE4P8M7L34JR3TJ">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=LP3WE4P8M7L34JR3TJ</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=LTXRYMKA64H7JX6RMF">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=LTXRYMKA64H7JX6RMF</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=MFNL7T6TAL644MA8A8">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=MFNL7T6TAL644MA8A8</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=R8J87HW8MHW4TY7P7X">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=R8J87HW8MHW4TY7P7X</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=AHFFLF3ARYKA37L73R">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=AHFFLF3ARYKA37L73R</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=N846N8Y6M7NRN8XJME">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=N846N8Y6M7NRN8XJME</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=M7LA7MTL7P6RYPMPHH">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=M7LA7MTL7P6RYPMPHH</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=FY4EPY6H468X8K74AA">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=FY4EPY6H468X8K74AA</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=W6HM7FN4A4NL4NMPP4">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=W6HM7FN4A4NL4NMPP4</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=6MXNWYXTTX8P6NLNM8">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=6MXNWYXTTX8P6NLNM8</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=K4F3EXFWYKJ3PRYL3H">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=K4F3EXFWYKJ3PRYL3H</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=EPMKKWPPT4XARHLNE4">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=EPMKKWPPT4XARHLNE4</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=3NRX3NNH6AHM7JTHJW">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=3NRX3NNH6AHM7JTHJW</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=KALKPPLKWMPWWAY8E4">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=KALKPPLKWMPWWAY8E4</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=EPTTL6JPJYT3AHT8FY">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=EPTTL6JPJYT3AHT8FY</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=8A4PXHK6YJ66FLAYWE">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=8A4PXHK6YJ66FLAYWE</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=TPHJREHR3TRFHPJK33">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=TPHJREHR3TRFHPJK33</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=XN3MMEFH8LAJ8XE7J6">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=XN3MMEFH8LAJ8XE7J6</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=E3MW6Y373XH7KNX4LE">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=E3MW6Y373XH7KNX4LE</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=KPH3YMA6XAWJPLPAWM">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=KPH3YMA6XAWJPLPAWM</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=3WAW6NYK6HENXE37HP">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=3WAW6NYK6HENXE37HP</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=JFM3JHF6WEFXMFMNLR">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=JFM3JHF6WEFXMFMNLR</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=34H644H37XWRFNAPJ3">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=34H644H37XWRFNAPJ3</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=MMAYMR7HY663KXWJRP">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=MMAYMR7HY663KXWJRP</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=4H44KT4673YMFRTTA7">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=4H44KT4673YMFRTTA7</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=KMTWYY66NER6P8JAWJ">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=KMTWYY66NER6P8JAWJ</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=WK8FKHWYWFRE883WYX">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=WK8FKHWYWFRE883WYX</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=YMP7X3E6R8PJRXYN36">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=YMP7X3E6R8PJRXYN36</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=KAYWPATWJR8TNPRJFT">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=KAYWPATWJR8TNPRJFT</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=8RM48YRAN7F73R3W6K">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=8RM48YRAN7F73R3W6K</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=M4YPRYPJKYHFWR8MRJ">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=M4YPRYPJKYHFWR8MRJ</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=E88H4Y6JAAPFNR874F">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=E88H4Y6JAAPFNR874F</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=FHENM4648NLFTJ86WN">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=FHENM4648NLFTJ86WN</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=X4YMWLTJJJKYE3E3YX">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=X4YMWLTJJJKYE3E3YX</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=F7XFNNFPFYJAN7JHK7">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=F7XFNNFPFYJAN7JHK7</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=WW7XT76X68A48NX7AW">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=WW7XT76X68A48NX7AW</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=KEY3KF36L7WYJFJ7T3">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=KEY3KF36L7WYJFJ7T3</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=HWFE4RKR6YHJEPK67H">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=HWFE4RKR6YHJEPK67H</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=T3YYRKF8WKJFTLJFTF">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=T3YYRKF8WKJFTLJFTF</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=TH8XW6H8RKWT38F4LH">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=TH8XW6H8RKWT38F4LH</a></p> <p><a href="https://apps.apple.com/redeem?ctx=offercodes&id=6762731663&code=KNYJP4F7WK88LLPH3J">https://apps.apple.com/redeem?ctx=offercodes&amp;id=6762731663&amp;code=KNYJP4F7WK88LLPH3J</a></p>

2026/6/15
阅读更多

时刻同步(SynoSync)1.1.5 版本更新:iOS 低版本支持

<p>距离 SynoSync 发布 1.0 开始也已经过了一个多月了,在这段时间里,我收到了很多有用的建议,也按照大家的建议对 SynoSync 进行了一系列的升级,现在,是时候让大家重新认识这款 App 了!</p> <p>初版发布介绍:<a href="https://blog.gadore.top/archives/synosync/">SynoSync|iOS 缺失的现代化文件同步</a></p> <p><img src="https://halo.gadore.top/upload/ChatGPT%20Image%202026%E5%B9%B46%E6%9C%881%E6%97%A5%2015_26_27.png"></p> <h2 id="重要更新一:中文名、换图标"><a href="#重要更新一:中文名、换图标" class="headerlink" title="重要更新一:中文名、换图标"></a>重要更新一:中文名、换图标</h2><h3 id="SynoSync-名称由来"><a href="#SynoSync-名称由来" class="headerlink" title="SynoSync 名称由来"></a>SynoSync 名称由来</h3><p>这款应用一开始的开发初衷是解决我在 iOS 上同步我 NAS 里的 Obsidian 文档库的,因为我 NAS 买的是群晖(Synology),所以我就把它起名为了 SynoSync,翻译过来就是:群晖同步,当时我留了心眼,没有贸然起中文名,因为我觉得叫群晖同步的话太过绑定群晖也不好。</p> <h3 id="中文名「时刻同步」的含义"><a href="#中文名「时刻同步」的含义" class="headerlink" title="中文名「时刻同步」的含义"></a>中文名「时刻同步」的含义</h3><p>「时刻同步」这个名称一方面是 Syno 跟 时刻 有一定的谐音,更重要的是,应用是可以通过 iOS 后台调度机制在你不打开 App 的情况下进行同步,当然,这其中仍旧不能突破 iOS 的后台限制,每次后台调度同步的窗口只有几十秒,不过充电情况下系统会给较长的后台同步时间,也足够我同步 NAS 上的超大文档库了,相比较 Obsidian 内置的插件不打开就不同步,我觉得这种后台同步的机制已经相当及时了,所以「时刻同步」就此定下。</p> <h3 id="图标更换"><a href="#图标更换" class="headerlink" title="图标更换"></a>图标更换</h3><p>同理,在 App 开发早期,我更多的精力都在开发、测试、修 Bug,根本没有精力去设计 App 图标,所以第一版本的图标完全是打开 AI 生图然后顺手生成的,没有任何设计感可言。</p> <p><img src="https://halo.gadore.top/upload/Icon%201024-oban.png"></p> <p>但随着 App 功能逐渐稳定,现在我也终于有余力来重新更换一下 App 图标了。</p> <p>相比较第一版顺手使用 AI 生成的版本,现在的图标设计做了大量的精简。</p> <ul> <li><p>图标主题仅保留两个代表同步的首尾衔接的箭头,</p> </li> <li><p>左右箭头分别是云 ☁️ 和文件夹 📁 的轮廓,代表「时刻同步」是同步云服务器和本地文件夹的</p> </li> <li><p>箭头取色基本上跟 MacOS 的 Finder 接近,一致性这块拿捏的死死的~</p> </li> </ul> <p>希望你们更喜欢这个新的图标版本,当然,老版本图标依旧可以在设置中切换。</p> <h2 id="重要更新二:增加对-WebDAV、SMB、DSM-6-0-等协议支持"><a href="#重要更新二:增加对-WebDAV、SMB、DSM-6-0-等协议支持" class="headerlink" title="重要更新二:增加对 WebDAV、SMB、DSM 6.0 等协议支持"></a>重要更新二:增加对 WebDAV、SMB、DSM 6.0 等协议支持</h2><p>正如我上边所提到的,时刻同步一开始是为了方便我同步群晖上的文档库而开发的,DSM (群晖 NAS 系统) 支持是刚需。</p> <p>随着下载人数越来越多……</p> <ul> <li><p>老旧 NAS 和黑群晖可能需要用到 DSM 6.0 和 https 自签证书,已支持 ✅</p> </li> <li><p>部分现存服务器仅部署了 WebDAV 协议?WebDAV 协议已支持 ✅</p> </li> <li><p>家里的路由器仅支持 SMB 协议?SMB 协议已支持 ✅</p> </li> </ul> <p>因为我主要使用 DSM 协议完成同步,所以其他协议都只做了基础功能测试,保证功能是完整可用的,但非 DSM 7.0 协议在长期使用下来的稳定性我是很难知晓的,如果大家有遇到任何问题,欢迎反馈~</p> <h2 id="重要更新三:调整最低可运行的-iOS-版本到-iOS-16-4"><a href="#重要更新三:调整最低可运行的-iOS-版本到-iOS-16-4" class="headerlink" title="重要更新三:调整最低可运行的 iOS 版本到 iOS 16.4"></a>重要更新三:调整最低可运行的 iOS 版本到 iOS 16.4</h2><p>「SynoSync」发布第一周就有朋友因为版本问题不得不升级自己设备的 iOS 大版本来安装「时刻同步」(非常感谢这位朋友的支持🙏🙏🙏),当时我忙于修复已知的同步的问题,根本没有余力兼顾降低 iOS 版本支持的工作,但最近这种低版本兼容的呼声开始变得多了起来,似乎使用低版本或者旧设备的朋友对这类文件同步软件的需求挺多?所以我就在砍掉一部分不重要的特性的情况下,将 App 最低可安装版本从 iOS 18.6 一路降到了 iOS 16.4。</p> <p>我也希望更多小伙伴可以用上「时刻同步」,更需要你们在使用低版本时遇到任何问题后第一时间告诉我,因为我手头没有低版本设备,只能使用 XCode 自带的模拟器运行低版本设备做到最基础的兼容运行和功能可用性测试,但真实设备运行起来什么样,有任何问题,还需要大家安装和使用后告诉我。</p> <h2 id="承诺"><a href="#承诺" class="headerlink" title="承诺"></a>承诺</h2><ul> <li><p>「时刻同步」绝不搞订阅制,工具类的 App 搞订阅制就是抢钱,当前情况下即使不内购的朋友也可以使用绝大多数同步功能,服务器添加、同步任务添加等没有任何限制;内购仅仅解锁后台静默同步和一些进阶功能。</p> </li> <li><p>绝不 Vibe Coding,我会借助 AI 开发一些我不熟悉的语法特性,一些奇奇怪怪的 bug 也会让 AI 帮我分析,但我绝不会全权交给 AI 任由 Agent 编写风险未知的代码(毕竟我自己也要高强度使用)</p> </li> </ul> <h2 id="鸣谢"><a href="#鸣谢" class="headerlink" title="鸣谢"></a>鸣谢</h2><ul> <li><p>❤️ 特别感谢第一天下载就付费内购的朋友!也感谢所有内购朋友的信任与支持~</p> </li> <li><p>❤️ 感谢所有反馈与建议的朋友,「时刻同步」是在你们的建议下越来越完善的。</p> </li> <li><p>❤️ 感谢少数派网站对本 App 的大力推广支持。</p> </li> </ul> <p>我的另一款轻量级倒数日 App「唯记」永久免费且没有任何内购。</p> <p>如果你厌倦了各种复杂的 UI,蹩脚的设置,或者想要一个一目了然的倒数日小组件,那可以试试「唯记」,又不要钱~</p> <p><img src="https://halo.gadore.top/upload/v2rmb-store.png"></p> <h2 id="下载地址"><a href="#下载地址" class="headerlink" title="下载地址"></a>下载地址</h2><ul> <li><p>时刻同步(SynoSync):iOS 缺失的现代化文件同步: <a href="https://apps.apple.com/cn/app/synosync/id6762731663">App Store 下载地址</a></p> </li> <li><p>唯记(V2RMB):简约漂亮的双历倒数日:<a href="https://apps.apple.com/cn/app/%E5%94%AF%E8%AE%B0/id6502951931">App Store 下载地址</a></p> </li> </ul>

2026/6/3
阅读更多

SynoSync|让群晖与 iOS 之间的文件同步真正「现代化」

<p><img src="https://halo.gadore.top/upload/ChatGPT%20Image%202026%E5%B9%B45%E6%9C%887%E6%97%A5%2013_29_47%20(1).png" alt="ChatGPT Image 2026年5月7日 132947 1png"></p> <blockquote> <p>更新:1.0.8 或者更新的版本已增加 WebDAV 协议支持,所以就算没有群晖 DSM 系统的 NAS 现在也可以使用 SynoSync 啦~</p> </blockquote> <h2 id="开发背景:关于安全感与掌控感"><a href="#开发背景:关于安全感与掌控感" class="headerlink" title="开发背景:关于安全感与掌控感"></a>开发背景:关于安全感与掌控感</h2><p>一直以来,基于 Markdown 纯文本的 Obsidian 文档库给了我极强的安全感与掌控感。</p> <p>在我的工作流中,NAS 承担着文档库托管与同步的核心角色。群晖 Drive 在 Windows、Mac、Linux 乃至 Android 平台上的体验都堪称出色,唯独在 iOS 端,这种连贯性戛然而止。</p> <h2 id="困境:iOS-上的群晖-Drive,为何不够「现代化」?"><a href="#困境:iOS-上的群晖-Drive,为何不够「现代化」?" class="headerlink" title="困境:iOS 上的群晖 Drive,为何不够「现代化」?"></a>困境:iOS 上的群晖 Drive,为何不够「现代化」?</h2><p>在 iOS 生态下,群晖 Drive 的同步范围被严格限制在自身的沙盒文件夹内(应该是考虑到旧版本 iOS 兼容性)。这意味着 Obsidian 无法直接调用 Drive 的同步能力来读取文档库。对于追求「全平台一致体验」的开发者来说,这成了最难受的断层。</p> <p><img src="https://halo.gadore.top/upload/Icon%201024%20(1).png"></p> <h2 id="Obsidian-的多平台同步方案现状"><a href="#Obsidian-的多平台同步方案现状" class="headerlink" title="Obsidian 的多平台同步方案现状"></a>Obsidian 的多平台同步方案现状</h2><p>如果你想自建 Obsidian 文档库同步,目前主流方案的优劣对比清晰可见:</p> <table> <thead> <tr> <th></th> <th></th> <th></th> </tr> </thead> <tbody><tr> <td><strong>方案</strong></td> <td><strong>优点</strong></td> <td><strong>缺点</strong></td> </tr> <tr> <td><strong>官方 Sync 服务</strong></td> <td>集成度最高,支持最完美</td> <td>订阅制费用随空间上涨;隐私完全托付于第三方</td> </tr> <tr> <td><strong>iCloud</strong></td> <td>苹果原生支持,全家桶体验好</td> <td>仅限 Apple 生态;大库订阅费高;同步状态黑盒化</td> </tr> <tr> <td><strong>自托管 + 插件</strong> (如 Remotely Save)</td> <td>空间不受限,隐私高度可控</td> <td>需维护内网穿透及 WebDAV 服务;配置门槛较高</td> </tr> </tbody></table> <p>如果你和我一样,希望文档库具备更安全的托管方式,<strong>Remotely Save + WebDAV</strong> 依然是目前的权宜之计。但要获得稳定的体验,通常还需折腾 <strong>HTTPS、内网穿透、DDNS 或 Cloudflare</strong>。</p> <p>那么,难道就没有一种方案,能让我们直接复用 QuickConnect 那种「开箱即用」的穿透能力与内外网自动切换逻辑,在免去繁琐穿透配置的同时,实现真正的文档库自动同步到任何地方?</p> <h2 id="我的「万级」文件同步噩梦"><a href="#我的「万级」文件同步噩梦" class="headerlink" title="我的「万级」文件同步噩梦"></a>我的「万级」文件同步噩梦</h2><p>我的 Obsidian 文档库包含 <strong>26,000+ 个文件</strong>,总体积接近 <strong>10GB</strong>。</p> <p><img src="https://halo.gadore.top/upload/iShot_2026-05-07_12.56.08%20(1).png"></p> <p>在这种规模下,单纯依赖 Obsidian 的前台插件同步,体验会呈断崖式下降。更棘手的是,常规插件方案很难像群晖官方 App 那样,根据网络环境(局域网 vs 公网)自动且智能地切换连接地址。</p> <p>为了解决这些切肤之痛,我开发了 <strong>SynoSync</strong>。它的目标非常明确:</p> <p><strong>彻底解决「群晖 + iOS」用户的文档库同步难题。</strong></p> <hr> <h2 id="SynoSync-能为你做什么?"><a href="#SynoSync-能为你做什么?" class="headerlink" title="SynoSync 能为你做什么?"></a>SynoSync 能为你做什么?</h2><h3 id="1-多账号与多任务的灵活管理"><a href="#1-多账号与多任务的灵活管理" class="headerlink" title="1. 多账号与多任务的灵活管理"></a>1. 多账号与多任务的灵活管理</h3><ul> <li><p><strong>支持配置多台 DSM:</strong> 完美适配拥有多套群晖环境的进阶用户。</p> </li> <li><p><strong>支持多同步任务并行:</strong> 你可以针对不同的 App、不同的本地路径,创建多条上传、下载或双向同步任务,灵活构建你的同步方案。</p> </li> </ul> <h3 id="2-覆盖全场景的同步模式"><a href="#2-覆盖全场景的同步模式" class="headerlink" title="2. 覆盖全场景的同步模式"></a>2. 覆盖全场景的同步模式</h3><p><img src="https://halo.gadore.top/upload/Icon%201024%20(1)-eaFO.png"></p> <ul> <li><p><strong>前台同步:</strong> 实时可见的极速同步。</p> </li> <li><p><strong>大批量初始化:</strong> 针对首次同步或超大文件夹优化的传输模式。</p> </li> <li><p><strong>后台静默同步:</strong> 无需干预,在系统允许的范围内自动对齐差异。</p> </li> <li><p><strong>快捷指令触发:</strong> 联动 iOS 自动化,解锁更多高效玩法。</p> </li> </ul> <h3 id="3-直观的状态追踪"><a href="#3-直观的状态追踪" class="headerlink" title="3. 直观的状态追踪"></a>3. 直观的状态追踪</h3><p><img src="https://halo.gadore.top/upload/Icon%201024%20(1)-pYDC.png"></p> <ul> <li><p><strong>Activity 报告:</strong> 每一个文件的流转都清晰可查。</p> </li> <li><p><strong>小组件支持:</strong> 无需打开 App,在桌面即可实时观察同步进度。</p> </li> </ul> <hr> <h2 id="一些坦诚的局限性……"><a href="#一些坦诚的局限性……" class="headerlink" title="一些坦诚的局限性……"></a>一些坦诚的局限性……</h2><p>在开发 SynoSync 的这一个多月里,最让我抓狂的莫过于 iOS 严苛的后台机制。</p> <p>众所周知,iOS 采用了近乎「墓碑式」的后台管理。对于 SynoSync 这种需要频繁进行网络请求、文件比对及高强度读写的 App 来说,后台环境极其不友好。为了实现优雅的「静默同步」,我尝试了各种姿势去突破限制,但必须承认:<strong>它的后台效果依然无法达到 Android 或 PC 端的随心所欲。</strong></p> <p>特别是在面对我那 2.6 万个文件的「巨型库」时,iOS 的后台限制会导致同步耗时拉长。</p> <p><strong>因此,SynoSync 提供的最终解法是:</strong></p> <p>先通过「前台大批量同步」完成沉重的初始化任务,后续的日常增量更新,则交给「后台比对」去静默完成。</p> <p>如果你发现 SynoSync 发出了后台同步失败的通知,也不用惊慌,这只是 iOS 后台切断了 App 的后台网络权限(为了省电),SynoSync 会在下一个 iOS 允许的时间窗口重新尝试同步的。</p> <hr> <h3 id="下载地址"><a href="#下载地址" class="headerlink" title="下载地址"></a>下载地址</h3><p><a href="https://apps.apple.com/cn/app/synosync/id6762731663">App Store</a></p>

2026/5/7
阅读更多

iOS 应用:唯记,限免

<p><img src="https://halo.gadore.top/upload/%E6%88%AA%E5%B1%8F%202026-04-01%2016.32.53_%E5%89%AF%E6%9C%AC-HfAM.jpg"></p> <h2 id="开发背景"><a href="#开发背景" class="headerlink" title="开发背景"></a>开发背景</h2><p>上大学时,我是看着一堆独立开发者的故事毕业的,Kavin、Magabits、八爷等等,他们在我的心里留下了一个执念。</p> <p>在具备了实力(系统学习了编程)和财力(工作后有钱购买 💻 Macbook Pro)之后,我也终于着手开发出了一款自己的 App:唯记</p> <p>那可是 2020 年,AI 还无法使用,SwiftUI 的文档也散落在互联网的各个角落的时代。「唯记」开发出来后,我想着如果有人也想用,就象征性地付费给我一块钱,这样我们都有光明的未来🐶。</p> <h2 id="当前营收状况"><a href="#当前营收状况" class="headerlink" title="当前营收状况"></a>当前营收状况</h2><p>但,既然只有很少人看得到这个帖子,我也就不嫌丢人了:实际上这三年来用户数量始终没有突破1000,好吧,甚至没有突破500。</p> <p>错误当然在我,因为我也并没有真正把它当作一个正经的可以盈利的 App 在运作。截止到目前也就3~400人在使用。相对应的,我这几年的 App Store 开发者账号付费已经轻松超过 1k 了 。</p> <p>我必须承认我不是一个合格的独立开发者(本来也不是……)😭,这款 App 也过于平庸,我现在终于接受了它的平庸,但我仍旧还没接受自己的平庸,即使 Github 的废案仓库一个接着一个地建,我还在努力爬行,我知道现在早已不是一个独立开发者的黄金时代,但心里总是放不下那种执念。</p> <h2 id="如果你真的喜欢"><a href="#如果你真的喜欢" class="headerlink" title="如果你真的喜欢"></a>如果你真的喜欢</h2><p>咳咳,总而言之,既然我一直没打算靠 唯记 赚钱,那设置这一块钱的付费反而是画蛇添足,现在永久免费啦~</p> <p><img src="https://halo.gadore.top/upload/Icon%201024.png"></p> <p>如果你真的真的喜欢唯记的话:</p> <ul> <li><p>App 本身的安装后占用是不超过15MB 的,应该足够轻量;</p> </li> <li><p>使用的是 iCloud 同步 Sqlite 数据库,绝对的隐私友好;</p> </li> <li><p>对苹果即将到来的 AI 支持应该是很好的(适配了 App Intent,方便 siri 调用);</p> </li> <li><p>无内购、无广告、无账号绑定,现在也无需付费了,放心食用~</p> </li> <li><p><a href="%5B%E7%BD%91%E9%A1%B5%E9%93%BE%E6%8E%A5%5D(https://sspai.com/post/102845)">搭配 Quote&#x2F;0 ,也很好玩哦~</a></p> </li> </ul> <p><img src="https://halo.gadore.top/upload/%E6%88%AA%E5%B1%8F%202026-04-01%2015.55.10-FcRx.jpg"></p> <h2 id="下载地址"><a href="#下载地址" class="headerlink" title="下载地址"></a>下载地址</h2><p>下载地址:<a href="https://apps.apple.com/us/app/v2rmb/id6502951931">‎V2RMB App - App Store</a></p> <p>或者直接 App Store 搜索:v2rmb</p>

2026/4/2
阅读更多

为了解决 Openclaw 的 Token 恐怖消耗,我做了这些事……

<p><img src="https://halo.gadore.top/upload/IMG_0809.jpg"></p> <blockquote> <p>⚠️ Agent failed before reply: All models failed (17): github-copilot&#x2F;claude-haiku-4.5: Provider github-copilot is in cooldown (all profiles unavailable) (rate_limit) | ……………………………… github-copilot&#x2F;gpt-5: Provider github-copilot is in cooldown (all profiles unavailable) (rate_limit).</p> <p>Logs: openclaw logs –follow</p> </blockquote> <p>从 2 月给树莓派装上 Openclaw 开始,我的 Copilot Pro 订阅就被过度消耗了,自己平时写代码拼命去用也很难用完的 300 次 PR (高级模型请求次数),Openclaw 两天就可以用完,所以对这种消耗焦虑就一直萦绕在我心中。到了 3 月,我就尝试了些折腾方式来跟踪我的 Token(PR) 用量。</p> <h2 id="使用低速率模型(Flash、-mini)"><a href="#使用低速率模型(Flash、-mini)" class="headerlink" title="使用低速率模型(Flash、 mini)"></a>使用低速率模型(Flash、 mini)</h2><p><img src="https://halo.gadore.top/upload/lowCostModel.png"></p> <p>使用低速率模型的确可以给消耗打三折,但低速率模型也会带来模型降智,降智后好多任务需要我反复纠错,一来二去省掉的模型用量还是浪费了。</p> <p><img src="https://halo.gadore.top/upload/clawbot.png"></p> <h2 id="增加监控手段"><a href="#增加监控手段" class="headerlink" title="增加监控手段"></a>增加监控手段</h2><p>Openclaw 有时候经常会不声不响地跑大半天,在我看不到的地方消耗大量的 Token 但没有产出任何有效的产物;有时候又会摆烂,跟聊天网页一样,我说一句,他后台跑10分钟就歇菜了,我还得频繁去打开网页问他状态,所以监控 Token 的消耗趋势可以得知 Openclaw 是否在后台正常的工作。</p> <h3 id="1、Quote-0-墨水屏监控"><a href="#1、Quote-0-墨水屏监控" class="headerlink" title="1、Quote&#x2F;0 墨水屏监控"></a>1、Quote&#x2F;0 墨水屏监控</h3><p><img src="https://halo.gadore.top/upload/quote_copilot_monitor.jpg"></p> <h3 id="2、iOS-小组件监控-(Http-Widget)"><a href="#2、iOS-小组件监控-(Http-Widget)" class="headerlink" title="2、iOS 小组件监控 (Http Widget)"></a>2、iOS 小组件监控 (Http Widget)</h3><p><img src="https://halo.gadore.top/upload/HttpWidget.png"></p> <h3 id="3、Android-小组件监控-HTTP-快捷指令"><a href="#3、Android-小组件监控-HTTP-快捷指令" class="headerlink" title="3、Android 小组件监控 ( HTTP 快捷指令 )"></a>3、Android 小组件监控 ( HTTP 快捷指令 )</h3><p><img src="https://halo.gadore.top/upload/http_shortcuts.png"></p> <p><img src="https://halo.gadore.top/upload/copilot_widget_1.png"></p> <figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">const</span> payload = <span class="title class_">JSON</span>.<span class="title function_">parse</span>(response.<span class="property">body</span>)</span><br><span class="line"><span class="keyword">const</span> usageItems = payload &amp;&amp; payload.<span class="property">usageItems</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">let</span> gross = <span class="number">0</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> (usageItems &amp;&amp; usageItems.<span class="property">length</span>) &#123;</span><br><span class="line"> <span class="keyword">for</span> (<span class="keyword">let</span> i = <span class="number">0</span>; i &lt; usageItems.<span class="property">length</span>; i++) &#123;</span><br><span class="line"> <span class="keyword">const</span> item = usageItems[i]</span><br><span class="line"> <span class="keyword">if</span> (item &amp;&amp; item.<span class="property">product</span> === <span class="string">&#x27;Copilot&#x27;</span>) &#123;</span><br><span class="line"> gross += <span class="title class_">Number</span>(item.<span class="property">grossQuantity</span> || <span class="number">0</span>)</span><br><span class="line"> &#125;</span><br><span class="line"> &#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// 计算百分比</span></span><br><span class="line"><span class="keyword">const</span> usagePercent = (gross / <span class="number">300</span>) * <span class="number">100</span></span><br><span class="line"></span><br><span class="line"><span class="comment">// 使用 toFixed(1) 保留一位小数</span></span><br><span class="line"><span class="keyword">const</span> formattedPercent = usagePercent.<span class="title function_">toFixed</span>(<span class="number">1</span>)</span><br><span class="line"></span><br><span class="line"><span class="title function_">setVariable</span>(<span class="string">&quot;Copilot&quot;</span>, <span class="string">&#x27;Copilot: &#x27;</span> + formattedPercent + <span class="string">&#x27;%&#x27;</span>)</span><br></pre></td></tr></table></figure> <p>JavaScript</p> <h2 id="改用-Github-Agent-Action"><a href="#改用-Github-Agent-Action" class="headerlink" title="改用 Github Agent + Action"></a>改用 Github Agent + Action</h2><p>当你深入使用 Openclaw 了一段时间之后,你很快就会发现他的瓶颈,你让他做简单的事情,他可以很快帮你搞定,但你如果让他帮你开发项目,随着项目的功能复杂度上升、业务逻辑逐渐展开给大模型后,Openclaw 很快就开始失控了:它会反复在一个地方出错,或者改好了一个地方后又会在另一个地方出问题。这不仅仅消耗你大量 Token,还会消耗你大量时间和精力,反反复复好几次之后,你会像我一样萌生这样一个想法:我自己写都比让他改要强。</p> <p><img src="https://halo.gadore.top/upload/thumbnails/2026/w1600/iShot2026-03-2614.02.15.png"></p> <p>但好在 Openclaw 已经搅动了 Agent 的整个格局,现在其他家也已经在自动化 Agent 助手功能方面做了不小的升级,以我现在在用的 Github Copilot 的订阅为例,如果你是开发工程师,并且有一定的框架思维的话,你完全可以站在架构师的层面上(其实没有也行,问 AI 就好了),使用 Github 的 Agent + Action 实现不输于 Openclaw 的工程开发能力,这种方式会让整个工程在规模逐渐庞大之后仍旧保证基本可控,而且消耗的 Token 量要小非常多。</p> <p><img src="https://halo.gadore.top/upload/iShot_2026-03-26_13.49.02-fajE.png"></p> <p>同样可以运行测试,甚至可以运行无头浏览器测试!!</p> <p>当然了,Copilot 也有犯蠢的时候:</p> <p><img src="https://halo.gadore.top/upload/iShot_2026-03-26_13.28.57-ImKA.png"></p> <p>但相对于 Openclaw 项目复杂度上升后 Token 消耗也指数级上升,这种可控的消耗方式还是更容易让人(我)接受~</p> <h2 id="升级-Copilot-Pro"><a href="#升级-Copilot-Pro" class="headerlink" title="升级 Copilot Pro +"></a>升级 Copilot Pro +</h2><p>如果你已经开始用起来这个 Github Copilot,那么恭喜你,你已经使用 10 美元雇佣了一个能力超强的开发工程了,他任劳任怨,随叫随到,你可以一天分配给他 10 个开发任务,然后坐等他叫你验收就好了。</p> <p>如果你还想继续扩大你的公司规模,可以升级 Github Copilot Pro +,39 刀,你就可以额外再雇佣 4 名能力非凡的开发工程师。</p>

2026/3/26
阅读更多

上海复旦五官科医院,2026 年全飞秒激光二代,手术分享

<h2 id="我的眼部情况"><a href="#我的眼部情况" class="headerlink" title="我的眼部情况"></a>我的眼部情况</h2><ul> <li><p>超过 15 年戴眼镜的经历,受够了眼镜雾气、下雨躲雨、低头扶镜框、不戴眼镜啥也看不清等等各种不便</p> </li> <li><p>大概近视度数:左边 300 + 100 散光,右眼 350</p> </li> <li><p>2023 年做过一次检查,当时医生说我可能有青光眼,不适合做全飞秒,可以尝试准分子,我拒绝了</p> </li> <li><p>当时我还额外挂了专家号,专家说需要一年后复查,看下青光眼的可能性</p> </li> </ul> <h2 id="2026-年-1-月-5-号,术前检查,耗时:整个下午"><a href="#2026-年-1-月-5-号,术前检查,耗时:整个下午" class="headerlink" title="2026 年 1 月 5 号,术前检查,耗时:整个下午"></a>2026 年 1 月 5 号,术前检查,耗时:整个下午</h2><ul> <li><p>医院:上海复旦大学附属眼耳鼻喉科医院(宝庆路分院)</p> </li> <li><p>挂号:刘盛涛(那天下午只有他有号,其他医生的号都满了,哈哈)</p> </li> <li><p>过程:</p> <ol> <li><p>网上银行或者医院一楼挂号,可以在一楼缴费或者挂号处缴费</p> </li> <li><p>到对应医生所在楼层(一般在 4、5 楼)进行就医签到</p> </li> <li><p>签到后,在同楼层,找到服务台,领取必要的术前检查流程指导书,指导书会详细告诉你每一步需要做什么检查</p> </li> <li><p>按照指示到不同的房间做各种检查,这个过程会持续超过 2~3 小时,其中包含但不限于:</p> </li> </ol> <ul> <li><p>角膜地形图</p> </li> <li><p>验光(精确查看近视程度、散光度数)</p> </li> <li><p>扩瞳,也叫散瞳,做完之后会有一点儿畏光,因为眼睛的瞳孔被用扩瞳药水强行散开,进光量无法控制,应该是为了方便医生检查眼内的各种细节</p> </li> <li><p>眼底检查(青光眼、眼部各种潜在病变)</p> <ul> <li>多说一句,排在我前边的哥们儿,查到这一项的时候,医生说他眼睛里有个小洞,需要赶紧用激光手术封上,否则会越来越大……显然,在封上之前,他没办法做激光手术,医生说做完修补手术后,如果一切正常,可以再考虑做激光手术。</li> </ul> </li> <li><p>各种红色、白色的激光照射检查……</p> </li> </ul> <ol start="5"> <li><p>所有检查做完之后,就可以拿着检查报告去找最初你挂号的医生去做诊断了,医生会告诉你,你适不适合做手术,以及什么时候可以做手术(预约手术时间)</p> </li> <li><p>如果你决定要做手术,就直接上 6 楼,护士服务站会给你一个术前准备说明,还会跟你讲术前几天需要准备的</p> </li> </ol> </li> </ul> <h2 id="2026-年-1-月-13-号,手术前抽血,检查血常规、梅毒、艾滋等等(为了自己也是为了医生的安全)"><a href="#2026-年-1-月-13-号,手术前抽血,检查血常规、梅毒、艾滋等等(为了自己也是为了医生的安全)" class="headerlink" title="2026 年 1 月 13 号,手术前抽血,检查血常规、梅毒、艾滋等等(为了自己也是为了医生的安全)"></a>2026 年 1 月 13 号,手术前抽血,检查血常规、梅毒、艾滋等等(为了自己也是为了医生的安全)</h2><p>因为是 1 月 14 号手术,如果在手术相同的医院抽血检查,只需要提前一天,而且抽完血直接就可以走,不用等报告,同医院的信息系统是相通的,如果不是在同一家医院抽血,就需要把其他医院的抽血报告在手术当天带到医院。</p> <h2 id="2026-年-1-月-14-号,手术"><a href="#2026-年-1-月-14-号,手术" class="headerlink" title="2026 年 1 月 14 号,手术"></a>2026 年 1 月 14 号,手术</h2><blockquote> <p>因为做完手术之后,眼睛有接近半小时几乎什么都看不到,就算能看到,重影也会非常严重,所以强烈建议带一个人陪同。</p> </blockquote> <ol> <li><p>到场之后,直接到 6 楼签到,护士站会给你额头上标记,还会带一个手术信息手环</p> </li> <li><p>到自动缴费机去交费(2W+)</p> </li> <li><p>到 1 楼提前把后期要用的眼药水领了(主要作用:消炎、人工泪水)</p> </li> <li><p>等待手术叫号(根据情况而定,可能持续两个小时,所以该吃吃、该睡睡)</p> </li> <li><p>叫号后,把眼镜、外套等等内容全部给家属,到手术准备室门口</p> </li> <li><p>穿鞋套、手术服、坐在等待区</p> </li> <li><p>首先,会有一个护士过来确定你的身份和信息,以及你的手术内容、主刀医生</p> </li> <li><p>其次,会有一个护士过来帮你做眼部消毒,消完毒之后眼睛会有点儿难受,不好睁开,闭起来就好了,等待最终手术叫号</p> </li> <li><p>然后,会有一个护士过来叫你,带你去手术室(扶着你)</p> </li> <li><p>躺在手术床上,护士会再次确认你的身份、手术内容、主治医生信息</p> </li> <li><p>主治医师到场,让你躺在床(手术台)上,开始手术准备</p> </li> <li><p>护士会帮你滴眼药水(眼球表皮麻醉)</p> </li> <li><p>医生把眼皮撑放在你的右眼,把激光工具放在你眼睛上,你盯着激光的绿点,大概十秒钟左右,机器吸附到你的眼球(因为麻醉了,所以几乎不会有任何感觉),完成扫描、锁定、激光作业,完成后你的右眼会变成模糊的白色,这个时候什么也看不到(因为已经在角膜里切出来了一个镜片,中间有空隙,所以一片白),持续大概十几秒钟。</p> </li> <li><p>医生会立刻取出右眼眼撑,放到左眼,再重复刚刚右眼的步骤,这样之后,你两只眼都是白茫茫的一片了。这个过程也是持续大概十多秒钟</p> </li> <li><p>医生会立刻使用镊子,取出激光切割的左眼的多余角膜,取出后,立刻把眼撑切换到右边,继续取出右边的多余角膜,眼撑可以取出了。这个过程大概也就半分钟。</p> </li> <li><p>截止到目前为止,手术过程基本上就结束了,这个时候你基本上什么也看不清,世界非常的模糊,只能看到大概的轮廓,护士会协助你走到术后观察室,坐大概 5 分钟,这个过程中,护士会告诉你术后注意事项和用药注意事项(你大概记不住,但她给你的单子里什么都有写,拿着给当日陪同的家属就行)。然后会告诉你:觉得没什么异常就可以走了,因为你这个时候已经可以模糊的看清走廊的大概轮廓了,但是非常模糊,需要去找家属,然后坐下来休息一下。</p> </li> </ol> <p>没错,整个手术过程,从开始准备手术,到手术结束,一共就十几分钟。而<strong>真正的手术部分可能就短短一两分钟</strong>。</p> <h2 id="2026-年-1-月-14-号,手术后半小时"><a href="#2026-年-1-月-14-号,手术后半小时" class="headerlink" title="2026 年 1 月 14 号,手术后半小时"></a>2026 年 1 月 14 号,手术后半小时</h2><p>需要每隔 5 ~ 10 分钟滴一种眼药水,具体眼药水会有说明清单(手术后护士给你的那张),可以坐在医院的等候室把最近半小时的眼药水滴完,这个过程中,眼睛会从完全模糊,变成逐渐能够看到一定的内容了,只是有非常严重的重影。眼睛开始有点酸,但不怎么痛。</p> <h2 id="2026-年-1-月-14-号,手术后一到两小时"><a href="#2026-年-1-月-14-号,手术后一到两小时" class="headerlink" title="2026 年 1 月 14 号,手术后一到两小时"></a>2026 年 1 月 14 号,手术后一到两小时</h2><p>眼睛逐渐可以看到世界的一些原本的样貌了,会一点点怕强光,还有手机基本上看不清楚,重影非常严重,但是看远处的房子、树木、都能够看到了,只是有一定的重影,会有点儿激动,尤其是戴了眼镜超过 10 年以上的人,会有一种隐隐的解脱感。</p> <h2 id="2026-年-1-月-14-号,手术后半天"><a href="#2026-年-1-月-14-号,手术后半天" class="headerlink" title="2026 年 1 月 14 号,手术后半天"></a>2026 年 1 月 14 号,手术后半天</h2><p>手机基本上可以看到,但是重影比较严重,看久了眼睛会累,看电视、看远处、都只是有一些重影,但已经基本上可以看清了。感觉效果已经非常好了。</p> <h2 id="手术后第一天,复查"><a href="#手术后第一天,复查" class="headerlink" title="手术后第一天,复查"></a>手术后第一天,复查</h2><ol> <li><p>到院后直接去 2 或者 5 楼签到,找到术后复查的机器做签到</p> </li> <li><p>签到后,在大厅找到测视力的医生做视力检查,我这个时候已经双眼 1.2 了</p> </li> <li><p>到 206 专用复查室检查眼部状况(角膜地形图等等吧,我不太专业)</p> </li> <li><p>带着检查的报告去找主刀医生复诊,医生说:非常棒,按照用药单正常用药即可。</p> </li> </ol> <h2 id="手术后第一周"><a href="#手术后第一周" class="headerlink" title="手术后第一周"></a>手术后第一周</h2><h3 id="注意事项:"><a href="#注意事项:" class="headerlink" title="注意事项:"></a>注意事项:</h3><p>眼睛不能进水。</p> <p>正常用眼(不要过度用眼),我就正常使用手机、电脑、看电视。</p> <p>重影(炫光)仍旧存在,医生说需要大概一个月左右才会彻底消失。</p> <p>早上起床后,尤其是被公司顶灯的强光照久了之后,重影会比较严重,暗光下视力正常。</p> <h3 id="你会:"><a href="#你会:" class="headerlink" title="你会:"></a>你会:</h3><p>虚空扶镜框多次</p> <p>睁开眼睛就能看到清晰的世界,不用再去找眼镜了</p> <p>努力克服摘眼镜羞耻,现在是另一种模样了</p> <h2 id="术后第二周"><a href="#术后第二周" class="headerlink" title="术后第二周"></a>术后第二周</h2><p>保持正常滴眼药水,此时炫光的情况渐渐少了很多,眼睛也可以正常进水了,除了要定时滴眼药水,基本上不影响正常生活了。</p> <p>早上视力会有点儿差,不知道是不是我的个人体质问题,之前带眼镜的时候,眼睛早上视力也比较差,眼部视力到下午和晚上之后就正常了。</p> <p>看近处时间长了有点儿吃力,比如手机、捣鼓手工之类的东西等等,看久了眼睛会有点儿累,看不清,看远处一会儿可以缓解。</p> <h2 id="术后第三周(最新时间线-2026-02-04)"><a href="#术后第三周(最新时间线-2026-02-04)" class="headerlink" title="术后第三周(最新时间线 2026-02-04)"></a>术后第三周(最新时间线 2026-02-04)</h2><p>眼药水已经滴完了,也停了,没有干眼症、没有飞蚊症、视力仍旧是早上会比较差,到了下午会好很多,考虑到做手术之前眼睛状态也是这样,所以应该跟手术没关系,单纯是眼睛自己的状态如此。</p> <p>做了第 20 天的复查,左眼仍旧 1.2,右眼视力来到了 1.5 ,我最开始以为是我的左眼视力下降了,没想到是右眼视力变得更好了。</p> <p>平时也可以正常揉眼睛了(轻轻地),复查的时候医生也没说有任何问题,所以我这次手术大概率算成功啦 ~ ?</p> <h2 id="后记"><a href="#后记" class="headerlink" title="后记"></a>后记</h2><p>如果你要做全飞秒激光手术,一定记得在手术前记录你眼睛的各种状态,方便在术后做对比,方可知道哪些是眼睛本来就有的症状,哪些是手术后出现的症状。</p> <p>以上就是我做眼部全飞秒二代的全部过程了,后期如果有任何其他状况,我会继续更新。</p>

2026/2/4
阅读更多

手中设备的巨大变动,以及从 iPad mini 7 换到红米 K Pad 的感受

<p>10 月份到 11 月份期间,我手里的各种设备经历了较大变化,在此记录。</p> <h2 id="卖掉了手里的很多设备"><a href="#卖掉了手里的很多设备" class="headerlink" title="卖掉了手里的很多设备"></a>卖掉了手里的很多设备</h2><h3 id="1、Google-Pixel-5-草绿色-🤖"><a href="#1、Google-Pixel-5-草绿色-🤖" class="headerlink" title="1、Google Pixel 5 草绿色 🤖"></a>1、Google Pixel 5 草绿色 🤖</h3><p>买入理由:<strong>原生安卓、可以刷非常多第三方系统、轻、小、手感好</strong>,我需要安装一些 iOS 平台没有的第三方 App</p> <p>买入价格:¥1000</p> <p>卖出价格:¥520</p> <p>持有时间:超过一年半</p> <p><img src="https://halo.gadore.top/upload/pixel5.jpg"></p> <p>卖出理由:<strong>定位跟主力机 iPhone 冲突</strong>,屏幕不够大(相比较下边换购的安卓平板),电池容量小,电池健康82%,作为备用机也要两天一充。</p> <h3 id="2、iPad-mini-7-256GB-星光色🫆"><a href="#2、iPad-mini-7-256GB-星光色🫆" class="headerlink" title="2、iPad mini 7 256GB 星光色🫆"></a>2、iPad mini 7 256GB 星光色🫆</h3><p>买入理由:需要性能强劲的小平板玩游戏、看视频</p> <p>买入价格:¥3599</p> <p>卖出价格:¥2550</p> <p>持有时间:大半年</p> <p>卖出理由:<strong>指纹识别经常失灵,经常需要手动输入密码</strong>,<strong>指尖稍微有点儿汗就识别不了</strong>!而且生态跟 iPhone 重合,在卖出了 Pixel 5 之后,手里没有设备用来安装 Android 软件,为后续购买安卓平板埋下伏笔。</p> <h3 id="3、汉密尔顿(Hamilton)墨菲-38-mm-全自动机械手表"><a href="#3、汉密尔顿(Hamilton)墨菲-38-mm-全自动机械手表" class="headerlink" title="3、汉密尔顿(Hamilton)墨菲 38 mm 全自动机械手表"></a>3、汉密尔顿(Hamilton)墨菲 38 mm 全自动机械手表</h3><p>买入理由:星际穿越🛰️</p> <p>买入价格:¥5500</p> <p>卖出价格:¥4000</p> <p>持有时间:超过一年半</p> <p><img src="https://halo.gadore.top/upload/hamilton.webp"></p> <p>卖出理由:<strong>不伺候了</strong>,上弦效率差、日误差接近 15 秒、三天不戴就不走了、戴一周时差超过一分钟、需要反复上弦和反复调时间、只能看时间、机械表热情退烧了。</p> <h3 id="4、iPhone-5-16GB"><a href="#4、iPhone-5-16GB" class="headerlink" title="4、iPhone 5 16GB"></a>4、iPhone 5 16GB</h3><p>买入理由:<strong>iOS 6 很精致</strong>,很超前,补偿当年没买过这款设备的遗憾。</p> <p>买入价格:¥150</p> <p>卖出价格:¥50</p> <p>持有时间:超过两年</p> <p><img src="https://halo.gadore.top/upload/iphone5.jpg"></p> <p>卖出理由:<strong>玩腻了</strong>。没有最新的软件生态支撑,这就是一个 MP4 + 诺基亚功能机,况且没有 4G 网络的支持也让它完全无法胜任带出门的重任。最最最主要的:我手里主力机 iPhone 13 mini 跟他体积也差不多。</p> <h2 id="买入了新的设备"><a href="#买入了新的设备" class="headerlink" title="买入了新的设备"></a>买入了新的设备</h2><p>设备买买卖卖,这一波设备置换基本上没花钱,但给到的情绪价值却实打实的高。感谢雷总,尤其感谢搞定了小米手环 NFC 的那位技术人员,还要感谢拓竹,让我可以在如此价格体验世界一流的 3D 打印。</p> <h3 id="1、红米-K-Pad-12GB-256-GB-流金白"><a href="#1、红米-K-Pad-12GB-256-GB-流金白" class="headerlink" title="1、红米 K Pad 12GB + 256 GB 流金白"></a>1、红米 K Pad 12GB + 256 GB 流金白</h3><p>购入价格:¥2650</p> <p>购入理由:尺寸与 mini 7 类似,只有一个摄像头(简洁),支持人脸识别(但是 2D 人脸),卖掉了 iPad mini 7 和 Pixel 5 之后,一个安卓平板就可以同时替代这两款产品,它既可以方便地看视频、玩游戏,也可以安装非常多只有安卓平台才有的第三方软件,如果你稍微懂一些技术,相信我,这款平板肯定要比 iPad mini 强</p> <p>推荐体验:🌟🌟🌟🌟🌟</p> <p><img src="https://halo.gadore.top/upload/redmikpad.jpg"></p> <p>备注说明:如果选择白色以外的颜色的话,价格可以便宜400以上,但没办法,俺就是喜欢白色,而且红米的白色背板质感非常高级,至少拿在手上不比 iPad mini 差。以及,现在流金白好像都买不到了,哈哈哈哈哈,庆幸我下单早~</p> <h3 id="2、小米手环-10-NFC-版-💳"><a href="#2、小米手环-10-NFC-版-💳" class="headerlink" title="2、小米手环 10 NFC 版 💳"></a>2、小米手环 10 NFC 版 💳</h3><p>购入价格:¥288</p> <p>购入理由:冬天手腕上不想戴卡西欧的小银块,太冷了,而且太大体积了,本来就是抱着试一试的心态买的 NFC 版,没想到给我最多惊喜的也是这个 NFC,我<strong>小区的门禁卡、公司的电梯卡、公司机房的门禁卡,全部都可以被这个 NFC 版本所替代</strong>,真的是太强了!!!对了,他甚至可以看时间!!!而且这东西正常续航两周一充(14天以上),开了超级省电模式(仅开启计步、NFC、时间)之后,续航起码奔着一个月甚至两个月去了!!!</p> <p>推荐体验:🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟</p> <p><img src="https://halo.gadore.top/upload/xiaomiband10.png"></p> <p>多说一句:相比较之前戴过的 Apple Watch S5、全自动机械表-墨菲38 这类需要频繁 “人去伺候它” 的设备,我更喜欢像小米手环 10 NFC 这类解决问题而且不用过多维护的设备,更何况,200 多的价格,心率、血氧、运动、睡眠检测都可以用,还要啥自行车?</p> <h3 id="3、拓竹-P2SC-🖨️"><a href="#3、拓竹-P2SC-🖨️" class="headerlink" title="3、拓竹 P2SC 🖨️"></a>3、拓竹 P2SC 🖨️</h3><p>购入价格:¥4266</p> <p>购入理由:<del>卖出墨菲38之后剩下的钱太多了</del> 自己倒腾的一些 DIY 设备需要外壳,反复去找打印农场快递来回时间太久了。</p> <p>推荐体验:🌟🌟🌟🌟</p> <p><img src="https://halo.gadore.top/upload/p2sc.jpg"></p> <p>多说一句:在上海这种寸土寸金的地方,我住在公租房里,家里还有两只经常认为电线是老鼠尾巴所以经常咬线的猫咪的情况下,想要放置一款噪音大、需要干燥环境的打印机还是有些挑战的,所以暂时给 4 颗星,是评给自己的贫穷😭;另外,学习了 Fusion 360 之后,我才知道原来建一个模型原来可以如此简单~</p> <p>自己设计并打印的模型(给超市墨水屏设备更换 5V 电池盒、新的外壳和可插拔支架):<br><img src="https://halo.gadore.top/upload/printerModel1.png"></p> <p><img src="https://halo.gadore.top/upload/printerModel2.png"></p> <h2 id="安卓平板必装软件"><a href="#安卓平板必装软件" class="headerlink" title="安卓平板必装软件"></a>安卓平板必装软件</h2><p>以下链接皆为直链,部份可能需要更优质(🪜)的国际网络才能访问!!!</p> <ul> <li><p>B站第三方客户端:</p> <ul> <li><p><a href="https://github.com/bggRGjQaUbCoE/PiliPlus">PiliPlus</a>(我认为 Android Pad 适配最好)</p> </li> <li><p><a href="https://github.com/guozhigq/pilipala/releases">PiliPala</a>(平板适配不如前者,但也很不错了)</p> </li> </ul> </li> <li><p>Yotube 第三方客户端:<a href="https://newpipe.net/">NewPipe</a></p> </li> <li><p><a href="https://mihon.app/">Mihon</a>:Komga 安卓第三方(最强)看漫画客户端</p> </li> <li><p><a href="https://animeko.org/">Animeko</a>:Bangumi + Bilibili,你可以理解成使用网络公开(<del>盗版</del>)资源的看番客户端,当然,阉割更少,可以看弹幕!!!</p> </li> <li><p><a href="https://github.com/deckerst/aves">Aves</a>:简单纯粹的安卓第三方相册</p> </li> <li><p>RSS 工具:</p> <ul> <li><p><a href="https://github.com/seazon/FeedMe/releases">Feed Me</a>:RSS 工具届的老大哥,支持批量图片预缓存,对图片较大的订阅源异常友好。我从 Android 5 一直用到 Android 16</p> </li> <li><p><a href="https://github.com/ReadYouApp/ReadYou">Read You</a>:RSS新秀,仿照 iOS 端的重磅RSS 工具 Reeder 开发,界面现代且简洁</p> </li> </ul> </li> <li><p><a href="https://github.com/Anxcye/anx-reader">Anx Reader</a>:纯粹的 txt 阅读器,这不一定是最好的,但是我最近找到的最纯粹的</p> </li> </ul> <h2 id="我还缺什么安卓平台的应用"><a href="#我还缺什么安卓平台的应用" class="headerlink" title="我还缺什么安卓平台的应用"></a>我还缺什么安卓平台的应用</h2><ul> <li><p>管理 PDF(按照文件夹分类)的阅读应用</p> </li> <li><p>推特(X)第三方客户端</p> </li> </ul> <p>如果你有什么好的推荐,评论区见~</p>

2025/12/14
阅读更多

借助捷径,不写代码也能玩转 Quote/0 墨水屏

<p><a href="https://sspai.com/post/102845">少数派首发</a>(少数派网站同名作者:千里之豪)</p> <p>墨水屏一直是我非常偏爱的产品形态:低功耗、不依赖背光,同时具备可刷新特性,几乎天生就是为信息看板而设计的。遗憾的是,我并非硬件工程师出身,始终没能亲手做出一块完全符合自己需求的墨水屏。</p> <p>几年前,我购买了两块超市电子价签,并在好奇心的驱动下,逆向分析出它们的蓝牙通信协议,由此写下了<a href="https://sspai.com/post/78993">《抓包解协议,代码造布局:电子墨水价签改造 NAS 监控屏小记》</a>。</p> <p>也正因如此,当 <a href="https://sspai.com/s/eOyP">Quote&#x2F;0</a> 出现时,我格外期待。它在官方丰富模板之外,还提供了更灵活的数据更新方式,可以直接通过苹果的捷径(Shortcuts)进行扩展,让墨水屏的玩法不再局限于预设场景。</p> <h2 id="如何驱动-Quote-0-更新"><a href="#如何驱动-Quote-0-更新" class="headerlink" title="如何驱动 Quote&#x2F;0 更新"></a><strong>如何驱动 Quote&#x2F;0 更新</strong></h2><p>要在日常中使用 Quote&#x2F;0,主要依赖以下三点:</p> <ul> <li><p>对捷径 App 的基本操作(Shortcuts)</p> </li> <li><p>官方或第三方 App 对 Siri Intent 的支持</p> </li> <li><p>Quote&#x2F;0 的设备码和 API Key</p> </li> </ul> <p>通过这些条件,就能构建出灵活的自动化更新方案。下面以几个场景为例。</p> <h3 id="场景一:日程提醒"><a href="#场景一:日程提醒" class="headerlink" title="场景一:日程提醒"></a><strong>场景一:日程提醒</strong></h3><p><strong>捷径 + 日历 App + Quote&#x2F;0 文字 API</strong></p> <p>苹果自带的日历应用可以与捷径配合,获取即将到来的日程信息,再通过 <a href="https://sspai.com/s/eOyP">Quote&#x2F;0</a> 展示在墨水屏上。</p> <p><img src="https://halo.gadore.top/upload/55543381ffe41369a7891f708732c0dd.png"></p> <p>iOS 日历日程安排,在 Shortcuts 里用来请求更新 Quote&#x2F;0</p> <p>效果示例:</p> <p><img src="https://halo.gadore.top/upload/7ca1b2138ebe29b26987f8061916b0b0.jpg" alt="7ca1b2138ebe29b26987f8061916b0b0jpg"></p> <h3 id="场景二:节假日查询"><a href="#场景二:节假日查询" class="headerlink" title="场景二:节假日查询"></a><strong>场景二:节假日查询</strong></h3><p><strong>捷径 + 休息日 App + Quote&#x2F;0 文字 API</strong></p> <p>「休息日」是一款提供节假日信息查询的 App,全面支持 Siri Intent。通过配置捷径触发流程,可以快速获取节假日安排并同步到 <a href="https://sspai.com/s/eOyP">Quote&#x2F;0</a>。</p> <p><img src="https://halo.gadore.top/upload/fe43e9e0f49e4b5f39847c7fce0aa7af.png" alt="fe43e9e0f49e4b5f39847c7fce0aa7afpng"></p> <p>休息日模板 - 复制上一个配置 - 休息日提供的 Siri Intent</p> <p>示例效果:</p> <p><img src="https://halo.gadore.top/upload/3346da6e176bbe39e48736c02485b5ef.jpg" alt="3346da6e176bbe39e48736c02485b5efjpg"></p> <h3 id="场景三:生日-纪念日提醒"><a href="#场景三:生日-纪念日提醒" class="headerlink" title="场景三:生日 &#x2F; 纪念日提醒"></a><strong>场景三:生日 &#x2F; 纪念日提醒</strong></h3><p><strong>捷径 + 唯记 App + Quote&#x2F;0 文字 API</strong></p> <p>「<a href="https://apps.apple.com/cn/app/%E5%94%AF%E8%AE%B0/id6502951931">唯记</a>」是一款专注于生日和纪念日提醒的 App,同样支持 Siri Intent 调用。借助捷径,你可以灵活获取倒数日信息并投放到墨水屏。</p> <p><img src="https://halo.gadore.top/upload/00a23de10c94585a8fcd473498598d51.png" alt="00a23de10c94585a8fcd473498598d51png"></p> <p>效果示例:</p> <p><img src="https://halo.gadore.top/upload/f167b589c34d752893631b60e87efb61.jpg" alt="f167b589c34d752893631b60e87efb61jpg"></p> <h2 id="自动化轮播"><a href="#自动化轮播" class="headerlink" title="自动化轮播"></a><strong>自动化轮播</strong></h2><p>在捷径 App 中切换到底部的<strong>「自动化」</strong>标签,点击右上角<strong>「添加」</strong>,选择<strong>「特定时间」</strong>后,绑定之前配置好的快捷指令。接着,可以根据需求设置不同时间段展示的不同信息。</p> <p>这样一来,<a href="https://sspai.com/s/eOyP">Quote&#x2F;0</a> 就能与手机信息保持同步,实现自动摘要与定时轮播,让它真正成为一个动态更新的桌面信息小组件。</p> <p><img src="https://halo.gadore.top/upload/41242ca6228949aa07003f65ee47f2ab.png" alt="41242ca6228949aa07003f65ee47f2abpng"></p> <p>iOS 捷径自动化配置</p> <h2 id="进阶玩法:图片-API"><a href="#进阶玩法:图片-API" class="headerlink" title="进阶玩法:图片 API"></a><strong>进阶玩法:图片 API</strong></h2><p>文字展示并不是终点。<a href="https://sspai.com/s/eOyP">Quote&#x2F;0</a> 更强大的能力在于 <strong>图片 API 更新</strong>。在 Node.js 环境下,可以使用虚拟 Canvas (无需借助浏览器或客户端)动态生成画布,并输出图片,再推送到墨水屏,实现更丰富的视觉效果。</p> <p>例如下图的黄金走势图:</p> <p><img src="https://halo.gadore.top/upload/000d94c0a6c898e6d5e0eb3a0ea69c07.jpg" alt="000d94c0a6c898e6d5e0eb3a0ea69c07jpg"></p> <p>相关示例代码已更新至 <a href="https://sspai.com/link?target=https://github.com/gadore/ink-screen-bluetooth">GitHub 仓库</a>,供参考与拓展。</p> <h2 id="写在最后"><a href="#写在最后" class="headerlink" title="写在最后"></a><strong>写在最后</strong></h2><p><a href="https://sspai.com/s/eOyP">Quote&#x2F;0</a> 的出现,让墨水屏的使用方式变得前所未有的灵活。通过捷径、Siri Intent 和 API 的结合,每个人都可以根据自身需求,快速定制出独一无二的应用场景。</p> <p>当然,这种玩法也高度依赖应用开发者对 Siri Intent 的<strong>适配</strong>,如果没有适配,就只能走写代码这条老路了,但借助 AI 大模型,现在好像也不是不可逾越的高墙了,勇敢的少年啊,赶紧去尝试吧~</p>

2025/11/13
阅读更多

用刚学的 PCB 知识做一个优雅的树莓派风扇控制板

<blockquote> <p>首先我不是EE(电子电路工程师),所以对电路一窍不通,但人就是这样,越菜越爱玩。所以如果你是EE的话,不要被我的电路图蠢到(不要骂我)。</p> </blockquote> <p>我的家里就好几个树莓派,一些是我大学的时候做小任务的低功耗服务器用,另外一些是工作的时候,自己测试一些硬件用,跑一些边缘服务之类的。</p> <h2 id="树莓派旧风扇长期通电运行报废"><a href="#树莓派旧风扇长期通电运行报废" class="headerlink" title="树莓派旧风扇长期通电运行报废"></a>树莓派旧风扇长期通电运行报废</h2><p>我大学期间给树莓派 3B 配备的风扇在通电时间超过三年之后还是在最近寿终正寝了(作为一个4块钱的风扇而言,已经很抗造了),于是我就在想,为什么不做一个根据 CPU 温度动态控制风扇转速的模块,来延长风扇的寿命呢?说干就干。</p> <p>众所周知,树莓派最新的 5B 系列已经有了成熟的风扇控制接口了。</p> <p><img src="https://halo.gadore.top/upload/%E6%A0%91%E8%8E%93%E6%B4%BE5.webp"></p> <p>图片来自:树莓派官网</p> <h2 id="网络上风扇开关电路简单明确,但不够优雅简洁"><a href="#网络上风扇开关电路简单明确,但不够优雅简洁" class="headerlink" title="网络上风扇开关电路简单明确,但不够优雅简洁"></a>网络上风扇开关电路简单明确,但不够优雅简洁</h2><p>但我手里的好几个 3B 和 4B 这两个系列都没有呀,我也想要一个更加优雅的、模块化的接口,而不是临时的像这种:</p> <p>基础原理图,来自 shumeipai.nxez.com</p> <p><img src="https://halo.gadore.top/upload/20170713170656938-0.jpg"></p> <p><img src="https://halo.gadore.top/upload/CSDN_luzze__123.jpeg" alt="CSDNluzze123jpeg"></p> <p>图片来自:CSDN 用户 luzze_123</p> <p><img src="https://halo.gadore.top/upload/CSDN_qq_40251961.jpeg"></p> <p>图片来自:CSDN 用户 qq_40251961</p> <h2 id="PCB-速成,嘉立创启动!"><a href="#PCB-速成,嘉立创启动!" class="headerlink" title="PCB 速成,嘉立创启动!"></a>PCB 速成,嘉立创启动!</h2><p>但我不会画电路板,更不了解各种电子电路相关的知识,只好去折磨 AI 了 😄。</p> <p>但其实每个人都是有一定的电路基础的,正负极、开关。所以我选择了更加速成的方式:<br><a href="https://www.bilibili.com/video/BV1J24y1Z7cY/"><strong>【保姆级】二十分钟零基础PCB绘制打样一条龙教程(立创EDA专业版)</strong></a></p> <p>只需要按照这个视频教程,你就可以在半小时左右学会最基础的 PCB 板的绘制技巧,我也是顺利地完成了第一版绘制</p> <h3 id="第一版电路图"><a href="#第一版电路图" class="headerlink" title="第一版电路图"></a>第一版电路图</h3><p><img src="https://halo.gadore.top/upload/iShot_2025-10-11_14.46.51.png"></p> <p><img src="https://halo.gadore.top/upload/iShot_2025-10-11_14.47.15.png"></p> <p><img src="https://halo.gadore.top/upload/iShot_2025-10-11_14.47.33.png"> </p> <p><img src="https://halo.gadore.top/upload/iShot_2025-10-16_19.24.08.png"></p> <p>如果你是比较懂电路的话,你肯定已经看到问题所在了,没错,我把三极管放在了 5V 正极了,导致板子到手后风扇的转速非常慢,有时候甚至转不起来,即使已经通过 GPIO 把电路导通了,风扇还是不转或者转的非常慢,我就不瞎分析了,放出 AI 的分析:</p> <blockquote> <p><strong>把 8050 放在正极(高侧)当“开关”用了</strong> —— 8050 是 NPN 晶体管,做高侧开关时它会工作在发射跟随(emitter-follower)模式,发射极电压 ≈ 基极电压 − 0.7V。GPIO 给的是 3.3V,发射极最多 ~2.6V,风扇的电源是 5V → 风扇只拿到 ~2.6V,自然转得很慢。</p> </blockquote> <p>我理解下来就是:三极管放正极会对电压电流有较大损耗,导致风扇工作所需功率不足。</p> <h3 id="第二版电路图"><a href="#第二版电路图" class="headerlink" title="第二版电路图"></a>第二版电路图</h3><p>于是重新去嘉立创领券,重新打板,重新焊接电路,重新测试,可以了!!!</p> <p><img src="https://halo.gadore.top/upload/%E6%88%AA%E5%B1%8F2025-10-16%2017.53.58.png"></p> <p>再配合 Python 脚本,和亿点点配置,一个全自动的风扇控制模块就做好了!</p> <p><img src="https://halo.gadore.top/upload/IMG_0568.jpg"></p> <p>安装效果图</p> <p>模块大小示意(对比 Type-C 接口)</p> <p><img src="https://halo.gadore.top/upload/IMG_0569.jpg"></p> <p>总花销:</p> <ul> <li><p>买电子元器件(S8050、排针、排母):9元</p> </li> <li><p>电烙铁基础套装(松香、焊锡丝、锡棉,支架)36.9元</p> </li> </ul> <p>然而这一趟折腾下来,我发现花销已经足够我买好多小风扇了,好在电烙铁可以反复使用,电子元器件也只消耗了一小部份,以后折腾其他东西也能用~</p> <h2 id="解除-GPIO-14-的串口占用,用来当做开关信号"><a href="#解除-GPIO-14-的串口占用,用来当做开关信号" class="headerlink" title="解除 GPIO 14 的串口占用,用来当做开关信号"></a>解除 GPIO 14 的串口占用,用来当做开关信号</h2><p>当前这个模块占地较小,但也有代价,它使用的是GPIO 14进行电路开关控制,GPIO 14 在树莓派上原本是被串口通信功能占用,如果你跟我一样不使用串口功能,可以这样关闭掉:<br><code>sudo raspi-config</code></p> <p>Interface Options → Serial Port</p> <ul> <li><p><code>Would you like a login shell to be accessible over serial?</code> → <strong>No</strong></p> </li> <li><p><code>Would you like the serial port hardware to be enabled?</code> → <strong>No</strong></p> </li> </ul> <p>完成后退出并选择 <strong>Finish</strong>,允许它重启。</p> <p>重启后:</p> <p>sudo vim &#x2F;boot&#x2F;firmware&#x2F;config.txt</p> <p>确认或添加以下内容(顺序重要):</p> <figure class="highlight ini"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 禁用蓝牙,释放 UART</span></span><br><span class="line"><span class="attr">dtoverlay</span>=disable-bt</span><br><span class="line"></span><br><span class="line"><span class="comment"># 确保主 UART 关闭</span></span><br><span class="line"><span class="attr">enable_uart</span>=<span class="number">0</span></span><br></pre></td></tr></table></figure> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo systemctl <span class="built_in">disable</span> hciuart.service</span><br></pre></td></tr></table></figure> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo systemctl mask hciuart.service</span><br></pre></td></tr></table></figure> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo reboot</span><br></pre></td></tr></table></figure> <p>验证 GPIO 14 状态:</p> <p><code>pinctrl get 14</code></p> <p>应显示:</p> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">GPIO 14: level=0 func=INPUT</span><br></pre></td></tr></table></figure> <p>(或类似 <code>function INPUT</code>),<strong>没有出现</strong> <code>ALT0</code> <strong>&#x2F;</strong> <code>TXD0</code> <strong>&#x2F;</strong> <code>RXD0</code>。</p> <p>此时即可用作普通 GPIO。</p> <h2 id="如果你需要串口功能,则可以使用另一种方案代替"><a href="#如果你需要串口功能,则可以使用另一种方案代替" class="headerlink" title="如果你需要串口功能,则可以使用另一种方案代替"></a>如果你需要串口功能,则可以使用另一种方案代替</h2><p>这是另一个版本,它不占用串口功能,使用 GPIO 4 进行开关控制,最终组件也会相对应长一些</p> <p><img src="https://halo.gadore.top/upload/%E6%88%AA%E5%B1%8F2025-10-16%2017.57.17.png"></p> <p><img src="https://halo.gadore.top/upload/%E6%88%AA%E5%B1%8F2025-10-16%2018.02.05.png"></p> <p><img src="https://halo.gadore.top/upload/iShot_2025-10-16_19.41.25.png"></p> <p><img src="https://halo.gadore.top/upload/IMG_0571.png"></p> <h2 id="风扇控制脚本"><a href="#风扇控制脚本" class="headerlink" title="风扇控制脚本"></a>风扇控制脚本</h2><p>Python 脚本:</p> <figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> RPi.GPIO <span class="keyword">as</span> GPIO</span><br><span class="line"><span class="keyword">import</span> time</span><br><span class="line"><span class="keyword">import</span> signal</span><br><span class="line"><span class="keyword">import</span> sys</span><br><span class="line"></span><br><span class="line"><span class="comment"># 控制风扇的GPIO(BCM编号)</span></span><br><span class="line">FAN_GPIO = <span class="number">14</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 温度阈值(摄氏度)</span></span><br><span class="line">HIGH_TEMP = <span class="number">45.0</span> <span class="comment"># 高于此温度开启风扇</span></span><br><span class="line">LOW_TEMP = <span class="number">42.0</span> <span class="comment"># 低于此温度关闭风扇</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 检查间隔(秒)</span></span><br><span class="line">CHECK_INTERVAL = <span class="number">5</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 设置GPIO模式</span></span><br><span class="line">GPIO.setmode(GPIO.BCM)</span><br><span class="line">GPIO.setup(FAN_GPIO, GPIO.OUT)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 初始状态关闭风扇</span></span><br><span class="line">GPIO.output(FAN_GPIO, GPIO.HIGH)</span><br><span class="line">fan_status = <span class="literal">False</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 获取CPU温度的函数</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">get_cpu_temperature</span>():</span><br><span class="line"> <span class="keyword">try</span>:</span><br><span class="line"> <span class="keyword">with</span> <span class="built_in">open</span>(<span class="string">&#x27;/sys/class/thermal/thermal_zone0/temp&#x27;</span>, <span class="string">&#x27;r&#x27;</span>) <span class="keyword">as</span> f:</span><br><span class="line"> temp = <span class="built_in">float</span>(f.read()) / <span class="number">1000.0</span></span><br><span class="line"> <span class="keyword">return</span> temp</span><br><span class="line"> <span class="keyword">except</span> Exception <span class="keyword">as</span> e:</span><br><span class="line"> <span class="built_in">print</span>(<span class="string">f&quot;无法读取CPU温度: <span class="subst">&#123;e&#125;</span>&quot;</span>)</span><br><span class="line"> <span class="keyword">return</span> <span class="literal">None</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 控制风扇的函数</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">control_fan</span>(<span class="params">temperature</span>):</span><br><span class="line"> <span class="keyword">global</span> fan_status</span><br><span class="line"></span><br><span class="line"> <span class="keyword">if</span> temperature &gt;= HIGH_TEMP <span class="keyword">and</span> <span class="keyword">not</span> fan_status:</span><br><span class="line"> GPIO.output(FAN_GPIO, GPIO.HIGH) <span class="comment"># 开启风扇</span></span><br><span class="line"> fan_status = <span class="literal">True</span></span><br><span class="line"> <span class="built_in">print</span>(<span class="string">f&quot;温度: <span class="subst">&#123;temperature&#125;</span>°C - 风扇开启&quot;</span>)</span><br><span class="line"> <span class="keyword">elif</span> temperature &lt;= LOW_TEMP <span class="keyword">and</span> fan_status:</span><br><span class="line"> GPIO.output(FAN_GPIO, GPIO.LOW) <span class="comment"># 关闭风扇</span></span><br><span class="line"> fan_status = <span class="literal">False</span></span><br><span class="line"> <span class="built_in">print</span>(<span class="string">f&quot;温度: <span class="subst">&#123;temperature&#125;</span>°C - 风扇关闭&quot;</span>)</span><br><span class="line"> <span class="keyword">else</span>:</span><br><span class="line"> status = <span class="string">&quot;开启&quot;</span> <span class="keyword">if</span> fan_status <span class="keyword">else</span> <span class="string">&quot;关闭&quot;</span></span><br><span class="line"> <span class="built_in">print</span>(<span class="string">f&quot;温度: <span class="subst">&#123;temperature&#125;</span>°C - 风扇保持<span class="subst">&#123;status&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 优雅退出处理</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">signal_handler</span>(<span class="params">sig, frame</span>):</span><br><span class="line"> <span class="built_in">print</span>(<span class="string">&quot;\n正在关闭程序...&quot;</span>)</span><br><span class="line"> GPIO.output(FAN_GPIO, GPIO.LOW) <span class="comment"># 确保风扇关闭</span></span><br><span class="line"> GPIO.cleanup() <span class="comment"># 清理GPIO资源</span></span><br><span class="line"> <span class="built_in">print</span>(<span class="string">&quot;风扇已关闭,程序退出&quot;</span>)</span><br><span class="line"> sys.exit(<span class="number">0</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 注册信号处理</span></span><br><span class="line">signal.signal(signal.SIGINT, signal_handler)</span><br><span class="line">signal.signal(signal.SIGTERM, signal_handler)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 主循环</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;开始监控CPU温度并控制风扇...&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;温度阈值: 高于<span class="subst">&#123;HIGH_TEMP&#125;</span>°C开启, 低于<span class="subst">&#123;LOW_TEMP&#125;</span>°C关闭&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;按 Ctrl+C 退出程序&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="keyword">try</span>:</span><br><span class="line"> <span class="keyword">while</span> <span class="literal">True</span>:</span><br><span class="line"> temperature = get_cpu_temperature()</span><br><span class="line"> <span class="keyword">if</span> temperature <span class="keyword">is</span> <span class="keyword">not</span> <span class="literal">None</span>:</span><br><span class="line"> control_fan(temperature)</span><br><span class="line"> time.sleep(CHECK_INTERVAL)</span><br><span class="line"><span class="keyword">except</span> KeyboardInterrupt:</span><br><span class="line"> signal_handler(<span class="literal">None</span>, <span class="literal">None</span>)</span><br><span class="line"><span class="keyword">except</span> Exception <span class="keyword">as</span> e:</span><br><span class="line"> <span class="built_in">print</span>(<span class="string">f&quot;程序运行出错: <span class="subst">&#123;e&#125;</span>&quot;</span>)</span><br><span class="line"> GPIO.output(FAN_GPIO, GPIO.LOW)</span><br><span class="line"> GPIO.cleanup()</span><br></pre></td></tr></table></figure> <p>Python</p> <h2 id="自动化服务配置"><a href="#自动化服务配置" class="headerlink" title="自动化服务配置"></a>自动化服务配置</h2><figure class="highlight makefile"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br></pre></td><td class="code"><pre><span class="line">[Unit]</span><br><span class="line"></span><br><span class="line">Description=Fan control Service</span><br><span class="line"></span><br><span class="line">After=network.target</span><br><span class="line"></span><br><span class="line">[Service]</span><br><span class="line"></span><br><span class="line">Type=simple</span><br><span class="line"></span><br><span class="line">WorkingDirectory= <span class="comment"># 这里替换成python脚本所在目录</span></span><br><span class="line"></span><br><span class="line">ExecStart=/usr/bin/python3 <span class="comment"># 这里替换成python脚本的绝对路径</span></span><br><span class="line"></span><br><span class="line">Restart=always</span><br><span class="line"></span><br><span class="line">RestartSec=10</span><br><span class="line"></span><br><span class="line">StandardOutput=syslog</span><br><span class="line"></span><br><span class="line">StandardError=syslog</span><br><span class="line"></span><br><span class="line">SyslogIdentifier=fan-control</span><br><span class="line"></span><br><span class="line"><span class="comment"># 环境变量(如果需要)</span></span><br><span class="line"></span><br><span class="line">Environment=PYTHONUNBUFFERED=1</span><br><span class="line"></span><br><span class="line">[Install]</span><br><span class="line"></span><br><span class="line">WantedBy=multi-user.target</span><br></pre></td></tr></table></figure> <p>Makefile</p> <p>把上边这个脚本保存到</p> <p><code>/etc/systemd/system/fan-control.service</code></p> <p>然后依次执行:</p> <p>重新加载服务文件</p> <p><code>sudo systemctl daemon-reload</code></p> <p>启动风扇控制脚本服务</p> <p><code>sudo systemctl start fan-control.service</code></p> <p>检查运行状态</p> <p><code>sudo systemctl status fan-control.service</code></p> <p>设置服务开机自启动</p> <p><code>sudo systemctl enable fan-control.service</code></p> <p>如果发现服务启动异常,可以通过这个命令来查看异常原因</p> <p><code>sudo journalctl -u fan-control.service -n 50</code></p> <h2 id="效果"><a href="#效果" class="headerlink" title="效果"></a>效果</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line">Oct 16 13:23:42 raspberrypi fan-control[2004]: 温度: 44.008°C - 风扇保持关闭</span><br><span class="line">Oct 16 13:23:47 raspberrypi fan-control[2004]: 温度: 44.546°C - 风扇保持关闭</span><br><span class="line">Oct 16 13:23:52 raspberrypi fan-control[2004]: 温度: 45.084°C - 风扇开启</span><br><span class="line">Oct 16 13:23:57 raspberrypi fan-control[2004]: 温度: 45.084°C - 风扇保持开启</span><br><span class="line">Oct 16 13:24:02 raspberrypi fan-control[2004]: 温度: 44.008°C - 风扇保持开启</span><br><span class="line">Oct 16 13:24:07 raspberrypi fan-control[2004]: 温度: 43.47°C - 风扇保持开启</span><br><span class="line">Oct 16 13:24:12 raspberrypi fan-control[2004]: 温度: 43.47°C - 风扇保持开启</span><br><span class="line">Oct 16 13:24:17 raspberrypi fan-control[2004]: 温度: 42.932°C - 风扇保持开启</span><br><span class="line">Oct 16 13:24:22 raspberrypi fan-control[2004]: 温度: 41.856°C - 风扇关闭</span><br><span class="line">Oct 16 13:24:27 raspberrypi fan-control[2004]: 温度: 41.856°C - 风扇保持关闭</span><br><span class="line">Oct 16 13:24:32 raspberrypi fan-control[2004]: 温度: 41.856°C - 风扇保持关闭</span><br><span class="line">Oct 16 13:24:37 raspberrypi fan-control[2004]: 温度: 41.318°C - 风扇保持关闭</span><br></pre></td></tr></table></figure> <h2 id="备注"><a href="#备注" class="headerlink" title="备注"></a>备注</h2><ul> <li><p><a href="https://www.jlc.com/newOrder/#/collectCoupons?spm=JLC.MEMBER">嘉立创领券链接</a>,感谢嘉立创!😄</p> </li> <li><p>我跑通了这个PCB验证,也写完了这篇文章后,才发现很久之前(2021年)就有其他人做过:可以参考「<a href="https://www.quarkbook.com/?p=1194">夸克之书</a>」的文章,哎,早点儿看到就能少走很多弯路了。</p> </li> </ul>

2025/10/16
阅读更多