MAS Agent
AI 自动操作手机:用 MAS Agent 从提示词生成宏
描述一个安卓自动化任务,让 MAS Agent 在模拟器或云设备上探索应用,得到一个经过验证、可在 Studio 中编辑的 Python 宏。
- Windows
- Mac
- 模拟器
- 云手机
- Studio
- MCP
本页目录
MAS Agent 是 Macro Automation Studio(MAS)内置的、能 AI 自动操作手机应用的智能体。你用平常的话描述任务,Agent 就在设备上探索应用,绘制它的屏幕地图,从实时画面截取需要的按钮和读数,然后写出一个带模板图片和 OCR 区域的标准 MAS Python 宏。随后它在同一台设备上用 3 次验证运行检验这个宏,再交给你。从此以后,宏在没有模型参与的情况下重放,不消耗任何积分。
开始之前
- 已安装并登录 MAS,处于免费试用或付费套餐中。参见安装。
- 一台 Agent 可以驱动的设备:已在设备组中添加的运行中模拟器,或处于就绪状态的云设备。
- 要自动化的应用已装在该设备上,并已经通过登录页。
- 账户中有 AI 积分。计费页解释积分如何运作。
用 Agent 开始一次安卓自动化会话
- 在侧边栏打开 Agent。
- 选择设备。列表分为本地模拟器和云设备两组。刚启动的模拟器没出现时,点击刷新设备。
- 选择提供方和模型。云端模型在 MAS 服务器上运行,从你的 AI 积分中计费。
- 在提示框中输入任务,例如”领取每日奖励并关闭所有弹窗”,然后点击编写。
会话在哪里运行取决于设备:
- 本地模拟器: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_code、template、ocr_region、storage、adb_shell、element_visible 和 element_text,每一项带 when: active、idempotent 或 always。验证是冒烟测试:主循环限制为两次迭代。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_macro、get_agent_session、answer_agent_session、stop_agent_session 和 get_map。
故障排查
Agent 提了一个问题并在等待
会话是有意暂停的,计时也停了,所以没有任何消耗。打开聊天标签页,回答卡片并点击发送回答。标记为 “Question expired” 的卡片属于已结束的会话;改在输入框中回复,后续会话会带着完整的对话开始。
验证一直失败
阅读聊天中失败的检查项:一个从未出现的模板、一个没匹配上的 OCR 模式,或一个宏从未保存的存储值。用你知道的信息引导 Agent,或回答它的问题。如果模拟器崩溃了,Agent 会在连续五次设备错误后停止;重启模拟器并在聊天中发消息即可继续。
达到预算上限
会话结束是因为你设置的预算用完了,或者积分余额归零。工作已保存。从订阅页充值积分,或提高预算,然后在同一个聊天中发送后续消息。
下一步
相关页面
谢谢。如果有哪里不对,请在 Discord 告诉我们。
有疑问? 在 Discord 提问