我让手机上的AI帮我跑代码,三个App全让我滚回去开电脑
我让手机上的AI帮我跑代码,三个App全让我滚回去开电脑
约 4279 字·阅读 11 分钟·2026-07-07
上一篇《我让AI直接在我电脑上跑rm -rf》发出去之后,评论区被一个问题刷了:
“那手机呢?手机上的AI Agent怎么搞的?”
我当时心想,这有什么好问的,手机OS那么封闭,沙箱肯定更严啊。
然后我拿起手机试了三个App。
打开ChatGPT App,让它帮我跑段代码。它让我配对一台Mac。
打开Claude App,让它帮我执行个脚本。也让我连电脑。
打开Cursor手机版,想跑个测试。一样,让我回去开电脑。
我盯着屏幕愣了一会儿。
能聊天,能看代码,能告诉你”建议怎么改”,但真要动手——滚回去开电脑。
这不是bug。是设计。
那天晚上我把手机端AI工具全扒了一遍,发现事情跟我想的完全不一样。
· · ·
01
手机不是没沙箱,是沙箱比电脑还狠
很多人第一反应:”手机OS这么封闭,是不是因为没沙箱所以AI不敢乱跑?”
反了。
iOS和Android是地球上把沙箱玩得最彻底的两个系统。iOS上第三方App默认关在沙箱里,只能读自己容器里的文件,想碰别的App数据、跑系统命令、fork子进程,基本都禁止,系统分区还是只读挂载。Android也一样,每个App跑在自己的UID下,SELinux + seccomp + namespace一层层套着。
这套机制叫”App沙箱”,上架App Store和Play Store的硬性要求。
那问题就来了。沙箱比电脑还严,为什么AI Agent在手机上反而做不了沙箱?
因为”App沙箱”和”Agent沙箱”根本不是一回事。
· · ·
02
手机沙箱是关你的,不是给你用的
这句话是整件事的核心,得展开说。
上一篇讲过,桌面端Agent沙箱长这样:Agent想跑一条命令,先过应用层规则判断,再调一个系统级能力,临时划出一块隔离区,把命令关进去跑。
关键在第二层。Agent自己调系统API,造一个隔离环境。
这层能力在桌面OS上是开放给应用的。Linux上任何进程都能调unshare()创建namespace。macOS上任何用户都能跑sandbox-exec。Windows上应用能创建Job Object、起Hyper-V容器。
手机上?关了。
|
|
|
|
|
|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
看懂了吗。
手机OS把App关进了沙箱,但没给App一把”再造沙箱”的钥匙。
App是被沙箱的客体,没法成为沙箱的主体。
桌面OS假设”应用是可信的,给充分能力”。手机OS反过来,”应用默认不可信,能不给的权限就不给”。两种哲学没对错,但直接决定了Agent能不能在端上跑代码。
· · ·
03
那手机端AI Agent怎么活下来的?绕开
我扒了一圈,活下来的办法就三条。
第一条,把活外包出去,手机当遥控器。
最主流的方案。ChatGPT App的Codex功能,手机端就是个监控面板加审批按钮,真正的代码跑在OpenAI云端或者你自己配对的Mac上。Claude App的Remote Control更直白,连到你电脑上跑着的Claude Code session。沙箱在你电脑上,手机只是个屏幕。Cursor、Windsurf的手机版也这样,看进度、批操作,不在手机上跑。
为什么是主流?因为它把整个沙箱难题外包了。手机只负责显示和确认,”会不会搞坏”的风险全在云端或你电脑上,那些地方沙箱方案非常成熟,上一篇讲过了。
代价也实在。离线用不了,首次配对还特别麻烦。我第一次配Codex手机版,对着Mac扫了好一阵码才通,差点放弃。
第二条,压根不跑代码,只模拟点屏幕。
有一批移动端Agent项目,宣称能”用自然语言控制你的手机”。你拆开看实现,是这样的:
你说”帮我把最后一张照片发给妈妈”,Agent截屏看一眼,输出”点击(x=540, y=1200)”,通过辅助功能API模拟点击。
从头到尾不执行任何用户代码。没有shell,没有文件写入,没有”在隔离区里跑脚本”的需求。
所以这类Agent根本不需要沙箱。它需要的是辅助功能权限,这个权限本身是OS给的、有用户明确授权的、范围有限的。某种意义上它已经是”沙箱”了,只不过不是Agent自己造的。
但这条路有个硬伤。它干不了写代码、跑测试、装依赖这种需要真正执行环境的事。说白了它只能模拟人的手指。
第三条,推理上端,但代码不上端。
WWDC26苹果发了Foundation Models框架和Core AI。方向很清晰:大模型推理上端,Apple Silicon直接跑,速度还行。模型抽象层允许换模型,可以接Claude、接Gemini。
但”Agent执行代码”这件事,苹果没做。
让”理解”在手机上发生,让”动手”还在云端或Mac上。这其实是对前两条路的官方背书。连苹果自己都没在iOS上做Agent沙箱。
为什么不做?因为苹果的安全哲学从来就是”App能力最小化”。给一个App开”自己造沙箱、自己跑任意代码”的权限,等于在iOS安全模型上开一个天大的口子。苹果宁愿让开发者把代码丢到云端,也不愿意松动这一层。
· · ·
04
到底为什么做不了?三道墙
到这你可能还不服气:”沙箱不就是个隔离嘛,手机性能都这么强了,怎么就做不了?”
我挨个拆。每一层都是一道墙,不是那种努努力就能翻过去的。
第一墙:App没有”起子进程”的特权。
桌面沙箱的本质是进程级隔离,起一个新进程,给它单独的PID、网络、文件系统视图。
iOS上App想跑额外的可执行程序,几乎只能走App Extension这类受控通道,每个Extension都要预先注册,能力受限。iOS还强制W^X,内存里一段区域要么可写要么可执行,不能既是又非。你没法下载一个脚本到内存里直接跑。
桌面OS的fork() + exec()这套老UNIX哲学,在手机上被砍得七零八落。没有这套原语,你连”起一个隔离的子进程跑命令”这个动作都做不出来。
第二墙:内核原语对App封死。
Linux桌面Agent沙箱能跑,靠的是unshare()这种syscall。Android底层虽然是Linux内核,但这些syscall对第三方App是封死的,SELinux策略明确禁止unprivileged app调用。
Android自己的隔离(App沙箱、Work Profile)是系统服务管的,不是App自己能开的。App想”为自己造一个子沙箱”?没这个API。
iOS更彻底,连”假装是Linux”的选项都没有,根本不存在namespace这个概念。
这不是SDK缺一个函数的事。是OS安全模型的设计选择。
第三墙:就算做出来,手机也扛不住。
退一万步,假设OS真给了你这套能力,能跑动吗?
Firecracker MicroVM启动就要128MB内存,每实例125ms启动。gVisor吃10-20%的CPU。Docker容器50-100MB。沙箱里跑代码还要装依赖,一套node_modules好几个GB。
手机是被动散热、电量敏感、内存吃紧的设备。Agent一次会话动辄几分钟,期间你要么挂一个常驻沙箱进程吃内存,要么每次起停让用户等秒级。这俩在手机用户体验里都是死罪。
三道墙,任何一道单独都够了。叠在一起,结论很清楚。手机端不会有原生Agent沙箱,这不是技术不够,是平台架构没给这条出路。
· · ·
05
“沙箱”这个词在手机上到底什么意思
这件事最容易被营销话术带偏。对一下口径:
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
下次看到某个手机App宣传”AI在沙箱中执行”,多问一句:那个沙箱在哪儿?
答案大概率是”在云上”或”在你电脑上”。
不是厂商骗你。是这件事在手机上根本做不到。
· · ·
06
桌面vs手机,两条路
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
这两套不是高下之分,是平台决定的路径选择。桌面OS给应用能力,Agent在端上大展拳脚。手机OS收应用能力,Agent只能远程。
· · ·
07
有人问iPad呢
Q:iPad Pro性能这么强,M4芯片,也不行吗?
也不行。iPad跑的是iPadOS,和iOS共享同一套安全模型、同一套进程限制。M芯片解决的是”跑得动模型”,不是”OS允许App造沙箱”。这是软件架构问题,不是硬件性能问题。
这也是为什么很多开发者的终极方案是”Mac mini当服务器+iPad当屏幕”,把执行和显示彻底分开。这套组合在iPad生态里相当流行,恰恰说明了同一件事:苹果没把”端上执行Agent代码”这条路留给移动设备。
· · ·
08
扒完之后的真实感受
上一篇我说,扒完桌面Agent沙箱没觉得”安全”也没觉得”危险”。这篇扒完手机端,感受更具体了。
安全程度取决于平台,而大部分人以为”手机更封闭所以更安全”。这个直觉是对的,但只对了一半。手机确实更安全,App被关得死死的,但这个安全是拿”丧失Agent执行能力”换来的。
你在电脑上用Claude Code,有Seatbelt兜底,能自动跑代码。你在手机上用Claude App,连配对电脑都连不上的时候,它就是个聊天机器人。
这不是某一家厂商的问题。是手机这个平台从架构上就没给Agent留位置。
下次你看到某个手机AI App吹”AI在沙箱里帮你自动操作”,问三个问题就够了:沙箱在哪?AI在端上做了什么?如果端上真能跑代码它是怎么绕过OS限制的?
第三个问题问出来,基本就没下文了。
欢迎关注。
夜雨聆风