<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>开源 on atin的个人小站</title>
        <link>https://atin.asia/tags/%E5%BC%80%E6%BA%90/</link>
        <description>Recent content in 开源 on atin的个人小站</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <lastBuildDate>Sun, 01 Nov 2026 19:25:00 +0800</lastBuildDate><atom:link href="https://atin.asia/tags/%E5%BC%80%E6%BA%90/index.xml" rel="self" type="application/rss+xml" /><item>
            <title>移动智能体的安卓生存法则：厂商收权时代下个人 Agent 的后台保活、定时岗位与灵动岛实战</title>
            <link>https://atin.asia/archives/nyral-survival-on-android/</link>
            <pubDate>Sun, 01 Nov 2026 19:25:00 +0800</pubDate>
            <guid>https://atin.asia/archives/nyral-survival-on-android/</guid>
            <description>&lt;h2 id=&#34;摘要&#34;&gt;摘要&#xA;&lt;/h2&gt;&lt;p&gt;Android 开放生态的核心矛盾是：系统厂商为了续航与安全不断&amp;quot;收权&amp;quot;，而智能体（Agent）类应用天然需要常驻、需要后台执行、需要系统级感知能力。对于没有大厂资源和白名单合作的个人独立开发者，这一矛盾尤为尖锐。&lt;/p&gt;&#xA;&lt;p&gt;本文以个人开发的安卓移动智能体 Nyral（开源仓库 aixtin/Nyral，包名 io.github.aixtin.nyral）为对象，系统复盘其在国产 ROM（ColorOS / HyperOS / MIUI）环境下存活与进化的完整工程实践，涵盖四个方面：&lt;/p&gt;&#xA;&lt;ol&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;：基于 &lt;code&gt;AlarmManager.setExactAndAllowWhileIdle&lt;/code&gt; 的精确闹钟穿透 Doze 模式，配合续期重排、任务会话绑定、预授权白名单与审计日志，实现&amp;quot;AI 每日自我唤醒静默执行&amp;quot;的无人值守闭环；&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;灵动岛（Live Updates）接入&lt;/strong&gt;：通过升级 targetSdk 36、遵循 Android 16 原生 Live Updates API（promoted notifications），让 Agent 任务进度以标准通知通道上屏系统状态栏胶囊，跨厂商自动适配（ColorOS 流体云、HyperOS 超级岛），无需悬浮窗权限与厂商白名单；&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;真机验证方法论&lt;/strong&gt;：以&amp;quot;改 cron + UI 停用/启用触发真实闹钟&amp;quot;和&amp;quot;DebugServer 注入 + 通知/db 三方取证&amp;quot;两套方法，在不依赖厂商测试体系的前提下完成端到端可信验证。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;本文同时对比了 arXiv:2607.13027（PalmClaw）&amp;ldquo;API over GUI&amp;quot;的运维路线，指出个人开发者构建移动 Agent 时应优先选择&amp;quot;标准协议穿透 + 自建云侧运维通道&amp;quot;而非&amp;quot;全栈 GUI 自动化&amp;quot;的工程判断。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;1-引言与背景&#34;&gt;1 引言与背景&#xA;&lt;/h2&gt;&lt;h3 id=&#34;11-移动-agent-的现实困境&#34;&gt;1.1 移动 Agent 的现实困境&#xA;&lt;/h3&gt;&lt;p&gt;智能体（Agent）类应用与普通应用的本质区别在于：它需要&amp;quot;持续存在、随时被唤醒、有能力触达系统其他部分&amp;rdquo;。而在 Android 生态中，这三者恰好全部处于厂商的限制射程之内：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;持续存在&lt;/strong&gt;：Doze、App Standby、厂商激进回收（ColorOS 的&amp;quot;纯净后台&amp;quot;、MIUI 的&amp;quot;神隐模式&amp;quot;）会杀死后台进程；&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;随时被唤醒&lt;/strong&gt;：&lt;code&gt;setExactAndAllowWhileIdle&lt;/code&gt; 等精确闹钟被限制频率，厂商还会拦截系统广播（&lt;code&gt;BOOT_COMPLETED&lt;/code&gt;、&lt;code&gt;MY_PACKAGE_REPLACED&lt;/code&gt;）；&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;触达系统&lt;/strong&gt;：无障碍（AccessibilityService）、输入法（IME）、悬浮窗（SYSTEM_ALERT_WINDOW）等&amp;quot;半官方通道&amp;quot;均需用户授权，且厂商可能针对特定应用收窄权限。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;对独立开发者而言，问题还要再加三层：没有厂商白名单资格、没有海量设备适配预算、项目由单人维护（本文作者为一人开发、一人运维、零资本投入的非科班开发者，约 8 年软硬件折腾经验，无营业执照与公司主体）。&lt;/p&gt;&#xA;&lt;h3 id=&#34;12-nyral-简介&#34;&gt;1.2 Nyral 简介&#xA;&lt;/h3&gt;&lt;p&gt;Nyral 是一个运行在 Android 手机上的个人移动智能体：支持自然语言对话、工具调用（文件、浏览器、终端、应用操作）、知识库沉淀、定时任务（本文称为&amp;quot;定时岗位&amp;quot;）、远程运维（DebugServer + SSH/ADB）等能力。它不依赖云端常驻进程，核心逻辑全部跑在用户的手机上，云侧（VPS）仅作为可选运维通道。&lt;/p&gt;&#xA;&lt;p&gt;这一形态决定了它必须解决&amp;quot;在手机上活下去&amp;quot;的问题，也使其成为研究个人 Agent 后台生存架构的理想样本。&lt;/p&gt;&#xA;&lt;h3 id=&#34;13-论文结构&#34;&gt;1.3 论文结构&#xA;&lt;/h3&gt;&lt;p&gt;第 2 节给出威胁模型与通道分层；第 3 节介绍软地基架构；第 4 节详细展开定时岗位机制；第 5 节介绍灵动岛/Live Updates 接入；第 6 节讨论安全与信任边界；第 7 节给出真机验证方法论；第 8 节与既有工作对比；第 9 节总结。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;2-威胁模型与通道分层&#34;&gt;2 威胁模型与通道分层&#xA;&lt;/h2&gt;&lt;h3 id=&#34;21-厂商收权的层级结构&#34;&gt;2.1 厂商收权的层级结构&#xA;&lt;/h3&gt;&lt;p&gt;在长期实践中，我们将移动 Agent 的能力触达按&amp;quot;权限强度&amp;quot;分为五层，越上层越不可剥夺，越下层越接近厂商控制：&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;VPS / 云函数&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;SSH / ADB / shell&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;极难剥夺&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;需 root 或 adb 授权，是最后兜底&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;root / 解锁 Bootloader&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;L4 半官方通道&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;无障碍 / IME / 悬浮窗&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;L5 普通通道&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;Doze、Standby、厂商省电策略层层加码&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;关键结论（也是 Nyral 的路线依据）：&lt;strong&gt;命脉在厂商，但标准协议不可关&lt;/strong&gt;。厂商可以收紧应用调用频次，却不能关闭无障碍服务、输入法、通知、闹钟这些 Android 标准框架能力——否则整个系统生态都会崩溃。因此，Agent 的存活策略必须建立在&amp;quot;标准协议 + 半官方通道&amp;quot;的组合上，而不是赌某一家厂商的私有接口。&lt;/p&gt;&#xA;&lt;h3 id=&#34;22-能力与通道解耦原则&#34;&gt;2.2 能力与通道解耦原则&#xA;&lt;/h3&gt;&lt;p&gt;Nyral 的架构铁律：&lt;strong&gt;能力与通道解耦，通道只做一层适配，不赌未来变&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;能力（Ability）：读剪贴板、点屏幕、发通知、执行定时任务……这些是 Agent 的核心诉求，与通道无关；&lt;/li&gt;&#xA;&lt;li&gt;通道（Channel）：无障碍、IME、悬浮窗、通知、闹钟……这些是会随厂商策略变化的&amp;quot;皮肤&amp;quot;。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;当某个通道被厂商收紧时，只替换该通道的适配层，能力层完全不动。这一原则在 2026 年 9-10 月的多轮改造中反复验证（见第 3、4 节）。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;3-软地基架构六类半官方通道&#34;&gt;3 软地基架构：六类半官方通道&#xA;&lt;/h2&gt;&lt;p&gt;Nyral 的&amp;quot;软地基&amp;quot;是一组经过长期踩坑后沉淀的通道清单，它们共同构成了 Agent 在国产 ROM 上&amp;quot;不死、能醒、能触达&amp;quot;的底座：&lt;/p&gt;&#xA;&lt;h3 id=&#34;31-通道清单&#34;&gt;3.1 通道清单&#xA;&lt;/h3&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;&#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;UiControlService&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;InvisibleIME（InvisImeService）&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;后台读剪贴板、无痕输入&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;IME 进程被系统视为&amp;quot;正在输入&amp;quot;，存活优先级高&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;SYSTEM_ALERT_WINDOW&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;DebugServer（端口 8765）&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;远程注入指令、会话管理、SSE 流式回传&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;运维通道，配合 adb forward 可达&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;Notification + 气泡&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;TaskService / TimerKeepAliveService&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;h3 id=&#34;32-invisibleime-的实战踩坑以-coloros-为例&#34;&gt;3.2 InvisibleIME 的实战踩坑（以 ColorOS 为例）&#xA;&lt;/h3&gt;&lt;p&gt;隐形输入法在 OPPO ColorOS 上有一个典型坑：系统会按窗口高度门控隐藏 IME 底栏（chevron/九宫格切换器/手势条），导致用户无法收键盘或切换输入法。&lt;/p&gt;&#xA;&lt;p&gt;最终方案（2026-10-12 定稿）完全基于公开 API、零反射：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;code&gt;onCreateInputView&lt;/code&gt; 中匿名 View 强制测量高度 900px，骗过 OPPO 窗口高度门控，保留底栏布局；&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;onComputeInsets&lt;/code&gt; 把 contentTopInsets 设为全高、touchableRegion 只给 navbar 实际区域，实现&amp;quot;IME source frame 高度为 0，所有 App 零推移；透明区触摸直穿&amp;quot;；&lt;/li&gt;&#xA;&lt;li&gt;用 OnPreDrawListener 做底栏守护，每帧检查 visibility/alpha 并扳回（OPPO 的 &lt;code&gt;InputMethodServiceExtImpl.updateNavigationBarVisibility&lt;/code&gt; 会藏整个 NavigationBarView，不只是两个子按钮，守护目标必须含三个 view）。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;这条踩坑的价值在于：&lt;strong&gt;厂商私有行为（隐藏底栏）与标准框架行为（IME insets）的解耦&lt;/strong&gt;——我们不反射、不 hook 厂商内部 API，只改自己的标准 API 调用，因此即使厂商升级策略也大概率不会破坏。&lt;/p&gt;&#xA;&lt;h3 id=&#34;33-通道的存活优先级排序&#34;&gt;3.3 通道的存活优先级排序&#xA;&lt;/h3&gt;&lt;p&gt;实测经验（三品牌真机：OPPO ColorOS / 红米 HyperOS / 一加 ColorOS）：当系统开始杀后台时，存活优先级大致为：&lt;strong&gt;IME ≥ 悬浮窗 &amp;gt; 前台服务（带可见通知）&amp;gt; 无障碍 &amp;gt; 普通后台进程&lt;/strong&gt;。因此 Nyral 将&amp;quot;隐形输入法 + 悬浮窗&amp;quot;作为最低限度保活组合，前台服务作为任务执行载体，无障碍作为触达工具而非存活依赖。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;4-定时岗位无人值守的自我唤醒闭环&#34;&gt;4 定时岗位：无人值守的自我唤醒闭环&#xA;&lt;/h2&gt;&lt;p&gt;&amp;ldquo;定时岗位&amp;quot;是 Nyral 的核心功能之一：用户用自然语言让 AI 创建一个定时任务（如&amp;quot;每天早上九点给我推送科技新闻早报&amp;rdquo;），到点后手机上的 Agent 静默唤醒、执行工具链、把结果写回绑定的会话并发通知。&lt;/p&gt;&#xA;&lt;h3 id=&#34;41-四模块实现链路2026-10-11-mvp&#34;&gt;4.1 四模块实现链路（2026-10-11 MVP）&#xA;&lt;/h3&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;TimerTaskDb&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;独立 timer.db 任务表，含 session_id/mode 列（v2 迁移）&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;TimerScheduler&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;用 &lt;code&gt;AlarmManager.setExactAndAllowWhileIdle&lt;/code&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;TimerWakeReceiver&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;到点接收广播，拉起 TaskService&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;TaskService.runTimerTask&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;复用 LocalEngine.chat 无 UI 链路执行任务，落库 + 审计&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;任务创建时自动创建专属会话并绑定，执行结果写回绑定会话；聊天模式与 Agent 模式双模式隔离不串扰。&lt;/p&gt;&#xA;&lt;h3 id=&#34;42-穿透-doze-的关键setexactandallowwhileidle--续期重排&#34;&gt;4.2 穿透 Doze 的关键：setExactAndAllowWhileIdle + 续期重排&#xA;&lt;/h3&gt;&lt;p&gt;&lt;code&gt;setExactAndAllowWhileIdle&lt;/code&gt; 是 Android 允许应用在 Doze 模式下精确唤醒的少数 API 之一（单次闹钟，非重复闹钟）。它有一个致命缺陷：&lt;strong&gt;单次闹钟触发后不会自动续期&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;p&gt;2026-10-13 真机验证发现两个缺陷并修复：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;单次无续期&lt;/strong&gt;：第一次触发后后续不再唤醒 → 在 &lt;code&gt;onDone&lt;/code&gt;/&lt;code&gt;onError&lt;/code&gt; 回调中补调用 schedule 续排下一周期；&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;静默场景危险工具门禁挂起&lt;/strong&gt;：静默执行时危险工具确认弹窗无人响应，挂起 2 分钟 → 静默模式自动拒绝危险工具。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h3 id=&#34;43-完成通知与真实闹钟链路验证&#34;&gt;4.3 完成通知与真实闹钟链路验证&#xA;&lt;/h3&gt;&lt;p&gt;新增 &lt;code&gt;notifyTaskDone()&lt;/code&gt;（NOTIF_DONE_ID=1005，channel=task_running，低重要性，点击进 MainActivity，setAutoCancel）。&lt;/p&gt;&#xA;&lt;p&gt;真机验证（一加 PJX110 ColorOS 16.0.5.701 + 小米 HyperOS 双机）全链路通过：&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;改 cron 到 21:36 → UI 停用/启用触发 AlarmManager 重排&#xA;→ 21:36:00 真实闹钟触发 TimerWakeReceiver&#xA;→ TaskService 静默执行&#xA;→ 完成续期重排&#xA;→ 通知上屏「定时任务完成: WakeAutoTest」&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;alarm tag 形如 &lt;code&gt;*walarm*:io.github.aixtin.nyral.action.TIMER_WAKE&lt;/code&gt;；Logcat 链路 TimerWakeReceiver → TaskService 完整。&lt;/p&gt;&#xA;&lt;h3 id=&#34;44-通知组折叠跨品牌可见性&#34;&gt;4.4 通知组折叠：跨品牌可见性&#xA;&lt;/h3&gt;&lt;p&gt;三个后台服务（DebugService 1002 / TaskService 1001 / TimerKeepAliveService 1003）的通知整合为通知组（key &lt;code&gt;nyral_services&lt;/code&gt;，父通知 1004）。&lt;/p&gt;&#xA;&lt;p&gt;踩坑记录：初版用 &lt;code&gt;getActiveNotifications()&lt;/code&gt; 统计活跃子通知数，&lt;strong&gt;ColorOS（Android 16）恒返回空数组&lt;/strong&gt;，导致父通知不发布。改为 ServiceNotifGroup 静态 AtomicInteger 计数（register / onDestroy unregister / publishSummary），三服务 onDestroy 互补。&lt;/p&gt;&#xA;&lt;p&gt;跨品牌验证结论：OPPO（ColorOS）/ 红米（HyperOS）/ 一加（ColorOS）三台真机状态栏通知组折叠显示均正常。&lt;/p&gt;&#xA;&lt;h3 id=&#34;45-停止机制进程组治理2026-10-31&#34;&gt;4.5 停止机制：进程组治理（2026-10-31）&#xA;&lt;/h3&gt;&lt;p&gt;与保活对称的另一面是&amp;quot;能停干净&amp;quot;。停止机制改造（P0–P3 全量落地并真机验证）：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;取消域&lt;/strong&gt;：activeConns 逐连接断流 + 剪枝剩余 tool_calls + 可中断退避；&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;停止按钮三态&lt;/strong&gt;：软停 / 硬停 / 结束；&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;ProcGuard 进程组治理&lt;/strong&gt;：setsid + procs.json + TERM→KILL + 120s 时限夹紧 + 启动巡检清僵尸；&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;SSH 三层远端清理&lt;/strong&gt;：pid 文件 / environ 标记 / pgrep 兜底。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;实测停止 2 秒内进程组清零。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;5-灵动岛从通知到系统级状态胶囊&#34;&gt;5 灵动岛：从通知到系统级状态胶囊&#xA;&lt;/h2&gt;&lt;h3 id=&#34;51-调研结论2026-09-21&#34;&gt;5.1 调研结论（2026-09-21）&#xA;&lt;/h3&gt;&lt;p&gt;针对&amp;quot;手机系统灵动胶囊是厂商适配应用，还是应用适配胶囊&amp;quot;的调研结论：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;主流模式是&lt;strong&gt;应用适配胶囊&lt;/strong&gt;：应用按系统 API/SDK 上报持续活动，系统统一渲染胶囊/实况窗；&lt;/li&gt;&#xA;&lt;li&gt;ColorOS 16 起流体云完整接入原生 Android 16 的 Live Updates API（谷歌实时活动 API），采用 OPPO + 谷歌&amp;quot;双兼容&amp;quot;方案：&lt;strong&gt;应用遵循谷歌实时活动 API 规范即可直接适配流体云，无需 OPPO 白名单或单独 SDK&lt;/strong&gt;；&lt;/li&gt;&#xA;&lt;li&gt;流体云三种卡片形态：notification_sm（胶囊/气泡）、notification_md（通知大胶囊）、notification_lg（展开面板）；&lt;/li&gt;&#xA;&lt;li&gt;支持场景类型（entityName）含 TASK——&lt;strong&gt;TASK 类型适合 Agent 上报任务执行进度&lt;/strong&gt;。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;对独立开发者而言这是重大利好：不需要厂商商务合作，只靠标准 API 就能上岛。&lt;/p&gt;&#xA;&lt;h3 id=&#34;52-sdk-36-升级路径2026-09-23&#34;&gt;5.2 SDK 36 升级路径（2026-09-23）&#xA;&lt;/h3&gt;&lt;p&gt;Live Updates API 需要 targetSdk 36+。升级内容：&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;Gradle&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;8.5&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;8.13&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;AGP&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;8.2.2&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;8.13.0&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;compileSdk&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;34&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;36&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;targetSdk&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;34&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;36&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;Kotlin / Java / minSdk&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;1.9.22 / 17 / 24&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;关键决策：选 AGP 8.13.0 而非 AGP 9.x（AGP 9 引入内置 Kotlin 变更风险大）；升 36 而非 37（36 已满足 Live Updates + Play 合规，37 生态未稳缓升）。&lt;/p&gt;&#xA;&lt;p&gt;真机验收：一加 ColorOS 16.0.5.701（V16.0.0）edge-to-edge 强制（targetSdk 35+ 行为）无遮挡问题。&lt;/p&gt;&#xA;&lt;h3 id=&#34;53-上屏机制&#34;&gt;5.3 上屏机制&#xA;&lt;/h3&gt;&lt;p&gt;Live Updates 走&lt;strong&gt;标准通知通道&lt;/strong&gt;（promoted notifications），系统自动将通知转成状态栏胶囊，&lt;strong&gt;不需要悬浮窗权限&lt;/strong&gt;。代码证据：TaskControlReceiver.kt 注释&amp;quot;Live Updates 胶囊交互卡动作接收器&amp;quot;，Manifest 声明 &lt;code&gt;POST_PROMOTED_NOTIFICATIONS&lt;/code&gt; 权限。&lt;/p&gt;&#xA;&lt;p&gt;这意味着 Agent 的任务进度（后台执行/SSH/下载）可以以 TASK 场景实时上报，跨厂商通用：ColorOS 流体云自动识别，HyperOS 3.1+ 的超级岛顺带打通，老设备不强求。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;6-安全与信任边界静默执行的授权模型&#34;&gt;6 安全与信任边界：静默执行的授权模型&#xA;&lt;/h2&gt;&lt;p&gt;定时岗位在&amp;quot;无人值守&amp;quot;和&amp;quot;危险操作&amp;quot;之间存在天然张力。Nyral 的解法是&lt;strong&gt;预授权模型&lt;/strong&gt;（2026-10-13 方案定稿）：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;废弃全局静默放权&lt;/strong&gt;：AI 创建定时任务时，检测任务所需权限，打包为一次性授权（all-or-nothing）；&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;权限生命周期 = 任务生命周期&lt;/strong&gt;：任务删除即回收权限；&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;严格 key 白名单&lt;/strong&gt;：ToolExecutor 对非法 key 严格报错，LocalEngine ToolSpec 补全 17 项白名单；&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;弹窗底座泛化&lt;/strong&gt;：SecurityUi 支持 template/title/body/decision 四要素，壳模板含 task_create/tool_exec/question/confirm/raw；&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;审计日志&lt;/strong&gt;：&lt;code&gt;nyral_security_audit.log&lt;/code&gt; 记录 approvedBy=channels 等决策来源，真机拉库可证；&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;静默模式强制拒绝&lt;/strong&gt;：静默执行场景下危险工具直接拒绝，不挂起等待（修复了挂起 2 分钟的死锁缺陷）。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;真机验证闭环（2026-10-15）：id=12 创建→删除验证通过；id=11 早报 09:00 静默执行写文件成功；allow_tools=workdir:write 正确落库。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;7-真机验证方法论无厂商测试体系的端到端可信验证&#34;&gt;7 真机验证方法论：无厂商测试体系的端到端可信验证&#xA;&lt;/h2&gt;&lt;p&gt;独立开发者没有厂商测试团队，验证全靠真机自证。两套沉淀方法：&lt;/p&gt;&#xA;&lt;h3 id=&#34;71-真实闹钟链路验证改-cron--ui-停用启用&#34;&gt;7.1 真实闹钟链路验证（改 cron + UI 停用/启用）&#xA;&lt;/h3&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;1. adb exec-out run-as 拉 timer.db 到本地&#xA;2. 改目标任务 cron_desc 为几分钟后（如&amp;#34;每天 21:36&amp;#34;）&#xA;3. adb push 到 /data/local/tmp + chmod 777 + run-as cp 覆盖回 databases/&#xA;4. 进定时任务页点任务卡片 → 菜单「停用」→ 再点「启用」，&#xA;   enable() 调用 TimerScheduler.schedule 触发 AlarmManager 重排&#xA;5. dumpsys alarm 确认 *walarm* TIMER_WAKE 的 origWhen&#xA;6. sleep 到点后 logcat 抓 TimerWakeReceiver/TaskService/notifyTaskDone，&#xA;   并 cmd statusbar expand-notifications 看通知栏&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;比 runNow 覆盖更真实的端到端链路（灭屏→闹钟→唤醒→静默执行→通知上屏）。&lt;/p&gt;&#xA;&lt;h3 id=&#34;72-debugserver-注入--三方取证&#34;&gt;7.2 DebugServer 注入 + 三方取证&#xA;&lt;/h3&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;1. monkey 拉起 App 初始化 DebugServer(8765)，&#xA;   adb forward tcp:18765 tcp:8765，&#xA;   curl POST /v1/chat 带 X-Auth-Token 注入自然语言指令&#xA;2. logcat 抓 toolCalls=[(timer_task_create,...)] 确认 AI 调用与参数&#xA;3. 截屏/uiautomator 确认确认壳（气泡或通知）渲染清单&#xA;4. 用户在手机上点击允许/删除完成决策&#xA;5. run-as exec-out cat databases/timer.db 经中转拉回，&#xA;   sqlite 读 timer_tasks 确认 allow_tools 等字段真实落库&#xA;6. 读 files/nyral_security_audit.log 确认 approvedBy=channels 决策来源&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;原则：&lt;strong&gt;避免只看 AI 回复文本误判成功&lt;/strong&gt;，保证&amp;quot;调用→确认→落库→审计&amp;quot;全链路真机可见可证。&lt;/p&gt;&#xA;&lt;h3 id=&#34;73-覆盖安装不丢配置&#34;&gt;7.3 覆盖安装不丢配置&#xA;&lt;/h3&gt;&lt;p&gt;迭代开发装机用 &lt;code&gt;adb install -r&lt;/code&gt; 覆盖安装 debug 包，装机前备份 shared_prefs，测试后还原，保证用户配置不丢。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;8-与既有工作的对比为什么选api-over-gui&#34;&gt;8 与既有工作的对比：为什么选&amp;quot;API over GUI&amp;quot;&#xA;&lt;/h2&gt;&lt;p&gt;arXiv:2607.13027（PalmClaw）提出 &amp;ldquo;API over GUI&amp;rdquo; 范式——优先通过 API/协议而非 GUI 自动化来完成 Agent 任务。Nyral 的运维路线与之一致，且是在没有阅读该论文的情况下独立得出的工程判断（后查证发现思路撞车）：&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;PalmClaw（API over GUI）&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Nyral 实践&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;API 优先于 GUI 操作&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;标准协议（通知/闹钟/Live Updates）优先于悬浮窗/无障碍模拟&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;GUI 脆弱、慢、不可审计&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;面向通用 Agent&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;面向个人开发者的单机 Agent + 云侧运维通道&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;场景：GUI 自动化上不了系统状态栏胶囊，但 Live Updates 标准通知通道可以——这是&amp;quot;标准协议穿透&amp;quot;优于&amp;quot;GUI 模拟&amp;quot;的直观证据。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;9-结论与展望&#34;&gt;9 结论与展望&#xA;&lt;/h2&gt;&lt;p&gt;本文完整复盘了个人移动智能体 Nyral 在厂商收权时代下的后台生存架构：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;软地基原则&lt;/strong&gt;：能力与通道解耦、通道只做一层适配、不赌未来变，让 Agent 在六类半官方通道上获得可维护的存活底座；&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;定时岗位&lt;/strong&gt;：以 &lt;code&gt;setExactAndAllowWhileIdle&lt;/code&gt; + 续期重排穿透 Doze，以预授权白名单 + 审计日志平衡静默与安全，形成&amp;quot;自我唤醒→执行→落库→通知&amp;quot;的无人值守闭环；&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;灵动岛&lt;/strong&gt;：依赖 Android 16 原生 Live Updates 标准 API 上屏系统状态栏，避开厂商白名单与悬浮窗权限，跨品牌自动适配；&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;验证方法论&lt;/strong&gt;：两套真机自证链路让独立开发者在无厂商测试体系下获得可信的端到端证据。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;展望：随着 Android 17（API 37）成熟，Live Updates 生态会进一步开放；Agent 类应用的后台能力将逐步从&amp;quot;对抗厂商回收&amp;quot;转向&amp;quot;标准 API 表达持续活动&amp;quot;。Nyral 的下一步包括：Live Updates 胶囊交互卡深度化（点击动作回传）、端侧本地 AI 推理（OpenCL 路线）、以及知识库自动沉淀的持续迭代。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;参考文献&#34;&gt;参考文献&#xA;&lt;/h2&gt;&lt;p&gt;[1] PalmClaw: API over GUI for Generalist Agents. arXiv:2607.13027.&#xA;[2] Android 16 Developer Preview: Live Updates (Promoted Notifications) API. Google Developer Documentation.&#xA;[3] OPPO 泛在服务框架（流体云）开发文档. open.oppomobile.com.&#xA;[4] Android 官方文档: AlarmManager / setExactAndAllowWhileIdle.&#xA;[5] Nyral 开源仓库: github.com/aixtin/Nyral（本文全部工程实践的代码载体）&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;附录-a核心验证数据&#34;&gt;附录 A：核心验证数据&#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;2026-09-23&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;SDK 34→36 升级&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;构建通过，edge-to-edge 无遮挡&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;2026-10-11&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;定时岗位 MVP 四模块&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;2026-10-12&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;InvisibleIME 底栏修复&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;2026-10-13&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;真实闹钟链路 + 完成通知&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;21:36 触发→静默执行→续期→通知上屏&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;2026-10-15&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;预授权三阶段&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;id=12 创建删除闭环，id=11 静默执行写文件成功&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;2026-10-11&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;通知组折叠&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;OPPO/红米/一加三真机正常&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;2026-10-31&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;停止机制 P0–P3&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;停止 2s 内进程组清零&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;</description>
        </item><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></channel>
</rss>
