搜索

MAS Agent

AI 自动操作手机:用 MAS Agent 从提示词生成宏

描述一个安卓自动化任务,让 MAS Agent 在模拟器或云设备上探索应用,得到一个经过验证、可在 Studio 中编辑的 Python 宏。

  • Windows
  • Mac
  • 模拟器
  • 云手机
  • Studio
  • MCP
入门 更新于 阅读约 8 分钟
本页目录
  1. 开始之前
  2. 用 Agent 开始一次安卓自动化会话
  3. 阶段:Agent 如何从提示词生成宏
  4. 提问、计划与引导
  5. 预算与积分
  6. 菜单地图
  7. 添加到我的宏
  8. 项目包含什么
  9. 会玩手游的 AI,以及其他任何屏幕操作流程
  10. 故障排查
  11. Agent 提了一个问题并在等待
  12. 验证一直失败
  13. 达到预算上限

MAS Agent 是 Macro Automation Studio(MAS)内置的、能 AI 自动操作手机应用的智能体。你用平常的话描述任务,Agent 就在设备上探索应用,绘制它的屏幕地图,从实时画面截取需要的按钮和读数,然后写出一个带模板图片和 OCR 区域的标准 MAS Python 宏。随后它在同一台设备上用 3 次验证运行检验这个宏,再交给你。从此以后,宏在没有模型参与的情况下重放,不消耗任何积分。

开始之前

  • 已安装并登录 MAS,处于免费试用或付费套餐中。参见安装
  • 一台 Agent 可以驱动的设备:已在设备组中添加的运行中模拟器,或处于就绪状态的云设备。
  • 要自动化的应用已装在该设备上,并已经通过登录页。
  • 账户中有 AI 积分。计费页解释积分如何运作。

用 Agent 开始一次安卓自动化会话

  1. 在侧边栏打开 Agent
  2. 选择设备。列表分为本地模拟器云设备两组。刚启动的模拟器没出现时,点击刷新设备
  3. 选择提供方模型云端模型在 MAS 服务器上运行,从你的 AI 积分中计费。
  4. 在提示框中输入任务,例如”领取每日奖励并关闭所有弹窗”,然后点击编写

会话在哪里运行取决于设备:

  • 本地模拟器:MAS 在你的机器上启动 Agent 引擎(“Starting the agent engine…”)。引擎通过 adb 与模拟器通信,所以模拟器和应用要保持打开。
  • 云设备:会话在 MAS 服务器上、设备旁边启动(“Running on our servers”)。你可以关掉应用,稍后再回来查看;对话保存在你的账户里。云设备始终使用云端模型

每台设备同一时间只能运行一个 Agent。如果另一个聊天正占用同一台设备,MAS 会提供前往那个聊天停止它,在这里继续

阶段:Agent 如何从提示词生成宏

概览标签页显示当前阶段,进度清单用通俗的话跟踪它。

阶段Agent 在做什么你看到的里程碑
SCOUT探索应用,学习它的各个屏幕聊天中的笔记
PLAN写出计划并请你批准”Planning the automation…”
HARVEST在实时画面上裁剪模板图片、测量 OCR 区域”Capturing the buttons and readouts the macro will need…”
CODIFY编写 Python 项目”Writing your macro…”
REVIEW对照观察结果审阅草稿”Reviewing the generated code against what I observed…”
VALIDATE在你的设备上运行宏”Testing the macro on your device…”
REPAIR修复测试发现的问题,然后回到 HARVEST 或 CODIFY”Fixing an issue found during testing…”
DONE交给你结果卡片”Done”,每次运行都通过时显示 “graduated”

问题卡片打开期间,阶段显示为 WAITING_FOR_USER,会话计时暂停。修复受进度约束,而不是受次数约束:当同样的失败在未改动的代码上重复出现时,验证会暂停,直到 Agent 给出新的诊断或向你提问。25 个修复周期的硬上限会结束一个原本会无限循环的会话。

提问、计划与引导

Agent 会提问,而不是猜。当屏幕可能有两种解读,或某一步会花费或销毁某样东西时,它会停下来把问题交给你。

  • 标题为 Agent 需要你的输入的问题卡片包含一到四个问题。选择一个选项或输入自定义答案,然后点击发送回答
  • 计划是这次会话的契约:目标、主循环和成功判定。任何游戏内消费都需要你事先批准一个上限值,Agent 才会在应用里花费任何东西。
  • 想在运行中调整方向,在它工作时在输入框里输入内容并点击引导。消息会进入 Agent 的下一次决策。
  • 停止会立即结束会话。工作会被保存;在同一个聊天里发送后续消息即可继续。

预算与积分

预算面板显示这次会话的步数、积分(或费用)、token 和游戏内消费。预算为 0 表示不限制,每一项默认都是如此:你的积分余额才是真正的限制。余额归零时,MAS 拒绝进一步的模型调用,会话带着已有成果停止。

积分只在 Agent 探索、编写和测试时消耗。完成的宏在任何设备上运行都不消耗积分。Agent 页上的积分读数在会话进行中实时更新,充值积分会打开订阅页。机制见计费页;费率见价格页

菜单地图

地图是 Agent 对一个应用的记忆:它见过的每个屏幕,以及连接这些屏幕的按钮。Agent 工作时地图会自动生长,地图标签页把它显示为一张图,并统计屏幕、跳转、点击和未探索按钮的数量。

  • 绘制此应用地图会有条理地遍历菜单(约 8 分钟);深度遍历会打开更深的菜单(约 20 分钟)。两者都只做导航:遇到任何售卖内容 Agent 都会退出。
  • 共享我的地图会把你的遍历结果与其他绘制同一应用的账户汇总。贡献在被另一个账户证实之前保持私密,你可以在我的贡献下撤回。关闭共享后,你的地图仍然服务于你自己的会话。

添加到我的宏

结果卡片显示完成时,点击添加到我的宏。MAS 在你的项目文件夹中创建项目,把每张模板图片上传到图片库的 agent/ 文件夹下,改写代码中的图片 ID,并初始化 git。聊天随后会提供在 IDE 中打开、在同一台设备上测试运行,以及一张计划卡片(一次每天每周,然后创建计划)。定时运行使用设备卡片上保存的参数。

之后要修改宏,在工作区列表的改进下选中它,描述要添加或更改的内容。Agent 会从现有项目出发,原地更新它。

项目包含什么

文件用途
src/app.py宏本体:mas.images({...}) 注册表、每个屏幕一个函数、主循环
src/script_args.py根据参数表单生成的参数解析器
script_runner.uibproj供 UI Builder 使用的参数表单
images/manifest.json所有采集模板的名称到文件映射;安装后文件仍保留
task.yaml验证规范
agent_session.json记录哪个会话编写了这个项目,供之后的改进会话使用
README.md目标和参数表

task.yaml 记录任务名称、提示词、应用包名、设备、入口前置条件(启动时必须可见的模板)、超时、script_runs: 3、测试参数和检查项。检查类型有 exit_codetemplateocr_regionstorageadb_shellelement_visibleelement_text,每一项带 when: activeidempotentalways。验证是冒烟测试:主循环限制为两次迭代。Studio 的运行时从不读取 task.yaml

安装后,你可以像编辑其他项目一样编辑它:用完整 SDK 修改 src/app.py 里的流程,在 Asset Lab 和图片库中修改模板图片,在代码中修改 OCR 区域,在 UI Builder 中修改参数表单。Studio 导览介绍编辑器、运行和调试器。

会玩手游的 AI,以及其他任何屏幕操作流程

MAS Agent 能处理模拟器和云设备上以屏幕为驱动的流程:探索时遇到的弹窗和打断、用 OCR 读取的计数器和计时器以便宏等待或跳过,以及在设备组上按计划执行同一套流程。对于无法从屏幕读出的决定、开始前的预算,以及任何破坏性操作或购买行为,它都会先问你。

它只从屏幕工作。它从不修改 APK,也不读取游戏内存,并且需要一台它能看见的设备。没有任何自动化工具是 100% 无风险的,请负责任地使用自动化,并自行斟酌决定。

同一个 Agent 也可以通过 MCP 服务器从 Claude Code、Cursor、Codex 和其他客户端访问,它暴露了 author_macroget_agent_sessionanswer_agent_sessionstop_agent_sessionget_map

故障排查

Agent 提了一个问题并在等待

会话是有意暂停的,计时也停了,所以没有任何消耗。打开聊天标签页,回答卡片并点击发送回答。标记为 “Question expired” 的卡片属于已结束的会话;改在输入框中回复,后续会话会带着完整的对话开始。

验证一直失败

阅读聊天中失败的检查项:一个从未出现的模板、一个没匹配上的 OCR 模式,或一个宏从未保存的存储值。用你知道的信息引导 Agent,或回答它的问题。如果模拟器崩溃了,Agent 会在连续五次设备错误后停止;重启模拟器并在聊天中发消息即可继续。

达到预算上限

会话结束是因为你设置的预算用完了,或者积分余额归零。工作已保存。从订阅页充值积分,或提高预算,然后在同一个聊天中发送后续消息。

下一步

相关页面

这个页面有帮助吗?

有疑问? 在 Discord 提问