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)
下一步
- ✅ 需求定义 + 架构设计(本文)
- ⏳ Android T1 核心实现(MCP bridge + AccessibilityService)
- ⏳ MCP Server(Node.js/Python mid-tier)
- ⏳ Shizuku T3 集成
- ⏳ Web Dashboard
- ⏳ GitHub 开源
关联
- palmwindow-android-mcp — 掌心窗原始研究
- awesome-ai-companion-ecosystem — 人机恋生态
- memos-local-plugin-deep-dive — MCP 内存架构