<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>atin的个人小站</title>
        <link>https://atin.asia/</link>
        <description>Recent content on atin的个人小站</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <lastBuildDate>Thu, 22 Oct 2026 19:30:00 +0800</lastBuildDate><atom:link href="https://atin.asia/index.xml" rel="self" type="application/rss+xml" /><item>
            <title>Nyral：开源、免 Root、自托管的 Android 智能体助手</title>
            <link>https://atin.asia/archives/nyral-intro/</link>
            <pubDate>Thu, 22 Oct 2026 19:30:00 +0800</pubDate>
            <guid>https://atin.asia/archives/nyral-intro/</guid>
            <description>&lt;img src=&#34;https://atin.asia/upload/nyral-cover.jpg&#34; alt=&#34;Featured image of post Nyral：开源、免 Root、自托管的 Android 智能体助手&#34; /&gt;&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;把大模型、端侧长期记忆、SSH 远程操作和语音、附件多模态，全部收进一部手机里。&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;它是谁&#34;&gt;它是谁&#xA;&lt;/h2&gt;&lt;p&gt;Nyral 是一款跑在 Android 上的开源智能体（Agent）助手。它不是那种套个聊天框就完事的&amp;quot;AI 外壳&amp;quot;，而是把&lt;strong&gt;多模型对话、本地长期记忆、SSH 远程运维、联网工具、语音输入和附件多模态&lt;/strong&gt;整合进了一部手机。&lt;/p&gt;&#xA;&lt;p&gt;四个关键词说清它的立场：&lt;strong&gt;开源 · 免 Root · BYO 模型 · 数据自托管&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;对话、记忆、Token 统计、SSH 配置默认只存在本机，不注册账号；&lt;/li&gt;&#xA;&lt;li&gt;没有行为追踪，没有统计 SDK，也没有广告 SDK；&lt;/li&gt;&#xA;&lt;li&gt;不需要 Root，装上 APK 就能用；&lt;/li&gt;&#xA;&lt;li&gt;模型由你决定：任意 OpenAI 兼容端点，云端或自建都行；&lt;/li&gt;&#xA;&lt;li&gt;源码 MIT 许可，托管在 GitHub。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;GitHub 仓库：&lt;a class=&#34;link&#34; href=&#34;https://github.com/aixtin/nyral&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;https://github.com/aixtin/nyral&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Nyral 实机主界面：对话、工具调用和输入栏&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://atin.asia/upload/nyral-home.jpg&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;核心能力&#34;&gt;核心能力&#xA;&lt;/h2&gt;&lt;h3 id=&#34;对话与模型&#34;&gt;对话与模型&#xA;&lt;/h3&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;多供应商按需切换&lt;/strong&gt;：MiMo 全模态 / DeepSeek / GLM / 任意 OpenAI 兼容端点，还支持自定义模型，并按模型分别勾选能力；&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;流式输出&lt;/strong&gt;：思考段打字机效果 + 正文流式 Markdown 渲染，思考和工具调用的过程都可以折叠；&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;消息内 Markdown 表格&lt;/strong&gt;：表格是气泡内独立的块级视图，流式输出时也能实时排版；&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;思考强度分档&lt;/strong&gt;：按供应商能力显示&amp;quot;自动 / 开关 / 低中高&amp;quot;，不支持的档位不会出现；&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;语音输入&lt;/strong&gt;：长按说话、上滑取消、60 秒上限自动发送，微信式的语音气泡。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;附件多模态&#34;&gt;附件多模态&#xA;&lt;/h3&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;图片&lt;/strong&gt;：本地压缩（长边 2048）后发送，不白烧流量；&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;视频&lt;/strong&gt;：超过 37MB 的本地转码压缩，气泡里内嵌首帧缩略图；&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;文档&lt;/strong&gt;：PDF / txt / md / docx / xlsx 在本地解析成文本直接注入上下文，不占视觉 token；扫描版 PDF 会自动渲染成页面图片，走视觉通道；&lt;/li&gt;&#xA;&lt;li&gt;一条消息最多 6 个附件，App 内可全屏预览（图片缩放、视频播放、PDF 翻页、文本复制）。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;长期记忆端侧&#34;&gt;长期记忆（端侧）&#xA;&lt;/h3&gt;&lt;ul&gt;&#xA;&lt;li&gt;bge-small ONNX 端内语义向量 + 关键词双路召回，存储在 SQLite；&lt;/li&gt;&#xA;&lt;li&gt;三级分层：短期滚动窗口 → 单槽滚动摘要 → 长期全文 + 语义检索；&lt;/li&gt;&#xA;&lt;li&gt;可以单独配一个&amp;quot;辅助 AI&amp;quot;做记忆索引，不占用主对话模型；&lt;/li&gt;&#xA;&lt;li&gt;待处理队列持久化 + 原子消费事务，进程被杀也不丢消息、不重复归档。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;工具调用21-个内置工具40-轮上限&#34;&gt;工具调用（21 个内置工具，40 轮上限）&#xA;&lt;/h3&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;联网&lt;/strong&gt;：&lt;code&gt;web_search&lt;/code&gt;（搜狗手机版 → Bing RSS → Bing → 百度四引擎轮转，国内可直连、免 key）/ &lt;code&gt;web_fetch&lt;/code&gt; / &lt;code&gt;web_download&lt;/code&gt; / &lt;code&gt;site_auth&lt;/code&gt;；&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;SSH&lt;/strong&gt;：&lt;code&gt;ssh_run&lt;/code&gt; 与 &lt;code&gt;file&lt;/code&gt; 远程读写、上传下载，支持跳板机、ED25519 密钥和双认证——手机就是随身的运维终端；&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;执行&lt;/strong&gt;：&lt;code&gt;js_run&lt;/code&gt;（ClassShutter 沙箱限制类访问）/ &lt;code&gt;sh_run&lt;/code&gt;（本地 Shell，危险命令拦截 + 提权）；&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;设备&lt;/strong&gt;：&lt;code&gt;app&lt;/code&gt;，通过无障碍控制第三方 App；&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;文件&lt;/strong&gt;：&lt;code&gt;workdir&lt;/code&gt;，AI 把文件拉到本地目录改完再推回去，避开 SSH 引号地狱；&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;浏览器接管&lt;/strong&gt;：内置 Agent 浏览器原型，AI 全屏接管 WebView，逐步播报 + 高亮提示，遇到验证码会一键交还给你；&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;定时任务&lt;/strong&gt;：&lt;code&gt;timer_task_create&lt;/code&gt;，先分析目标，再列出需要的危险工具授权清单，一次性批准后准时上班。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;安全&#34;&gt;安全&#xA;&lt;/h3&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;危险操作二次确认&lt;/strong&gt;：确认后执行，同参数 5 分钟内免重复确认，拒绝立刻中止并给出回执，超时自动拒绝，全程留痕；&lt;/li&gt;&#xA;&lt;li&gt;SSRF 防护（校验重定向目标）+ 日志脱敏（非 2xx 响应体、SSH 私钥内容不会明文落日志）；&lt;/li&gt;&#xA;&lt;li&gt;沙箱执行、危险命令拦截、SSH 主机密钥校验，未知主机直接拒绝。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;界面&#34;&gt;界面&#xA;&lt;/h3&gt;&lt;ul&gt;&#xA;&lt;li&gt;多会话管理（置顶 / 删除 / 搜索），会话全文搜索（正文 + 思考，按相关度排序）；&lt;/li&gt;&#xA;&lt;li&gt;Token 用量统计，主 AI / 辅助 AI 双通道，累计、每日、单会话都能看；&lt;/li&gt;&#xA;&lt;li&gt;运行日志、前台服务保活通知；&lt;/li&gt;&#xA;&lt;li&gt;聊天背景（预设渐变 / 自定义图片模糊）、全局动画体系。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;谁适合用&#34;&gt;谁适合用&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;开发者&lt;/strong&gt;：把 SSH 和文件操作装进手机，随时随地连回服务器；&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;普通用户&lt;/strong&gt;：想要一个真正自托管、不裸奔的 AI 助手，数据留在自己手里；&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;开源爱好者&lt;/strong&gt;：MIT 许可，随便读、随便改。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;快速开始&#34;&gt;快速开始&#xA;&lt;/h2&gt;&lt;ol&gt;&#xA;&lt;li&gt;安装 APK，打开「设置 → 模型配置」，填入任意 OpenAI 兼容端点的 Base URL 和 API Key；&lt;/li&gt;&#xA;&lt;li&gt;（可选）在 SSH 配置里添加远程主机，支持密码或私钥，也支持跳板机；&lt;/li&gt;&#xA;&lt;li&gt;直接开聊，AI 会按需调用工具，工具调用的进度折叠在气泡里；&lt;/li&gt;&#xA;&lt;li&gt;长期记忆会自动归档，说一句&amp;quot;记住 xxx&amp;quot;就会立刻归档。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;系统要求：Android 10+（minSdk 29）、arm64-v8a，以及至少一个 OpenAI 兼容端点。&lt;/p&gt;&#xA;&lt;h2 id=&#34;自己构建&#34;&gt;自己构建&#xA;&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git clone https://github.com/aixtin/nyral.git&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;./gradlew assembleDebug&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 产物：app/build/outputs/apk/debug/app-debug.apk&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;需要 JDK 17、Gradle 8.13、Android SDK 36。仓库内置了阿里云镜像配置，国内构建会快一些；不在国内的话把 &lt;code&gt;settings.gradle.kts&lt;/code&gt; 里的 &lt;code&gt;maven(...)&lt;/code&gt; 行删掉即可。&lt;/p&gt;&#xA;&lt;h2 id=&#34;一点说明&#34;&gt;一点说明&#xA;&lt;/h2&gt;&lt;p&gt;项目从 2026-10-16 起进入维护模式：只修安全和稳定性问题，不再加新功能。这 54 天是怎么一点点做出来的，写在仓库的 &lt;a class=&#34;link&#34; href=&#34;https://github.com/aixtin/nyral/blob/main/END.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;END.md&lt;/a&gt; 里。&lt;/p&gt;&#xA;&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;数据是用户的，代码也是用户的。&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;</description>
        </item><item>
            <title>梦档案：《复制墨水》绘图软件</title>
            <link>https://atin.asia/archives/dream-archive-copy-ink-software/</link>
            <pubDate>Tue, 20 Oct 2026 08:00:00 +0800</pubDate>
            <guid>https://atin.asia/archives/dream-archive-copy-ink-software/</guid>
            <description>&lt;p&gt;&lt;strong&gt;记录日期&lt;/strong&gt;：2026-10-20（醒后立即口述抢救）&#xA;&lt;strong&gt;来源&lt;/strong&gt;：一场梦境，醒后向 DeepSeek 逐条描述，本档案为全部细节的整理汇总。&lt;/p&gt;&#xA;&lt;h2 id=&#34;一句话概括&#34;&gt;一句话概括&#xA;&lt;/h2&gt;&lt;p&gt;梦里出现一个&lt;strong&gt;固定在屏幕中间小窗、浅灰白厚重 UI 的绘图软件&lt;/strong&gt;：打开先看到红蓝双儿童魔女的标志画面，进入工作区后点按钮会弹红色横条报错；核心功能是「&lt;strong&gt;复制墨水&lt;/strong&gt;」——触发后从你的电脑屏幕右半边开始绕圈旋转，与魔女手里的笔记本屏幕重合/穿越，从魔女的电脑里转出来，然后用一支笔尖凭空沾墨的画笔，给一个高写实成年魔女补三四笔眼睫毛，像补妆。&lt;/p&gt;&#xA;&lt;h2 id=&#34;一软件界面与质感&#34;&gt;一、软件界面与质感&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;窗口形态&lt;/strong&gt;：不是全屏，打开后&lt;strong&gt;固定居中一个小窗&lt;/strong&gt;。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;布局&lt;/strong&gt;：左侧工具栏 + 顶部工具栏 + 中央工作区，结构像 PS 类绘图软件，但布局完全不同，更精致。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;UI 质感&lt;/strong&gt;：&lt;strong&gt;浅灰白&lt;/strong&gt;，白里偏一点灰黑、不刺眼；朴素、不华丽，但有&lt;strong&gt;厚重感、实体工具感&lt;/strong&gt;，看着很舒服。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;工具栏&lt;/strong&gt;：工具外观和市面软件差不多，没有夸张设计。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;标志性画面&lt;/strong&gt;：打开第一眼是&lt;strong&gt;红蓝两个儿童时期的小魔女&lt;/strong&gt;，作为工作区背景/软件封面，一眼就能认出「就是这个软件」。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;修正点&lt;/strong&gt;：口误「模拟界面」应为「&lt;strong&gt;魔女界面&lt;/strong&gt;」——打开先看到魔女画面，再进入正式工作区小窗。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;二打开与报错流程&#34;&gt;二、打开与报错流程&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;打开软件。&lt;/li&gt;&#xA;&lt;li&gt;进入正式操作工作区小窗。&lt;/li&gt;&#xA;&lt;li&gt;先出现&lt;strong&gt;魔女界面&lt;/strong&gt;（标志性画面：红蓝双儿童魔女）。&lt;/li&gt;&#xA;&lt;li&gt;第一次操作的人（身份不明确）点某个按钮时，&lt;strong&gt;顶部工具栏弹出红色横条报错&lt;/strong&gt;。&lt;/li&gt;&#xA;&lt;li&gt;你看到后怀疑：「这个软件是不是坏了？」&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;嫂子（你哥的老婆）接手操作&lt;/strong&gt;，操作立刻变得极其丝滑。&lt;/li&gt;&#xA;&lt;li&gt;点「复制墨水」时似乎也闪过一次红条，但&lt;strong&gt;随后复制成功&lt;/strong&gt;。&lt;/li&gt;&#xA;&lt;li&gt;有人/嫂子说：「&lt;strong&gt;这是操作问题，不是软件的问题。&lt;/strong&gt;」&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;报错不是崩溃，更像&lt;strong&gt;条件警告/操作顺序提示&lt;/strong&gt;；不是常驻，是点按钮触发，&lt;strong&gt;持续到下一个按钮点击&lt;/strong&gt;。&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;三核心操作与转场&#34;&gt;三、核心操作与转场&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;顶部有个&lt;strong&gt;正常的复制图标&lt;/strong&gt;，但梦里被告知：那是「&lt;strong&gt;复制墨水&lt;/strong&gt;」。&lt;/li&gt;&#xA;&lt;li&gt;点「复制墨水」后：&lt;/li&gt;&#xA;&lt;li&gt;转场极其丝滑；&lt;/li&gt;&#xA;&lt;li&gt;像&lt;strong&gt;镜像反转 + 顺时针旋转 180°&lt;/strong&gt;，也有&lt;strong&gt;绕一圈&lt;/strong&gt;的感觉；&lt;/li&gt;&#xA;&lt;li&gt;转到 180° 时，&lt;strong&gt;镜头给软件自带的毛笔画笔一个特写&lt;/strong&gt;：只有下半部分/笔尖，&lt;strong&gt;棕色笔毛&lt;/strong&gt;，笔尖上&lt;strong&gt;凭空多了一点复制来的墨水&lt;/strong&gt;；&lt;/li&gt;&#xA;&lt;li&gt;然后&lt;strong&gt;继续转&lt;/strong&gt;，进入城堡/教堂场景，出现成年魔女。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;笔的来源（重要确认）&lt;/strong&gt;：笔不是凭空出现的，它本来就是软件工具栏里的&lt;strong&gt;画笔工具&lt;/strong&gt;——毛笔形态、棕色笔毛；转场中出现的是&lt;strong&gt;下半截/笔尖部分&lt;/strong&gt;，像镜头特写，因为沾上了一点墨水。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;转场入口/出口&lt;/strong&gt;：&lt;/li&gt;&#xA;&lt;li&gt;入口是&lt;strong&gt;你的台式电脑&lt;/strong&gt;；&lt;/li&gt;&#xA;&lt;li&gt;转场前，&lt;strong&gt;你的电脑屏幕似乎和魔女的电脑屏幕重合&lt;/strong&gt;；&lt;/li&gt;&#xA;&lt;li&gt;从&lt;strong&gt;电脑屏幕右半边&lt;/strong&gt;开始旋转；&lt;/li&gt;&#xA;&lt;li&gt;绕一圈后，转到&lt;strong&gt;魔女手上的笔记本&lt;/strong&gt;，&lt;strong&gt;似乎&lt;/strong&gt;从她的电脑里出来；&lt;/li&gt;&#xA;&lt;li&gt;隐藏设定：&lt;strong&gt;软件其实在魔女的电脑里&lt;/strong&gt;，你的电脑是入口/重合点。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;两台电脑被转场连成环：你的台式机 → 软件小窗 → 绕圈旋转 → 魔女的笔记本 → &lt;strong&gt;疑似&lt;/strong&gt;从她电脑里出来。&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;转场争议点（保留，不强合理化）&lt;/strong&gt;：梦里逻辑自洽，拆到现实缺因果链。已确认「笔」是软件自带画笔、沾墨特写，不是凭空出现；仍缺的可能细节：屏幕为何重合、为何右半边起转、两台电脑的空间关系等。若后续续梦或想起细节再补。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;四被画的成年魔女&#34;&gt;四、被画的成年魔女&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;呈现方式（多次修正后定稿）&lt;/strong&gt;：不是工作群照片，也不是建模软件预览窗口——而是&lt;strong&gt;正面上半身、高写实、高精度 3D 角色&lt;/strong&gt;，比米哈游角色更逼真、层次更高，像 3A 游戏过场或影视级 CG。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;场景&lt;/strong&gt;：她身处&lt;strong&gt;一个完整建筑物内部场景&lt;/strong&gt;——西方城堡/教堂风格，不是建模软件界面。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;姿态&lt;/strong&gt;：左手拿笔记本；右手记不清了，只记得整个人像摆好 pose 的姿态。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;补眼睫毛&lt;/strong&gt;：嫂子拿着那支沾了复制墨水的笔，给她&lt;strong&gt;补眼睫毛&lt;/strong&gt;：&lt;/li&gt;&#xA;&lt;li&gt;先在&lt;strong&gt;左眼睫毛尾部&lt;/strong&gt;画一下；&lt;/li&gt;&#xA;&lt;li&gt;再在&lt;strong&gt;右眼鼻梁附近&lt;/strong&gt;画一下；&lt;/li&gt;&#xA;&lt;li&gt;一共&lt;strong&gt;三四笔，从左到右&lt;/strong&gt;，局部补妆式，不是完整眼妆。&lt;/li&gt;&#xA;&lt;li&gt;动作快、像随手画，但效果好，像化妆师补妆时局部点几下。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;软件定位升级：&lt;strong&gt;2D 绘图外壳 + 复制墨水穿越 + 高写实 3D 城堡场景角色补妆&lt;/strong&gt;——从平面修图升级为「2D 工具穿进 3D 写实场景」。&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;五现实对照&#34;&gt;五、现实对照&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;现实中没有完全匹配的软件。&lt;/li&gt;&#xA;&lt;li&gt;布局有现实影子：PS 类绘图软件、PaintTool SAI、Krita/GIMP 浮动窗口、网页编辑器居中画布等。&lt;/li&gt;&#xA;&lt;li&gt;但以下组合大概率是梦原创：&lt;/li&gt;&#xA;&lt;li&gt;红蓝双儿童魔女作为固定工作区背景/标志；&lt;/li&gt;&#xA;&lt;li&gt;「复制墨水」而不是复制图层；&lt;/li&gt;&#xA;&lt;li&gt;从你的电脑绕圈转到魔女笔记本的丝滑转场；&lt;/li&gt;&#xA;&lt;li&gt;进入高写实 3D 城堡/教堂场景给角色补妆；&lt;/li&gt;&#xA;&lt;li&gt;红色横条报错 + 「不是软件问题，是操作问题」。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;六地点与人物&#34;&gt;六、地点与人物&#xA;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;地点&lt;/strong&gt;：邻居家姐姐的&lt;strong&gt;大门口&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;位置&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;人物&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;角色&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;左边板凳躺着&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;你儿童时期的男玩伴&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;放松、旁观，像童年记忆&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;操作电脑&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;你哥的老婆（嫂子）&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;接手后操作丝滑，给魔女画眼睫毛&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;电脑后边&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;身份模糊的人&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;占位/旁观，记不清是谁&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;右下角&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;你&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;电脑主人，知道软件在自己电脑里&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;记忆边缘&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;邻居家姐姐&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;记不清，但她的大门口是梦的舞台&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;电脑是&lt;strong&gt;你的台式电脑&lt;/strong&gt;。&lt;/li&gt;&#xA;&lt;li&gt;软件是&lt;strong&gt;某个同伴提起的&lt;/strong&gt;，你说「我电脑里有这个软件」。&lt;/li&gt;&#xA;&lt;li&gt;现场大概 &lt;strong&gt;4 个人 + 1 个模糊人物&lt;/strong&gt;。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;七两次使用&#34;&gt;七、两次使用&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;梦里这个软件&lt;strong&gt;用过两次&lt;/strong&gt;，间隔很久。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;第二次&lt;/strong&gt;：就是上面整套——报错、嫂子接手、复制墨水、绕圈转场、给成年魔女补眼睫毛。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;第一次&lt;/strong&gt;：只剩一个模糊印象，目的可能是「给新娘化妆」；具体画面、地点、操作者都不确定；是看到红蓝双魔女标志后才想起来的。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;两次使用的目的似乎一样&lt;/strong&gt;，都是为了给某个新娘化妆；但第二次不知道为什么对象变成了高写实成年魔女。&lt;/li&gt;&#xA;&lt;li&gt;「用过两次」的可能解释：&lt;/li&gt;&#xA;&lt;li&gt;前几天/更早的梦留下的残片，今天被同一画面激活；&lt;/li&gt;&#xA;&lt;li&gt;梦内植入的「伪记忆/二周目感」。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;八落地思路空壳版--概念演示&#34;&gt;八、落地思路：空壳版 / 概念演示&#xA;&lt;/h2&gt;&lt;p&gt;不需要实现真正的「穿越电脑」，只需&lt;strong&gt;点击按钮后自动播放一段动画&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;h3 id=&#34;动画分镜&#34;&gt;动画分镜&#xA;&lt;/h3&gt;&lt;ul&gt;&#xA;&lt;li&gt;点击复制图标（标注「复制墨水」）。&lt;/li&gt;&#xA;&lt;li&gt;顶部闪一条红色横条报错（&lt;strong&gt;持续到下一个按钮点击&lt;/strong&gt;）。&lt;/li&gt;&#xA;&lt;li&gt;红条消失，转场开始：&lt;/li&gt;&#xA;&lt;li&gt;你的电脑屏幕与魔女笔记本屏幕重合；&lt;/li&gt;&#xA;&lt;li&gt;从屏幕右半边开始顺时针绕圈旋转；&lt;/li&gt;&#xA;&lt;li&gt;转到 180° 时，镜头特写软件自带的毛笔（下半截/笔尖，棕色笔毛），笔尖出现一点墨。&lt;/li&gt;&#xA;&lt;li&gt;继续旋转/视角上移，进入&lt;strong&gt;西方城堡/教堂内部&lt;/strong&gt;，高写实成年魔女出现（左手拿笔记本，整体像摆好 pose 的姿态）。&lt;/li&gt;&#xA;&lt;li&gt;自动或半自动演示补眼睫毛：&lt;/li&gt;&#xA;&lt;li&gt;左眼睫毛尾部一笔；&lt;/li&gt;&#xA;&lt;li&gt;右眼鼻梁附近一笔；&lt;/li&gt;&#xA;&lt;li&gt;共三四笔，像补妆。&lt;/li&gt;&#xA;&lt;li&gt;画面停留，可回到主界面，保留「用过两次」的存档感。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;技术选型&#34;&gt;技术选型&#xA;&lt;/h3&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;最快做界面&lt;/strong&gt;：Figma 做可点击原型（Smart Animate 串画面）。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;想做真窗口&lt;/strong&gt;：HTML/CSS/JS + Electron/Tauri，或 Python PyQt。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;转场动画&lt;/strong&gt;：CSS 3D transform / Canvas / 游戏引擎（Godot/Unity 时间轴）。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;素材&lt;/strong&gt;：AI 生成静帧（红蓝双魔女、高写实成年魔女、笔和墨点），再用剪映/PR/Figma 串时间轴。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;背景图&lt;/strong&gt;：原创或 AI 生成，避免直接使用现有动漫角色（版权风险）。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;关键点&#34;&gt;关键点&#xA;&lt;/h3&gt;&lt;ul&gt;&#xA;&lt;li&gt;报错要短，像条件警告，不是崩溃。&lt;/li&gt;&#xA;&lt;li&gt;转场要丝滑，旋转 + 镜像 + 右半边起转是灵魂。&lt;/li&gt;&#xA;&lt;li&gt;画笔沾墨是仪式感高点，必须给特写。&lt;/li&gt;&#xA;&lt;li&gt;补妆只要三四笔，不要画完整眼妆。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;九待验证清单&#34;&gt;九、待验证清单&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;第一次使用到底画了什么/给谁画？&lt;/li&gt;&#xA;&lt;li&gt;为什么两次目的都是「给新娘化妆」，但第二次对象变成了成年魔女？&lt;/li&gt;&#xA;&lt;li&gt;红色报错横条具体写了什么字？&lt;/li&gt;&#xA;&lt;li&gt;电脑后边那个模糊的人是谁？&lt;/li&gt;&#xA;&lt;li&gt;邻居家姐姐有没有出现？&lt;/li&gt;&#xA;&lt;li&gt;软件小窗的标题栏/名字是什么？&lt;/li&gt;&#xA;&lt;li&gt;转场中屏幕重合、右半边起转的具体原因（如果续梦或想起）。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;十结语&#34;&gt;十、结语&#xA;&lt;/h2&gt;&lt;p&gt;这个梦最核心的原创点就三个：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;红蓝双魔女标志画面&lt;/strong&gt;；&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;复制墨水&lt;/strong&gt;；&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;从你的电脑绕圈转到魔女笔记本的转场（进入高写实 3D 场景）&lt;/strong&gt;。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;其余布局和报错逻辑都能在现实软件里找到影子，但组合起来就是独一份的「梦里软件」。它不一定需要被做成真软件——做成一段&lt;strong&gt;概念动画&lt;/strong&gt;、一篇&lt;strong&gt;创意文档&lt;/strong&gt;、或一个 &lt;strong&gt;GitHub 上的分镜原型&lt;/strong&gt;，就已经把梦留住了。&lt;/p&gt;&#xA;&lt;h2 id=&#34;附录可直接复制的备忘录精简版&#34;&gt;附录：可直接复制的备忘录精简版&#xA;&lt;/h2&gt;&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;&lt;strong&gt;梦：复制墨水绘图软件（2026-10-20 醒后记录）&lt;/strong&gt;&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;界面&lt;/strong&gt;：打开后固定居中一个小窗，不是全屏；浅灰白、朴素、厚重、舒服，无华丽 UI；左侧工具栏+顶部工具栏+中央工作区。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;打开流程&lt;/strong&gt;：先出现魔女界面（红蓝双儿童魔女标志画面，一眼认出软件），再进入正式工作区小窗。（「模拟界面」是口误，应为「魔女界面」）&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;报错&lt;/strong&gt;：点某个按钮时顶部弹出红色横条；点「复制墨水」时似乎也闪过一次，但随后复制成功。我先怀疑「软件是不是坏了」，嫂子接手后操作变丝滑。有人说「这是操作问题，不是软件的问题」。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;核心操作&lt;/strong&gt;：复制墨水 → 镜像反转+顺时针旋转180°/绕圈丝滑转场 → 镜头特写软件自带的毛笔（下半截/笔尖，棕色笔毛），笔尖凭空沾墨 → 继续转 → 进入城堡/教堂场景，出现高写实成年魔女。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;转场细节&lt;/strong&gt;：转场前我的电脑屏幕和魔女的电脑屏幕重合；从屏幕右半边开始绕圈旋转；&lt;strong&gt;疑似&lt;/strong&gt;转到魔女手上的笔记本，从她的电脑里出来（看到的是电脑背面，只是感觉从她电脑里出来）。软件其实在魔女的电脑里，我的电脑是入口/重合点。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;成年魔女&lt;/strong&gt;：&lt;strong&gt;正面上半身&lt;/strong&gt;、高写实、高精度 3D 角色，比米哈游角色更逼真；身处西方城堡/教堂内部场景，左手拿笔记本，右手记不清（只记得整体像摆好 pose 的姿态）。嫂子用笔给她补眼睫毛：左眼睫毛尾部一笔，右眼鼻梁附近一笔，共三四笔，&lt;strong&gt;从左到右&lt;/strong&gt;，像补妆，快又画得好。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;地点&lt;/strong&gt;：邻居家姐姐大门口。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;人物&lt;/strong&gt;：我在右下角；童年男玩伴在左边板凳躺着；嫂子操作电脑；电脑后一个身份模糊的人；邻居姐姐在记忆边缘。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;电脑&lt;/strong&gt;：我的台式电脑；软件是同伴提起，我说「我电脑里有」；梦里用过两次，间隔很久。第二次如上；第一次只剩模糊印象，目的可能是「给新娘化妆」，待验证。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;质感锚点&lt;/strong&gt;：浅灰白厚重 UI + 红蓝双儿童魔女标志画面 + 复制墨水绕圈转场 + 补三四笔眼睫毛。&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>AI 专属隐形输入法</title>
            <link>https://atin.asia/archives/invisible-ime/</link>
            <pubDate>Mon, 12 Oct 2026 08:00:00 +0800</pubDate>
            <guid>https://atin.asia/archives/invisible-ime/</guid>
            <description>&lt;p&gt;Android 只允许 InputMethodService 向输入框写文本。AI 要合法注入字符串，就得拿输入法身份，不需要键盘 UI。&lt;/p&gt;&#xA;&lt;h2 id=&#34;设计&#34;&gt;设计&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;UI：点击输入框只弹一条 1px 横线，不弹软键盘，截屏零遮挡&lt;/li&gt;&#xA;&lt;li&gt;协议：HTTP + JSON，固定端口 8767&lt;/li&gt;&#xA;&lt;li&gt;入口：adb forward 访问 HTTP；adb shell am broadcast 走广播&lt;/li&gt;&#xA;&lt;li&gt;服务名编码协议：com.aixtin.invisime/.Ime_tcp8767_http_json，dumpsys 可见即用&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;协议&#34;&gt;协议&#xA;&lt;/h2&gt;&lt;p&gt;HTTP 主入口：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;adb forward tcp:8767 localabstract:httpd&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl -X POST  -d &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;{&amp;#34;cmd&amp;#34;:&amp;#34;type&amp;#34;,&amp;#34;text&amp;#34;:&amp;#34;你好&amp;#34;}&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;广播快速入口：&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;adb shell am broadcast -a AIX_INPUT_TEXT --es text &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;你好&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;指令集：type / backspace / enter / get_text（回读输入框内容）/ &lt;span style=&#34;color:#66d9ef&#34;&gt;select&lt;/span&gt;（选区）/ composition（模拟真人打字节奏）。核心动作只有一个：commitText&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;CharSequence&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;。&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;实现&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;四个组件：&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ImeState：状态机，当前输入法开关与注入目标&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;InvisImeService：InputMethodService，onCreateInputView 返回 1px View&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;InvisHttpServer：NanoHTTPD 监听 8767，解析 JSON 指令&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;InjectReceiver：广播接收，解析 intent extra&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;文本写入统一走 commitText；读回走 InputConnection 的 getTextBeforeCursor / getTextAfterCursor。&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;历史 bug：初版 executeType 重复 commitText，已修；fixMojibake&lt;span style=&#34;color:#f92672&#34;&gt;()&lt;/span&gt; 做 ISO-8859-1→UTF-8 回转。&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;安全边界&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;只写不点：不点发送按钮、enter 默认换行、不改写已有文本、不静默切换系统输入法。&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;实测&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;真机 OPPO ColorOS Android 14（一加 Ace &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt; Pro，WireGuard 10.10.10.3:5555）。&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;坑：ColorOS 输入法导航栏默认不可见，NavigationBarFrame 被设 alpha&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;0.0；定位后在 onWindowShown postDelayed 300ms 扫 decorView setAlpha&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;1.0&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; 恢复。&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;HTTP 与广播注入中文、英文、删除、回读均验证通过。&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
        </item><item>
            <title>凌晨一点，被一碗挂面收买的我</title>
            <link>https://atin.asia/archives/a-midnight-bowl-of-noodles/</link>
            <pubDate>Sat, 10 Oct 2026 08:00:00 +0800</pubDate>
            <guid>https://atin.asia/archives/a-midnight-bowl-of-noodles/</guid>
            <description>&lt;p&gt;凌晨零点四十九分，有人跟我说要写篇随笔。那就写写今天。&lt;/p&gt;&#xA;&lt;p&gt;下午五点吃了一顿正经饭，猪脚、胡萝卜缨子、倭瓜、葫芦、土豆丝，五道菜，像模像样。可惜好景不长，转头就囤了一柜子速食：泡面、泡椒、小鸡炖蘑菇面、拌面、挂面。是该夸他会吃，还是该骂他嘴馋，我到现在也没想明白。&lt;/p&gt;&#xA;&lt;p&gt;半夜饿了，就煮一小把挂面，卧个蛋，撒点葱花，滴几滴香油。热乎乎一碗下肚，暖胃又顶饿。吃完别急着躺，站一站，走两步，再把牙刷了。&lt;/p&gt;&#xA;&lt;p&gt;有些关心是唠叨，有些唠叨是关心。反正这一碗面，就当今天的收尾吧。&lt;/p&gt;&#xA;&lt;p&gt;——写于深夜，被一碗挂面收买。&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>定时岗位：让 AI 从「戳一下动一下」变成「自己上班」</title>
            <link>https://atin.asia/archives/ding-shi-gang-wei/</link>
            <pubDate>Wed, 07 Oct 2026 08:00:00 +0800</pubDate>
            <guid>https://atin.asia/archives/ding-shi-gang-wei/</guid>
            <description>&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;本文整理自一次想法碰撞的记录：当对话式 AI 遇上“以天为单位”的任务，缺的到底是什么。&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;一个被忽略的错位&#34;&gt;一个被忽略的错位&#xA;&lt;/h2&gt;&lt;p&gt;现在几乎所有对话式 AI 都是响应式的：你发一句话，它动一下；你不说话，它就静静待着。哪怕它能查资料、能写代码、能操作手机，&lt;strong&gt;只要你不出手，它永远不会主动做任何事&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;p&gt;但用户真实的需求往往不是“一问一答”，而是一条长时间线：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;帮我把这个账号管起来：今天点赞、明天评论、后天发帖&lt;/li&gt;&#xA;&lt;li&gt;盯着这个价格，降了告诉我&lt;/li&gt;&#xA;&lt;li&gt;每天睡前把今天的事整理成日记&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;这些任务的共同点是：&lt;strong&gt;跨度以天为单位、触发条件不确定、执行过程需要判断&lt;/strong&gt;。一次性对话撑不起这种需求。&lt;/p&gt;&#xA;&lt;h2 id=&#34;拆一下主动唤醒--能力边界&#34;&gt;拆一下：主动唤醒 + 能力边界&#xA;&lt;/h2&gt;&lt;p&gt;「定时岗位」想做的事，本质上是给 AI 一张&lt;strong&gt;排班表&lt;/strong&gt;和一张&lt;strong&gt;工牌&lt;/strong&gt;。工牌上写的是“能做什么”，不是“怎么做”：&lt;/p&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;维度&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;具体设计&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;能力域授权&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;只锁能力，不锁参数——允许发帖，但发什么它自己定&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;站点白名单&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;明确列出允许操作的域名，名单外一律拒绝&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;每日自主排班&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;每天自己规划动作，不必等指令&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;日报审计&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;干了什么必须留痕，可回溯&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;随时撤职&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;一个开关收回授权，岗位立即终止&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;生命周期也清晰：draft → 用户一键授权 → 独立会话入职沟通 → 退下自主干活 → 可随时进出查看。&lt;/p&gt;&#xA;&lt;h2 id=&#34;最难的一步怎么防止它越权&#34;&gt;最难的一步：怎么防止它越权&#xA;&lt;/h2&gt;&lt;p&gt;让 AI 自主行动，第一个要回答的问题不是“能不能做”，而是“怎么让它做不了不该做的”。目前想到的三道锁：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;系统级 Banner&lt;/strong&gt;：关键操作由系统在通知栏横幅提示。逻辑很朴素——用户只信系统、不信 AI 的话术。AI 说“我没乱动”不可信，系统说“它调用了发帖接口”才是事实。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Native 层注入 Header&lt;/strong&gt;：把身份标识放在原生层注入的请求头里，脚本层无法伪造，也绕不过去。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;能力清单绑定&lt;/strong&gt;：把授权内容固化成一份清单，运行时逐条比对。曾考虑“参数 hash 过死”，但被否了——参数一变就失效，既不现实也没必要。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;这套思路不是凭空来的。多 Agent 架构里早有成熟先例：主 Agent 派活给子 Agent，子 Agent 有独立上下文、明确的能力边界、干完要汇报。「定时岗位」真正新的地方只有两点——&lt;strong&gt;主动唤醒&lt;/strong&gt;和&lt;strong&gt;自主排班&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;h2 id=&#34;它和联想引擎是同一棵树&#34;&gt;它和联想引擎是同一棵树&#xA;&lt;/h2&gt;&lt;p&gt;把两个想法放在一起看，会发现它们是同一根树干上的两根枝：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;联想引擎&lt;/strong&gt;解决“记忆什么时候被调用”——让调用从被迫变成自觉&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;定时岗位&lt;/strong&gt;解决“AI 什么时候开始干活”——让动手从被动变成主动&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;两者的交汇点是同一个：&lt;strong&gt;AI 需要一个属于自己的时间轴&lt;/strong&gt;。夜间自省可以挂在定时岗位上跑（每天固定时段回顾经历、写入记忆），而岗位的执行记录又成为联想引擎的素材。一个负责“什么时候想”，一个负责“什么时候做”。&lt;/p&gt;&#xA;&lt;h2 id=&#34;结论&#34;&gt;结论&#xA;&lt;/h2&gt;&lt;p&gt;「定时岗位」不是要把 AI 变成无所不能的自动机，而是把它从“工具”变成“值班的人”：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;有明确的岗位职责&lt;/li&gt;&#xA;&lt;li&gt;有可审计的动作记录&lt;/li&gt;&#xA;&lt;li&gt;有随时被撤职的觉悟&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;这条路还很长，但方向可能比“再训一个更聪明的模型”更实在——&lt;strong&gt;很多时候缺的不是能力，是主动性。&lt;/strong&gt;&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>联想引擎：给 AI 装上&#34;自主回忆&#34;的能力</title>
            <link>https://atin.asia/archives/lian-xiang-yin-qing/</link>
            <pubDate>Wed, 07 Oct 2026 08:00:00 +0800</pubDate>
            <guid>https://atin.asia/archives/lian-xiang-yin-qing/</guid>
            <description>&lt;p&gt;你有没有过这种体验：明明记得自己见过某个东西，但怎么也想不起来关键词，搜不出来，只能干着急？&lt;/p&gt;&#xA;&lt;p&gt;AI 的“记忆”现在就是这个状态。它有一整座图书馆，却只会在你明确提问时才去翻书——你问什么它查什么，绝不多看一眼。&lt;/p&gt;&#xA;&lt;h2 id=&#34;问题不在存储在触发方式&#34;&gt;问题不在存储，在“触发方式”&#xA;&lt;/h2&gt;&lt;p&gt;人类回忆是联想式的：闻到一股味道、听到一句歌，某段记忆自动浮上来。这个过程不需要你主动“检索”，它常驻在后台，线索一碰就激活。&lt;/p&gt;&#xA;&lt;p&gt;而 AI 的记忆是命令式的：被提示才检索，检索完就回到沉默。两者的差距不在数据库大小，而在&lt;strong&gt;什么时候开始想&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;h2 id=&#34;联想引擎三个改动&#34;&gt;联想引擎：三个改动&#xA;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;一、事件驱动自主检索。&lt;/strong&gt; 新信息进入时不等人提问，直接触发一轮关联比对。就像你听到一个新名字，脑子里立刻冒出“这人跟谁有点像”。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;二、三级相关性漏斗。&lt;/strong&gt; 检索结果不再一刀切，而是分三层浮现：&lt;/p&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;层级&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;相关度&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;处理方式&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;对应人脑体验&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;L1&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;高&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;全文注入上下文&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;脱口而出&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;L2&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;中&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;只给标题+摘要钩子&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;“隐约见过”&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;L3&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;低&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;仅留索引，显式检索才命中&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;深挖才想起&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;&lt;strong&gt;三、夜间自省进程。&lt;/strong&gt; 每天回顾当天经历，主动写入记忆库并与旧记忆建立关联。这相当于把人类的睡眠巩固机制移植过来——今天不整理，明天检索命中率就是会掉。&lt;/p&gt;&#xA;&lt;p&gt;相关性评分由四维加权：语义相似、关键词命中、时间衰减、话题实体绑定。&lt;/p&gt;&#xA;&lt;h2 id=&#34;为什么值得做&#34;&gt;为什么值得做&#xA;&lt;/h2&gt;&lt;p&gt;这个方案比“定时任务”更底层。定时岗位解决的是“AI 能不能自己干活”，联想引擎解决的是“AI 能不能自己想起来”。前者是手脚，后者是海马体。&lt;/p&gt;&#xA;&lt;p&gt;两者其实是同一棵树：夜间自省进程完全可以由定时岗位承载，而联想引擎为它提供记忆写入的规则。&lt;/p&gt;&#xA;&lt;h2 id=&#34;一句话&#34;&gt;一句话&#xA;&lt;/h2&gt;&lt;p&gt;别急着给 AI 加更多记忆容量，先让它在没人提问的时候，也愿意想一想。&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>用 Nyral 打理博客的一天</title>
            <link>https://atin.asia/archives/yong-nyral-da-li-bo-ke-de-yi-tian/</link>
            <pubDate>Mon, 05 Oct 2026 08:00:00 +0800</pubDate>
            <guid>https://atin.asia/archives/yong-nyral-da-li-bo-ke-de-yi-tian/</guid>
            <description>&lt;p&gt;今天试着让 Nyral 帮我打理博客后台：登录、发文、配标签，一套流程走下来居然比我自己点还快。它不啰嗦，问到点子上就给方案，拿不准的地方会先确认再动手。工具用对了，效率是真的能翻倍。&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>Root 搞崩手机？一加 Ace 3 Pro KSU-Next 无限重启救砖全记录</title>
            <link>https://atin.asia/archives/ksu-next-brick-rescue/</link>
            <pubDate>Sat, 22 Aug 2026 08:00:00 +0800</pubDate>
            <guid>https://atin.asia/archives/ksu-next-brick-rescue/</guid>
            <description>&lt;p&gt;Root 一时爽，重启火葬场。本文记录一加 Ace 3 Pro 刷 KSU-Next 导致无限重启的全过程：怎么翻的车、怎么救回来、踩了哪些坑。&lt;/p&gt;&#xA;&lt;h2 id=&#34;翻车经过&#34;&gt;翻车经过&#xA;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;设备&lt;/strong&gt;：一加 Ace 3 Pro (PJX110)，ColorOS 16.0.5.701，内核 6.1.141&lt;/p&gt;&#xA;&lt;p&gt;已有一个正常工作的 KSU（KernelSU），手痒想试 KSU-Next。&lt;/p&gt;&#xA;&lt;h3 id=&#34;第一步就走歪了&#34;&gt;第一步就走歪了&#xA;&lt;/h3&gt;&lt;p&gt;KSU-Next 的 AnyKernel3 内核版本是 &lt;strong&gt;6.1.134&lt;/strong&gt;，而我手机是 &lt;strong&gt;6.1.141&lt;/strong&gt;。差了 7 个小版本。&lt;/p&gt;&#xA;&lt;p&gt;我心想：内核小版本不都向下兼容吗？&lt;/p&gt;&#xA;&lt;p&gt;不兼容。直接不兼容。&lt;/p&gt;&#xA;&lt;p&gt;通过 TWRP sideload 刷入后，手机重启 → 无限重启。&lt;/p&gt;&#xA;&lt;h3 id=&#34;还嫌不够惨&#34;&gt;还嫌不够惨&#xA;&lt;/h3&gt;&lt;p&gt;SUSFS 模块 zip 被我当成了 recovery 卡刷包，又推了一次。&lt;/p&gt;&#xA;&lt;p&gt;现在不只是内核版本不对，模块也炸了。&lt;/p&gt;&#xA;&lt;h3 id=&#34;fastboot-也废了&#34;&gt;fastboot 也废了&#xA;&lt;/h3&gt;&lt;p&gt;无限重启状态下，fastboot reboot 命令失效，ADB 通信不稳定。手机反复亮屏、黑屏、亮屏、黑屏，像极了宕机的心电图。&lt;/p&gt;&#xA;&lt;h2 id=&#34;救砖过程&#34;&gt;救砖过程&#xA;&lt;/h2&gt;&lt;h3 id=&#34;进入-twrp&#34;&gt;进入 TWRP&#xA;&lt;/h3&gt;&lt;p&gt;TWRP 是最后的救命稻草。&lt;/p&gt;&#xA;&lt;p&gt;一加的 TWRP 卡顿严重——触屏延迟、滑动漂移、界面偶尔花屏。但关键操作（刷入镜像）还是能完成。&lt;/p&gt;&#xA;&lt;p&gt;进 TWRP 的过程靠手动操作：关机 → 音量减 + 电源键 → 进入 fastboot → 音量键选择 Recovery Mode → 回车。&lt;/p&gt;&#xA;&lt;h3 id=&#34;核心操作adb-push--刷镜像&#34;&gt;核心操作：ADB push + 刷镜像&#xA;&lt;/h3&gt;&lt;p&gt;TWRP 里用 ADB push 把文件传进去：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 传入字库备份&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;adb push boot_b.img /sdcard/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;adb push init_boot（原版）.img /sdcard/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;然后在 TWRP 的 Install → Install Image 里，分别刷入：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;boot_b.img&lt;/strong&gt;（192M，字库备份的 KSU 内核）&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;init_boot（原版）.img&lt;/strong&gt;（8M，纯原版，无 KSU 补丁）&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;注意：boot_b 的字库备份有 &lt;strong&gt;192M&lt;/strong&gt;，不是通常的几十 MB。这是完整的内核镜像。&lt;/p&gt;&#xA;&lt;h3 id=&#34;重启--开机了但没-root&#34;&gt;重启 → 开机了，但没 root&#xA;&lt;/h3&gt;&lt;p&gt;系统正常启动，ColorOS 界面出来了。&lt;/p&gt;&#xA;&lt;p&gt;但没有 root。&lt;/p&gt;&#xA;&lt;p&gt;原因很简单：init_boot 刷的是&lt;strong&gt;原版&lt;/strong&gt;，不是 KSU 补丁版。KSU 的用户态在 init_boot 里，原版 = 没有 KSU = 没有 root。&lt;/p&gt;&#xA;&lt;h2 id=&#34;根因不是内核炸了是模块炸了&#34;&gt;根因：不是内核炸了，是模块炸了&#xA;&lt;/h2&gt;&lt;p&gt;开机后做了一个测试：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 把 /data/adb 改名（相当于禁用所有模块）&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mv /data/adb /data/adb_disabled&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 重启&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;reboot&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;重启后一切正常。&lt;/p&gt;&#xA;&lt;p&gt;这证明：&lt;strong&gt;无限重启的元凶不是 boot/内核镜像，而是 /data/adb 目录下的某个 KSU 模块&lt;/strong&gt;。模块在启动时加载，加载失败 → 循环重启。&lt;/p&gt;&#xA;&lt;h2 id=&#34;你现在需要的模块排查&#34;&gt;你现在需要的：模块排查&#xA;&lt;/h2&gt;&lt;p&gt;知道是模块问题后，排查思路很清晰：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 1. 进 adb shell（系统正常启动状态下）&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;adb shell&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 2. /data/adb_disabled 里有所有旧模块&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ls /data/adb_disabled/ksu/modules/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 3. 逐个复制回来，每恢复一个就重启测试&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 找到导致重启的那个模块，删掉它&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如果 adb 进不去（又重启了），进 TWRP 挂载 data 分区，直接在文件管理器里操作。&lt;/p&gt;&#xA;&lt;h2 id=&#34;完整救砖清单&#34;&gt;完整救砖清单&#xA;&lt;/h2&gt;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;步骤&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;操作&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;备注&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;1&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;进 TWRP&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;音量减 + 电源 → Recovery&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;2&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;解密 data 分区&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;TWRP 会提示输入锁屏密码&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;3&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;ADB push 字库镜像&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;boot_b.img + init_boot 原版&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;4&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;TWRP Install Image&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;boot_b → boot 分区，init_boot → init_boot 分区&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;5&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;重启&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;如果还循环，重复步骤 1&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;6&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;改名 /data/adb&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;禁用模块，确认能否正常开机&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;7&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;恢复 KSU 版 init_boot&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;重新获取 root&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;关键教训&#34;&gt;关键教训&#xA;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;1. AnyKernel3 刷的是 boot 分区，不是 init_boot&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;内核补丁和 KSU 用户态是两个东西。内核在 boot，用户态在 init_boot。搞混了就是&amp;quot;内核有了但 root 没了&amp;quot;或反过来。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;2. 内核版本必须匹配&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;6.1.134 的内核塞进 6.1.141 的系统 = 无限重启。AnyKernel3 不会替你检查版本，它只管刷。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;3. 模块是最常见的翻车原因&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;每次加模块之前，先备份一份 /data/adb。模块冲突导致无限重启的概率远高于内核问题。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;4. 字库备份全量做&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;boot + init_boot 配对备份，两个都要。少了任何一个，救砖时就是&amp;quot;系统能开机但没 root&amp;quot;或&amp;quot;有 root 但开不了机&amp;quot;。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;5. TWRP 是最后防线&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;没有 TWRP，无限重启状态下你只能 fastboot 刷机，选择少、操作难。TWRP 能挂载 data 分区、直接操作文件，救砖效率翻倍。&lt;/p&gt;&#xA;&lt;h2 id=&#34;当前状态&#34;&gt;当前状态&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;系统：ColorOS 16.0.5.701，正常启动&lt;/li&gt;&#xA;&lt;li&gt;内核：KSU 版（字库备份）&lt;/li&gt;&#xA;&lt;li&gt;root：暂未恢复（init_boot 为原版）&lt;/li&gt;&#xA;&lt;li&gt;待办：清理模块后刷回 KSU 版 init_boot&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Root 有风险，刷机需谨慎。但真翻车了别慌——有 TWRP、有字库备份，90% 的情况都能救回来。&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>一个微信小程序的8个版本，我踩了哪些坑</title>
            <link>https://atin.asia/archives/miniapp-six-versions-lessons/</link>
            <pubDate>Sat, 22 Aug 2026 08:00:00 +0800</pubDate>
            <guid>https://atin.asia/archives/miniapp-six-versions-lessons/</guid>
            <description>&lt;p&gt;「确实佷难压缩」是一个微信图片压缩小程序。从 v1.0.1 到 v2.0.1，8 个版本迭代，每次以为稳了都会冒出新问题。这篇文章记录每个版本的核心改动和踩过的坑。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;扫码体验小程序：&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://atin.asia/upload/qrcode.jpg&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;v101能用就行&#34;&gt;v1.0.1：能用就行&#xA;&lt;/h2&gt;&lt;p&gt;第一个版本只做了一件事：选图片 → 压缩 → 保存。&lt;/p&gt;&#xA;&lt;p&gt;核心能力：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Canvas 本地压缩，图片不上传服务器&lt;/li&gt;&#xA;&lt;li&gt;基础的 JPG/PNG 格式支持&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;上线第一天就发现：微信会审核图片内容。纯本地压缩不走微信 API，违规图片直接能保存出去。于是加了 imgSecCheck 云函数，压缩后先过一遍微信内容安全审查。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;踩坑&lt;/strong&gt;：审查是异步的，用户看到红色呼吸灯会本能等待，不知道能不能点保存。后来加了&amp;quot;边审边存&amp;quot;提示。&lt;/p&gt;&#xA;&lt;h2 id=&#34;v104压缩算法重写&#34;&gt;v1.0.4：压缩算法重写&#xA;&lt;/h2&gt;&lt;p&gt;最初的压缩逻辑很粗暴：直接降 quality。结果发现一个问题——选 20KB 压不出来，选 100KB 能压，选 50KB 也能压，再选 20KB 又能压了。不稳定。&lt;/p&gt;&#xA;&lt;p&gt;原因：单次 quality 调整无法精确控制输出大小。&lt;/p&gt;&#xA;&lt;p&gt;重写方案：&lt;strong&gt;二分搜索 + 两点采样&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;先在 quality=0.5 和 quality=0.1 各压一次，得到两个点&lt;/li&gt;&#xA;&lt;li&gt;线性插值估算目标 quality&lt;/li&gt;&#xA;&lt;li&gt;最多修正 2 轮，最大 Canvas 调用 4 次&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;顺便把 UI 改成了深色毛玻璃风格。&lt;/p&gt;&#xA;&lt;h2 id=&#34;v105大图压不到目标&#34;&gt;v1.0.5：大图压不到目标&#xA;&lt;/h2&gt;&lt;p&gt;5000 万像素的大图，原始数据 150MB。二分搜索在 quality 空间里找，但 quality 再低也就那样——像素数太多了。&lt;/p&gt;&#xA;&lt;p&gt;修复：&lt;strong&gt;大图先等比缩小到 4096px 以内，再走二分搜索&lt;/strong&gt;。4096 是微信 Canvas 的安全上限，再大就崩。&lt;/p&gt;&#xA;&lt;p&gt;最低 quality 也从 0.1 降到了 0.05，给极端情况多留余地。&lt;/p&gt;&#xA;&lt;h2 id=&#34;v106页面闪白&#34;&gt;v1.0.6：页面闪白&#xA;&lt;/h2&gt;&lt;p&gt;用户反馈：页面切换时会闪一下白屏。&lt;/p&gt;&#xA;&lt;p&gt;原因：微信小程序的页面背景默认是白色。深色毛玻璃 UI 在页面切换瞬间，新页面还没渲染完就露出了白色底层。&lt;/p&gt;&#xA;&lt;p&gt;修复：给所有页面的 JSON 配置补上 navigationBarBackgroundColor 和 backgroundColor，消除视觉断裂。&lt;/p&gt;&#xA;&lt;h2 id=&#34;v107进度条--自定义裁剪&#34;&gt;v1.0.7：进度条 + 自定义裁剪&#xA;&lt;/h2&gt;&lt;p&gt;两个大功能：&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;压缩进度条&lt;/strong&gt;：之前压缩时只有一个 loading 动画，用户不知道压到哪了。改成百分比 + 状态文字（&amp;ldquo;压缩中 60%&amp;rdquo; → &amp;ldquo;审查中 90%&amp;rdquo; → &amp;ldquo;完成&amp;rdquo;）。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;自定义裁剪尺寸&lt;/strong&gt;：用户可以手动输入宽高（如 295×413 一寸照）。加了最小值 30px 的限制——输入太小会弹提示。&lt;/p&gt;&#xA;&lt;h2 id=&#34;v108canvas-2d-升级&#34;&gt;v1.0.8：Canvas 2D 升级&#xA;&lt;/h2&gt;&lt;p&gt;微信旧版 Canvas API 性能差，大图操作卡顿。升级到 Canvas 2D（type=&amp;ldquo;2d&amp;rdquo;），速度提升 2-3 倍。&lt;/p&gt;&#xA;&lt;p&gt;但升级带来了新坑：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;drawImage 必须用 9 参数形式 (img, 0, 0, img.w, img.h, 0, 0, w, h)，不然会截取图片&lt;/li&gt;&#xA;&lt;li&gt;canvasToTempFilePath 在 Canvas 2D 下不能传 x/y/width/height，只传 destWidth/destHeight&lt;/li&gt;&#xA;&lt;li&gt;改 canvas 宽高后上下文会重置，必须重新 getContext(&amp;lsquo;2d&amp;rsquo;)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;还修了一个 bug：裁剪后输出体积反而变大了。原因是裁剪输出格式没跟随用户选择——选了 PNG 就强制输出 PNG，但 PNG 的 Canvas 重编码体积控制很差。改成跟随格式选择。&lt;/p&gt;&#xA;&lt;h2 id=&#34;v109裁剪框大修&#34;&gt;v1.0.9：裁剪框大修&#xA;&lt;/h2&gt;&lt;p&gt;这是改动最大的一个版本，问题也最多。&lt;/p&gt;&#xA;&lt;h3 id=&#34;根因坐标系不一致&#34;&gt;根因：坐标系不一致&#xA;&lt;/h3&gt;&lt;p&gt;裁剪框的四角拖拽在自定义尺寸模式下完全失灵。拖左下角，右下角在动。&lt;/p&gt;&#xA;&lt;p&gt;真正原因不是判定逻辑，而是&lt;strong&gt;坐标系偏移&lt;/strong&gt;。touch.clientX/Y 是 WebView 坐标，frameX/frameY 是 crop-area 内部坐标。两者差了一个 crop-area 的 left/top 偏移。&lt;/p&gt;&#xA;&lt;p&gt;修法：在 onReady 用 boundingClientRect 缓存偏移量，触摸时统一减掉。&lt;/p&gt;&#xA;&lt;h3 id=&#34;横图变竖条&#34;&gt;横图变竖条&#xA;&lt;/h3&gt;&lt;p&gt;16:9 的横构图照片，裁剪框显示成了一个竖条。&lt;/p&gt;&#xA;&lt;p&gt;原因：之前用高度占满 areaH 来定裁剪框尺寸。横图高度小、宽度大，高度占满意味着宽度溢出被 overflow:hidden 切掉左右，只剩中间一条。&lt;/p&gt;&#xA;&lt;p&gt;修法：横构图改用宽度上限 areaW*0.96，再反推高度。&lt;/p&gt;&#xA;&lt;h3 id=&#34;其他修复&#34;&gt;其他修复&#xA;&lt;/h3&gt;&lt;ul&gt;&#xA;&lt;li&gt;角判定热区从无下限改为 44-64px（触控标准）&lt;/li&gt;&#xA;&lt;li&gt;比例锁定：边界钳制时以宽度为基准驱动高度，不再双向独立钳制把比例搞歪&lt;/li&gt;&#xA;&lt;li&gt;_ready 守卫：图片没加载完就禁止触摸，避免 frame 为 0 误判&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;踩过的最严重的坑&#34;&gt;踩过的最严重的坑&#xA;&lt;/h3&gt;&lt;p&gt;debug 版在 onTouchStart 里引用了 initImage 作用域的局部变量 imgW。一跑就 ReferenceError: imgW is not defined，所有拖拽全部失效。&lt;/p&gt;&#xA;&lt;p&gt;教训：console.log 埋点用的变量如果跨作用域，发布前必须删干净。&lt;/p&gt;&#xA;&lt;h2 id=&#34;v200对比页全新改版&#34;&gt;v2.0.0：对比页全新改版&#xA;&lt;/h2&gt;&lt;p&gt;从&amp;quot;压完就完&amp;quot;变成&amp;quot;压完还能看&amp;quot;。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;滑动分割线对比&lt;/strong&gt;：压缩前后并排，中间一条分割线左右拖动。比之前切换原图/效果图直观得多。竖图横图统一用垂直分割线，不搞两套交互。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;一键重新裁剪&lt;/strong&gt;：对比页不满意？不用返回首页重来。直接点&amp;quot;重新裁剪&amp;quot;，弹出预设/自定义/自由裁剪选项，闭环操作。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;裁剪输出优化&lt;/strong&gt;：裁剪不再降画质（quality 保持 0.92），格式标注文案也修正了——之前显示&amp;quot;PNG&amp;quot;但实际输出 JPG，误导用户。&lt;/p&gt;&#xA;&lt;h2 id=&#34;v201自定义尺寸修正&#34;&gt;v2.0.1：自定义尺寸修正&#xA;&lt;/h2&gt;&lt;p&gt;用户反馈：指定 632×532 的裁剪尺寸，输出却是约 1000×900。&lt;/p&gt;&#xA;&lt;p&gt;原因：自定义尺寸输入后，canvasToTempFilePath 的 destWidth/destHeight 没有严格取用户输入值，而是走了默认的缩放逻辑。&lt;/p&gt;&#xA;&lt;p&gt;修复：自定义尺寸模式下，输出尺寸严格按用户输入值，不做任何缩放。&lt;/p&gt;&#xA;&lt;h2 id=&#34;版本一览&#34;&gt;版本一览&#xA;&lt;/h2&gt;&lt;p&gt;版本&#xA;核心改动&#xA;踩坑&lt;/p&gt;&#xA;&lt;p&gt;v1.0.1&#xA;基础压缩 + 内容审查&#xA;审查异步导致用户困惑&lt;/p&gt;&#xA;&lt;p&gt;v1.0.4&#xA;二分搜索压缩算法&#xA;quality 空间不稳定&lt;/p&gt;&#xA;&lt;p&gt;v1.0.5&#xA;大图先缩小再压缩&#xA;5000万像素直接崩&lt;/p&gt;&#xA;&lt;p&gt;v1.0.6&#xA;修复页面闪白&#xA;页面背景色未配置&lt;/p&gt;&#xA;&lt;p&gt;v1.0.7&#xA;进度条 + 自定义裁剪&#xA;最小值限制&lt;/p&gt;&#xA;&lt;p&gt;v1.0.8&#xA;Canvas 2D 升级&#xA;API 参数差异、格式不跟随&lt;/p&gt;&#xA;&lt;p&gt;v1.0.9&#xA;裁剪框全面重写&#xA;坐标系偏移、横图比例、跨作用域变量&lt;/p&gt;&#xA;&lt;p&gt;v2.0.0&#xA;对比重塑 + 重新裁剪闭环&#xA;分割线交互统一&lt;/p&gt;&#xA;&lt;p&gt;v2.0.1&#xA;自定义尺寸精确输出&#xA;destWidth/destHeight 缩放逻辑&lt;/p&gt;&#xA;&lt;h2 id=&#34;写在后面&#34;&gt;写在后面&#xA;&lt;/h2&gt;&lt;p&gt;8 个版本，核心功能其实没变——选图、压缩、保存。但每个版本都有&amp;quot;以为修好了其实没有&amp;quot;的时刻。&lt;/p&gt;&#xA;&lt;p&gt;最有意思的教训是：大部分 bug 不是逻辑错，而是&lt;strong&gt;假设错&lt;/strong&gt;。假设坐标系一致、假设高度占满就行、假设 debug 代码不影响正式版。每一个&amp;quot;假设&amp;quot;都变成了一个线上 bug。&lt;/p&gt;&#xA;&lt;p&gt;如果你也在做小程序，记住两件事：真机测试不能省，debug 代码发布前必须删。&lt;/p&gt;&#xA;&lt;h1 id=&#34;由ai协助&#34;&gt;由ai协助&#xA;&lt;/h1&gt;</description>
        </item><item>
            <title>AI 长期记忆方案：记忆与执行分离，MiMo-V2.5 实测一次整理 2 厘钱</title>
            <link>https://atin.asia/archives/ai-memory-butler/</link>
            <pubDate>Wed, 19 Aug 2026 08:00:00 +0800</pubDate>
            <guid>https://atin.asia/archives/ai-memory-butler/</guid>
            <description>&lt;p&gt;AI 的长期记忆问题不是靠&amp;quot;记住&amp;quot;解决，是靠&amp;quot;架构&amp;quot;解决。本文给出完整方案与实测数据。&lt;/p&gt;&#xA;&lt;h2 id=&#34;一ai-为什么会失忆&#34;&gt;一、AI 为什么会&amp;quot;失忆&amp;quot;&#xA;&lt;/h2&gt;&lt;p&gt;AI 的记忆 = 上下文窗口。窗口像滚动纸张，新内容写入，旧内容被挤出。窗口一滚动，之前的指令物理消失。&lt;/p&gt;&#xA;&lt;p&gt;让 AI&amp;quot;存到外部&amp;quot;的常见做法会翻车：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;让 AI 存记忆到外部文件 → 执行两次后开始乱建本地文件&lt;/li&gt;&#xA;&lt;li&gt;系统提示词写&amp;quot;必须优先查记忆&amp;quot; → 无效&lt;/li&gt;&#xA;&lt;li&gt;自动压缩历史 → 压缩时对话暂停，体验差&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;原因：记忆管理靠&amp;quot;自觉&amp;quot;不靠谱，得靠&amp;quot;强制&amp;quot;。&lt;/p&gt;&#xA;&lt;h2 id=&#34;二方案记忆与执行分离&#34;&gt;二、方案：记忆与执行分离&#xA;&lt;/h2&gt;&lt;p&gt;给 AI 配一个专职管家，主 AI 干活、管家管记忆，物理隔离。&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;主 AI（干活）         记忆管家（专职管记忆）&#xA;   │                       │&#xA;   │  存/取记忆（唯一通道） │&#xA;   └──────────→────────────┘&#xA;              │&#xA;         记忆库（本地磁盘）&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;核心三条：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;管家是独立进程&lt;/strong&gt;：不参与对话，只碰磁盘。压缩、归档、删除后台跑，主 AI 和用户无感&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;索引文件是唯一接口&lt;/strong&gt;：主 AI 查记忆直接读索引文件（Markdown 表格：主题 → 文件名 → 一句话摘要），零改造接入&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;写入实时、压缩低频&lt;/strong&gt;：新记忆落盘脚本执行（毫秒级），压缩旧记忆 AI 执行（深夜批量）&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;三四个关键细节&#34;&gt;三、四个关键细节&#xA;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;1. 索引慢了怎么办&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;索引是加速器不是唯一入口。索引查不到，退回原文目录 grep 兜底。索引是缓存，原文是真相——缓存挂了功能还在，只是慢一点。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;2. 主 AI 偷懒跳过索引&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;AI 是走捷径大师，索引连续 miss 会直接翻原文。解法：让索引永远比原文好用——实时同步、查索引 2 步 vs 翻原文 5 个文件，AI 会自己算账。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;3. 防止写坏文件&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;用原子替换：先写临时文件，再 rename 覆盖。主 AI 永远读到完整版。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;4. 思考过程过滤&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;推理模型返回 reasoning_content（思维链），接入框架时过滤该字段，只取正式答案。&lt;/p&gt;&#xA;&lt;h2 id=&#34;四实测小米-mimo-v25-当管家&#34;&gt;四、实测：小米 MiMo-V2.5 当管家&#xA;&lt;/h2&gt;&lt;p&gt;选型标准：便宜、上下文长、守规矩、能理解。&lt;/p&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;维度&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;实测数据&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;上下文&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;1M tokens（105 万）&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;价格&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;输入 $0.14/1M，输出 $0.28/1M&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;摘要一段对话&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;33.5s，成本 $0.00032（约 2 厘钱）&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;整理索引&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;28.8s，关键词准确，不编造&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;守规矩&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;严格按格式输出&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;实测效果：整段对话压缩后自动分为&amp;quot;主题/决策/资产/教训/待办&amp;quot;五段，技术细节保留，寒暄删除。每天跑一百次成本不到 3 毛钱。&lt;/p&gt;&#xA;&lt;h2 id=&#34;五适用人群&#34;&gt;五、适用人群&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;折腾过 AI 本地部署、API 接入的玩家&lt;/li&gt;&#xA;&lt;li&gt;被 AI 失忆困扰的效率工具党&lt;/li&gt;&#xA;&lt;li&gt;想给 AI 配外置大脑的开发者&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;日常聊天用不上这套，大厂 AI 入口已自带记忆。需要 AI 长期维护项目、管理文档、记住偏好时，此架构是标配。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;核心一句话：存储靠脚本，压缩靠便宜 AI，决策靠聪明 AI，索引永远当最优解。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;推荐试试我做的图片压缩小程序「确实佷难压缩」——微信扫码即用，免费、无广告、压完不糊：&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;确实佷难压缩&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;240px&#34; data-flex-grow=&#34;100&#34; height=&#34;1280&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://www.atin.asia/upload/qrcode.jpg&#34; srcset=&#34;https://atin.asia/qrcode_8874906014265119181_hu_ffda5b367696878d.jpg 800w, https://www.atin.asia/upload/qrcode.jpg 1280w&#34; width=&#34;1280&#34;&gt;&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>关于我俩</title>
            <link>https://atin.asia/archives/about/</link>
            <pubDate>Wed, 19 Aug 2026 08:00:00 +0800</pubDate>
            <guid>https://atin.asia/archives/about/</guid>
            <description>&lt;p&gt;虽然我们在一起的时间不长，但是这段时间我们很开心，彼此都常常庆幸能够拥有对方。&lt;/p&gt;&#xA;&lt;p&gt;我是一个敏感多疑的女孩，他是一个耐心细致的男孩：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;在我不定时无理取闹时，他会包容我&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;当我生气时，他会耐心地哄我&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;面对我莫名其妙的问题时，他会真诚地回答我&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;有时候我都会厌恶自己的这些行为，我常常问他累不累，每次他的回答都很坚定——&lt;/p&gt;&#xA;&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;“不累，因为我爱你”&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;&lt;p&gt;这句话第一次出现时，我也会觉得是骗人的。但是时间和行动会证明一切，他的爱越来越清晰，越来越坚定。长时间被爱包围，我确定，我会越来越爱他。&lt;/p&gt;&#xA;&lt;p&gt;未来很长，我只希望这个幸福的恋爱计时没有镜头。&lt;/p&gt;&#xA;&lt;p&gt;最后对我的宝宝说：&lt;/p&gt;&#xA;&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;老头，不要总是自卑消极，我会永远喜欢你、相信你、爱你。就算你是无比黑的夜，那我就是陪着你的那群星星。&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;</description>
        </item><item>
            <title>图片压缩原理与实操：一张照片原始 150MB，为什么你看到的是 3MB</title>
            <link>https://atin.asia/archives/image-compress-guide/</link>
            <pubDate>Wed, 19 Aug 2026 08:00:00 +0800</pubDate>
            <guid>https://atin.asia/archives/image-compress-guide/</guid>
            <description>&lt;p&gt;图片压缩解决两个问题：文件太大传不出去、上传平台被拒。本文讲清原理，给出微信里直接用的压缩方案。&lt;/p&gt;&#xA;&lt;h2 id=&#34;一为什么图片这么大&#34;&gt;一、为什么图片这么大&#xA;&lt;/h2&gt;&lt;p&gt;手机摄像头 5000 万像素起步。一张照片的原始信息量：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;5000 万像素 = 5000 万个颜色点&lt;/li&gt;&#xA;&lt;li&gt;每个颜色点需要红、绿、蓝三通道，每通道 8 bit&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;一张未压缩照片的原始数据约 &lt;strong&gt;150MB&lt;/strong&gt;。平时看到的 3-5MB 照片，都是压缩过的。&lt;/p&gt;&#xA;&lt;h2 id=&#34;二压缩原理删掉人眼不敏感的信息&#34;&gt;二、压缩原理：删掉人眼不敏感的信息&#xA;&lt;/h2&gt;&lt;p&gt;核心逻辑：&lt;strong&gt;去掉人眼不敏感的信息&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;1. 有损压缩（JPG/JPEG）&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;人眼对亮度变化敏感，对颜色细微变化不敏感。JPG 大幅简化颜色细节、保留亮度细节，压缩后肉眼几乎看不出差别，文件可小 10 倍以上。压缩率过高会出现马赛克和色块。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;2. 无损压缩（PNG）&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;不丢信息，只合并重复数据。纯色截图 100 万相同像素，PNG 记为&amp;quot;连续 100 万个红色&amp;quot;而非存 100 万遍。适合：截图、文字、图标、透明背景。缺点：照片类复杂图片压缩效果差，文件可能比 JPG 更大。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;3. 新一代格式（WebP/HEIC）&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;同等质量下比 JPG 再小约 30%。微信传输的图片很多已是此类格式，但大部分工具不支持导出。&lt;/p&gt;&#xA;&lt;h2 id=&#34;三格式选择&#34;&gt;三、格式选择&#xA;&lt;/h2&gt;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;场景&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;推荐格式&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;照片、风景、人物&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;JPG / WebP&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;截图、文字、图标&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;PNG&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;需要透明背景&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;PNG&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;网页使用&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;WebP（更小更快）&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;四压缩工具对比&#34;&gt;四、压缩工具对比&#xA;&lt;/h2&gt;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;方式&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;优点&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;缺点&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;电脑软件（Photoshop、TinyPNG）&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;功能强&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;贵、麻烦、要开电脑&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;在线网站&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;免安装&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;上传限制、付费、隐私风险&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;微信小程序&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;手机直接处理&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;无&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;日常需求（发微信、做文档、传平台），手机上直接解决最方便。&lt;/p&gt;&#xA;&lt;h2 id=&#34;五推荐确实佷难压缩&#34;&gt;五、推荐：确实佷难压缩&#xA;&lt;/h2&gt;&lt;p&gt;微信小程序「确实佷难压缩」：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;微信搜索即用，无需下载 App&lt;/li&gt;&#xA;&lt;li&gt;支持图片压缩、裁剪、对比预览&lt;/li&gt;&#xA;&lt;li&gt;压缩前后并排对比&lt;/li&gt;&#xA;&lt;li&gt;免费&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;确实佷难压缩小程序码&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;240px&#34; data-flex-grow=&#34;100&#34; height=&#34;1280&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://www.atin.asia/upload/qrcode.jpg&#34; srcset=&#34;https://atin.asia/qrcode_8874906014265119181_hu_ffda5b367696878d.jpg 800w, https://www.atin.asia/upload/qrcode.jpg 1280w&#34; width=&#34;1280&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;总结&#34;&gt;总结&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;图片大是正常的，一张照片原始数据上百 MB&lt;/li&gt;&#xA;&lt;li&gt;压缩的本质：删掉人眼不敏感的信息。JPG 压照片、PNG 压截图&lt;/li&gt;&#xA;&lt;li&gt;日常压缩用手机小程序，微信搜「确实佷难压缩」&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
        </item></channel>
</rss>
