研发部›EVA AI›手机版

MOBILE

手机版

手机与电脑连同一个 Wi-Fi,在手机上打开一个地址、输入一次配对码,就能用手机遥控这台电脑。不需要安装应用,不需要注册账号,数据不经过任何第三方服务器。

手机版由桌面端的内核直接提供,手机上不需要安装任何东西。尚未安装桌面端?请前往 下载页(当前 v1.2.0)。

TWO MODES

两种用法,随时切换

两种模式共用同一套界面,在手机端的「设置 → 运行模式」里切换。Android 原生应用已经开放下载;不想装东西的话,下面这些能力网页版现在就能用。

远端模式(默认)

手机是遥控器,推理与动手都在电脑上。手机只负责显示和确认,因此对手机性能没有要求,也不会因为手机锁屏或切到后台而中断任务。

这条路径上的 EVA 拥有电脑上的全部能力:读写文件、执行命令、查看系统状态、截图、控制应用、访问网络。每一次动手之前,仍会先在手机上弹出确认卡片,并把将要执行的原始命令展示出来。

会话与桌面端共用,手机上能接着桌面端开过的对话继续。

手机独立模式

不连电脑。手机直接调用你自己填写的模型接口(任何兼容 OpenAI 的接口),并使用手机自带的能力工作:通知、剪贴板、系统分享、定位、震动、语音朗读、文件读写、长期记忆。

这些能力由手机系统与浏览器提供,不需要下载任何模型,因此既不占用存储也不消耗额外算力。这是「阉割算力」的具体做法:把需要重型本地模型的部分留在电脑上,手机侧只保留轻量、原生、即开即用的能力。

语音输入与朗读同样使用手机系统自带的听写与语音合成。

对话会留在手机上,关掉应用再打开能接着聊,不用每次从头交代背景。

手机独立模式 + Shizuku

装上 Android 原生应用并在里面接入 Shizuku(免费开源,不需要 root、不需要解锁),EVA 就能借到系统身份,做出网页版做不到的事:查系统状态、启停应用、改系统设置、读写文件、执行系统命令。

Shizuku 不常驻 —— 每次手机开机后要重新启动一次它,这是 Android 的限制。EVA 里的「手机体检」会直接告诉你是哪一环断了,并给出一键修复。

SEE THE SCREEN

先看懂屏幕,再动手

让 AI 操作手机,难点从来不是「点一下」,而是知道该点哪儿。EVA 的做法是读界面结构,而不是盯着截图猜坐标。

读界面结构,不比像素

EVA 先读取当前的界面结构(无障碍树)—— 屏幕上有什么按钮、输入框、文字,各自在哪儿,返回一份带编号的清单。然后按编号点,不自己算坐标:元素会随滚动和分辨率移动,编号不会。

同一次「看屏幕」,界面结构通常只有几十 KB,而截图接近 700 KB,而且结构是确定性的,不会把按钮看错。

结构读不到时才退回截图:视频通话、游戏、canvas 自绘界面这三类不向无障碍层暴露任何内容,读出来必然是空的。两条路互补,不是替代。

动手前先做体检

任何工具报错、或者准备开始操作手机之前,EVA 会先跑一次手机体检:Shizuku 在不在跑、有没有授权、界面结构能不能读、通知权限给没给、存储还剩多少。

每条问题都带一个可以直接执行的修复动作 —— 启动 Shizuku、重新申请授权、跳到通知设置页,而不是丢一句「操作失败」让用户自己猜。

日志与边界

借到的是 shell 身份(uid 2000),不是 root。所以能做到系统级操作,但读不到其它应用的私有数据(/data/user/0/<包名>),也绕不过系统本身的安全模型。这是设计边界,不是缺陷。

ANDROID APP

Android 原生应用

网页版够用,但它有一道绕不过去的墙:明文 http 不是浏览器的「安全上下文」,通知、剪贴板、定位这些接口会被直接收走。原生应用没有这道墙,而且能真正做到网页版做不到的事。

它比网页版多什么

原生应用通过 Shizuku 借用 ADB shell 身份(uid 2000)—— 不需要 root、不需要解锁、不需要刷机。有了这层身份,EVA 才能执行系统命令、装卸应用、改系统设置、截屏、模拟点击与滑动、读写文件。

没有它,「手机独立模式」几乎没有意义:只能弹弹通知、读写剪贴板 —— 那些事情用系统自带的功能就够了。

通知、系统分享、剪贴板、定位、语音输入在原生应用里全部走系统实现,不再受「安全上下文」限制;语音输入直接用手机自带听写,不需要下载任何模型。

现在可以下载了。约 1 MB,不含任何第三方框架,装上就能用。第一次打开会带你认一遍界面。

下载 Android 版 v1.2.0

下载慢?用国内加速: gh-proxy · ghfast

SHA-256 20e2439c956acc45bdb251a37a46403265f453757745decc2712b76aa0bd954c · 未做代码签名,安装时系统会提示「未知来源」,允许即可。

三步接入系统能力:① 装上 EVA 并打开;② 还没装 Shizuku 的话先装一个(免费开源,不需要 root);③ 打开 Shizuku 照它首页的指引启动服务,回到 EVA 点「申请授权」。

内测版,遇到问题把「设置 → 运行状态」里的信息截图发我。

现在就能用的是网页版:手机浏览器打开电脑地址、输一次配对码即可,不需要安装任何东西。

边界(说清楚,免得期待错位)

拿到的是 ADB shell 身份,不是 root。它能装应用、改设置、截屏、模拟操作,但读不到其它应用的私有数据(/data/user/0/<包名>)—— 那是 Android 沙箱本身,Shizuku 也不绕过。

每一次改动手机的动作默认都会先弹确认,并把将要执行的原始命令展示出来。不想被逐条询问,可以在设置里打开「手机操作免确认」。

Shizuku 要自己启动

Shizuku 服务每次手机开机后都要重新启动一次,它自己不会常驻 —— 这是 Android 的限制,不是 EVA 的。Android 11 及以上可以用系统设置里的「无线调试」在手机上直接启动,不需要电脑。

另外:卸载再装应用会换掉应用 UID,Shizuku 的授权会随之失效,重新点一次「接入 Shizuku」即可;用覆盖安装(pm install -r)则不受影响。

SETUP

三步连上

首次连接需要三步;此后手机每次打开即可直接进入,无需重复配对。

一 · 在电脑上打开「允许手机连接」

在电脑端打开设置 → 手机连接,打开「允许手机连接」。这一步是在授权内核监听局域网地址。

该开关默认关闭。关闭状态下内核只监听本机,局域网里的任何设备都够不到它,这是最安全的状态,也是我们选择的默认值。

二 · 点「重启内核」

监听地址在启动时就已确定,改变它必须重启内核。点击设置里的「重启内核」,约三秒后自动恢复,界面上的状态会从「待重启」变为「正在监听」。

此时设置页会显示两样东西:手机该打开的局域网地址,以及当前的六位配对码。

三 · 在手机上打开地址并配对

让手机连上与电脑相同的 Wi-Fi,用浏览器打开设置页上显示的那个地址(形如 http://192.168.1.5:8787/m/)。

手机会先看到配对页。把电脑上显示的六位数字填进去,即可进入。在 iOS Safari 或 Android Chrome 中选择「添加到主屏幕」,可以获得接近原生应用的启动体验。

SECURITY

打开局域网之后的门禁

把内核暴露到局域网上是一个真实的攻击面 —— 同一个 Wi-Fi 下的任何设备都够得到这个端口。因此这一步不是简单地「换个监听地址」,而是同时加了一道完整的门。

默认关闭
内核默认只监听 127.0.0.1。在这个状态下,即使有人知道端口号,局域网里的设备也无法建立连接。开启需要用户在设置里明确同意。
回环豁免
来自本机(127.0.0.1 / ::1)的请求免鉴权,桌面应用与本机脚本走这条路。其余来源一律要求令牌。
配对码
六位数字,五分钟有效,且用过一次即作废并立刻轮换,避免被旁路捡走。配对码只在本机界面显示,接口不会向局域网返回它。
令牌
配对成功后发放 32 字节随机令牌,只以 sha256 摘要落盘,磁盘上没有明文;文件权限 600。令牌不随会话结束失效,直到你主动断开。
防爆破
六位数字只有一百万种组合,不限速是可以硬试的。因此配对失败按来源地址计数,连续失败达到阈值后进入十分钟冷却,冷却期间正确的配对码也会被拒绝。
设备管理
设置页列出所有已配对的设备及其来源地址,可逐台「断开」,也可一键全部断开。断开后该设备上的令牌立即失效。
触发面收敛
手机端不提供直接输入命令的终端。手机上的「命令输出」是只读视图,用来查看电脑上正在执行什么。要执行什么,在对话里说,由审批闸门决定是否放行 —— 不额外开一条绕开闸门的执行通道。

CAPABILITIES

手机独立模式可调用的能力

这些能力由手机系统与浏览器直接提供,全部在本机完成,不经过第三方服务器,也不需要下载模型。

系统通知
在状态栏弹出通知,用于提醒与到点提示。
剪贴板
写入或读取剪贴板内容,方便在应用之间搬运文字。
系统分享
调起系统分享面板,把内容发往其它应用。
定位
在授权后读取当前位置的经纬度。
震动
用于提醒与操作确认。
语音朗读
调用系统语音合成朗读文本,不依赖任何本地语音模型。
文件读写
由你从手机中挑选文本文件读取,或将内容保存为文件。
设备信息与时区
型号、系统、屏幕、电量、网络状态、当前时间。
长期记忆
把值得记住的信息存在手机本机,之后的每次对话都会带上。

涉及隐私或会改动数据的操作(读取剪贴板、读取文件、调起分享、打开链接、获取定位)在执行前都会单独弹窗确认,且这些确认不能用手势划过 —— 必须明确选择允许或拒绝。

LIMITATION

一个绕不开的限制:明文 http

局域网地址是明文 http,在浏览器看来不属于「安全上下文」,于是一部分接口会被直接收走。

哪些会受影响

受影响的:语音输入、系统通知、系统分享、定位、剪贴板读取接口。浏览器会拒绝调用,界面不会假装可用 —— 手机端的「运行状态」页里逐条列出了本机各项能力的实际可用情况。

不受影响的:对话、流式输出、工具调用与审批、命令输出、震动、语音朗读、以及所有发生在电脑上的能力。也就是说,远端模式的完整功能不受此限制,因为活儿都在电脑上干。

如果需要全部能力

在 Android Chrome 中打开 chrome://flags/#unsafely-treat-insecure-origin-as-secure,把你手机版的地址(形如 http://192.168.1.5:8787)填进去,重启浏览器即可。

更彻底的做法是给这个地址配上 HTTPS。我们会根据反馈决定是否提供内置的自签证书方案。

INTERFACE

界面按手指设计

手机版不是把桌面版压窄,而是重新排的一套界面;两者共用同一组设计令牌,切换主题时外观保持一致。

单列布局
只有一条消息流与一个贴底的输入区,没有三栏、没有悬浮面板。滚动的只有消息区,整页不会跟着动。
底部抽屉
所有弹层都从底部升起(设置、状态、审批、工具明细),落在拇指够得着的位置,而不是屏幕中央。向下拖动即可关闭。
触控目标
所有可点区域不小于 44 像素。输入框字号不小于 16 像素,iOS 上不会因为聚焦而强制放大整个页面。
安全区适配
顶栏与输入区分别避开刘海与底部横条(safe-area-inset);键盘弹出时输入区跟着上推,不会把内容遮住。
工具调用收纳
一轮里的多次工具调用收成一条摘要(「命令执行 · 3 成功」),点开才展开明细,点单个工具还能看完整输出并一键复制。
按需裁剪
桌面端的背景代码雨、情绪球实时重绘、开屏动画在手机上一律不加载 —— 这些只费电。手机取景是省电和流畅优先。
正文字号
设置里提供三档正文字号,只放大要读的内容,不缩放整个界面,避免把触控目标一起搞乱。

FAQ

常见问题

桌面端的安装、权限与语音问题见 安装与上手。

手机上打开地址,一直停在配对页,说连不上这台电脑。+
确认三件事:电脑上的 EVA 正在运行;手机与电脑连的是同一个 Wi-Fi(手机用蜂窝数据、或连的是访客网络时不通);地址里的 IP 与设置页显示的一致。若电脑接了 VPN 或装了虚拟机软件,局域网地址可能不止一个,请在设置页点「复制地址」取用,不要手输。
配对码填对了,还是说不对。+
配对码五分钟有效,且用过一次就作废。如果超时或已被用过,回到电脑的「设置 → 手机连接」看当前的一串六位数字。连续输错会有十分钟的冷却,冷却期间正确的码也会被拒绝。
手机上语音输入、系统分享、定位都用不了。+
这些能力由浏览器提供,而浏览器只在安全上下文下才放行 —— 局域网地址是明文 http,不属于安全上下文。这不是 EVA 的限制。解决办法见上面的「明文 http 的限制」一节。
换了 Wi-Fi 或者路由器重启之后就连不上了。+
电脑的局域网地址变了。在手机上重新打开新的地址并重新配对一次即可;手机版的偏好设置保存在本机,不受影响。
EVA 说「读不到界面结构」,是不是坏了?+
多半没坏。视频通话、游戏、以及用 canvas 自绘界面的应用,不向安卓的无障碍层暴露任何内容,读出来必然是空的 —— 实测微信视频通话界面就是这样。这时候 EVA 会改用截图看画面,功能不受影响。如果连截图也拿不到,才需要查 Shizuku。
Shizuku 每次开机都要重新弄一遍,很烦。+
这是 Android 的限制,不是 EVA 的:Shizuku 借的是 ADB 的身份,而 ADB 授权在重启后必然失效,任何用 Shizuku 的应用都一样。Android 11 及以上可以直接在手机上用「无线调试」启动,不需要电脑。EVA 的「手机体检」会把这一步明确告诉你,不用自己去记。
怎么彻底断掉某台手机?+
电脑的「设置 → 手机连接」里列出了所有已配对的设备,逐台「断开」即可。也可以一键「断开全部手机」。断开后该设备上的令牌立即失效,重新使用需要再配一次对。
手机上的对话记录存在哪?+
远端模式下,对话存在电脑的 ~/.eva/sessions/,与桌面端共用同一批会话,手机上能继续桌面端开过的对话。独立模式下不存在电脑上,而是留在手机本机:关掉应用再打开能接着聊。它是滚动保留的(最近几十条),要彻底清掉就在手机端点「新对话」。