Codex 校核(2026-10-09) 本页明确为 draft,表中勾选与“下一步”是设计目标,未证明产品已经实现。T1 不能统称“零额外授权”:使用统计需 PACKAGE_USAGE_STATS 并由用户在设置中授权,通知监听也需用户授予通知访问权限。Android 10+ 普通后台应用不能持续读取剪贴板,除非为默认输入法或当前获得焦点的应用(官方限制)。MediaProjection必须先取得用户同意;面向 Android 14+ 的应用还需对应前台服务声明,并且每个捕获会话重新取得同意,不能把一次 T2 开关视为永久录屏授权。部署到 Render/Railway 等第三方云主机仍会涉及其基础设施,“可自部署”不自动意味着数据不上第三方;需根据实际部署位置表述。

「全视窗」FullView — 下一代 Android MCP 手机监控方案

基于「掌心窗」PalmWindow + RikkaHub + Screenpipe + 人机恋生态调研的升级设计 定位:给 AI 开一扇全屏全景的窗,而不是掌心大的小窗

设计原则

原则说明
权限递增不要求 All-or-Nothing。T1→T2→T3 梯度授权,用户可视可控
隐私透明每次数据请求都有 audit log,用户可以随时回溯”AI 看了我什么”
MCP 原生全部通过 MCP tool call 暴露,兼容一切支持 MCP 的 AI 助手
自托管Server 端可自部署(Render/Railway/VPS),数据不上第三方

权限层级设计

T1 · 基础层(同掌心窗,零额外授权)

📱 手机状态:电量、充电、WiFi/蜂窝、存储、运行内存
📊 使用统计:屏幕时间、解锁次数、Top App(UsageStatsManager)
🔔 通知接收:NotificationListenerService(读取所有 App 通知)
📋 剪贴板:ClipboardManager 监听

T2 · 深度层(需用户开启无障碍 + MediaProjection)

👁️ UI 快照:AccessibilityService 获取完整 UI 树(含文本、按钮、滚动位置)
🎬 屏幕录制:MediaProjection 持续缓冲,AI 请求时截取片段
🔍 App 内状态:当前前台 Activity + Fragment + WebView URL
📝 输入监控:EditText 内容读取(不记录密码字段)
🗂️ 文件浏览:MediaStore + SAF 框架读取文档/图片
📍 位置概览:粗粒度位置(城市级,非 GPS 连续追踪)

T3 · 管理级(需 Shizuku API / ADB WiFi)

⚡ Shizuku/ADB Shell:无 root 执行 adb 级命令(input tap/swipe, am start, pm list)
🗄️ App 数据:通过 ContentProvider 读 SMS/通话记录/联系人
📶 网络监控:VPNService 统计各 App 流量消耗、DNS 查询
📂 文件系统:扩大文件访问范围(需用户点选目录)
🔄 自动化:Tasker/Locale 插件桥接

T4 · 根级(需 Root / Magisk,可选)

🔓 全系统访问:超级用户权限
📡 深度网络:tcpdump 抓包
📦 App 解包:apk 分析 / data 目录读取
🛡️ Xposed/LSPosed:Hook 任意 App 内部行为

MCP 接口设计

工具清单(共 18+ 个 tool)

╔══════════════════════╤═══════╤══════════════════════════════╗
║ Tool                 │ Tier  │ 功能                        ║
╠══════════════════════╪═══════╪══════════════════════════════╣
║ phone_status         │ T1    │ 电量/充电/网络/存储/内存    ║
║ usage_stats          │ T1    │ 屏幕时间/解锁/ Top App      ║
║ notifications        │ T1    │ 读取/搜索/清理通知          ║
║ clipboard            │ T1    │ 读取/写入剪贴板             ║
╠══════════════════════╪═══════╪══════════════════════════════╣
║ ui_snapshot          │ T2    │ 完整 UI 树(Accessibility) ║
║ screen_record        │ T2    │ 请求屏幕录制定格             ║
║ app_detail           │ T2    │ 前台 App 详细状态+Activity  ║
║ input_text           │ T2    │ 读取输入框内容               ║
║ browse_files         │ T2    │ SAF 目录浏览                 ║
║ location_summary     │ T2    │ 城市级位置                   ║
╠══════════════════════╪═══════╪══════════════════════════════╣
║ shell_exec           │ T3    │ ADB 级 shell 命令            ║
║ sms_list             │ T3    │ 短信/通话记录                 ║
║ contacts             │ T3    │ 联系人列表                   ║
║ network_traffic      │ T3    │ 各 App 流量统计              ║
║ app_control          │ T3    │ 启动/停止/卸载 App           ║
║ deep_file_access     │ T3    │ 指定目录文件操作              ║
╠══════════════════════╪═══════╪══════════════════════════════╣
║ root_shell           │ T4    │ Root shell(仅 Root 设备)   ║
║ packet_capture       │ T4    │ 抓包启动/停止                ║
║ app_inspect          │ T4    │ App 内部数据读取              ║
╚══════════════════════╧═══════╧══════════════════════════════╝

主动推送 (Server-Sent Events)

通知到达 → AI 收到 "新通知: [App] [标题]"
电量变化 → AI 收到 "电量 15%"(低于阈值触发)
截图请求 → AI 收到 "用户已授权截图" + base64

架构

┌────────────────────────────────────────────────────────────┐
│                    AI Assistant                              │
│        (Claude / ChatGPT / Gemini / Hermes ...)             │
└────────────────────────┬───────────────────────────────────┘
                         │ MCP (stdio / HTTP)
┌────────────────────────▼───────────────────────────────────┐
│                 MCP Server (Mid-Tier)                        │
│  Node.js / Python                                          │
│  - 鉴权管理、Session 持久化                                 │
│  - 推送路由(SSE → AI)                                     │
│  - T1/T2/T3/T4 开关过滤                                     │
│  - 隐私审计日志                                              │
└────────────────────────┬───────────────────────────────────┘
                         │ WebSocket / HTTP (加密)
┌────────────────────────▼───────────────────────────────────┐
│                 Android App (SystemService)                  │
│  ┌──────────────────────────────────────────────────────┐   │
│  │ Core Service (前台 Service + 常驻通知)                │   │
│  │  ├── MCP Client Bridge → 与 Server 通信               │   │
│  │  ├── AccessibilityService → UI 树 + 控制              │   │
│  │  ├── NotificationListenerService → 通知流             │   │
│  │  ├── MediaProjection → 录屏/截图                      │   │
│  │  ├── UsageStatsManager → 使用统计                     │   │
│  │  ├── Shizuku API 桥 → T3 功能                        │   │
│  │  ├── VPNService → 流量监控 (T3)                      │   │
│  │  └── WorkManager → 定时心跳 + 规则引擎                │   │
│  └──────────────────────────────────────────────────────┘   │
│                                                             │
│  Web Dashboard (WebView / 本地 HTTP)                        │
│  - 各 Tier 权限开关 + 灰度                                   │
│  - 实时日志查看                                              │
│  - 规则配置(提醒阈值/自动回复白名单等)                       │
│  - 隐私审计时间线                                            │
└─────────────────────────────────────────────────────────────┘

超越掌心窗的关键差异

维度掌心窗 (PalmWindow)全视窗 (FullView)
监控深度表面级(当前 App 名)⭐ UI 树 + 通知流 + App 内状态
通知❌ 只发送✅ 双向——读取所有 App 通知 + AI 发送
截图单张截图(需确认)⭐ 屏幕录制缓冲 + 关键帧提取
权限模型All-or-Nothing✅ T1→T2→T3→T4 梯度授权
背景存活依赖系统✅ 前台 Service + 常驻通知 + WorkManager
ADB/Shizuku❌✅ T3 解锁 ADB 级能力
剪贴板❌✅ 双向读写
文件系统❌✅ SAF + T3 深度访问
网络监控❌✅ 流量统计 + DNS (T3)
审计❌✅ 完整 audit log
Dashboard❌✅ Web UI 配置
规则引擎静态阈值✅ 可编程规则(IFTTT-like)
数据沉淀❌✅ SQLite 本地 + 可导出

隐私安全模型

所有数据 → 本地 SQLite 加密
    ├→ AI 仅能通过 MCP tool call 按需获取
    ├→ 用户可在 Dashboard 实时查看 AI 调用了什么
    ├→ 每次截图/录屏前 AI 必须 request → 用户 approve
    └→ T3/T4 功能可设置"需当面确认"模式(屏幕亮+解锁才响应)

与现有生态的关系

  • 替代:掌心窗、RikkaHub 内置 MCP 的监控侧
  • 互补:与 Hermes agent-bus 集成,AI 可以远程了解手机状态
  • 跨平台:MCP Server 可同时对接多个 AI(Claude/ChatGPT/Gemini)

下一步

  1. ✅ 需求定义 + 架构设计(本文)
  2. ⏳ Android T1 核心实现(MCP bridge + AccessibilityService)
  3. ⏳ MCP Server(Node.js/Python mid-tier)
  4. ⏳ Shizuku T3 集成
  5. ⏳ Web Dashboard
  6. ⏳ GitHub 开源

关联