1. 性能暴涨6倍背后的起点:被长帧打穿的低端机
去年底接手了一个Cocos Creator 3.8的2D卡牌项目,业务迭代倒还行,真正让人头疼的是低端安卓机上的性能反馈。玩家的集中反馈是“进战斗卡成PPT”,尤其是弹窗、飘字和技能特效同时出现时,连点击响应都开始迟钝。我拿性能分析工具在骁龙660级别的最低配测试机上跑了一遍,满帧预算几乎从头到尾被打穿:主线程单帧超过100ms的“长帧”非常密集,帧率在15到20之间来回跳,要是再赶上资源加载,整个战斗场景基本不能玩。
这种局面下,团队第一反应是“再压一下DrawCall”“再删一点资源”,但按老办法手动排查了两天,效果很有限。原因很简单:性能问题从来不是一个原因造成的——渲染批次、纹理内存、shader变体、JS层的序列化热点,全都叠在一起,人工翻Profile找主次优先级,效率实在太低。也是在那个节点上,我们决定引入AI Agent来做一次彻底的问题盘点和优化落地。
这里说的AI Agent,不是页面里聊两句的那种对话机器人。我搭的是一个具备工具调用能力的Agent,给它开放了项目源码的只读访问、构建脚本的执行权限,以及输出目录的写入权限。它还配了一个“项目知识库”目录,里面放的是Cocos官方性能文档、团队编码规范、目标机型分级表。第一件事,我先写了个十几行的脚本,把Profiler导出的原始日志压成“按函数耗时排行的Top50”和“按资源大小排行的Top30”两张表,再丢给Agent做分析。
1.1 症状:一进战斗,帧预算被打穿
先说现象。优化前的战斗场景里,DrawCall峰值经常拉到110左右;打开资源管理器看内存,纹理常驻动不动就400MB以上;再配合动画、粒子特效、实时飘字,主线程在每一帧要做的事情非常拥挤。结果就是:平均帧率看着好像还有20帧左右,但体验上远不如20帧,因为长帧、掉帧、卡顿全部集中在这几秒钟里发生。这种“数据看着还行、体验完全不行”的情况,在移动端性能优化里特别典型,纯看平均帧率很容易被骗。真正要盯的数据,是每一帧到底花了多少毫秒、哪些函数的耗时排在前面、哪些资源一直占着内存不释放。
1.2 Agent的第一轮分析:定位优先级比多改代码更重要
Agent拿到我整理的Top榜单之后,没有直接甩一堆优化方案,而是先根据源码和文档把问题重新分了类。它给出的四类优先级是这样:渲染批次数过高、纹理内存过大、shader变体数量异常、JS层存在高频序列化热点。坦白说,前两项团队自己也能猜到,但后两项是它从构建日志和函数耗时里对比出来的,这在之前手动排查时完全没意识到。从那一刻开始,我对Agent的态度从“试试看”变成了“认真当工具用”。这个阶段最大的收获,不是它给了多惊艳的方案,而是它把乱成一团的性能数据梳理成了一张有优先级的清单,让我知道该从哪下手、哪些问题可以往后放。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. AI Agent接入Cocos工作流的三种方式,和我最终选用的那套配置
在真正落地之前,我把市面上几种做法都梳理了一遍。如果只是遇到了一个单点问题,比如某个报错、某个函数很慢,直接把报错信息和Profile片段复制给大模型,让它给建议,这是最轻量的做法,我称之为“对话式”。但它有两个绕不开的短板:上下文窗口有限,没法跨文件理解一个完整项目;它也不具备验证自己判断的手段,说错了你很难及时发现。
第二种是我最终重点采用的“工具型Agent”。我不只让它看一段文本,而是给它暴露了一组工具:读文件、搜代码、执行构建脚本、读取产物日志。它拿到性能数据后,能自己去看源码确认热点到底发生在哪、资源到底在哪些场景里被引用,然后输出带理由的修改建议。这种形态才真正配得上叫Agent,因为它有“感知-决策-行动”的闭环,而不只是一问一答。
第三种是做CI侧的“流水线型Agent”。每次构建完成之后,自动跑一组固定的性能回归场景,把DrawCall数、帧耗时、内存峰值这些指标生成报告,如果某个版本比上一版明显劣化,Agent直接标记异常并通知到群里。这一层主要是“防止性能继续
