Holmes: Multimodal Agentic Diagnosis for Mixed-Language Mobile Crashes at Industrial Scale
Holmes 是一个多智能体系统,通过综合多模态运行时信号来重建故障上下文(无需复现),实现了超大规模应用中混合语言移动端崩溃的根因分析自动化,在真实微信数据上达到了 87.6% 的故障定位准确率,并将调查时间缩短了 98% 以上。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下,你是名为 WeChat 的一座巨大且繁忙城市的首席侦探。这座城市拥有数十亿居民和数百万栋建筑(代码行)。每天,都有成千上万栋建筑突然倒塌(崩溃)。
过去,当一栋建筑倒塌时,人类侦探团队必须花费数小时甚至数天的时间来查明原因。他们必须翻阅堆积如山的文书资料(日志),查看蓝图(源代码),并试图重构事故发生的精确瞬间,而通常无法在实验室中重现这场事故。
Holmes 是一个全新的、拥有超能力的侦探团队,旨在秒级解决这些谜团。以下是它的工作原理,我们使用简单的类比来解释:
1. 问题所在:“黑盒”之谜
当移动应用发生崩溃时,就像是在繁忙街道中间有一栋建筑倒塌了。你无法回到过去去观察到底发生了什么。你拥有的只有:
- 残骸: 一份关于建筑倒塌前最后动作的清单(堆栈轨迹/stack trace)。
- 目击者: 崩溃发生前人们说话的记录(日志)。
- 蓝图: 这座城市的庞大说明书(7000 万行代码)。
旧的方法就像是在试图通过阅读整本 7000 万页的说明书来寻找一个错别字。这太慢了。其他方法尝试使用 AI,但它们需要通过在测试实验室中重现崩溃来进行学习,而由于每个用户的手机各不相同且具有隐私性,这在现实中是不可能实现的。
2. 解决方案:Holmes 侦探小队
Holmes 不再是由一名侦探尝试完成所有工作,而是使用由专业特工组成的团队协同工作,就像一个高科技警察局。它采用三步走的过程:
第一步:收集线索(检索团队)
在尝试破解案件之前,团队会立即收集最相关的证据。
- 堆栈代码检索员: 查看“残骸”(崩溃列表),并瞬间抓取发生倒塌处的特定蓝图页面。
- 日志挖掘员: 它不会阅读整整 1 小时的目击证词,而是使用智能过滤器,仅找出导致崩溃前的那 5 分钟对话。
- 线程检查员: 检查城市的其他部分(其他线程)是否干扰了这栋建筑。是否 5 层的施工队不小心拉动了 10 层的支撑梁?
第二步:深度挖掘(探索团队)
有时,崩溃是因为更早之前或建筑不同部分的错误导致的。
- 代码探索员: 这个特工不仅是观察崩溃现场,还会追踪线索。它会追问:“是谁调用了这个函数?”以及“在此之前发生了什么?”它会在庞大的代码库中进行动态搜索,仅获取它需要的特定页面,而不是一次性加载整个库。这使得它能够发现“非局部”缺陷(即远离崩溃发生点的错误)。
第三步:定论(推理团队)
这是负责汇总所有信息的首席侦探。
- 综合分析特工: 它会将残骸、过滤后的目击日志、蓝图页面和干扰报告整合在一起。它使用了一个特殊的技巧:观察底层线索(例如 CPU 寄存器,就像建筑的内部压力计),以弥合业务逻辑(应用应执行的操作)与系统框架(操作系统)之间的鸿沟。
- 然后,它会生成一份最终报告:“崩溃是因为两个工人试图同时使用同一个工具(竞态条件/race condition)。修复方案是添加一把锁。”
3. 为什么它是行业规则的改变者
该论文在真实的 WeChat 崩溃案例上测试了 Holmes。以下是研究结果:
- 速度: 人类解决一个复杂崩溃需要 2-3 小时,而 Holmes 大约只需 77 秒。这实现了 98% 的耗时缩减。
- 准确性: 它在 87.6% 的情况下能正确识别出错误的具体函数(即建筑中的特定房间)。
- 成本: 运行成本极低。运行一次 Holmes 处理崩溃的成本约为 13 美分,相比之下,一名资深工程师花费数小时处理该问题的成本将超过 70 美元。
4. 如何处理“混合语言”难题
现代应用就像是用不同材料建造的房子:有些墙是木头的(Swift/Objective-C),有些是砖块(C++),有些是混凝土(系统框架)。
- 挑战: 当崩溃发生在“混凝土”部分时,“木头”部分往往无法看到问题所在,因为指令使用的是不同的语言。
- Holmes 的妙招: 它使用底层人工制品(如汇编代码和内存快照)作为通用翻译器。它可以追踪问题从高层应用逻辑一直向下延伸到系统层面,即使系统部分的源代码是隐藏(闭源)的。
5. 核心总结
Holmes 将开发者的工作从一名侦探(需要花费数小时寻找线索)转变为一名验证者(只需检查 AI 的报告)。
- 之前: “我不知道为什么这会崩溃。让我去读 5 万行代码然后靠猜吧。”
- 之后: “Holmes 说崩溃是由文件 X 第 149 行的竞态条件引起的。让我来验证一下。”
论文结论指出,该系统在工业规模上运行非常有效,它将一项劳动密集型、缓慢的过程转变为快速、高效的工作流,为公司节省了数百万美元和大量的开发者时间。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。