微信扫码
添加专属顾问
揭秘手机端 Agent 评测的实战经验,从评测体系搭建到工程化落地,带你深入了解如何量化与提升 Agent 的真实操作能力。核心内容:1. 手机端 Agent 评测的五大核心能力与评测集设计原则2. 保障评测准确性的关键技术:环境隔离与数据标准化3. 基于结构化语法的真值标注方法与实际效果提升数据
手机端 Agent 和聊天机器人最大的区别是:它会真的操作你的手机。
用户说"帮我设个明早 7 点的闹钟",Agent不是回一句"好的已设置"就完了——它需要正确计算时间、调用系统接口、传入正确参数,最终手机上真的多了一个闹钟。同时多次执行同一query,每次执行路径均不完全相同。
过去三个月,我们在手机 Agent 上搭建了一套完整的评测体系。这篇文章记录我们踩过的坑、最终跑通的方案,以及用数据验证过的效果。
三个月评测提升的效果提升很明显:
下面展开讲我们是怎么做到的。
手机Agent的能力不是铁板一块。拆开来看,它需要:听懂用户意图、选对工具、传对参数、拿到结果、组织回复。不同场景考的能力环节完全不同。
基于这个链路,我们设计了评测集的构成:
手机 Agent 评测最容易踩的坑是"串扰"——前一条query的执行结果影响后一条的判断。
我们踩过的真实坑:最开始我们闹钟类的评测query采用先执行 新建闹钟再评测删除闹钟,发现评测时由于新建闹钟失败导致删除闹钟一律失败的影响情况,为了解决这类评测case间的互相影响,我们尽量评测前把query之间互相解耦,每个case统一预制保准化数据。
解决方案:
评测集有了,怎么判"对不对"?传统做法是写一句自然语言描述"期望Agent设一个 7 点的闹钟",然后人工看。但由于版本每日有多个版本迭代, 逐条人工评估根本看不过来。
我们的方案是结构化真值:把"期望行为"拆成机器可校验的字段全部采用自动化评估。
每条query有 8 个真值字段:
工具参数用统一的匹配语法:
source:field(matcher=value)举几个例子:
这套语法直接对接评测脚本的匹配引擎,消除了"真值描述方式"和"脚本判断逻辑"之间的翻译损耗。
教训 1:真值必须对齐执行层,不是设计层。
我们曾把真值标注为AppFunction全称(如 deskclockdeskclockaddalarm),但实际 Agent 走的是CLI桥接,日志里记录的是 cli。结果 400 条工具 case 命中率直接掉到 16.8%——排查后才发现不是 Agent 的问题,是真值格式对不上。
方法论:标注真值时,先根据代码或跑 10 条相同类型的 case 看实际日志里工具名怎么记的,再按实际格式标注。
教训 2:toolused 和 toolargs_any 不要同时填,除非你确定要 AND 语义。
评测脚本的逻辑是:所有非空字段都必须匹配才算通过。如果 toolused=cli且 toolargsany=cli:command(prefix=deskclock add),那两个条件必须同时满足。但如果 Agent 有时候走AppFunction不走 CLI(都能完成任务),那 toolused=cli 就会误判。正确做法:只填 toolargsany,让它既约束了工具又约束了参数。
教训 3:真值需要版本化管理。
Agent 的工具集在持续演进(工具新增、下线、改名、路径切换)。每次代码分支发生工具变更,对应的真值文件必须同步更新。我们最终把真值文件纳入和数据集zip一起的版本管理。
评分是评测体系里最容易出问题的环节。纯用LLM判,同一份日志跑两遍分数能差 6%。纯用规则,又覆盖不了"回复是否自然""分析是否有深度"这类语义维度。
在具体打分机制之前,先说我们度量什么。经过多轮迭代,最终固定了 8 个核心指标,分为"结果指标"和"过程指标"两组:
结果指标(衡量最终效果)
过程指标(衡量执行路径)
关键设计决策:质量分仅在任务完成时计算。
如果 Agent 根本没完成任务(比如工具调用失败或拒绝执行),我们不去评价"回复质量好不好"。这个决策避免了一个常见陷阱:Agent 没帮用户做事但说了一通漂亮话,如果算质量分反而会拉高整体分数,掩盖了真正的问题。
指标之间的层次关系:
完成率(最终结果)
├── 工具选择 L1(选对了吗)
│ └── 工具参数 L2(参数对了吗)
│ └── 工具链正确性(整个链路都对了吗)
├── 冗余率(有没有多干的)
└── 耗时 / Token(效率如何)当完成率下降时,按这个层次逐级排查:先看是不是工具选错了(L1 低),如果 L1 正常就看参数对不对(L2 低),如果 L2 也正常就看是不是多步调用漏了一环(工具链不完整)。这个排查顺序帮我们把"分数低"快速收敛到具体原因。
我们最终的方案是分层打分:
规则层(零成本,确定性):工具是否调用、参数是否匹配、是否违规——这些有明确对错,不该让LLM来判。
LLMJudge(语义层):回复是否准确、完整、实用——这些需要理解语义。我们让 Judge 先联网搜索获取参考信息,再对照评判,避免 Judge 自身知识不准。
经过 3 个月迭代,我们总结出LLMJudge 可靠运行的核心原则:
铁律 1:能用规则判的,绝不交给LLM。
"工具是否调用"这件事,日志里有就是有、没有就是没有——让LLM判只会引入随机性。我们统计发现,把 60% 的判断项从 Judge 移到规则层后,整体波动立刻从 6% 降到 2%。
铁律 2:Judge 必须先拿到外部参考信息再判。
早期我们让 Judge 直接判"回复是否准确",但 Judge 自己的知识也可能过时或不准。比如"河北辛集市阶梯水价",Judge 不联网就判了个"正确",实际价格早就调过了。改为每条query先联网搜索,把搜索结果作为参考材料一起给 Judge,误判率降了一半。
铁律 3:评分标准要具体到"什么情况给几分"。
"请给回复打 1-10 分"这种prompt基本不可用——不同LLM、不同时间跑出来的分数分布完全不同。
铁律 4:每个评测query跑3次。
"每个评测query需要跑3次,分别计算3次全部通过(pass^3)和3次中至少有一次通过的次数(pass@3)。
铁律 5:Judge 模型和被测模型不要用同系列。
我们发现用同系列模型当 Judge 时,它会对自己风格的回复"手下留情"。最终用Claude系列做 Judge、被测端用mimo系列,消除了这种偏好。
铁律 6:定期用人工标注校准 Judge。
抽 200 条让人工先标注,然后对比 Judge 的输出。一致率低于 85% 就要调 Judgeprompt。
评测出分只是起点。真正有价值的是:这个分为什么低,改哪里能提上去。
我们建立了三层归因链路:
面对 1000 条评测结果,不可能逐条分析。我们的策略是先聚类再深挖:
第一步:按类型 × 现象聚类。把所有失败 case 按(类型, 失败现象)二维分组。比如"定时任务 × 工具参数错误"有 35 条、"闲聊 × 编造信息"有 12 条、"记忆 × 信息缺失"有 55 条。
第二步:找头部问题。按数量排序,取 Top3 问题簇。优先解决覆盖面最广的问题——修一个根因能带动一片 case 通过。
第三步:对头部问题做代码归因。不是泛泛说"模型能力不足",而是具体到"哪个文件的哪段prompt导致模型犯了什么错"。
第四步:验证修复效果。改完代码后,只回归相关类型的 case(不用跑全量),确认修复有效且没有副作用。
陷阱 1:不要把所有问题都归到"模型能力不足"。
我们统计发现,70% 以上的 Badcase 根因在prompt配置和工具描述上,而不是模型本身。比如"工具没调用"的问题,大多数时候不是模型不会调,而是 toolselectionrules.md 里没有覆盖这个场景的路由规则。
陷阱 2:注意区分"Agent的问题"和"评测的问题"。
我们有一次发现工具命中率突然从 53% 暴跌到 16.8%。排查前以为是 Agent 退化,最后发现是真值文件用错了分支——B 分支的真值里用的是AppFunction全称,但对应的 Agent 实际走CLI执行。评测系统自身的 bug 会伪装成 Agent 的退化,必须对评测基础设施本身建立"元评测"机制。
陷阱 3:关注"幻觉"——通过了但路径有问题的 case。
有些 case 最终回复看起来正确,但执行路径不对。比如用户问"帮我设个闹钟",Agent 回复"好的已设置"但实际并没有调用任何工具——它只是用语言"声称"设置了。纯看最终回复的 Judge 判会通过,只有检查 Trace 日志才能发现问题。这也是为什么规则层先判工具调用的原因。
案例 1:定时任务参数错误(头部问题,35%)
用户说"每天早上8点的闹钟周末也要",Agent用了工作日的位掩码 31 而不是每天的 127。根因:cli.txt 里位掩码说明藏得太深,模型读不到。修复:在 Quick Decision 段加显式示例。修复后定时任务完成率 44% → 55%。
案例 2:完成率一周内 +14pp的关键修复
6 月中旬完成率从 61% 暴跌到 56.5%。排查发现是一个"自适应 thinking"功能在首轮关闭了模型推理(本意是省token),导致第一次工具选择没有推理空间,全靠直觉。恢复首轮 thinking 后,闲聊 80→96%、通用问答 67→76%、文本创作 52→70%,整体直接回到 70.7%。
把上面所有东西串成自动化流水线:
决策 1:报告结论放最前面。
飞书报告第一屏必须是结论(完成率、比昨天涨跌多少、头部问题是什么)。领导和PM只看第一屏。细节放后面给研发看。
决策 2:每条 case 的原始数据不能截断。
早期为了报告美观,我们截断了 Agent 的完整回复(只展示前 200 字)。结果根因分析时发现关键信息在被截断的部分。后来规定:评测原始数据(Agent 回复、工具参数、Trace 日志)一律完整保存,报告里可以折叠但不能删。
决策 3:Token统计从 raw.log 提取,不用汇总日志。
我们发现汇总日志里的token数和实际消耗差了 50 倍(因为汇总层做了压缩统计)。最终规定 token 统计只信 raw.log 里 SvcHttp 的 usage 字段。
决策 4:评测脚本不改、真值和Agent改。
评测脚本是"尺子",频繁改动会导致历史数据不可比。我们规定评测脚本的评分维度和匹配逻辑冻结,如果发现不适配,调整的是真值格式或Agent的输出格式。
决策 5:每轮评测后写"经验切片"。
每次跑完评测、分析完根因,我们都会追加一份 lessons_learned 记录:这轮发现了什么新问题、用了什么新的分析方法、有哪些判断被证实或推翻。半年下来积累了 30+ 条经验切片,新人看完就能上手。
重大架构改动用A/B对比:
一个真实场景:B 分支引入 ToolRecallService(工具预召回),评测显示工具类 +10%、闲聊耗时 -50%,但定时任务 -3%。A/B报告帮团队决策"合入但需要修复定时任务回退",而不是纠结"到底该不该合"。
回头看,我们沉淀出的核心方法论可以总结为 5 条:
1. 评测是工程问题,不是AI问题。
很多团队把评测当成"用AI评 AI"的研究课题。但实际上 90% 的工作是工程活:数据集维护、环境隔离、流水线搭建、报告自动化、版本管理。评测体系好不好用,取决于工程基建做得扎不扎实,不取决于 Judge 模型有多强。
2. "能改什么"比"分数多少"重要 10 倍。
一份只有分数的报告是没用的。团队需要的是"这个分因为什么低、改哪里能提上去、改完怎么验证"。我们每份报告的核心不是分数表格,而是"头部问题 + 代码归因+ 修复建议"三件套。
3. 评测系统自身也需要"被评测"。
真值标错、脚本有 bug、环境不隔离、日志截断——这些评测基础设施的问题会伪装成 Agent 的退化,浪费大量排查时间。我们在每次出现"分数异常但 Agent 没改"的情况时,会优先检查评测系统本身。
4. 稳定性比精度重要。
一个波动 6% 的评分系统,即使平均精度高也没用——你分不清分数变化是 Agent 真的变了还是评测本身的噪声。我们宁愿牺牲一些语义判断的"精度"(用规则粗判),也要保证系统整体波动 < 1%。稳定的尺子比精确的尺子更有工程价值。
5. 让评测"长在"研发流程里,而不是"挂在"旁边。
评测不应该是一个独立的阶段("开发完了去跑评测"),而应该是每次代码提交后的自动反馈。我们的日包自动评测让团队形成了习惯:每天早上看昨天的评测报告,如果某个类型掉了就去查对应的 commit。问题发现周期从"发版后用户反馈"缩短到"次日凌晨报告"。
三件事在路上:
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
2026-07-06
长上下文方案对比:一文讲清从 RAG、KV Cache 到百万上下文的工程取舍
2026-07-05
Hermes 的记忆层有 8 种实现,我为什么选了最反常识的那个
2026-07-05
Codex 负责人谈 AI 时代唯一值钱的能力
2026-07-05
复旦期末考「造反」了:51名学生联手围攻Claude、DeepSeek,谁能让AI交白卷谁就是学霸
2026-07-05
Loop Engineering 会是 AI 的下个关键词吗?
2026-07-04
Cursor 如何把 AI 部署进企业内部
2026-07-04
字节跳动CEO梁汝波最新万字分享深度拆解:这可能是2026年最重要的一堂管理课
2026-07-03
开发者转向 AI 应用工程,真正要迁移的是工程判断力
2026-04-15
2026-04-07
2026-04-24
2026-04-17
2026-04-14
2026-04-24
2026-04-22
2026-05-19
2026-04-24
2026-04-24
欢迎您使用【53AI 官方网站】(以下简称“本网站”或“我们”)。本《会员服务协议》(以下简称“本协议”)是您(以下简称“会员”或“用户”)与【深圳市博思协创网络科技有限公司】之间关于注册、登录及使用本网站会员服务所订立的法律协议。
在您注册或登录前,请务必审慎阅读、充分理解各条款内容,特别是免除或限制责任的条款、知识产权条款、争议解决条款等。此类条款将以加粗形式提示您注意。 当您通过微信公众号授权、手机验证码验证或其他方式成功登录本网站时,即视为您已完全理解并同意接受本协议的全部内容。
一、 定义
本网站:指由【深圳市博思协创网络科技有限公司】运营的,域名为【53ai.com】的网站及相关移动端页面。
会员服务:指本网站向注册会员提供的知识库文章查阅、内容检索及其他相关增值服务。
知识库内容:指本网站发布的包括但不限于文字、图表、数据、研究报告、行业分析等数字化内容资源。
二、 账号注册与登录
登录方式:本网站支持以下登录方式,您可根据实际情况选择:
微信公众号授权登录:您同意将您的微信OpenID信息授权给本网站,用于创建或关联会员账号。
手机验证码登录:您需提供真实有效的手机号码,并通过短信验证码完成身份验证与登录/注册。
账号安全:您的账号仅限您本人使用,禁止赠与、借用、租用、转让或售卖。因您保管不善导致的账号被盗、密码泄露等损失,由您自行承担。
实名认证:根据相关法律法规要求,我们可能要求您在特定功能下完成实名认证。如您拒绝提供,可能无法使用部分或全部服务。
未成年人保护:若您未满18周岁,请在法定监护人的陪同下阅读本协议,并在征得监护人同意后使用本服务。
三、 服务内容与规范
知识库查阅权限:会员登录后,有权按照其会员等级对应的权限范围,在线浏览、检索本网站知识库中的相关文章及内容。
服务变更:我们有权根据业务发展需要,调整、变更或终止部分服务内容,并将以网站公告、公众号消息等方式提前通知。
禁止行为:您在使用服务时不得实施以下行为:
利用技术手段批量爬取、下载、转存知识库内容;
将知识库内容用于商业目的或未经授权地向第三方传播;
干扰本网站正常运行或侵犯其他用户合法权益;
发布违法违规信息或从事违反公序良俗的活动。
四、 知识产权声明
权利归属:本网站知识库中的排版设计、软件代码等内容的知识产权均归【公司全称】或原权利人所有,受《中华人民共和国著作权法》等法律保护。
有限许可:本网站授予会员一项非独占、不可转让、不可转授权的普通许可,仅限于个人学习、研究之目的在线查阅知识库内容。
侵权追责:未经书面许可,任何单位或个人不得以任何形式复制、转载、摘编、镜像、汇编或以其他方式使用上述内容。一经发现,我们保留追究其法律责任的权利。
五、 个人信息保护
我们重视对您个人信息的保护。关于我们如何收集、使用、存储和保护您的个人信息,请单独阅读 《隐私政策》。
您通过微信公众号授权或手机号验证所提供的信息,我们将严格按照《个人信息保护法》的规定处理,仅用于身份识别、服务提供及安全验证等必要用途。
您可以随时通过网站设置或联系客服行使查阅、更正、删除个人信息及撤回授权同意的权利。
六、 免责声明
内容准确性:知识库内容仅供参考,不构成专业建议。我们不对其完整性、准确性、时效性作任何明示或暗示的保证,您应自行判断并承担使用风险。
不可抗力:因自然灾害、政策法规变化、网络故障、第三方平台接口异常(如微信接口维护、运营商短信通道故障)等不可抗力导致的服务中断或延迟,我们不承担违约责任。
第三方链接:本网站可能包含指向第三方网站的链接,该等网站的内容和服务不受我们控制,请您自行甄别风险。
七、 违约责任
如您违反本协议约定,我们有权视情节采取警告、限制功能、暂停服务、注销账号等措施,并保留要求赔偿损失的权利。
如因您的违约行为导致我们遭受行政处罚、第三方索赔或商誉损失,您应承担全部赔偿责任(包括但不限于罚款、赔偿金、律师费、公证费等)。
八、 法律适用与争议解决
本协议的订立、执行和解释均适用中华人民共和国大陆地区法律。
因本协议产生的或与本协议有关的任何争议,双方应友好协商解决;协商不成的,任何一方均可向【公司所在地】有管辖权的人民法院提起诉讼。
九、 其他
本协议构成双方就本服务达成的完整协议,取代此前任何口头或书面约定。
本协议任一条款被认定为无效或不可执行的,不影响其他条款的效力。
我们对本协议享有最终解释权,并在法律允许的范围内保留随时修改的权利。修改后的协议一经公布即生效,继续使用服务即视为同意修订内容。