13 KiB
name, description
| name | description |
|---|---|
| artemis-automation | 使用 ARTEMIS MCP 完成 Android 与已授权插件支持的电脑或跨端测试、批量执行、失败诊断、历史检索与报告交付。适用于用户希望 AI 通过 ARTEMIS 执行测试或分析其结果。 |
ARTEMIS 自动化
当前仅提供 Codex MCP 配置安装与更新:uv run artemis mcp --install codex;模板使用 uv run artemis mcp --generate-config codex 查看。启动日志会打印实际 Codex 配置路径,更新后重载 MCP。
Windows 启动脚本只提示源码更新。升级使用 update.bat(国内镜像 update-cn.bat),会终止该项目的 ARTEMIS 服务、MCP 和运行任务;仅在用户授权升级或终止任务后执行,先告知任务将中断。升级会同步依赖、网页及 Codex MCP,保留配置和历史;完成后启动 ARTEMIS 并重载 Codex MCP。不要通过启动脚本拉取源码或强行覆盖本地修改。
使用项目提供的 MCP 工具发起任务,Android 及已启用插件由 ARTEMIS 自己编排。报告由 ARTEMIS 生成,不要求宿主 AI 具备 Codex 私有工具、Word 或 Excel 插件。电脑/浏览器能力取决于实际安装并授权的插件,不提供历史动作脚本回放。
插件与跨端任务
先用 mobile_workspace 查看实际插件、连接配置与资源保护状态。插件安装、凭据与授权在网页「插件」页完成;MCP 只引用已保存的配置,不接收密钥。网页显示已启用不等于插件已经通过真实场景验证。
单任务 runtime_overrides 和每条批次用例的 task_config 支持 execution_target(android、computer、mixed)及 plugins(如 [{"id":"open-computer-use","profile":"default"}])。普通安卓任务无需设置 execution_target,AI 可按需调用支持 mixed 的扩展插件。省略 plugins 使用已启用、已授权的默认配置;[] 禁用插件。纯电脑任务不要求 Android,也不传 device_serial;混合任务仍需选择手机。完整参数与清单见 插件任务参数。
同一桌面或路由器上的任务串行。暂停要等插件取消并确认停止后才释放资源;恢复时先观察当前状态。远程操作超时或中断可能已经生效,不自动重试写操作;资源处于保护状态时告知用户核对远程动作后从插件页面解除。插件配置和版本在排队、暂停、运行期间固定,变更范围需结束任务后修改配置。
将电脑与手机证据分别说明。插件调用成功不等于预期效果达成;截图被遮挡、窗口隐藏或观察只有文字时,不假设具备有效像素证据。任务的通过/不通过及人工复验继续沿用现有规则。
从需求到执行
- 明确目标、预期结果、目标应用和必要前置条件。用户已授权执行且信息足够时直接开展,不逐步索要批准;缺少会改变业务操作的条件时再询问。用例起点按实际需求安排,不默认清数据、重装、重启应用或退出登录。
- 用
mobile_workspace查看设备和队列。沿用用户已指定的设备;多台可用设备且没有选择时先询问,不擅自挑选实体手机。任务参数显式传入device_serial。同设备串行,不同设备可并行;本 Skill 不要求创建其他 AI 子代理。 - 首次使用、工具出错、任务拒绝或设备异常,先
mobile_diagnose。按next_steps的依赖顺序处理;attempt_fix=true可尝试工具自带修复。只有凭据相关故障才使用verify_credentials=true,观察异常才使用probe_device=true。不要盲目重发任务。MCP 不可用时在项目目录运行uv run artemis doctor并检查宿主 MCP 日志。 - 选择执行模式:Flash 适合路径明确的界面操作;Pro 适合动态分支、持续计划、ADB/日志诊断或需要 Checker 明确校验的任务。
mobile_run_task.model的flash/pro是执行模式,不是 API 模型名称。步数长不自动等于需要 Pro;视频能力只有显式启用后才可用。 - 单任务用
mobile_run_task;批量任务用mobile_batch,读 批量任务与交付。AI 可直接提交结构化用例,不必先创建 Excel。用户提供 Excel 时先mobile_task_file(action="preview", path=绝对路径),修正所有行错误后提交。提示词列原样作为目标,前置约束列只作元数据。 - 单任务返回
trace_id后,用mobile_manage_task(action="status", trace_id=...)跟踪;网页任务也可用其任务编号。批次用mobile_batch(action="get", batch_id=...)。需要人工补充时用pause,其返回的pausing只表示请求已接收;轮询到task_paused才表示设备已释放。inject_instruction会立即取消进行中的模型回复或只读诊断并重新观察手机,已开始的设备动作会先安全结束;暂停中提交则恢复。guidance_history的pending/consumed区分提交和执行端领取,无新指导用resume。恢复进入设备 FIFO 队尾并重新观察手机状态。尊重工具建议的等待周期,避免连续高频轮询;停滞或失败先诊断,不把同一业务任务自动重提。
结果、证据与交付
- 执行状态与业务判定分开:
completed只说明执行结束,不等于测试通过。Flash 和 Pro 默认根据任务提示词、用户指导、执行结论和实际证据进行只读终检,不需要另填预期结果。读取test_result.status(passed通过、failed不通过、inconclusive未验证、blocked阻塞)、reason与evidence,结合验证摘要和mobile_inspect_trace的步骤/截图交付结果。执行失败不能直接认定产品缺陷;已确认的断言失败不得被后续成功覆盖。终检关闭、出错或证据不足时不得宣称通过。 - 用
mobile_export_report(session_id=...)获取单任务报告;formats=["screenshots"]获取排序截图,["video"]获取保存的录屏分段,["all"]获取 Word、Excel 和所有可用资料的 ZIP。批次传batch_id获取汇总、各项任务报告、步骤截图及已有录屏的 ZIP。未指定格式时使用保存的 Word/Excel 偏好。执行中的导出只是当前快照。 - 工具返回 MCP 主机上的绝对文件路径和下载 URL。向用户交付真实生成的文件链接,并说明完成、失败、未验证、跳过数量及重要限制。不要只说“报告已生成”而不交付文件。
安卓截图和文件
- Flash/Pro 任务内部均提供
android_file,由任务已分配的 Android 设备执行。外层 MCP 使用现有mobile_run_task提交目标,不直接绕过任务队列传文件。 - 保存当前手机画面使用
action="screenshot";原生 PNG 默认位于traces/<trace_id>/artifacts/android/。明确要求保存电脑桌面时用destination="desktop",同时保留 trace 副本;无需电脑插件或截图快捷键。自动步骤截图原本保存在traces/images/,不能把旧截图当作新的截屏结果。 list、read_text、write_text的device_path是 Android 绝对路径;文本使用 UTF-8,单次不超过 64 KiB。pull下载手机文件,push将 trace 中的文件或用户指定的桌面文件上传手机,单文件不超过 64 MiB。filename仅是文件名,不能传 Windows 路径;目录由destination选择。不能绕过 Android 的应用私有目录权限。- 保存、上传和下载会校验内容,已有文件默认不覆盖。只有工具成功并返回真实路径/校验结果后才可宣称保存成功;截图内容是否符合测试预期仍需核对。单任务“全部资料”及批次 ZIP 包含这些文件,位于
任务文件/安卓/。 - 用
mobile_search_history按名称、目标、编号或标签搜索全部历史;日期先按用户时区转换为 Unix 秒,start含边界、end不含边界。按返回的total/page/size翻页,不能把第一页当作全部历史。 mobile_inspect_trace是只读步骤证据查看;其中历史上下文的 replay 术语不表示重新执行设备动作。
配置和恢复边界
-
本机常见模拟器在设备刷新、启动及重启 ADB 后自动发现并连接,不必猜固定端口。USB 与 Android SDK 模拟器由 ADB 原生发现。首次连接其他 TCP 设备/无线手机时,在网页“无线 ADB”填写实际地址和端口,成功后程序保存地址并自动重连;无线调试的配对和授权仍由用户完成,端口变化后需重新连接。远程/转发 ADB 不执行本机发现。用
mobile_workspace或mobile_diagnose检查自动连接结果;多设备时仍先确认用户要测试哪台。默认开关及扫描预算可由mobile_config(section="capabilities")的adb_auto_connect、adb_discovery_interval_seconds(10)、adb_discovery_timeout_seconds(5)配置,修改全局默认需要用户授权。 -
mobile_config读取非敏感设置。只有用户明确要求保存或修改默认配置时,才传changes与persist_defaults=true;这些设置影响后续任务,不能为一次临时需求擅自改变以后所有任务。 -
模型名称支持预设
gpt-5.6-luna、gpt-6-luna、mimo-v2.6-flash、mimo-v2.6-pro和自定义名称,取决于用户配置的 Responses 网关。思考强度最高支持max,默认high、单次请求 300 秒、失败后最多重试 5 次;普通错误每次等待 10 秒,429 每次等待 60 秒。首选模型连续 3 次未形成有效工具调用时,当前步骤改用gpt-6-luna(high),兜底最多再尝试 3 次;下一步恢复首选模型。默认关闭视频分析与录屏。不根据模型名称猜测网关能力。 -
强度选
default表示不发送该参数,和none(显式要求关闭)不同。接口拒绝强度参数时明确呈现失败,先询问用户是否改用default,不能静默降级或换模型。 -
API Key 只通过网页或
.env配置。不要请求用户把 key 发到聊天中,不读取/回显已有 key。保存后新任务生效;直接编辑环境文件后需重启相应服务,运行中的任务保留自己的配置。 -
429 等待和兜底参数可在网页模型配置或经用户明确授权的
mobile_config(section="model", persist_defaults=true)保存;当前任务不热切换。录屏与 AI 视频分析分别配置。批量任务的task_config可覆盖单项,不修改全局设置;只开视频分析时录制内容不作为可下载文件保存。暂停时停止录屏,恢复后按片段继续,不能把其他任务画面混入该任务资料。 -
请求重试是模型调用恢复,不是测试用例重跑。批次默认失败继续、不自动重跑;服务重启后保留状态并暂停,用户明确要求后才继续或复制失败项。
-
批次暂停只停止后续派发;当前任务等待指导时用
mobile_manage_task(action="pause", trace_id=...),真正取消用stop。用户明确要求删除批次记录时先mobile_batch(action="get")核对编号,再用delete;执行中/排队中的批次不能删,删除会清除该批次的任务历史、报告和文件。服务重启后运行/暂停的任务标记中断,不自动重跑。停止可能保留已经产生的业务效果,不声称自动回滚。
需要编写外部可执行测试代码时,先通过 ARTEMIS 实际探索目标应用,确认页面、定位器和转换。优先动态定位,框架支持时才以已验证坐标兜底;在最终脚本中明确等待条件,不将 AI 思考耗时当作确定性等待。
执行保护默认总时限 1800 秒,单任务、批次和 MCP 都适用,排队及用户暂停不计时。设备观测默认 60 秒、最多 3 次,ADB 命令默认 10 秒;观测失败不会继续向模型发送占位图或旧元素索引。Flash 连续 3 次动作失败先重新观察再切换兜底,兜底仍失败则结束任务并保存原因。不能以提高步数或反复重提任务代替设备诊断。
mobile_run_task(runtime_overrides={"timeout_seconds":1800,"observation_timeout_seconds":60,"observation_max_attempts":3,"device_command_timeout_seconds":10,"action_failure_attempts":3}) 可为单任务覆盖执行保护;其中 model 是 API 模型名,外层 model 仍是 Flash/Pro 模式。相同字段也支持批次的 task_config。全局默认通过网页功能配置或明确授权的 mobile_config(section="capabilities", changes={"task_timeout_seconds":1800}, persist_defaults=true) 保存,对后续任务生效,不接受密钥。
任务已经产生最终结果,但 SDK 线程或资源清理仍卡住时,默认最多再等待 30 秒后回收工作进程,避免继续占用队列。全局可用 ARTEMIS_WORKER_CLEANUP_TIMEOUT_SECONDS 或功能配置的 worker_cleanup_timeout_seconds 调整,任务 JSON 同名字段可覆盖。原有结果与截图保留,未完成保存的录屏尽力恢复。