AUITestAgent:自然语言驱动与白盒代理重塑UI自动化测试 📅 2026/6/19 12:11:29 1. 项目概述当UI自动化测试遇上“白盒代理”最近在移动端测试圈子里AUITestAgent这个工具被讨论得挺多。乍一看标题“白盒代理实战解析”很多同行可能会有点懵UI自动化测试不都是黑盒操作吗怎么还扯上“白盒”了这恰恰是AUITestAgent带来的新范式。传统的UI自动化测试无论是基于Appium、Airtest还是其他框架本质上都是通过模拟用户操作点击、滑动、输入来驱动应用然后通过断言页面元素的状态或文本来验证结果。这个过程对于测试脚本而言应用内部的状态、数据流、组件生命周期都是不可见的“黑盒”。而AUITestAgent引入的“白盒代理”思路则试图打破这层壁垒。简单来说AUITestAgent的核心是用自然语言描述测试需求然后通过一个智能代理Agent体系自动将需求拆解为可执行的UI交互序列并在执行过程中利用对应用内部状态白盒的感知能力进行更精准的功能校验。它不再仅仅依赖于屏幕像素和控件属性而是能结合运行时数据、网络请求、甚至组件状态来进行断言。这对于测试复杂业务逻辑、尤其是数据一致性校验的场景比如“检查商品详情页的价格与购物车结算页是否一致”传统方式可能需要跨页面抓取文本再比对而白盒代理可能直接访问内存中的数据模型进行比对更直接、更抗UI变动。这个项目适合谁呢如果你是一名移动端测试开发苦于维护成本高昂、脆弱性强的UI自动化脚本或者是一名追求研发效能的开发者想探索AI如何赋能测试左移亦或是对大模型与软件工程结合落地方案感兴趣的技术人那么AUITestAgent所代表的“自然语言驱动白盒代理”模式都值得你深入了解。它不是在原有UI自动化框架上做简单修补而是试图重构测试用例的编写、执行与验证范式。1.1 核心需求解析我们到底在解决什么痛点要理解AUITestAgent的价值得先看看当前移动端UI自动化测试的几大核心痛点痛点一脚本编写与维护成本高。这是老生常谈的问题。一个简单的“登录-搜索商品-加入购物车”流程测试工程师需要定位每个按钮、输入框的控件ID或XPath编写点击、输入、断言等代码。一旦UI布局改版哪怕只是某个按钮的resource-id变了脚本就可能大面积失效需要人工重新定位元素维护负担沉重。痛点二验证维度单一且脆弱。传统的UI自动化断言大多基于控件是否存在、文本是否匹配、图片是否相似。但对于“功能是否正确”这个核心问题这些往往是间接证据。例如测试“提交订单后订单状态应更新为‘待付款’”。传统方式可能需要等待页面跳转然后在新页面上查找包含“待付款”的文本控件。但如果页面渲染延迟、文本被截断、或者状态更新逻辑有bug但UI错误地显示了旧状态这种基于UI的断言就可能漏测或误报。痛点三测试用例描述与实现割裂。产品经理或业务方用自然语言描述的测试场景如“用户使用优惠券下单应正确扣除优惠金额”需要测试工程师人工翻译成一行行代码。这个转换过程不仅耗时还可能产生理解偏差导致实现的测试用例无法完全覆盖原始需求。AUITestAgent瞄准的正是这些痛点。它的“白盒代理”能力意味着测试代理在操作应用时不仅能“看到”UI还能在一定程度上“理解”应用内部的数据流和状态。其“自然语言驱动”的特性则旨在弥合自然语言需求与自动化脚本之间的鸿沟。所以它的核心需求是提供一个智能体能够理解用自然语言表述的、包含复杂校验逻辑的测试意图并自主地、可靠地在真实应用环境中执行交互与深度验证。1.2 技术范式演进从录制回放到智能代理为了更清晰地定位AUITestAgent我们可以回顾一下移动端UI自动化测试的技术演进路径录制回放时代工具记录用户操作轨迹坐标、手势并生成脚本。优点是上手快缺点是脚本极度脆弱无法适应屏幕分辨率、UI布局的任何变化几乎无法维护。基于控件的框架时代以Appium、Espresso、XCUITest为代表。通过定位控件如ID、XPath、Accessibility Label来执行操作通过控件属性进行断言。这是当前的主流范式解决了设备适配性问题但脚本编写、元素定位和维护依然是主要成本。基于图像识别的时代以Airtest、SikuliX为代表。通过图像模板匹配来定位元素并操作。对游戏或动态控件应用友好但受分辨率、光照、皮肤影响大且无法理解控件语义。大模型赋能探索期利用多模态大模型如GPT-4V的视觉理解能力直接“看”屏幕截图并执行指令。例如告诉模型“点击登录按钮”模型识别按钮位置并返回坐标。这种方式对UI变化有一定容忍度但执行精度、速度、稳定性尚待商榷且成本高昂。智能代理Agent时代这就是AUITestAgent所处的阶段。它不再是单一的工具或模型调用而是一个系统。这个系统内部有分工协作的多个智能体Orchestrator, Interaction Agent, Validation Agent等具备规划、执行、反思、纠错的能力。并且关键的一步是引入了“白盒”信息将UI交互与App内部状态监测结合起来实现更深度的功能验证。AUITestAgent的“白盒代理”范式可以看作是框架时代的稳定性、图像识别时代的直观性、大模型时代的理解能力以及软件白盒测试的深度洞察四者结合的一次大胆尝试。它试图构建一个既能理解高层意图又能进行底层精准操作和验证的“测试智能体”。2. AUITestAgent架构深度拆解多智能体如何协同工作只看概念容易雾里看花我们深入到AUITestAgent的架构内部看看这个“白盒代理”系统具体是如何运转的。根据其论文和开源代码其核心是一个多智能体协作框架主要包含三大核心组件需求解析与规划器Orchestrator、交互代理Interaction Agent、验证代理Validation Agent。此外还有贯穿始终的多维数据提取器作为“白盒”能力的支撑。2.1 核心组件三大智能体的角色与分工1. 需求解析与规划器Orchestrator这是整个系统的“大脑”。它的输入是用户用自然语言描述的测试需求例如“在美团APP中搜索‘火锅’按评分排序查看第一家店的人均价格并确保其在商家详情页和列表页显示一致。” Orchestrator的工作是意图理解利用大语言模型LLM解析自然语言识别出核心的测试动作“搜索”、“排序”、“查看”和校验断言“显示一致”。任务规划将复杂的需求拆解成一个有序的、可执行的子任务序列。比如分解为①启动美团APP②定位搜索框并输入“火锅”③点击搜索④定位排序按钮并选择“评分最高”⑤点击第一个结果项⑥从详情页获取人均价格P1⑦返回列表页⑧从列表项获取人均价格P2⑨断言P1 P2。智能体调度决定每个子任务应该交给哪个智能体Interaction Agent 或 Validation Agent去执行并管理任务之间的依赖和数据传递。注意Orchestrator的规划能力至关重要。一个糟糕的规划可能导致交互步骤冗余、状态混乱甚至执行失败。AUITestAgent在实践中采用了“动态规划”策略即并非一次性生成全部计划而是根据上一步的执行结果和当前屏幕状态动态地决定下一步动作这更贴近人类测试员的操作逻辑。2. 交互代理Interaction Agent这是系统的“手”和“眼睛”。它负责具体执行Orchestrator下发的UI交互指令如“点击搜索框”、“输入文本‘火锅’”、“滑动到评分排序按钮”。 它的核心技术栈是混合的视觉理解结合当前屏幕截图和大模型理解屏幕上有哪些可交互元素及其语义这是“看”的能力。控件定位同时利用Accessibility树Android的UIAutomator/iOS的XCUIElement提供的控件层级和属性信息进行精准定位。这是与传统框架的衔接点保证了操作的稳定性和精确性。动作执行通过ADBAndroid或XCTestiOS等底层驱动执行点击、输入、滑动等操作。 交互代理的难点在于将模糊的指令“点击排序按钮”转化为屏幕上具体的坐标或控件对象。AUITestAgent采用了一种多模态融合的策略既利用大模型的语义理解来应对UI变化比如按钮文字从“排序”变成了“筛选排序”又依赖Accessibility树的稳定属性来保证点击的准确性。3. 验证代理Validation Agent这是系统的“质检员”。当Orchestrator规划中遇到需要校验的步骤时如“确保价格一致”验证代理登场。它的输入是测试需求中的断言描述、当前的应用状态以及多维数据提取器收集到的数据。 它的工作流程是断言解析理解“显示一致”具体指什么数据的一致。数据收集指示多维数据提取器去获取相关数据。例如获取详情页的人均价格和列表页的人均价格。逻辑判断执行比对逻辑P1 P2并生成校验结果通过/失败。 验证代理的强大之处在于其数据来源不限于UI文本。这就是“白盒”的体现。2.2 “白盒”能力的基石多维数据提取策略这是AUITestAgent区别于传统UI测试的核心。所谓“多维数据”指的是从不同层面、不同渠道获取的、用于验证功能正确性的数据。主要包括UI层数据最传统的一层通过OCR识别屏幕文本或从Accessibility树中提取控件文本。例如获取屏幕上显示的“150”。内存/状态层数据通过“白盒代理”注入的代码或钩子Hook直接读取应用运行时内存中的数据结构。例如在React Native或Flutter应用中直接读取某个Widget的state中的数据模型在原生Android中可能通过反射或代理访问ViewModel中的LiveData。这能获取到最源头、最准确的数据不受UI渲染延迟或错误的影响。网络层数据监控应用发出的网络请求和接收的响应。例如在查看商品详情时拦截并解析返回的JSON数据从中提取price字段。这对于验证前端展示与后端数据是否一致非常有效。日志层数据收集应用运行过程中打印的日志Logcat for Android, NSLog for iOS从中提取关键事件或状态信息。验证代理在判断“价格是否一致”时可以综合运用这些数据。例如它可以用内存层数据作为基准真值去验证UI层数据是否正确显示。如果两者不一致就能立刻发现一个前端渲染bug。这种从系统内部获取证据的能力大大提升了测试的深度和可靠性。实操心得实现“白盒”数据提取通常需要对被测应用进行一定的插桩或使用调试接口。在实践落地时这可能意味着需要测试版本的应用具有额外的调试能力或者与开发团队合作注入一个轻量的测试SDK。这是引入此类方案需要考虑的工程成本。3. 实战部署与核心环节实现理解了架构我们来看如何将其落地。AUITestAgent是开源项目我们可以基于它的框架进行部署和定制化开发。以下是一个简化的实战流程。3.1 环境搭建与基础配置首先你需要准备一个基础的移动端测试环境这与传统Appium测试环境类似硬件/模拟器确保有一台可用的Android真机或模拟器推荐Android因工具链更开放。iOS测试需要macOS环境和开发者证书门槛略高。基础工具安装ADB、Java、Node.js取决于项目依赖等。获取AUITestAgent代码从GitHub克隆项目仓库。安装Python依赖项目核心由Python编写使用pip install -r requirements.txt安装依赖其中通常会包含transformers,openai,pillow,uiautomator2等库。大模型API配置AUITestAgent严重依赖大语言模型进行意图解析和规划。你需要配置一个LLM的API密钥例如OpenAI的GPT-4或国内可用的等效大模型API如文心一言、通义千问的API。在项目配置文件中设置API_KEY和BASE_URL。# 示例克隆项目 git clone https://github.com/bz-lab/AUITestAgent.git cd AUITestAgent # 安装依赖请以实际requirements.txt为准 pip install -r requirements.txt # 编辑配置文件 config.yaml vim configs/config.yaml # 填入你的大模型配置例如 llm: provider: openai # 或 qwen, ernie等 api_key: sk-... base_url: https://api.openai.com/v1 model: gpt-4o # 根据实际情况选择模型3.2 核心环节一编写与解析自然语言测试用例与传统编写test_login.py脚本不同现在你只需要一个文本文件例如test_cases.txt里面用自然语言描述用例用例1在美团APP中搜索“星巴克”选择第一个结果查看其“门店状态”确认状态不是“休息中”。 用例2在小红书APP中发布一篇标题为“今日穿搭”的笔记内容包含图片[test_image.jpg]发布后检查该笔记是否出现在“我的”页面列表中。AUITestAgent的Orchestrator会读取这些描述。其内部流程大致如下Prompt工程系统会构造一个精心设计的Prompt将用户需求、当前任务上下文如有、以及可用的操作指令模板如tap(element),input(text),swipe(direction)一起提交给LLM。结构化输出要求LLM输出结构化的任务规划例如JSON格式包含action,target,validation等字段。这保证了机器可解析性。示例对于“搜索‘星巴克’”Orchestrator可能输出{ step_id: 1, action: input_text, target_description: 顶部的搜索输入框, parameters: {text: 星巴克}, validation_needed: false }注意事项自然语言描述的精确性直接影响测试效果。模糊的指令如“找到咖啡店”可能让模型困惑。应尽量使用应用内通用的、明确的元素描述如“顶部的搜索框”、“右下角的‘我的’选项卡”、“商品列表的第一个项目”。在项目初期积累一个清晰的“描述词库”对提升成功率很有帮助。3.3 核心环节二交互代理的精准操作实现交互代理拿到如{action: input_text, target: 顶部的搜索输入框}的指令后如何执行屏幕感知首先通过ADB命令adb shell screencap或uiautomator2的接口获取当前屏幕截图和Accessibility树XML格式。多模态元素定位视觉定位将截图和指令中的“顶部的搜索输入框”描述发送给多模态大模型如GPT-4V请求其返回该元素在图片中的边界框坐标。这种方法灵活但可能慢且不准。属性定位同时解析Accessibility树寻找符合“输入框”、“可点击”、“位于屏幕上方”等特征的节点。可以结合节点的class如android.widget.EditText、text、resource-id如com.meituan:id/search_bar等属性。融合决策AUITestAgent会综合两种定位结果。如果Accessibility树中有明确的、唯一的resource-id匹配则优先使用因为这是最稳定的方式。如果只有模糊的文本描述则依赖视觉定位的坐标并可能结合Accessibility树中坐标相近的节点进行二次确认。动作执行定位到具体控件或坐标后通过uiautomator2库执行click(x, y)或set_text(text)等操作。# 伪代码示意交互代理的核心逻辑 def interaction_agent(action_plan, current_screen): # 1. 获取当前状态 screenshot get_screenshot() ui_tree get_accessibility_tree() # 2. 定位目标元素 target_element None # 尝试通过属性精准定位 if action_plan[target].get(resource-id): target_element find_element_by_id(ui_tree, action_plan[target][resource-id]) # 如果未找到使用多模态模型进行视觉定位 if not target_element: bbox call_vlm(screenshot, f定位{action_plan[target_description]}) target_element find_element_by_bbox(ui_tree, bbox) # 3. 执行动作 if action_plan[action] input_text: target_element.set_text(action_plan[parameters][text]) elif action_plan[action] tap: target_element.click() # ... 其他动作3.4 核心环节三验证代理与白盒数据提取这是体现“白盒代理”威力的环节。假设当前任务是验证“门店状态不是‘休息中’”。验证代理触发Orchestrator在规划中标记此步骤需要验证将控制权交给验证代理。断言解析验证代理分析断言“状态不是‘休息中’”它需要获取“状态”这个数据。多维数据提取UI提取验证代理可能首先尝试从当前屏幕商家详情页上通过OCR或控件树查找包含“营业状态”、“状态”等关键词附近的文本。例如找到文本“营业中”。白盒提取如果配置了同时如果被测应用集成了数据采集SDK验证代理可以通过一个安全的RPC通道或读取共享内存直接请求应用内部关于该店铺的storeStatus字段值。这个值可能是一个枚举如OPEN。数据比对与断言验证代理拿到UI文本“营业中”和内存数据OPEN。它需要知道“营业中”和OPEN是等价的而“休息中”对应CLOSED。这可能需要一个预定义的映射表或者由LLM进行语义理解。最终进行逻辑判断UI_TEXT ! “休息中”且MEMORY_STATUS ! CLOSED。如果白盒数据存在其优先级通常高于UI数据因为它是数据源。实操心得白盒数据提取的集成是项目落地的难点。一个可行的渐进式策略是初期先只使用UI层数据进行验证保证核心流程跑通。然后与开发团队协作在测试包中为关键业务数据如价格、库存、状态暴露简单的调试接口例如通过adb shell am broadcast发送指令应用将当前页面关键数据以日志形式输出。这样验证代理就能通过解析日志来获取白盒数据实现从“灰盒”到“白盒”的过渡。4. 项目实战中的挑战与优化策略将AUITestAgent这样的前沿研究应用到实际项目中必然会遇到一系列挑战。下面结合我个人的实践和社区反馈梳理出几个关键问题及应对思路。4.1 稳定性挑战如何应对动态UI与网络波动问题描述移动端UI是动态的。加载动画、弹窗升级提示、权限申请、网络延迟导致的页面状态变化都会干扰交互代理的定位和操作。例如代理刚定位到“搜索按钮”一个弹窗突然出现覆盖了它导致点击失败。优化策略增加智能等待与状态感知交互代理不应在操作后立即进行下一步。应实现一个“状态稳定”检测机制。例如在点击后等待直到屏幕内容停止变化通过对比连续几张截图的差异度并且没有“加载中”之类的控件出现再进行下一步定位和操作。异常处理与重试机制为每个操作步骤如click,input包装健壮的异常处理。如果操作失败如元素未找到、点击无响应不应立即终止测试。可以重试原地重试2-3次。滚动查找如果是因为元素不在当前视窗自动触发滑动操作后再查找。上下文恢复如果上述都失败记录当前状态尝试回退到上一个已知的稳定页面如主页然后重新执行后续任务链或触发人工干预。弹窗处理策略维护一个“常见干扰弹窗”的知识库。在每次主要操作前先检查屏幕上是否出现了已知的弹窗如通过特征图像或关键字识别如果出现则自动执行关闭操作如点击“知道了”或“取消”。4.2 成本与性能大模型API调用如何优化问题描述AUITestAgent严重依赖LLM和VLM视觉大模型每一步规划和定位都可能产生API调用。使用GPT-4o等高级模型成本高昂且网络请求会带来显著的延迟影响测试执行速度。优化策略模型分级使用并非所有步骤都需要最强模型。规划器Orchestrator处理复杂的自然语言解析和全局规划可以使用能力较强的模型如GPT-4。元素定位对于有明确resource-id的控件完全不需要调用VLM直接使用属性定位。只有对模糊描述或动态生成的控件才启用VLM辅助定位。可以考虑使用更小、更快的开源VLM如Qwen-VL来处理大部分定位任务。验证逻辑简单的相等、包含判断完全可以用规则引擎处理无需调用LLM。只有复杂的语义验证如“评论内容是否积极正面”才需要LLM。缓存与记忆对于同一个应用很多页面结构和元素是重复出现的。可以建立一个元素描述到定位信息的缓存。例如首次成功定位“美团的搜索框”后将其resource-id或稳定的视觉特征缓存下来。下次再需要定位“搜索框”时优先使用缓存信息避免重复调用VLM。本地模型部署对于追求极致成本和速度、且对精度要求可接受降级的场景可以考虑在本地部署中小规模的LLM如Llama 3.1 8B、Qwen 7B和VLM虽然能力稍弱但能实现零API成本、低延迟的测试。4.3 可维护性与扩展性如何管理测试用例与领域知识问题描述自然语言用例看似简单但散落在文本文件中缺乏结构不利于版本管理和批量执行。此外不同应用美团、小红书的界面术语和业务逻辑不同如何让Agent理解这些领域知识优化策略结构化用例管理虽然输入是自然语言但内部可以设计一个结构化的用例描述格式如YAML将测试标题、前置条件、操作步骤、预期结果、所属应用、优先级等信息组织起来。test_case: id: TC_MEITUAN_001 app: com.meituan title: 验证搜索结果的排序功能 steps: - action: launch_app - action: input_text target: 顶部搜索框 params: {text: 火锅} - action: tap target: 搜索按钮 - action: tap target: 排序筛选栏 - action: tap target: 评分最高选项 validations: - description: 列表第一个项目的评分应高于或等于第二个项目 type: custom_script script: validate_rating_order()这样既保留了人类可读性又便于程序化处理和集成到CI/CD流水线。构建应用专属知识库为每个被测应用创建一个“知识库”文件。里面可以包含控件别名映射将自然语言描述映射到稳定的resource-id。例如顶部的搜索框: com.meituan:id/search_bar。页面状态定义描述关键页面的特征用于导航和断言。例如商家详情页: 包含元素[idshop_name且页面标题不为空]。业务规则以LLM能理解的格式描述业务逻辑。例如当商品库存为0时‘立即购买’按钮应变为灰色不可点击状态。 在测试开始时将当前应用的知识库加载到Orchestrator的System Prompt中能极大提升规划与定位的准确性。5. 典型问题排查与效果评估指南在实际运行AUITestAgent或类似智能测试代理时你会遇到各种问题。下面是一个常见问题速查表以及如何评估这套系统是否真的带来了价值。5.1 常见问题排查实录问题现象可能原因排查步骤与解决方案Agent一直“思考”不执行1. LLM API请求超时或失败。2. Orchestrator的Prompt过于复杂导致LLM响应慢或卡住。3. 网络连接问题。1. 检查API密钥和网络查看LLM调用日志是否有错误。2. 简化Prompt将复杂任务拆分成更小的步骤输入。3. 为LLM调用设置合理的超时时间如30秒并实现重试机制。交互代理点击错位置1. 视觉定位VLM不准。2. Accessibility树解析有误控件属性动态变化。3. 屏幕分辨率或缩放导致坐标计算错误。1. 开启调试截图查看Agent认为它点击的位置是否高亮显示。优先尝试使用resource-id定位。2. 使用uiautomator2的dump命令查看实时控件树确认目标控件的属性。3. 确保ADB获取的屏幕分辨率与设备实际分辨率一致坐标转换正确。验证代理断言失败但人工查看UI是正确的1. UI数据提取失败OCR识别错误、控件文本未及时更新。2. 白盒数据与UI数据存在合理的异步延迟。3. 断言逻辑过于严格如字符串完全匹配忽略了空格或标点。1. 检查验证代理获取到的原始UI文本是什么可能与显示略有不同如包含不可见字符。2. 在断言前增加一个显式等待确保数据已同步。3. 改用模糊匹配或语义相似度判断而非精确字符串匹配。测试流程在中途卡住无法继续1. 应用进入了未预期的状态如崩溃、弹窗。2. Agent的规划逻辑出现循环或死锁。3. 上一步操作未达到预期效果但Agent未检测到。1. 实现一个“看门狗”定时器如果长时间无进展则强制截图并记录日志然后尝试重启应用或测试。2. 在Orchestrator中限制最大步数避免无限循环。3. 强化每一步的“效果验证”。例如点击登录按钮后应验证是否跳转到了登录页面或出现了错误提示而不仅仅是执行了点击动作。自然语言用例执行结果不稳定1. 自然语言描述存在二义性。2. LLM对同一指令的理解存在随机性。3. 应用UI本身存在随机内容如广告、推荐位。1. 规范用例描述语言使用更精确的词汇用“点击”而非“按”用“输入框”而非“空白处”。2. 在Orchestrator中使用更低的“温度”temperature参数减少LLM输出的随机性。3. 在用例中排除非确定性的UI区域或让Agent学会忽略它们。5.2 效果评估我们如何衡量成功引入一套新技术必须评估其投入产出比。对于AUITestAgent这类智能测试代理可以从以下几个维度评估用例编写效率提升对比编写一个中等复杂度的UI自动化脚本Python Appium所需时间与用自然语言描述同一用例所需时间。理想情况下后者应为前者的20%-50%。脚本维护成本降低选取一批现有UI自动化脚本模拟一次中等规模的UI改版如修改了10个页面的部分控件ID。统计传统脚本需要修改的代码行数和时间再统计AUITestAgent自然语言用例需要修改的数量很可能为零如果描述不依赖具体ID。维护成本降低是其主要优势。缺陷发现能力在回归测试中对比传统UI自动化测试和智能代理测试发现的缺陷数量和质量。重点关注智能代理是否能发现一些传统脚本难以覆盖的、与数据逻辑或状态流转相关的深层bug。执行成功率与稳定性在可控环境中固定设备、网络运行一组标准测试用例集计算测试通过率。初期可能较低如70%需要通过上述优化策略逐步提升到可接受水平如95%以上。综合成本计算单次测试执行的平均耗时和API调用成本。虽然单次可能比传统脚本慢且贵但如果它能替代大量的人工探索性测试或覆盖更复杂的场景其综合成本可能是更优的。我个人在实践中的体会是AUITestAgent所代表的范式其最大价值不在于完全替代现有的、稳定的、用于核心流程回归的UI自动化脚本。它的主战场在于快速覆盖长尾测试场景、应对频繁的UI迭代、以及执行那些需要一定“智能”和理解能力的复杂验证任务。将它作为传统自动化测试体系的一个有力补充在特定场景下发挥其“降本增效”和“深度探测”的优势是目前更务实的落地方式。