Files
Eta_change/README.md
DelLevin-Home f896ab7bbe 111
2026-08-18 21:14:30 +08:00

190 lines
21 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Eta
## 编译
```
$env:JAVA_HOME = "D:/Environment/Java/java25" && .\gradlew.bat assembleDebug
```
**面向 Android 的第三方系统级 AI Agent**
Eta 借助 Root 与 LSPosed 越过 App 沙盒直接进入系统底层Hook 系统组件接管电源键与厂商助手入口读取原厂与第三方应用的私有数据。这些接近原厂、又比原厂更自由的能力全部开放给你自己接入的模型ChatGPT、DeepSeek、Kimi 等,自带 API Key——BYOK
- **系统 API 直达**闹钟、媒体、音量、WiFi 等系统能力,模型可直接调用
- **个人上下文**相册、日历、短信、通知、录音、健康摘要、ColorOS 系统记忆、QQ / 微信聊天图片等本机数据,模型按需读取
- **内置浏览器**:后台加载网页、提取正文、操作页面元素,需要时可由用户直接接管
- **Root / Linux 环境**:完整的 Shell 环境,授权后执行命令、读写文件、跑脚本,给模型无限的想象空间
- **GUI Agent**:第三方 App 直接开放 API / CLI 才是最理想的路径,但移动互联网生态封闭,绝大多数应用没有任何机器接口;界面又是为人设计的,对模型天生不友好。没有接口的长尾场景,只能由 Agent 看屏幕、找控件、执行操作
其他第三方手机 Agent 面向大众用户,大众用户没有 Root 权限,能力只能做在 App 沙盒里,系统入口和数据仍属于厂商;桌面端的 Coding AgentCodex、Claude Code或 OpenClaw 被直接搬进手机时,功能再全,也只是一只困在沙盒里的龙虾,没有完整的系统环境,无法操作真正的 Android 设备;原厂助手则受自家生态约束,不会触碰第三方应用的数据。
Eta 可以看着屏幕、替你点一杯奶茶,但点屏幕不该是终点。能直达系统就不必模拟点击,这台手机在模型手里,就是一台可以使用的计算机。
手机里存放着你大部分的数据。在你的允许下相册、通知、日程、便签、录音、位置、健康摘要与长期记忆一起成为上下文Eta 做的事情会超出命令本身它逐渐知道你在意什么、理解事情的前因后果。没有比手机更懂你的朋友Eta 可以成为这样的朋友。亲近不意味着失去边界:每种能力都有独立开关,你选择模型,也决定它能看见什么、能做什么,以及什么时候停下来。
> [!NOTE]
> 完整能力需要 **Root** 与支持 libxposed API 102 的 **LSPosed**。App 本体不限特定厂商设备ColorOS小布助手只是当前系统助手入口的适配范围。
## 核心能力
Agent 不会问一句答一句就结束模型发指令Eta 执行,结果写回上下文,模型再决定下一步,直到做完。四条执行路径可以组合使用:
| 路径 | 说明 |
| -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **设备直达** | 闹钟、计时器、媒体控制、音量、WiFi / 蓝牙、设备与存储状态等系统能力以及相册、日历、联系人、短信、通知、健康摘要、ColorOS 便签与系统记忆等本机数据检索——全部是有明确 Schema 的结构化工具 |
| **网页浏览** | 内置浏览器在后台加载 JavaScript 网页、提取结构化正文、操作页面元素;遇到验证码等场景可挂载到 App 界面,由用户直接接管 |
| **终端与文件** | 授权后执行`user` / `root` shell 命令、读写文件、运行脚本;可选安装预装 Python、Git、`rg` 等工具的 Alpine Linux 环境 |
| **GUI 操作** | 截图、无障碍节点、点击、滚动与输入;前台操作时显示浮层与手势反馈,可随时停止或接管。没有系统接口的长尾场景由它补齐 |
在此基础上:
- **长期记忆**:跨对话记忆保存在本机单一 `MEMORY.md`,按任务按需注入;设置页可查看用量、编辑、清空或关闭
- **Skills**:可浏览并安装公开 GitHub 仓库的 Skill或导入本地 ZIP模型按需读取安装不会自动执行包内脚本
- **会话与结果**:外部入口触发的运行结果归档到 App 会话,进程被杀也会尝试恢复;长按消息可复制、编辑或从该轮删除,最终回复可重新生成
## 使用场景
- **设备直达操作** — “明早 7 点设个闹钟”“暂停音乐”“把媒体音量调到 30%”,优先走结构化系统接口
- **理解最近的自己** — “我最近在忙什么”“这几天是不是总熬夜”“今天把时间花在哪了”,按需结合日程、通知、应用活动、健康摘要和本机记忆归纳
- **安排接下来的一天** — “结合明天的日程、地点和已有闹钟,告诉我几点出门,再补一个提醒”,先理解上下文,再把计划真正落到手机上
- **追踪正在发生的事** — “我的外卖到哪了”“取餐码是什么”“最近有什么快递”,从系统记忆和授权后积累的通知历史中寻找线索
- **找回散落的信息** — “上周那段录音里提到的书叫什么”“找出和这个地点有关的照片与便签”
- **聊天图片回顾** — “看看我最近的 QQ / 微信聊天图片,猜猜我在忙什么”
- **跨 App 操作与比价** — 处理应用里的待办项目,或截图分析淘宝商品、自动打开京东搜索同款;没有直达接口时才由 Agent 看屏幕、找按钮、执行
- **网页研究** — 在后台阅读 JavaScript 渲染的文档或资讯页面;遇到验证码时由用户直接接管
- **终端任务** — “清一下后台,查 LSPosed 日志看 Hook 有没有异常,再看看 Magisk 模块生效了没”
- **系统助手入口触发** — 从 Eta 系统助手面板或小布发起多步任务,交给同一套 Agent Runtime 执行
## 系统助手入口
### Eta 原生数字助理
Eta 通过 Android 标准 `VoiceInteractionService` 注册为可选数字助理在设置页点击“Eta 系统助手”,再在 Android 的数字助理选择器中选中 Eta 即可。唤起后显示全屏助理面板并自动聚焦键盘输入框,支持流式回答、连续追问、取消与结果归档;可选择把唤起前的当前屏幕作为下一条消息的图片上下文。当前浮窗不提供语音识别或语音播报。
### ColorOS 电源键目标
在设置页的“系统助手接管”中可选择 ColorOS 长按电源键的目标:
| 目标 | 长按后的行为 | 默认助理自动设置 |
| -------- | -------------------------- | ----------------------- |
| 小布助手 | 保留 ColorOS 原始行为 | 不修改系统默认助理 |
| Eta | 打开 Eta 全屏键盘助理浮窗 | 开关开启时切换为 Eta |
新安装默认保持小布;旧版已经开启“长按电源键唤起 Gemini”的用户会归到 Eta。“自动设置默认助理”是独立开关只对 Eta 生效。当前目标无法启动时,本次长按会立即回退到小布。
### 小布
- **小布ColorOS**:接管小布对话入口,继承当前房间的文本上下文并解析图片输入,交给同一套 Agent Runtime 处理;支持 BYOK默认只在 `/agent` 前缀下触发
## 模型与 BYOK
- **模型协议**:支持 OpenAI-compatible Chat Completions、Responses API 与 Anthropic Messages覆盖 SSE 流式传输、工具调用、图片输入和推理内容Responses 可展示推理摘要,并可按 Provider 开启服务端网页搜索
- **内置提供商**OpenAI、Anthropic、阿里百炼、DeepSeek、Kimi、MiMo、MiniMax、StepFun、硅基流动、OpenRouter
- **自定义提供商**:自定义 HTTP/HTTPS Base URL、API Key、请求头与 body JSONHTTP 会明文传输 API Key、提示词与模型内容
- **模型管理**:内置官方目录、远程拉取、自定义模型与模糊搜索;可覆盖上下文长度与思考档位,本地覆盖始终优先于后续远程同步;各提供商分别记忆上次选择的模型
BYOKBring Your Own Key意味着 Agent 能力跟随你选择的模型,而不是被单一内置服务商限制。
## 安装
<details>
<summary><b>展开安装步骤</b></summary>
1. 安装 APK 并打开 Eta配置模型提供商、API Key 和当前模型
2. 按需授予悬浮窗、无障碍、应用列表读取、位置、通知使用权、使用情况访问和后台运行等权限;如需从小布等后台入口执行位置任务,位置应授予“始终允许”
3. 按需开启设备直达、敏感信息读取、敏感设备操作和终端/文件工具;终端身份由用户明确选择为 `user``root`,需要 Python、Git 等通用命令时可另行安装 Linux 工具环境
4. 在系统设置中开启 Eta 无障碍服务
5. 可选系统入口:
- Eta 原生数字助理在设置页点击“Eta 系统助手”,并在 Android 系统选择器中将 Eta 设为默认数字助理
- ColorOS 电源键切换、厂商助手接管、ColorOS 系统记忆:在支持 libxposed API 102 的 LSPosed 环境中启用模块,按需勾选 `system`、小布识屏、小布助手和小布记忆作用域,然后重启手机
</details>
## 权限与安全
- 设备直达、敏感信息读取、敏感设备操作、终端/文件、网页浏览与记忆均为独立开关当前默认开启Runtime 每次执行前重新读取,用户可随时关闭
- 工具参数必须通过 Schema 和执行器校验;核心系统包与安全关键设置始终受保护,不会因为模型坚持要求就被放行
- 短信验证码、WiFi 密码、通知正文、日志和个人数据检索结果只在当前回合提供给模型,不写入持久会话;通知历史仅在用户授予通知使用权后由 Eta 在本机保存最近 7 天,最多 1000 条
- 记忆读写同样只供当前回合使用,持久会话只保留脱敏操作摘要;聊天中引用的文件只把经过 Root 校验的路径写入模型上下文,不上传、不复制原文件
- 前台 GUI 操作显示运行浮层与手势反馈,用户可随时停止或接管
## 边界与限制
- **第三方集成限制**Eta 无法获得原厂系统组件的全部私有权限,交互 UI、动画衔接和系统级一致性会弱于厂商内置助手
- **版本兼容性**:系统入口 Hook 强依赖 ROM、系统组件和目标 App 的具体实现,系统或 App 大版本更新后可能需要重新适配
## 为什么做 Eta我对 AI 手机的判断
### 与豆包手机助手的区别
豆包手机助手证明了手机 AI 的方向:从聊天框走向系统级操作。但它是超级 App有平台资源也有平台约束——跨 App 接管会撞上第三方应用登录异常、人机验证和银行 App 风险提示。厂商要维护商业关系、支付安全和监管合规,天然被生态绑住手脚。
本项目走第三方开发者路线:不代表手机厂商,不需要维护预装合作。用户愿意解锁、`root`、启用 Xposed 和无障碍,就应该能把自己的手机入口接给自己选择的 Agent。风险边界由用户决定工具必须透明可见敏感操作必须能随时停止和接管。
我也不打算让 Agent 为了开个 WiFi、设个闹钟就在设置页面里来回找按钮。Android 已经有稳定接口的能力Eta 就直接做成结构化工具交给模型:少一点截图、猜坐标和祈祷页面没改版,多一点真正可验证的系统执行。能直达系统,就没必要假装自己只会点屏幕。
更重要的是,我把终端执行能力放进了 Agent Runtime。普通手机 AI 只会点屏幕,但 Agent 一旦能在用户授权下执行 shell 命令、读写文件、跑脚本、改配置,它就具备了和主流 Coding Agent 同类的“把意图转化为操作”的能力。GUI 是手机表层,终端才是完整计算环境。
### 对 AI 手机与 Agentic OS 的展望
> [!NOTE]
> 本节描述 Eta 对未来 AI 手机的产品与架构判断,不是当前版本已经完整实现的功能清单。
未来的 AI 手机不应只是预装一个更强的聊天助手,也不应把“替用户点击屏幕”当作终点;把电脑上的 Coding Agent 原样搬进手机,同样不等于理解了 AI 手机。它更可能从以 App 和 GUI 为中心的操作系统,逐步转向以用户意图、上下文和 Agent Runtime 为中心的 **Agentic OS**:用户表达目标,系统在授权边界内理解当前情境并完成规划,再选择合适的应用、服务、设备与硬件能力执行,验证结果后向用户交付。
传统 GUI 通过一层层页面和菜单把人的模糊需求收敛成机器能够处理的具体操作。当模型能够理解自然语言、屏幕、语音、环境和历史状态时这个结构化过程可以更多地由系统承担。App 不会因此消失,而会逐渐从用户完成任务的唯一入口,转变为 Agent 背后的服务、数据和专业界面,并通过 API、CLI、MCP 等机器接口暴露能力GUI 则继续承担信息展示、关键确认和用户接管。
系统还可以成为模型的**上下文提供层**。普通 AI App 主要看到用户本轮主动输入的文字、图片和文件;系统级 Agent 则可以按任务读取当前屏幕与通知以及相册、日程、联系人、通话、短信、便签、录音、订单、健康摘要、设备环境与应用活动等本机数据再结合时间、位置、使用习惯、个人偏好和跨设备任务进度理解用户。Eta 已经实现其中一部分:模型可以调用职责明确的检索工具获得有界结果,并用独立的通用图片工具读取明确路径。它不做无差别全盘扫描,只在正确时机取回完成当前任务所需的上下文,让模型理解用户正在做什么、此前发生了什么以及下一步需要什么。更完整的原厂方案仍应提供敏感度分级、来源说明、使用记录与随时撤回能力。
在执行层Agentic OS 应根据权限、能力可用性、速度、稳定性和风险选择路径:
1. **系统能力与数据直达**:系统 API、Provider、已验证的本机数据源和专用设备工具直接读取状态与任务上下文、控制硬件或完成系统动作不必打开页面模拟点击。
2. **第三方 App 结构化直达**:当应用或服务提供 API、CLI、MCP、AppFunctions 或其他机器接口时,模型可以直接读取业务状态并调用能力,不进入第三方 App 的 GUI。这是速度、稳定性和可验证性更好的理想路径。
3. **GUI Agent 补齐未开放生态**:当第三方 App 没有提供任何可用的 API、CLI、MCP 或开放协议时再通过截图、无障碍节点、视觉模型和坐标操作完成任务。GUI 原本是为人设计的,依赖页面布局和视觉识别,也不天然向模型提供稳定语义、状态与可验证结果,因此对模型并不友好,更适合作为长尾兼容和过渡方案。
4. **Shell/Linux 扩展计算边界**在用户明确授权下Android Shell、文件系统与 Linux 工具可以承载系统诊断、脚本、开发和复杂计算任务,为 Agent 提供完整计算环境。
> [!IMPORTANT]
> API、CLI、MCP 都可以成为 Agent 直接操作第三方 App 或服务的机器接口但前提是对方公开提供或通过生态合作授权。Root 可以让 Eta 读取用户设备上已存在、格式已经验证的 Provider 或文件数据,例如聊天图片缓存,但这不等于获得第三方 App 的业务 API更不能自动理解私有协议。Eta 不开放任意数据库、URI 或 SQL 给模型;面对没有开放接口、也没有专门数据适配的第三方业务,仍需由 GUI Agent 操作。
一套完整的 Agentic OS 可以被理解为以下连续链路:
```mermaid
flowchart LR
perception["感知<br/>语音 · 屏幕 · 通知 · 环境"] --> context["理解与记忆<br/>任务 · 偏好 · 历史 · 跨设备"]
context --> orchestrator["规划与编排<br/>意图 · 风险 · 工具路由"]
orchestrator --> execution["执行<br/>系统工具 · 第三方 API / CLI / MCP<br/>GUI Agent · Shell / Linux"]
execution --> outcome["验证与主动服务<br/>状态校验 · 失败恢复 · 提醒"]
outcome -. "反馈与记忆更新" .-> context
```
| 架构阶段 | 未来 Agentic OS | Eta 当前覆盖 |
| ------------ | ------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 感知与上下文 | 屏幕、语音、通知、日程、时间与位置、使用习惯、长期记忆与跨设备状态 | 图片输入与本机路径读取、屏幕观察、无障碍节点、时间与位置、设备环境、当前与授权后有限期保存的通知、应用活动与使用时长、闹钟与计时器、健康摘要、个人订单、相册、文件、日历、联系人、通话、短信、ColorOS 便签与录音、QQ / 微信聊天图片缓存、会话历史与按需长期记忆 |
| 规划与编排 | 意图识别、任务规划、风险判断与模型调度 | Agent Loop、工具 Schema、系统约束、补充指令与取消 |
| 能力路由 | 系统能力直接调用;第三方 App 通过 API、CLI、MCP 等接口直达GUI 覆盖未开放生态 | Android 系统工具、系统与厂商 Provider、已验证的本机文件数据、GUI Agent、浏览器、Skills 与终端工具;不包含第三方 App 私有业务接口 |
| 执行环境 | App、系统服务、文件、传感器、算力单元与多设备 | Android user/root Shell、文件工具与 Alpine Linux |
| 结果闭环 | 状态验证、失败恢复、按风险确认与主动服务 | 结构化工具结果、重新观察、状态等待、事件流、结果归档与用户接管 |
对原厂 Agentic OS 而言,相比普通 AI App 的独特价值在于:在用户授权和数据治理边界内获得连续的系统上下文,维护可控的长期记忆,调度跨应用与跨设备能力,并把回答转化为经过验证的实际结果。主动服务也必须保持克制:上下文应按任务最小化注入,数据来源与用途应透明,持续感知应按需且可见,敏感能力应显式授权,高风险操作应结合用户指令和风险等级确认,执行过程应可停止、可接管,结果应能够校验和追溯。
Eta 作为第三方项目,正在验证这条路线中可以在现有 Android、Root、无障碍和用户授权边界内实现的部分以同一套 Agent Runtime 编排系统与个人数据工具、通用图片视觉、GUI、浏览器、Shell、Linux、Skills 与按需长期记忆,让 Android 能力直达、本机上下文读取和第三方 App 的通用界面操作互为补充。更完整的 Agentic OS 仍需要跨设备记忆与状态同步、端侧模型、硬件资源调度、数据治理和第三方生态共同演进。
## 深入了解
- [技术实现](docs/TECHNICAL.md)Hook 链路、个人数据直达、文件视觉、浏览器、终端、长期记忆与无障碍保护细节
- [Agent Runtime](docs/AGENT_RUNTIME.md)Agent Loop、工具批次、steering 与 transcript 语义
## 许可证
Eta 的源代码公开,欢迎用于个人学习、研究、修改和非商业用途。完整条款请参阅 [PolyForm Noncommercial License 1.0.0](LICENSE)。
未经作者书面授权不得销售本项目、其源码、APK 或修改版本,也不得基于本项目提供付费分发、收费代装或其他商业服务。如需商业授权,请通过 GitHub 联系 [蛮吉Mangi-11](https://github.com/Mangi-11)。
第三方依赖、图标和品牌素材适用各自的许可证,不由 Eta 的许可证重新授权,详情见[第三方声明](docs/THIRD_PARTY_NOTICES.md)。
为确保项目能够统一授予商业许可外部代码贡献需要在贡献者许可协议CLA流程建立后才能合并在此之前欢迎通过 Issue 提交建议和问题。