1. 项目概述一个能“看懂”手机屏幕并帮你干活的智能体如果你曾经幻想过能有一个助手直接在你的手机屏幕上“看到”App界面然后像真人一样点击、滑动、输入帮你完成从“在小红书上找相机推荐”到“去淘宝比价并微信分享”这样一连串复杂的跨应用任务那么MobiAgent就是你正在寻找的那个答案。这不是一个简单的自动化脚本而是一个集成了视觉理解、任务规划、动作执行和记忆学习能力的系统性移动智能体框架。简单来说它让AI学会了“使用手机”。我最初接触这类项目是因为厌倦了在测试和演示中反复进行那些固定、枯燥的手机操作。传统的自动化工具如基于坐标的脚本极其脆弱屏幕分辨率一变、UI布局一改脚本就全废了。而MobiAgent的核心突破在于它让智能体真正“理解”屏幕内容通过视觉模型Vision Language Model分析截图识别出UI元素如按钮、输入框、文本及其语义然后生成符合当前上下文的具体操作指令如“点击‘登录’按钮”、“在搜索框输入‘单反相机’”。这使其具备了强大的泛化能力和适应性。这个框架不仅仅是一个模型它是一套完整的生态系统包含三个核心部分MobiMind智能体模型家族负责“看”和“想”的视觉语言模型是系统的大脑。AgentRR智能体加速框架负责“记”和“快”通过记录和回放成功的操作序列来加速后续相似任务的执行。MobiFlow智能体评测基准一套基于里程碑有向无环图Milestone DAG的评估体系用于科学、量化地衡量智能体的任务完成能力。对于开发者、研究者或者任何对移动端AI自动化感兴趣的人来说MobiAgent提供了一个绝佳的研究和实践平台。你可以用它来构建个性化的手机助手自动化日常繁琐操作或者深入探索具身智能Embodied AI在移动设备上的前沿应用。接下来我将带你深入拆解这个框架从设计思路到实操部署分享我踩过的坑和总结的经验。2. 核心架构与设计思路拆解MobiAgent的设计充分体现了“系统化”思维它不是将一个大模型生硬地塞给手机而是构建了一个分层、解耦、可扩展的智能体系统。理解这个架构是有效使用和二次开发的关键。2.1 分层决策与执行流程MobiAgent的典型工作流遵循“规划-决策-落地”的范式对应其架构中的三个核心服务这种设计借鉴了机器人学中的经典分层控制思想并将其适配到了GUI交互领域。2.1.1 规划层Planner这是任务的总指挥通常由一个具备较强推理能力的纯文本大语言模型如Qwen-4B-Instruct担任。它的输入是用户的自然语言指令例如“帮我查一下明天北京的天气并设定一个晚上8点的提醒”输出是一个高层次的任务分解计划。这个计划不是具体的操作而是步骤描述比如[1. 打开天气应用 2. 查询北京天气 3. 打开时钟应用 4. 创建晚上8点的提醒]。规划层的作用是理解用户意图的复杂性并将其拆解为一系列可顺序执行的子目标。2.1.2 决策层Decider决策层是MobiMind模型的核心能力之一。它接收来自规划层的当前子任务如“打开天气应用”和当前手机屏幕的截图。它的职责是进行屏幕语义理解和原子动作生成。具体来说它需要理解屏幕识别截图中的所有UI元素图标、文本、按钮等及其功能。判断状态结合任务判断当前屏幕是否处于完成任务所需的状态。例如对于“打开天气应用”如果当前屏幕是桌面Decider需要识别出天气应用的图标。生成动作输出一个原子操作指令如tap(icon_weather)点击天气图标。这个动作必须是当前屏幕环境下可执行且最可能推进任务的一步。2.1.3 落地层Grounder在早期版本中Grounder是一个独立的模块负责将Decider生成的抽象动作如tap(icon_weather)具体化为设备可执行的坐标或ADB命令如adb shell input tap 540 1200。它需要精确的元素定位能力。在最新的MobiMind-1.5-4B等模型中Decider和Grounder的功能被整合进一个端到端End-to-End模型即模型直接输出可执行的坐标这简化了流程并减少了延迟。实操心得为什么需要分层直接让一个模型“看完指令和截图就输出点击坐标”是一种端到端思路看似简单但在复杂任务上容易失败且调试困难。分层设计的好处在于模块化与可维护性每一层职责清晰可以独立优化和替换。例如你可以升级Planner模型来获得更好的任务分解能力而不影响Decider。错误隔离与调试任务失败了可以很容易定位是规划不合理、决策错误还是坐标定位不准。引入记忆与加速AgentRR框架主要在决策-落地层面进行加速记录成功的(屏幕状态 动作 结果状态)三元组方便后续检索复用。2.2 记忆系统的设计哲学记忆是智能体体现“智能”和“个性化”的关键。MobiAgent集成了三种记忆分别服务于不同目的2.2.1 用户画像记忆User Profile Memory这是长期、静态的个性化记忆。想象一下你的手机助手如果知道你喜欢性价比高的电子产品、习惯用微信沟通工作、经常浏览小红书那么当你下达一个模糊指令如“找一款相机”时它就能主动倾向于搜索“性价比单反”并在小红书查找最后通过微信分享。技术上这通常通过一个向量数据库如Milvus存储用户偏好特征在规划阶段作为上下文提供给Planner模型。2.2.2 经验记忆Experience Memory这是中期、任务相关的动态记忆。当智能体成功完成一个任务如“在小红书搜索相机并分享”后整个任务轨迹包括规划步骤、每一步的屏幕和动作可以被抽象和存储。未来遇到类似任务时Planner可以直接检索并参考这个“经验包”快速生成规划甚至跳过一些试错步骤。这显著提升了复杂任务的执行效率。2.2.3 动作记忆Action Memory - AgentRR这是短期、操作层面的缓存记忆也是AgentRR框架的核心。它记录的是最细粒度的成功操作对。例如在某个特定的小红书首页界面tap(搜索框)这个动作总是能成功。AgentRR会把这个(屏幕特征 动作)对缓存起来。下次再遇到高度相似的屏幕时直接调用缓存的动作执行无需再调用耗时的Decider模型进行推理。这对于加速应用内固定流程如登录、导航效果极佳。注意事项记忆系统的权衡开启记忆系统尤其是向量数据库和图数据库会引入额外的部署复杂性和运行时开销。对于简单的、一次性的自动化任务可能不需要开启。但对于构建长期服务的个性化助手记忆系统是提升体验的必选项。建议先从基础模式跑通再逐步按需引入记忆模块。3. 环境搭建与核心配置实战纸上得来终觉浅绝知此事要躬行。下面我将以在Ubuntu 22.04系统上控制一台安卓手机为例详细演示如何从零搭建MobiAgent的运行环境。这个过程会涉及Python环境、模型服务、手机调试和记忆组件等多个环节。3.1 基础软件环境准备首先我们需要一个干净的Python环境。使用Conda可以很好地隔离依赖。# 创建并激活一个名为MobiAgent的Python 3.10环境 conda create -n MobiAgent python3.10 -y conda activate MobiAgent接下来安装基础依赖。MobiAgent提供了两个依赖文件requirements_simple.txt: 仅包含运行智能体执行器Runner的最小依赖适合快速体验。requirements.txt: 包含数据收集、处理等全流程工具链的完整依赖。对于大多数只想体验核心功能的用户安装简单版即可pip install -r requirements_simple.txt -i https://pypi.tuna.tsinghua.edu.cn/simple如果你计划进行二次开发或使用全部功能则安装完整版pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple踩坑记录依赖冲突这类项目依赖较多容易发生版本冲突。如果遇到opencv-python、torch等库的安装问题可以尝试先安装PyTorch根据你的CUDA版本再安装其他依赖。例如对于CUDA 11.8pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118然后再安装requirements.txt。3.2 手机端配置与ADB连接智能体需要通过ADBAndroid Debug Bridge控制手机。这是整个流程中硬件相关且容易出错的一步。3.2.1 在电脑上安装ADB工具Ubuntu/Debian:sudo apt install android-tools-adbmacOS:brew install android-platform-toolsWindows: 下载 Android SDK Platform-Tools 并解压将其路径加入系统环境变量。3.2.2 在手机上开启开发者模式进入手机“设置” - “关于手机”连续点击“版本号”7次直到出现“您已处于开发者模式”的提示。返回设置找到新出现的“开发者选项”。在开发者选项中开启“USB调试”。部分手机还需要开启“USB调试安全设置”以允许通过ADB输入文本。3.2.3 安装ADBKeyboard输入法由于ADB默认的输入法在某些场景下无法输入中文或效率低下我们需要安装一个专门的ADB输入法。# 下载APK文件 wget https://github.com/senzhk/ADBKeyBoard/raw/master/ADBKeyboard.apk # 通过ADB安装到手机 adb install ADBKeyboard.apk安装后在手机的“设置”-“系统”-“语言与输入法”-“虚拟键盘”中找到“ADBKeyboard”并启用它。在需要输入时通常需要手动切换到该输入法。3.2.4 连接手机并测试用USB数据线连接手机和电脑。在电脑终端执行adb devices如果看到设备列表中出现你的设备序列号且状态为device则表示连接成功。如果显示unauthorized请在手机弹出的“允许USB调试吗”对话框中点击“确定”。常见问题排查ADB连接失败设备未列出检查USB线是否完好尝试更换线缆或USB接口。重启adb server:adb kill-server adb start-server。一直处于offline状态重新插拔USB线并在手机上重新授权USB调试。无反应部分手机需要在连接模式中选择“传输文件MTP”而非“仅充电”。3.3 模型服务部署与启动MobiAgent依赖多个模型服务。官方推荐使用vLLM进行高性能推理部署它支持连续批处理和PagedAttention能极大提高吞吐量。3.3.1 下载模型权重你需要下载两个核心模型MobiMind模型负责决策Decider和落地Grounder。例如最新的MobiMind-1.5-4B。# 使用 huggingface-cli 下载 (需先 pip install huggingface-hub) huggingface-cli download IPADS-SAI/MobiMind-1.5-4B-0313 --local-dir ./models/MobiMind-1.5-4B规划模型Planner通常使用一个纯文本LLM如Qwen2.5-4B-Instruct。huggingface-cli download Qwen/Qwen2.5-4B-Instruct --local-dir ./models/Qwen2.5-4B-Instruct3.3.2 使用vLLM启动模型服务打开两个独立的终端窗口分别启动Planner和MobiMind服务。终端1 - 启动Planner服务 (端口 8002):conda activate MobiAgent vllm serve ./models/Qwen2.5-4B-Instruct --port 8002 --api-key token-abc123 --served-model-name planner终端2 - 启动MobiMind服务 (端口 8000):conda activate MobiAgent vllm serve ./models/MobiMind-1.5-4B --port 8000 --api-key token-abc123 --served-model-name mobimind参数解释--port: 指定服务监听的端口。--api-key: 设置一个简单的API密钥客户端连接时需要提供。--served-model-name: 指定模型名称在API请求中会用到。如果你的GPU内存不足可以添加--gpu-memory-utilization 0.9来更激进地利用内存或使用--quantization awq加载AWQ量化版本的模型需模型本身支持。3.3.3 验证服务服务启动后你可以通过curl命令测试curl http://localhost:8002/v1/completions \ -H Content-Type: application/json \ -H Authorization: Bearer token-abc123 \ -d { model: planner, prompt: Hello, what is your name?, max_tokens: 10 }如果返回包含生成的文本说明服务运行正常。3.4 可选组件记忆系统部署如果你需要用户画像或经验记忆功能需要部署额外的后台服务。3.4.1 用户画像记忆基于MilvusMilvus是一个向量数据库用于存储和检索用户偏好特征。# 使用Docker快速启动一个Milvus单机实例 docker run -d \ --name milvus-standalone \ -p 19530:19530 \ -p 9091:9091 \ -v /path/to/milvus/data:/var/lib/milvus \ -v /path/to/milvus/conf:/etc/milvus \ milvusdb/milvus:v2.4.0-rc.1启动后需要在项目根目录创建或修改.env文件配置连接信息MILVUS_URLhttp://localhost:19530 EMBEDDING_MODELBAAI/bge-small-zh # 用于生成特征向量的模型 EMBEDDING_MODEL_DIMS384 # 向量维度 OPENAI_API_KEYsk-... # 如果你使用OpenAI的LLM作为Planner OPENAI_BASE_URLhttps://api.openai.com/v13.4.2 图检索增强GraphRAG基于Neo4j对于更复杂的、关系型用户偏好可以使用Neo4j图数据库。docker run -d \ --name neo4j \ -p 7474:7474 -p 7687:7687 \ -e NEO4J_AUTHneo4j/your_password \ -v /path/to/neo4j/data:/data \ -v /path/to/neo4j/logs:/logs \ neo4j:5.23.0同样在.env文件中补充配置NEO4J_URLbolt://localhost:7687 NEO4J_USERNAMEneo4j NEO4J_PASSWORDyour_password注意事项生产环境部署以上Docker命令仅适用于开发和测试。生产环境需要考虑数据持久化卷、网络安全、资源限制和高可用性。务必为Milvus和Neo4j设置强密码并将服务端口19530, 7474, 7687限制在内部网络访问。4. 运行你的第一个智能体任务环境就绪后我们就可以让智能体开始工作了。MobiAgent通过一个“Runner”程序来协调所有组件。4.1 准备任务清单首先我们需要定义想要智能体执行的任务。在runner/mobiagent/目录下找到或创建task.json文件。这是一个JSON列表每个元素是一个任务描述。[ 打开微信找到名为‘技术交流群’的群聊查看最近一条消息, 在手机桌面上找到并打开浏览器应用, 在哔哩哔哩应用中搜索‘科技美学’并进入其主页 ]任务描述应尽可能清晰、具体。避免使用模糊代词如“它”、“那个”因为Planner模型可能无法正确解析指代关系。4.2 启动智能体执行器Runner在配置好任务文件后我们启动核心的Runner程序。这里我们演示最基础的启动方式不使用记忆。# 在项目根目录下执行 python -m runner.mobiagent.mobiagent \ --service_ip localhost \ --decider_port 8000 \ --planner_port 8002 \ --device Android \ --task_file runner/mobiagent/task.json \ --data_dir ./run_results关键参数详解--service_ip: 模型服务所在的IP地址本地运行就是localhost。--decider_port: MobiMind模型服务端口我们之前启动在8000。--planner_port: Planner模型服务端口我们之前启动在8002。--grounder_port: 在MobiMind-1.5-4B等端到端模型中已弃用因为坐标预测功能已整合。--device: 设备类型支持Android和Harmony鸿蒙。--task_file: 任务列表文件的路径。--data_dir: 运行结果包括截图、动作日志、轨迹数据的保存目录。--e2e: 如果使用端到端模型如MobiMind-1.5-4B可以设置为true以跳过独立的Grounder调用加速执行。启动后Runner会依次读取task.json中的每个任务并执行以下循环获取屏幕通过ADB截取当前手机屏幕。调用Planner将用户任务和当前屏幕可选发送给Planner获取任务分解计划。循环执行子任务对于计划中的每个步骤 a. 截屏。 b. 调用DeciderMobiMind传入当前子任务和截图获得动作指令。 c. 执行动作通过ADB发送点击、滑动等命令。 d. 等待界面稳定进入下一步。记录与保存将整个执行过程的截图、动作、模型输入输出保存到data_dir中用于后续分析和调试。4.3 运行多任务协作示例MobiAgent支持复杂的跨应用多任务。这需要启动另一个专门的Runner。例如执行官方Demo中的任务python -m runner.mobiagent.multi_task.mobiagent_refactored \ --service_ip localhost \ --decider_port 8000 \ --planner_port 8002 \ --task 在小红书查找2025年性价比最高的单反相机推荐然后在淘宝搜索该相机并将淘宝中的相机品牌、名称和价格通过微信发送给小赵。这个任务会动态规划涉及三个应用小红书信息获取、淘宝比价、微信通信。Runner需要处理应用间切换、信息提取从小红书结果中提取相机型号和传递将型号填入淘宝搜索框再将结果摘要发送微信。实操心得任务描述的技巧原子化对于简单任务直接描述最终目标如“打开微信”。对于复杂任务可以适度拆解如“给张三发消息说晚上开会”但不要过度拆解成“打开微信-点击通讯录-搜索张三...”这反而可能限制Planner的灵活性。提供上下文如果任务涉及特定联系人、群聊或文件确保它们在手机中存在且名称唯一。例如“发消息给小赵”可能失败因为可能有多个“小赵”而“发消息给‘张三同事’”则更明确。预期管理当前模型能力仍在发展中对于需要高度逻辑推理或创意性操作的任务如“P一张图然后发朋友圈”失败率可能较高。从简单的导航、搜索、信息传递任务开始体验。5. 高级功能解析与性能调优当基础功能跑通后我们可以深入探索MobiAgent的高级特性并对系统进行调优以提升其可靠性、速度和智能化程度。5.1 AgentRR智能体加速框架实战AgentRRAgent Record Replay是MobiAgent中用于提升执行效率的核心组件。其原理是“记录成功回放加速”。5.1.1 工作原理记录阶段在智能体正常执行任务过程中AgentRR会默默记录每一对成功的(屏幕特征 动作)。屏幕特征通常是对截图进行编码后的向量或哈希值。检索阶段当智能体再次遇到一个新屏幕时会先在AgentRR的缓存中搜索是否有视觉上相似的历史屏幕。回放阶段如果找到高度相似的屏幕相似度超过阈值则直接取出对应的历史动作执行绕过Decider模型的推理过程。由于特征匹配和动作回放的速度远快于模型前向传播从而实现了加速。5.1.2 启用与配置AgentRR的集成方式在演进。一种典型的方式是在启动Runner时启用相关参数。你需要查阅agent_rr/README.md获取最新的集成指南。通常它可能涉及以下步骤确保agent_rr模块已安装。在启动Runner时添加--enable_agentrr或类似参数。指定AgentRR缓存数据库的路径。5.1.3 效果与局限效果对于重复性高的操作如应用登录流程、固定界面的按钮点击加速效果非常明显能减少50%以上的模型调用大幅降低任务耗时和云端计算成本。局限如果UI发生较大变化如应用更新缓存的动作可能失效甚至导致错误。因此系统需要设计缓存失效和更新机制。通常可以设置相似度阈值并定期清理旧缓存。5.2 记忆系统的集成与使用5.2.1 启用用户画像记忆要启用用户画像你需要确保Milvus或Neo4j服务已运行且.env配置正确。然后在启动Runner时添加参数python -m runner.mobiagent.mobiagent \ ... (其他参数) \ --user_profile on \ --use_graphrag off # 使用Milvus向量检索。若用Neo4j则设为 on启用后Planner在规划任务时会先查询记忆库将用户偏好信息如“偏好性价比产品”、“常用微信沟通”作为系统提示词的一部分从而生成更个性化的计划。5.2.2 启用经验记忆经验记忆关注的是任务层面的复用。启用方式通常是通过--use_experience参数python -m runner.mobiagent.mobiagent \ ... (其他参数) \ --use_experience当执行一个新任务时Runner会从经验库中检索语义相似的历史任务及其成功执行轨迹并将此轨迹作为示例few-shot插入到给Planner的提示词中引导其生成更可靠、更高效的规划。性能调优建议记忆检索的权衡记忆检索虽然能提升规划质量但也会增加延迟向量检索/图查询时间。在实时性要求高的场景可以考虑异步预加载在用户输入任务前预先加载其相关的用户画像。缓存热点记忆对频繁使用的记忆条目在内存中做一层缓存。设置超时为记忆检索操作设置一个超时时间超时后则降级为无记忆规划保证系统响应。5.3 模型与参数调优5.3.1 模型选型Planner模型对长文本理解和逻辑分解能力要求高。Qwen2.5-4B-Instruct是一个平衡的选择。如果追求更高性能可以尝试Qwen2.5-7B-Instruct或Qwen2.5-14B-Instruct但需要更多GPU资源。MobiMind模型这是专门为GUI理解微调的视觉语言模型。优先选择最新版本如MobiMind-1.5-4B它通常整合了更多数据和改进的架构。注意区分“Mixed”决策落地版本和“Reasoning”可能强化推理版本根据需求选择。5.3.2 vLLM服务参数--max-model-len: 设置模型的最大上下文长度。对于GUI任务截图经过编码后token较长可能需要调高此值如4096或8192。--tensor-parallel-size: 如果有多张GPU可以设置张量并行以加速推理。--gpu-memory-utilization: 控制GPU内存使用率如果遇到内存不足OOM错误可以适当调低如0.8。5.3.3 Runner执行参数--action_interval: 动作执行后的等待间隔秒。给界面足够的响应时间。太短可能导致操作在界面加载完成前触发太长则降低效率。通常设置在1.0到2.0秒之间可根据手机性能调整。--max_steps_per_task: 单个任务允许的最大执行步数。防止智能体陷入死循环。默认值可能为50对于复杂任务可以适当调高。--confidence_threshold: Decider模型输出动作的置信度阈值。低于此阈值的动作可能被拒绝执行要求模型重新思考。这可以提高动作的准确性但可能增加重试次数。6. 故障排查与常见问题实录在实际部署和运行MobiAgent的过程中你一定会遇到各种问题。下面我整理了一份常见问题速查表涵盖了从环境、连接到执行各个阶段的典型坑点。问题现象可能原因排查步骤与解决方案ADB连接成功但Runner报错无法截图1. 手机屏幕锁屏。2. ADB权限不足部分手机需额外授权。3. 屏幕截图服务异常。1. 解锁手机屏幕并设置永不息屏开发者选项内。2. 在手机开发者选项中检查并开启“USB调试安全设置”。3. 手动执行adb shell screencap -p /sdcard/test.png测试截图功能。模型服务启动失败提示CUDA Out of MemoryGPU内存不足。1. 检查是否有其他进程占用GPU。2. 使用更小的模型如从7B换到4B。3. 为vLLM添加--gpu-memory-utilization 0.8参数。4. 使用量化模型如AWQ, GPTQ。5. 考虑使用CPU推理极慢仅用于测试。Planner/Decider服务返回HTTP 404或连接拒绝1. 服务未成功启动。2. 端口被占用。3. Runner中配置的IP或端口错误。1. 检查运行模型服务的终端是否有错误日志。2. 使用netstat -tulnp | grep 端口号检查端口占用情况。3. 确认Runner启动命令中的--service_ip,--decider_port,--planner_port与服务实际地址一致。智能体执行动作错误如点错位置1. Decider/Grounder模型识别不准。2. 屏幕分辨率适配问题。3. 动作间隔太短界面未加载完。1. 检查data_dir中保存的截图和对应的模型预测结果看是识别错误还是坐标转换错误。2. 确保Runner使用的屏幕分辨率与模型训练时适配的分辨率相近。部分模型针对1080P优化。3. 增加--action_interval参数值。任务卡在某个步骤无限循环1. Planner分解出的子任务无法完成。2. Decider无法在当前屏幕找到执行路径。3. 遇到了模型未见过的新UI组件。1. 查看日志确定卡在哪一步。分析当前屏幕和子任务是否匹配。2. 尝试调低--confidence_threshold让模型尝试更多可能。3. 手动干预一次让智能体记录下成功路径如果开启了AgentRR。4. 这是当前技术的局限性需要更强大的模型或人工定义规则处理边界情况。多任务执行时信息在应用间传递失败1. 信息提取从屏幕OCR文本不准确。2. 规划逻辑断层未设计信息传递步骤。1. 检查OCR模块是否正常工作。可以尝试更换或优化OCR引擎如从Tesseract换为PaddleOCR。2. 分析Planner生成的计划看是否包含了“提取品牌和价格”、“切换到微信”、“输入提取的信息”等关键步骤。可能需要优化给Planner的提示词Prompt。启用记忆系统后Runner启动报错1. 记忆服务Milvus/Neo4j未启动或连接失败。2..env配置文件错误或路径不对。3. 依赖库未安装。1. 使用docker ps确认记忆服务容器正在运行。2. 检查.env文件中的连接字符串、用户名、密码是否正确。确保文件在Runner的工作目录下。3. 确认已安装pymilvus,neo4j等客户端库。独家避坑技巧“先跑通再优化”第一次运行时尽量使用最简单的配置单模型、无记忆、简单任务。确保整个数据流ADB截图 - 模型推理 - ADB执行是通的。之后再逐步增加复杂度。善用数据记录Runner的--data_dir参数是你的最佳调试工具。里面保存了每一步的截图、模型接收的Prompt和返回的结果。当任务失败时第一件事就是去这里“复盘”直观地看到智能体“看”到了什么“想”了什么。模拟器是好朋友在真机上反复测试耗电且可能误操作。可以考虑使用Android模拟器如Android Studio自带的AVD。确保模拟器开启GPU加速并使用adb connect 模拟器IP连接。模拟器的屏幕状态更稳定便于调试。Prompt工程微调如果发现Planner总是分解错误或Decider总是点错按钮可以尝试修改它们对应的系统提示词System Prompt。这些提示词通常定义在Runner的代码中如runner/mobiagent/prompts.py。微妙的提示词调整可能带来显著的性能提升。MobiAgent作为一个前沿的开源项目展示了移动端智能体技术的巨大潜力。从环境搭建、模型部署到任务执行和高级功能调优整个过程就像在组装并训练一个数字世界的“实习生”。它目前可能还不够完美执行复杂任务时可能会“犯傻”但它的框架设计是清晰且强大的为后续的改进和定制提供了坚实的基础。无论是用于学术研究还是作为构建个性化自动化工具的起点深入理解和实践这个项目都能让你站在移动AI自动化领域的前沿。