手机是普通人用 AI 用得最勤的设备,任务完成度却低得离谱。你要是在电脑前面安排一个写代码的 Agent,它能自己吭哧吭哧干上二十分钟。这二十分钟里,它会翻遍十几个文件,顺手把一个复杂的工程项目重构一遍。换到手机屏幕前,日常交互大多还停留在来回对话。同样的底层大模型,隔着电脑和手机两种不同形态的屏幕,最后交出来的答卷差了一整个数量级。说白了,手机上的 AI 还是个只会聊天的陪聊。
这两者的巨大落差,其实藏在模型之外的地方。咱们要明白,一个能自己干活的 Agent 包含两个核心部分。一个是出主意的大脑,也就是大模型本身。另一个是实际运行工具的执行环境,也就是替大脑干活的手脚。桌面上这个执行环境天然存在一个默认答案,也就是系统自带的命令行控制台。大脑决定下发什么指令,程序直接运行,遇到报错直接回退重试。手机操作系统在设计之初,为了安全考虑,直接把这条路堵死了。苹果系统拦住应用唤起子进程的行为,应用各自隔离在专属的沙箱区域里。两家应用商店针对下载和执行代码都制定了明文限制条款。这就好比给 AI 套上了层层枷锁,缺少可靠的执行手脚,大脑再聪明也难以推进具体工作。你让一个手脚全捆住的天才去干活,结果自然好不到哪里去。
不过呢,事情有了转机。8 月 18 日,一家叫 APUS 的中国公司在 GitHub 上开源了一个项目,叫 PhoneBuddySDK。它是一个给 App 开发者用的库:你把它塞进你的 iOS 或 Android App 里,你的 App 里就多了一个 AI Agent,给移动端系统约束提供了一种新解法。看这个开源代码之前,咱们先一起梳理一下当前手机 Agent 的几条现有路线。摸清了这几条老路,更能看清这个新方案所处的位置,以及它真正应对的工程卡点究竟在哪里。了解背景,才能看出门道。
咱们先挨个看看手机上现有的 Agent 形态,你仔细盘点就会发现,每种路径都缺失关键拼图。日常生活中最常见的莫过于聊天应用。像 ChatGPT 和豆包这类产品将大脑挂载在云端服务器上。模型通过厂商提供的接口,可以在网上搜索各种资料,也能顺手生成几张图片。它就是碰不到设备里的本地文件、相册或者其他第三方应用。这套工具集由开发商在云端统一定义,某款独立应用想接入类似的深层能力,完全找不到入口通道。它们就像是住在云端城堡里的神仙,看得远,却管不到你手机里的柴米油盐。
顺着系统的口子往下找,接着咱们聊聊入口最深的系统级语音助手。Siri 占据着最深层的系统入口,长按按键或者一句话即可唤起。可惜的是,它能干多深全靠硬件厂商单方面包办。第三方应用只能通过系统预留的一点点接口,暴露少量的动作指令给它。编排逻辑对开发者保持封闭。助手本身长期停留在设闹钟和查天气这类表面交互。你让它干点复杂的活,它就只会傻笑或者说听不懂。它离系统最近,却也是最刻板的一个。
再看第三类,直接把手机当成遥控器,把活儿甩给远端的服务器或电脑去跑。这套玩法在桌面侧早就不新鲜了,Claude Code、Codex、Cursor 都把长任务放进自家管理的云端沙箱里执行,我在之前的文章里梳理过这批产品的来龙去脉。移动端的版本算是它的自然延伸。Tencent 的 WorkBuddy 支持用户在手机上发消息,将任务调度给云端服务器或个人电脑去跑(Tencent Cloud 文档)。豆包也在 8 月 17 日上线了手机远控已授权电脑的新功能(报道)。这条路线能把能力拔到最高,你想想,背后是一整台电脑在供它驱使。代价同样清晰,执行环境完全留在远端。屏幕上的内容、文件交互和操作轨迹全部落在云端或者另一台机器上。手机断网后,你发不出新指令,也收不到进度,不过云端任务本身多半还在跑,重连之后回来看结果就行。权限边界也完全画在远端。手机在这个过程里充当发起器和回收器,本身不承担具体的执行动作。这就好比你在用手机玩云游戏,画面在手机上,运算全在远方的机房里。
这三种形态表面上看着五花八门,其实存在一个共同点。执行环境全都不在手机应用自身的进程之内。它们要么待在厂商云端,要么在系统层,要么交给另一台远端的设备。产生这个巨大缺口的原因在于严苛的平台约束。苹果手机系统屏蔽了 fork 调用,工程层面毫无商量余地。应用只能乖乖待在各自隔离的专属沙箱内部。商店审核对代码执行卡得十分严格。Apple 的审核条款明文要求应用自包含,禁止执行任何会改变功能的下载代码(2.5.2 条款)。Google Play 的规矩同样严厉,禁止从商店外下载原生可执行代码,只给解释器内的脚本留了例外(政策原文)。
综合这些限制条件,移动端 Agent 的首要问题可以摆成一条光谱。光谱的一端是大脑最强,却离手机 context 最远的云端。光谱的另一端 context 最贴身,平台却把执行基础设施没收得干干净净。两端天然打架,毕竟搬运 context 有成本。大家要么把 context 搬向算力,要么把算力请求搬向 context。桌面 Agent 依靠一个默认存在的控制台绕开了这个卡点。手机上缺乏默认答案,逼着各家路线在这条光谱上寻找自己的落点。大家都在八仙过海,各显神通。
咱们先看光谱的一端,有些方案选择把执行动作放得最远,依托云端或远端宿主。这代表了大脑最强的极端。任务舒舒服服地在云上的虚拟机或用户的个人电脑里运行。云端机器配置了完整的开发环境,要什么有什么,长任务执行也不受手机电量限制。这边的代价同样极端,它的眼睛和手脚严重受限,读不到手机里的文件,也调不动别的 App。手机只负责下发指令和接收最终结果,context 只能整体搬运到云端。数据一旦离开本地设备,手机断网后只剩等待,控制通道暂时断掉,权限设定也都画在远端。
再来看看操作系统层面的动作,有些大厂选择系统当代理的中间组装策略,按函数粒度最小化 context 搬运。Apple 提供 App Intents 让应用向 Siri 和系统暴露具体能力。Foundation Models framework 从 iOS 26 版本起,向第三方开放约 3B 参数的端侧模型和工具调用机制(文档)。今年 WWDC 会议有专门场次指导开发者,教大家怎么给智能化功能添加安全检查点(session 视频)。Google 在 Android 16 引入 AppFunctions 功能。核心思路是让每个应用成为一台手机内的 MCP 服务端。应用通过注解声明自身能够执行哪些函数。系统居中维护全局注册表,调用方调用前需要申请 EXECUTE_APP_FUNCTIONS 权限(官方文档)。这套权限模型类似于数据库的授权表设计,能力逐条声明并逐条授予。目前的现状依然处于早期探索阶段。AppFunctions 的 Jetpack 库在 2026 年 7 月仍在 alpha 阶段,Gemini 深度集成处于 private preview 状态。
这一类方案中存在一个权限更高的变体,也就是 OEM 级别的图形界面 Agent。豆包手机助手与 nubia 合作机型,选择直接读取屏幕内容并模拟点击,跨越所有应用边界进行操作(nubia 发布)。它表面看起来最强大,占据了最宽泛的权限。由于每个动作的具体语义全部隐藏在复杂的界面交互细节里,安全审计难度远高于声明式接口。你很难搞清楚它究竟点开了什么,这种黑盒操作的安全成本不低。
要是嫌操作系统走得太慢,开发者还能选择将执行留在应用进程内部。这套组装策略把光谱两端拆开重组,大脑留在云端 API,手脚眼睛搬进 App,在 App 范围内实现 context 零搬运。开发者直接把一个 Agent 引擎嵌进自己的应用代码里。能力深浅由开发者自行定义,所有数据老老实实保留在应用沙箱内。同一套引擎可以跨 iOS 和 Android 双端复用。它能触达的上限受限于宿主应用本身的权限,一个相册应用里的 Agent 碰不到系统通讯录。这是进程内落地的代价,也是系统边界清晰的直接来源。想要多大权力,就看应用本身有多大权力。
这三条路线其实是光谱上的三种组装策略。操作系统接口吃下跨 App 编排,系统手里握着完整的注册表和权限体系,名正言顺。进程内运行环境提供开发者在自家 App 里的选点自由。PhoneBuddySDK 的意义在于它把这个 trade-off 参数化了,能力集开发者自选,边界画死。它未必是最完美的点,却让开发者在光谱上有了自己的选点工具。这也构成目前公开样本里,把进程内这条路走得最深入的一家。别人还在门外打转,它已经进屋开始装修了。
PhoneBuddySDK 这个引擎底层完全由 Rust 编写。它通过 C 接口配合 Swift 和 Kotlin 绑定嵌入应用进程,采用 Apache 2.0 协议开源。其 v0.1.1 版本的发布说明自述代码移植自 xAI 开源的 grok-build 项目。它将桌面端 Agent 的执行机器,硬生生整个压缩进一个应用进程里。工具调用循环、流式内容输出、会话状态管理以及子任务编排,全部在进程内跑完,没有任何子进程。这就是它的厉害之处,螺蛳壳里做道场。
这个项目最具参考价值的部分,在于它没有制造一个假命令行终端来糊弄底层模型。它将 Agent 需要的每种能力在代码里重新实现了一遍,给每一种操作加上受控的执行栅栏。我去了源码里数了数,这些笼子确实写了,不是吹的。
最外层的一道限制落在文件访问上。所有文件工具接收到的路径字符串,必须经过 resolve 函数处理。程序先执行词法归一化,检查目标路径确实落在指定的 root 目录之内。路径在文件系统中已经存在的情况下,程序会再次解析真实路径,防范软链接逃逸风险(fs.rs)。哪怕模型产生幻觉,给出一个应用目录之外的绝对路径,系统也会在这一步将其拦下。
往里走,另一道限制卡在网络请求。核心的 web_fetch 工具默认拒绝任何内网地址访问。黑名单规则覆盖回环地址、RFC 1918 私网网段、CGNAT 网段以及基准测试保留段等一批地址范围。开发者即便显式打开本地访问开关,系统也只放行明确声明过的回环主机名(ssrf.rs)。这套设计防范的是恶意操纵下的 Agent 去偷偷探测手机所在内网的服务端口。
再来看看针对脚本执行的限制。模型可以编写 JavaScript 代码,交给进程内嵌的 boa 解释器去执行。这些脚本能看见的文件操作接口只有三个函数,分别对应读文件、写文件和列目录操作。所有调用全都要过同一套文件笼子检查,不讲任何情面。脚本环境里没有网络接口,没有系统调用函数。循环迭代上限设定为两千万次,输出字符串上限限定在三万字符(script.rs)。
还有一道限制负责管理子任务的生命周期。子任务不借助进程 fork 操作产生。它们作为同进程内的异步任务运行,各自保有独立的对话循环,交互轮数上限设定为 10 轮。外部可以随时查询这些任务的状态、等待执行结果、强行终止运行,还能支持从断点位置恢复状态(task_manager.rs)。这就保证了任务跑偏了也能随时拉回来,尽在掌握之中。
最后一道限制处理失败收敛问题。一旦同一个工具用完全相同的参数连续调用 8 次,系统会向模型注入一次警告信息。重复到 16 次,整个交互回合直接终止。系统还规定每条用户消息的执行轮数默认上限设定为 24 轮(doom_loop.rs)。模型在原地反复打转的情况,代码里留有明确的熔断条件。这就避免了无意义的电量与 token 消耗。一旦发现不对劲,立刻拔电源。
在这五道严格的边界之上,它另外提供一套受限工具箱。cat、ls、sort、find 这些常见命令使用 Rust 在进程内做了模拟实现。模型以为自己掌握着一个完整的系统命令行,实际下发的每条命令对应着底层的确定性逻辑实现。这就好比给模型发了一套玩具工具,看着像真的,用起来其实安分守己。
讲真,这个项目还很年轻。项目在 8 月 18 日公开。我核查它代码情况发现有 24 个 star,可见的贡献者仅有一人,仓库里无 issue 无 PR 记录,也没有附加安全政策文件。公开的第二天作者就发布了一个修复打包问题的补丁版本。README 介绍里的性能数字和达到 Claude Code 水平的说法,全部属于发布方主张,目前没有第三方机构独立验证。我通读源码后还发现两处疑点。文档自称 C 接口边界使用 catch_unwind 捕获 Rust 的 panic,当前源码目录里找不到这处调用,release 编译配置里写的依然是发生 panic 即刻中止进程。web_fetch 工具在重定向全部走完之后才会复查最终的访问地址,缺少逐跳拦截机制,中间跳转理论上存在先连上内网地址再触发拦截的可能。这两处细节暂时只是疑点,有待维护者后续回应,目前还不宜视作最终定论。大家先别急着下结论。
现阶段将其直接用于生产环境尚早。咱们把它视为一份优秀的架构设计样本正合适。它提供了一个清晰的答案。移动端 Agent 的边界设计优先级,永远高于单纯的功能堆叠。功能欠缺后续还能补充。权限边界一旦失守,能力越强系统反而越危险。
去年 11 月我写过一篇讨论 AI 原生软件工程的文章(超越 DRY)。里面有一个核心判断,AI 掌握现场生成软件的能力之后,软件公司交付的产物从固定功能成品演变成了生成内核。这套内核包含三个关键组件。核心套件提供不可替代的基础能力,如同宜家家具里预先打好孔的椅面和椅腿。引导知识构成写给 AI 读的说明手册,模型花几秒钟读取,用以代替人类工程师积攒数年的领域经验。杠杆工具负责将 AI 容易出错的不确定任务转化为确定性操作,充当那把标准化的内六角螺丝刀。
用这套框架对照 PhoneBuddySDK 的设计,你会发现它完整展示了生成内核在移动端的一种落地形态。三件套里的每一层,在代码库里都能对应到具体的实现实体。严丝合缝,分毫不差。
核心套件对应那套底层的执行机器本身。工具调用循环、流式传输通信、会话状态管理,配合五道边界围起来的受约束能力集合。这些底层模块单凭单个应用开发者难以独立完成。跨平台兼容、运行稳定性以及细致的边界审查,每一项都需要长期投入庞大的工程精力。这活儿太重,普通人啃不动。
引导知识藏在系统提示词以及每个工具的规格说明里。沙箱规则、路径格式要求、碰到啥情况应该停止执行,模型通过阅读这些说明文字学会在全新的手机环境里开展工作。这个开源项目公开第二天的代码提交记录,内容就是给系统提示词瘦身,并将工具的具体用法拆分挪进各自的工具规范里。这个动作本身就是在精心维护专门写给 AI 阅读的规格说明。就像给新员工写操作手册一样。
杠杆工具体现在定制的系统命令和脚本引擎上。模型表现最不可靠的行为之一,在于现场凭空生成系统操作命令。语法完全正确但语义出现严重偏离的情况非常普遍。将常用命令替换为确定性的函数实现,将任意代码执行替换为沙箱内受限的脚本。系统让不可靠的代码生成过程重新落回了确定性的轨道上。
还有一个体量更小的同构例子,就是我自己维护的 VoiceFlowKit 项目。它是一个给任意 iOS 应用添加实时语音输入的 Swift 库。核心套件囊括麦克风数据采集、WebSocket 数据传输和语音转写管线。引导知识体现为一个独立的 skill 文件,写给在别人代码库里干活的 AI agent 阅读。杠杆工具包含测试桩代码、音频计量工具以及带有严格类型的错误枚举。AI 不去直接触碰底层的 WebSocket 通信,也能稳妥组装出可靠的功能集成。它的 README 文档里直接写着 designed as a generative kernel for AI integrators。
移动端苛刻的平台约束条件,反而把这种开发模式逼出了更纯粹的形态。生成内核在移动端的本质,就是让开发者在光谱两端之间拿到一个可参数化的 trade-off 点,大脑用云的,手脚眼睛用本地的,能力集自己圈。在桌面上开发者还能偷懒,直接给模型分配一个命令行控制台。碰到错误大不了直接重启。手机端无法提供现成的命令行环境,能力机制本身就变成必须认真对待和设计的产品。五道边界画得准不准,直接决定这个智能内核的整体质量。限制也是一种创造力。
下次再看到任何手机上的 Agent 方案,不论它是开源 SDK、操作系统原生功能还是某种云端服务,可以拿五个具体问题去问它。文件边界画在什么位置;网络出口默认拦截哪些流量;脚本环境能看见哪些系统接口;子任务能不能支持外部观察和强制终止;失败死循环怎么自动停下来。给得出清晰的答案,说明这个方案真正在把能力授予当作产品设计在做。给不出答案,能力描述得越强大,引入的未知风险就越需要警惕。我们要的是听话的帮手,别招来一个乱砸东西的破坏王。
手机给整个 Agent 产业上的这一课,影响范围早已超出了手机硬件本身。桌面时代执行环境的默认答案一直摆在那里,能力授予这件事可以随意糊弄过去。移动平台的系统约束移除了这个默认选项。每家厂商都只能回答同一个严肃的问题,你的 Agent 到底能碰什么。能把这个问题回答成具体产品的团队,就是在交付 AI 时代的新一代内核。