端侧AI三大技术裂变:AX智能体编排、MoE手机部署与AI恶意软件防御
1. 三条新闻背后的技术分水岭
2026年9月23日这一天,AI圈子里同时冒出了三件事,单独拎出来看都挺炸裂,但放在一起看,它们其实指向同一个趋势:AI正在从"云端集中式"往"端侧分布式"和"自主协作式"两个方向同时裂变。谷歌开源了AX智能体编排框架,骁龙把300亿参数的MoE模型塞进了手机,而安全圈则首次捕获到能自主发起攻击的AI恶意软件。这三件事分别对应了AI基础设施层、终端算力层和安全对抗层的关键变化,任何一个做AI应用开发、移动端部署或者安全防护的从业者,都值得花时间把它们的底层逻辑捋清楚。
我自己是从2024年开始跟踪端侧模型部署这条线的,当时在骁龙8 Gen 3上跑一个7B的量化模型就已经很吃力了,发热和内存占用都是大问题。所以当我看到"30B模型装进手机"这个标题时,第一反应是"这不可能",第二反应是"除非用了MoE架构"。果然,关键词里出现了MoE。这篇文章我会把这三条新闻拆开揉碎,重点讲清楚AX框架到底解决了什么编排难题、MoE是怎么让30B模型在手机上跑起来的、以及AI恶意软件的自主攻击链路长什么样。不管你是做应用开发的、搞移动端部署的,还是做安全防护的,都能从中找到跟自己相关的实操参考。
2. 谷歌AX智能体编排框架到底编排了什么
2.1 从"单兵作战"到"团队协作"的智能体困境
先说AX这个东西为什么会出现。2025年到2026年,智能体(Agent)框架已经多如牛毛,LangChain、AutoGen、CrewAI这些大家都不陌生。但实际用下来你会发现一个很尴尬的问题:单个智能体做简单任务还行,一旦任务复杂起来,比如"帮我分析这份财报、生成图表、写一份摘要、再翻译成三种语言",你就需要多个智能体协作。而多智能体协作的编排逻辑,恰恰是现有框架最薄弱的地方。
我去年做过一个项目,用三个智能体分别负责数据抓取、数据清洗和报告生成。理论上很美好,实际上光是处理它们之间的消息传递、状态同步和错误重试就写了上千行胶水代码。更头疼的是,当其中一个智能体卡住或者返回了格式不对的结果时,整个流水线就崩了,你得手动去排查是哪个环节出了问题。AX要解决的就是这个"编排"层面的问题——它不是又一个智能体框架,而是智能体之上的调度层。
2.2 AX的核心抽象:任务图与能力注册
根据目前公开的信息和我的理解,AX的核心设计围绕两个概念展开:任务图(Task Graph)和能力注册(Capability Registry)。任务图负责描述"做什么"和"先后顺序",能力注册负责描述"谁能做"和"怎么做"。这两者解耦之后,你就可以在不修改任务逻辑的前提下,动态替换执行任务的智能体。
这个设计思路其实借鉴了微服务架构里的服务发现和编排模式。打个比方,传统多智能体框架就像一个小作坊,每个工人(智能体)既要知道自己干什么,还要知道上下游是谁,沟通成本极高。AX则像一个现代工厂的调度中心,工人只需要在能力注册表里登记"我会拧螺丝",调度中心根据任务图自动把螺丝拧紧的任务分配给最合适的工人。工人请假了?换一个登记的就行,任务图不用动。
具体到代码层面,我推测AX的用法大概是这样的(基于常见编排框架的合理推断):
from ax import TaskGraph, CapabilityRegistry, Agent registry = CapabilityRegistry() registry.register("data_fetch", DataFetchAgent()) registry.register("data_clean", DataCleanAgent()) registry.register("report_gen", ReportGenAgent()) graph = TaskGraph() graph.add_node("fetch", capability="data_fetch", input={"source": "api"}) graph.add_node("clean", capability="data_clean", depends_on=["fetch"]) graph.add_node("report", capability="report_gen", depends_on=["clean"]) result = graph.execute(registry)这种声明式的写法最大的好处是可观测性。每个节点的输入输出、执行耗时、失败原因都能被框架自动记录,排查问题的时候不用再靠print大法。
2.3 为什么谷歌要开源而不是闭源
这里有个值得琢磨的问题:谷歌完全可以把AX做成云服务来卖,为什么要开源?我的判断是,智能体编排这个赛道目前还没有形成事实标准,开源是抢占生态位最快的方式。一旦开发者习惯了用AX来编排智能体,后续的模型调用、工具集成、部署托管自然就会往谷歌云上靠。这跟当年安卓开源、Kubernetes开源是同一个逻辑——基础设施层开源,上层服务和算力收费。
对普通开发者来说,这当然是好事。你可以在本地用AX编排智能体,跑通了再决定要不要上云。而且开源意味着你可以看到编排的底层实现,遇到问题能自己改,不用干等官方修bug。我建议想上手的朋友先从官方仓库的examples目录开始,把最简单的两三个智能体协作跑通,再逐步加复杂度。
2.4 实操中容易踩的编排坑
根据我用类似框架的经验,AX这类编排工具在实际使用中有几个坑是几乎一定会遇到的。第一个是状态传递的序列化问题。智能体之间传递的数据往往是复杂的嵌套结构,如果框架默认用JSON序列化,遇到datetime、bytes或者自定义对象就会报错。解决办法是在能力注册时显式声明输入输出的schema,让框架知道怎么处理。
第二个是超时和重试的粒度。默认情况下,一个节点失败可能会触发整个任务图重跑,但很多时候你只想重试失败的那个节点。AX如果支持节点级别的重试策略配置,一定要在任务图定义时就设好,别等线上出问题了再改。
第三个是循环依赖检测。任务图如果写成了环形依赖,执行时就会死循环。好的框架会在编译阶段就检测出来并报错,但你自己在定义依赖关系时也要留个心眼,尤其是当任务图是动态生成的时候。
3. 骁龙把30B模型塞进手机:MoE架构的工程魔法
3.1 30B装进手机的第一道坎:显存和内存
先算一笔账。一个300亿参数的模型,如果以FP16精度存储,需要 30B × 2 bytes = 60GB 的内存。就算用INT8量化,也要30GB。而目前旗舰手机的运行内存普遍在12GB到16GB之间,顶配也就24GB。所以"30B模型装进手机"这件事,如果按稠密模型来理解,物理上就是不可能的。
那骁龙是怎么做到的?答案就在关键词里的MoE(Mixture of Experts,混合专家)。MoE的核心思想是:模型虽然总共有300亿参数,但每次推理时只激活其中一小部分。比如一个30B的MoE模型,可能由8个专家组成,每个专家大约4B参数,每次token只路由到其中2个专家,实际激活的参数只有8B左右。这样推理时的内存占用和计算量就降到了8B稠密模型的水平,而模型的总知识容量仍然是30B。
这就像一家大公司有30个部门,但处理一个具体项目时只需要调动其中2个部门的人手。公司总人数很多,但每次实际干活的人不多,办公场地(内存)只需要容纳干活的那部分人就行。
3.2 MoE的显存问题:要全部参数进显存吗
这是热词里直接出现的问题:"moe架构要全部参数进显存吗?"答案是:训练时通常需要,推理时不一定。训练阶段因为要计算梯度、更新所有专家的参数,所以所有参数都得在显存里。但推理阶段,如果框架支持专家卸载(Expert Offloading),就可以把不活跃的专家放在内存甚至闪存里,只把当前需要的专家加载到显存。
手机上更是如此。骁龙的方案我推测是这样的:利用Hexagon NPU和Adreno GPU的共享内存,把活跃专家的权重常驻在NPU的片上缓存里,不活跃的专家权重放在LPDDR5X内存中,需要时再换入。这个换入换出的调度策略非常关键,如果路由预测做得不好,频繁换入换出会导致延迟飙升。
3.3 负载均衡:MoE路由器的隐形战场
MoE架构里最容易被忽视但最影响性能的组件是路由器(Router)。路由器决定每个token发给哪些专家处理。如果路由器总是把token发给同样的几个专家,就会出现"忙的忙死,闲的闲死"的情况——少数专家过载,多数专家闲置。这不仅浪费算力,还会导致模型效果退化。
解决这个问题需要负载均衡损失(Load Balancing Loss)。在训练时,除了正常的任务损失,还要加一项惩罚项,鼓励token均匀分配到各个专家。常见的实现是计算每个专家被选中的频率,然后让频率的方差尽可能小。代码大概长这样:
def load_balancing_loss(router_logits, num_experts): # router_logits: [batch_size * seq_len, num_experts] routing_probs = softmax(router_logits, dim=-1) # 每个专家被选中的平均概率 expert_freq = routing_probs.mean(dim=0) # 理想情况下每个专家被选中的概率是 1/num_experts target = torch.ones_like(expert_freq) / num_experts # 用方差衡量不均衡程度 loss = ((expert_freq - target) ** 2).sum() return loss在手机端推理时,负载均衡还多了一层含义:不仅要均衡专家的计算负载,还要均衡内存带宽和功耗。骁龙如果做了针对性的调度优化,那这部分应该是他们的核心竞争力。
3.4 端侧MoE部署的实操建议
如果你打算在骁龙平台上部署MoE模型,有几个经验可以分享。第一,专家数量不要贪多。手机上4到8个专家是比较合理的范围,再多的话路由开销和内存管理复杂度会急剧上升。第二,专家粒度要均匀。如果有的专家是4B,有的是1B,路由到不同专家时延迟差异会很大,用户体验不稳定。第三,量化策略要分层。活跃专家的权重量化到INT4甚至INT3以节省带宽,不活跃的专家可以保持INT8精度,反正它们不常被调用。
还有一点很关键:热启动和冷启动的体验差异。第一次推理时,所有专家都需要从闪存加载到内存,延迟会很高。之后如果模型常驻内存,后续推理就快得多。所以端侧MoE应用要做好预热机制,比如在手机充电且空闲时预加载模型。
4. AI恶意软件的自主攻击链路拆解
4.1 从"脚本小子"到"自主决策"的质变
传统恶意软件的行为是预设好的:感染、提权、横向移动、窃取数据,每一步都是硬编码的。安全防护的思路也很直接——找到特征码、匹配行为模式、拦截。但AI恶意软件不一样,它具备了自主决策能力。它可以根据目标环境的实际情况,动态选择攻击路径、调整攻击策略、甚至在被发现后自主改变行为模式。
这次捕获的AI恶意软件,根据公开信息,它的自主性体现在几个层面:能自主扫描目标网络、能根据扫描结果选择漏洞利用方式、能在攻击受阻时尝试替代方案。这已经不是一个固定程序了,而是一个有"目标感"的智能体。安全圈有句话叫"攻击者永远比防御者快一步",AI恶意软件把这个时间差进一步拉大了。
4.2 自主攻击的典型链路还原
虽然具体的恶意软件样本我没有拿到,但根据AI智能体的通用架构,可以合理推断它的攻击链路大致分为四个阶段:
第一阶段:环境感知与目标识别。AI恶意软件会先收集目标系统的信息——操作系统版本、开放端口、运行的服务、已安装的软件。这些信息通过调用系统命令或者网络探测获取,然后交给一个分析模块来判断哪些是潜在入口。
第二阶段:攻击策略生成。基于环境感知的结果,AI模块会生成一个攻击计划。比如发现目标运行了某个有已知漏洞的Web服务,就优先尝试该漏洞的利用;如果目标打了补丁,就转向钓鱼或者供应链攻击。这个决策过程可能用到了强化学习,也可能只是简单的规则引擎加LLM推理。
第三阶段:执行与自适应。攻击执行过程中,AI恶意软件会持续监控反馈。如果某个攻击手段失败了,它会记录失败原因并尝试其他方案。这种"试错-学习-调整"的循环,是它区别于传统恶意软件的核心特征。
第四阶段:持久化与扩散。一旦获得立足点,它会尝试建立持久化机制,并寻找机会向其他系统扩散。扩散策略同样由AI动态决定,而不是固定的扫描-感染循环。
4.3 防御思路的转变:从特征匹配到行为异常检测
面对这种对手,传统的基于特征码的杀毒软件基本失效了,因为AI恶意软件的代码每次可能都不一样。防御的重心必须转向行为异常检测。具体来说,要监控的不是"这个程序长什么样",而是"这个程序在做什么"。
比如,一个正常的办公软件突然开始扫描内网端口,这就是异常行为。一个数据库服务突然尝试修改系统注册表,这也是异常。把这些异常行为串联起来,就能勾勒出攻击链路。我建议做安全的朋友重点关注三个维度的监控:进程行为链(谁启动了谁、谁调用了什么系统API)、网络流量模式(连接了哪些不寻常的地址、数据传输量是否异常)、文件系统变更(哪些敏感文件被读取或修改)。
4.4 给开发者的安全自查清单
不管你做的是端侧AI应用还是云端服务,AI恶意软件的兴起意味着安全基线要重新审视。以下是我整理的几条自查项:
- 模型文件完整性校验:端侧部署的模型文件是否做了签名校验?防止被替换成恶意模型。
- 智能体权限最小化:如果你的应用用了智能体,每个智能体是否只拥有完成任务所需的最小权限?不要给智能体开放不必要的系统调用。
- 输入输出沙箱:智能体处理的外部输入是否经过沙箱隔离?防止恶意输入触发危险操作。
- 行为日志留存:智能体的每一步决策和操作是否都有日志?出问题时能否追溯?
- 异常熔断机制:当智能体行为偏离预期时,是否有自动熔断和告警机制?
5. 三件事串起来看:端侧AI的机遇与风险
5.1 端侧算力爆发带来的应用形态变化
骁龙把30B MoE模型装进手机,这件事的意义远不止"手机能跑大模型了"。它意味着AI应用的架构可以彻底改变。以前做一个AI功能,你得把数据传到云端、云端推理、结果传回来,延迟高、隐私风险大、还依赖网络。现在模型直接在端侧跑,数据不出设备,延迟降到毫秒级,离线也能用。
这会催生一批新的应用形态。比如实时的个人助理,能看你屏幕上的内容、听你周围的对话、理解你的上下文,全程本地处理。再比如隐私敏感的医疗健康应用,可以在手机上分析你的语音、步态、睡眠数据,给出健康建议,而所有数据都不离开设备。这些场景在云端方案下要么体验不好,要么合规过不了,端侧MoE让它们变得可行。
5.2 AX编排与端侧模型的结合点
谷歌AX编排框架和端侧MoE模型,看似是两条平行线,其实有一个很自然的结合点:端云协同的智能体编排。你可以把轻量级的智能体放在端侧(比如负责意图理解、简单问答),把重量级的智能体放在云端(比如负责复杂推理、知识检索),然后用AX来编排它们之间的协作。
这种架构的好处是兼顾了响应速度和能力上限。简单任务端侧秒回,复杂任务自动路由到云端。而且AX的任务图可以动态调整——网络好的时候多用云端,网络差的时候全走端侧。这比一刀切的纯端侧或纯云端方案灵活得多。
5.3 安全边界重构:端侧AI的新攻击面
端侧AI普及也带来了新的安全挑战。模型在本地,意味着攻击者可以直接接触模型文件、推理过程和输入输出数据。如果模型被逆向工程,攻击者就能知道你的模型结构、权重分布,甚至构造对抗样本让模型产生错误输出。
更麻烦的是,端侧智能体如果权限管理不当,可能被恶意应用调用,变成攻击其他应用的跳板。比如一个拥有文件读写权限的智能体,被恶意软件诱导去读取敏感文件,然后通过合法的网络请求把数据传出去。这种攻击很难被传统安全软件发现,因为所有操作看起来都是"合法"的。
所以端侧AI的安全设计,必须从第一天就把权限隔离、模型加密、行为审计考虑进去,不能等出了事再补。
6. 我个人的一些实操体会
这三条新闻里,我实际动手折腾过的是MoE的端侧部署和智能体编排。说几个踩过的坑和真实感受。
MoE端侧部署这块,最大的教训是不要迷信参数规模。我一开始觉得30B肯定比7B强,实际测下来,在手机这种资源受限的环境里,一个精心调优的7B稠密模型,体验可能比一个没调好的30B MoE模型更流畅。MoE的优势在于知识容量,但前提是路由策略和内存调度都做得好。如果这两块没优化到位,MoE反而会因为频繁的专家切换而变慢。
智能体编排这块,我的体会是先从两个智能体开始。很多人一上来就设计五六个智能体协作的复杂流程,结果调试的时候根本不知道是哪个环节出了问题。两个智能体跑通了,再加第三个,逐步增加复杂度。而且每个智能体的输入输出格式一定要严格定义,最好用schema约束,不要靠"约定俗成",不然迟早出问题。
至于AI恶意软件,虽然我没有直接对抗的经验,但有一个原则我觉得是通用的:任何自主决策的系统,都必须有可解释的决策日志和可干预的熔断机制。不管这个系统是防御用的还是攻击用的,黑盒决策都是危险的。做安全产品的人,尤其要把这一点刻在脑子里。
最后分享一个我最近在用的调试技巧:给智能体编排流程加一个"回放"功能,把每次执行的输入输出、路由决策、耗时都记录下来,出问题时可以像看录像一样回放整个流程。这个功能在排查偶发性bug时特别有用,强烈建议大家在项目早期就加上。