Files
Artemis-Eapil/docs/automation-workspace.md

18 KiB
Raw Permalink Blame History

报告、批量任务与历史检索

工作区右侧或顶部的 报告与自动化 入口包含结论报告、批量任务。历史任务在任务队列中按浏览器本地日期分组,支持名称、目标、编号和标签搜索,以及日期、状态筛选和分页。

多页面与加载排查

同一浏览器、同一服务地址的可见页面共享一条任务实时连接;持有连接的页面关闭后,其他页面自动接管。后台页面暂停实时订阅和设备画面预览,返回前台时重新读取任务状态、步骤和结论,不影响后台任务执行或录屏。旧浏览器不支持共享连接时,仍会释放后台页面的实时连接。

配置读取、状态和队列轮询有 15 秒的网页请求时限,重复轮询不会堆积;它与模型执行超时无关。若升级后旧页面一直显示“正在读取配置”,而后端诊断正常,请先保存尚未提交的输入,关闭旧 ARTEMIS 标签页,再重新打开网页。重启后台不会替换已打开页面中的旧脚本,旧版页面的长连接可能占满浏览器连接额度,拖慢其他页面。

导出结论报告

选择已有任务,在“报告与质量”中下载 Word、Excel、按步骤排序的截图 ZIP、录屏分段 ZIP,或一键下载包含上述文件和清单的资料 ZIP。只有启用并成功保存录屏的任务才有录屏可下载。默认报告格式为 Word 和 Excel;勾选所需格式并保存,后续提交使用新的默认值。

报告包含目标、预期结果、执行状态、验证结论、实际输出和步骤证据。Word 内嵌关键截图,Excel 包含结果与证据工作表;任务输出中的 Markdown 表格会转换为真正的文档表格和 Excel 工作表。

“执行完成”与测试结论分开记录。预期直接写在任务提示词中即可;Flash 和 Pro 默认用只读终检核对提示词、用户指导、执行结论及实际证据,不增加必填表单。任务列表显式标注“测试通过 / 测试不通过 / 未验证 / 测试阻塞”,结果区域和 Word/Excel 同时列出判定依据及证据。终检关闭、出错或缺少证据时显示“未验证”,设备或执行异常不当作产品缺陷;已确认的断言失败会保留。正在执行的任务也可以下载,但文件只代表下载时的快照。

终检已输出完整且符合结构的结论时,直接校验并保存,不额外请求模型改写格式;若兼容接口把 test_result 编码为 JSON 字符串,会先解码再按同一规则校验。普通说明文字、被截断的输出、缺少检查项或证据的结果不会直接算通过。判定范围以提示词为准:明确要求“发现并如实报告问题、不要求无缺陷”的检查任务通过,不表示被测产品没有缺陷。

报告由项目自己的 python-docx、openpyxl 生成,不依赖 Codex 客户端的私有工具。输出保存在 artifacts/reports/。

任务结束后,可在“用例测试结果”中点击“人工复验”,确认通过或不通过,备注选填。复验会保留原 AI 结论和历次复验记录,不改变任务的执行状态。任务队列、单任务报告和批次汇总采用最近一次人工结论,标明“人工确认”;未复验的结论标明“AI确认”。复验后下载的报告包会重新生成。

任务队列的“任务范围”可筛选全部批量任务、单独任务或指定批次,日期、搜索和状态筛选可同时使用。点击批次内的用例会在左侧打开执行记录,右侧保留批次列表;可用“在任务队列查看此批次”集中查看,进入单任务报告后也可返回原批次。

模型请求等待与排查

执行记录显示正在等待服务响应、等待有效输出、生成工具参数、接收输出或等待重试,并显示本次请求耗时和超时上限。生成工具参数时显示工具名、累计参数字符数和最后输出距今时间,此时本次工具尚未执行。HTTP 200 只表示服务开始响应,不代表模型输出完整或设备动作已执行。并行的执行、检查、步骤整理请求分别标记;兜底模型明确标注。网络中断导致诊断更新失败时,页面会提示当前展示的是上次记录。

展开“模型请求诊断”可查看最近 100 次尝试的模型、思考强度、本地请求编号、尝试编号、服务端请求编号(如有)、开始/响应头/首个有效输出/最后输出/结束时间,以及错误类型、阶段、图片数量与尺寸和服务报告的 token 用量。有效输出片段按客户端接收计数,与服务端 SSE 事件数口径不同;工具参数只记录字符数和工具名,不保存参数正文。输出 token 上限来自该调用的 max_tokens 配置,未设置时明确标注由服务决定;它与 300k 上下文限制不同。未报告的用量显示“未知”;旧任务未记录的字段无法补推。页面按本机时区显示,完整 JSON 同时保留 Unix 秒和 UTC 时间,方便与服务端日志对照。

诊断可单独下载,也会收录到单任务“全部资料”和批次 ZIP 各任务目录的 模型请求诊断.json。请求状态复用任务 trace 数据库,每次尝试一条记录;同一阶段的流式更新至多每 5 秒保存一次,阶段变化立即记录,不额外调用模型、抓取屏幕或记录认证头。强制退出导致缺少结束事件时保留最后阶段,不推断为成功。

Flash、Pro 和探索的最终验收使用独立总预算,不再复用中间检查点的 180 秒时限。预算按实际 Checker 的单次请求超时 T、重试次数 R,以及普通/限流重试间隔的较大值 D 自动计算:min(3600, T × (3 + R) + D × R + 60) 秒。它为取证、结论及必要的结构化整理预留三次正常请求时间,再共用一份重试时间余量和 60 秒工具读取余量;不会按 20 轮循环逐轮放大。每个请求仍最多重试 R 次,但全部请求和重试必须在总预算内完成。默认配置的上限为 2760 秒,提前完成就立即结束;用户停止、探索指导及任务本身的执行时限仍生效。

页面在验收期间单独显示证据准备/核对/读取、结论整理、完整性校验阶段,以及已用时间、剩余总预算、请求与实际重试次数。诊断 JSON 的 final_reviews 记录每次验收的预算、截止时间和结束原因,相关模型请求通过 final_review.review_id 关联。请求超时仅重试同一模型请求,保留已取得的工具证据;耗尽请求重试或验收总预算时明确记为未验证,不再进入模型故障后的人工恢复等待。用户停止或探索指导引发的取消单独记录为中断,不重试。超时或中断后的半截输出会从流式展示中移除,只有完整响应经解析、校验后才可能确认通过。

探索模式将固定规则放在上下文前部,用户指导变更追加到历史末尾;AI 进度消息计数不再改写前缀。同一次探索恢复后沿用按探索、角色与模型生成的 prompt_cache_key,该哈希值也写入请求诊断,便于核对路由。缓存仍取决于服务端的支持和实际命中,不能视为已节省的 token。输入总量包含缓存输入,不能重复相加;结构化调用也按原始响应的 usage 计量一次,旧任务中漏计的用量不会自动回填。300k 是单次上下文限制,并非整个任务累计预算。

Flash 跨端任务由模型通过内部 update_task_progress 记录短阶段清单(notes/task_progress.md),仅在阶段边界或重新规划时更新,可与下一动作一起提交。执行器允许其他资源的只读预检,但会暂缓不属于当前阶段的操作,避免预检顺势变成整段跨端执行。阶段顺序来自任务要求;确实需要交替操作时,同一阶段可以包含多个资源。完成检查与产品通过仍是两回事。

若最终报告已由 save_note 保存,Flash 用 report_task_status.report_note_key 引用该正文,界面结论与 notes/output.md 使用相同内容。最终 Checker 可在同次验收中提出有步骤/截图/回执依据的局部事实纠正;只有唯一匹配原文的修改才应用,原稿保留为 notes/output_before_review.md,修改依据记入 run_outcome.json 的 report_review。这不会改写操作历史或抹除真实测试失败。

插件工具的运行时文件回执独立于可截断的观察文本,并在历史压缩后保留路径和校验信息;相同的界面树不在文本与结构化结果中重复发送。历史分段默认至少积累 6 个可压缩回合、源文本目标 6000 token,再结合现有大小/压力条件准备摘要;阶段结束和紧急压缩可提前触发。普通回合仍保持只追加历史。这个调整减少过细的摘要请求,不改变执行模型、思考强度或最终检查;实际 token 和缓存改善需以新任务用量为准。

Excel 批量导入

  1. 点击“下载 Excel 模板”,保留“任务”工作表及表头顺序。
  2. 标准列按顺序为“用例编号”“检测项目”“测试子项”“测试用例”“前置约束提取”“Artemis提示词”“任务配置(JSON)”。任务表留空,示例行在“填写说明”页。
  3. 每行的“Artemis提示词”必填,且是唯一提交给 AI 的任务正文;其他文本列用于显示、搜索和报告,不自动拼入提示词。任务配置可留空,或填写 JSON 对象,如 {"profile":"pro","model":"mimo-v2.6-flash","reasoning_effort":"high","record_video":true,"analyze_video":false,"request_timeout_seconds":300}。支持单项覆盖设备、验证级别、观察模式、目标应用包名、重试及单任务时限;未设置字段继承批次或全局设置。不接受密钥和未知字段。不要填写公式、宏或外部链接。
  4. 上传文件,查看逐行校验结果。默认勾选全部有效用例,可逐项取消,或用“全选 / 全不选”切换;未勾选用例不会导入。所有错误修正后才能提交。
  5. 明确选择设备、执行模式、超时时间和整批循环次数(默认 1),查看“已选用例数 × 轮数”的执行总数,然后点击“确认导入并开始执行”。

循环次数独立保存在每个批次中。每轮按表格顺序执行整批所选用例,然后进入下一轮;各次执行有独立任务编号、状态和报告,队列及报告标题标注轮次。暂停、重启恢复只继续未开始项;“失败即停止”跳过全部后续轮次,“复制失败项为新批次”只复制失败记录各执行一次,不沿用原循环次数。单批默认最多 10000 次执行,可用 .env 中 ARTEMIS_BATCH_MAX_EXECUTIONS 调整;网页和 MCP 使用同一限制。

同一批次按顺序派发。默认失败后继续且不自动重试,也可以选择失败即停止。当前任务因设备异常或超时失败后,默认继续后续用例;设置失败即停止时才停止后续派发。暂停批次只停止后续派发。单个任务可在安全边界暂停并释放设备;批次下一项可继续,暂停的任务待提交指导或点击继续后在设备队列末尾恢复。运行中提交指导会中断当前模型思考或只读诊断,重新观察画面;已经开始的设备动作会安全结束。网页流程会显示指导的提交与领取状态,仍应检查后续动作是否符合指导。暂停等待和重新排队时间不计入该任务执行时限。

服务启动前先取得监听端口,重复启动不会修改现有任务或服务信息。恢复时核对原任务进程和设备锁:仍存活的任务继续等待其真实结果,退出后补齐报告;已经退出且没有终态的任务标记中断,不自动重做,批次等待用户继续未开始的用例。“复制失败项为新批次”保留原记录并产生新任务编号。任务正常完成后,已失效的“服务中断”提示归档为恢复事件,不再显示为当前失败原因;启动时也会纠正已有完成记录中的此类旧提示。

每个任务结束后生成所选格式报告。批次 ZIP 包含汇总、每项任务的报告和已保存的有序步骤截图;已开启录屏且文件存在时,还会按任务收录录屏片段。失败、跳过和中断任务也会列入。暂停时下载的是当前快照。录屏与 AI 视频分析分别配置,录屏默认关闭;仅开启分析时,录制内容用于本次分析,结束后不保留下载文件。暂停期间不录制其他任务的设备画面。

队列中批量任务按“用例编号 + 测试用例”显示,悬停可看完整提示词;失败原因、完成时间及总耗时在历史中可查看。单任务“下载全部资料”以用例编号命名压缩包内目录。删除已结束的批次会同步删除关联任务记录、步骤、截图、录屏、报告和 MCP 导出副本;正在执行或排队的批次不能删除。

已结束或已终止的探索可在任务队列和历史中删除,即使它仍显示“已暂停 · 可继续”。删除前会确认范围:清除该探索的对话、用例版本、所有探索执行记录及文件,已生成的独立复跑和批次任务保留。仍有执行、示范或用例分析在进行时会拒绝删除;请先停止或等待结束。

AI 使用

通过 MCP 可直接提交结构化批次、检索历史和导出报告;见 AI 自动化与 Skill。操作回放已移除,旧记录仅供历史查看,不能继续或重新执行。

环境配置

设备刷新、启动和重启 ADB 后会自动连接本机运行中的 MuMu、雷电、夜神、逍遥及蓝叠等常见模拟器:读取进程拥有的监听端口,验证 ADB 协议后连接,不扫描局域网。同一模拟器的兼容端口不重复连接,已有在线或等待授权的连接保持不动。USB 手机和 Android SDK 模拟器由 ADB 原生发现。其他模拟器或无线手机可在首页“无线 ADB”中填写实际地址和端口;成功后地址保存在本机应用数据目录的 adb-devices 中,后续自动重连。Android 无线调试须先完成配对和授权,端口变化后需要重新连接;自动连接不会绕过授权。

“功能配置”提供“自动连接设备”开关,默认开启;每轮连接预算默认 5 秒,发现间隔默认 10 秒,避免离线设备拖住刷新。对应环境变量为 ARTEMIS_ADB_AUTO_CONNECT、ARTEMIS_ADB_DISCOVERY_TIMEOUT_SECONDS、ARTEMIS_ADB_DISCOVERY_INTERVAL_SECONDS。MCP mobile_config(section="capabilities") 可配置 adb_auto_connect、adb_discovery_timeout_seconds、adb_discovery_interval_seconds;mobile_workspace 的设备列表和 mobile_diagnose 返回自动连接结果。使用远程或转发 ADB 服务时不发现本机端口。连接设备不等于选择任务设备,多个设备时仍需明确选择。

.env 可配置 ARTEMIS_TASK_TIMEOUT_SECONDS(单任务总执行时限,默认 1800 秒)、ARTEMIS_IMPORT_MAX_ROWS(默认 1000 行)和 ARTEMIS_IMPORT_MAX_BYTES(默认 10 MiB)。修改后重启服务。网页的单批次超时设置优先于环境默认值,每行 JSON 的 timeout_seconds 优先于批次。单任务、批次和 MCP 均受总执行时限保护,不计排队和用户暂停时间;即使执行进程卡住,也由父进程终止并保存失败原因。

守护服务通过轻量状态接口探测,ARTEMIS_DAEMON_PROBE_TIMEOUT_SECONDS 默认 2 秒。短暂超时且端口仍被存活的原服务占用时复用原服务,不重复启动;未知进程占用端口时明确拒绝覆盖。

网页“功能配置 → 执行保护”及 MCP mobile_config(section="capabilities") 可配置总时限、设备观测时限(默认 60 秒)、设备观测次数(默认 3 次)、ADB 命令超时(默认 10 秒)、连续动作失败次数(默认 3 次)。任务 JSON 可用 observation_timeout_seconds、observation_max_attempts、device_command_timeout_seconds、action_failure_attempts 覆盖。截图失效或收到占位图时先有限重取,耗尽后结束任务,不把旧画面发给模型;有效截图即使没有 XML 也可按坐标定位。连续动作失败时先刷新画面再尝试兜底,兜底耗尽后结束,不循环重提用例。

批次、任务元数据和报告偏好保存在现有 SQLite 数据库的 automation_records、automation_jobs 表。全局“清空任务历史”会清除批次与执行元数据;它与上文的单批次删除不同,已导出的文件会保留。

任务已经产生最终结果,但 SDK 线程或资源清理仍卡住时,默认最多再等待 30 秒后回收工作进程,避免继续占用队列。全局可用 ARTEMIS_WORKER_CLEANUP_TIMEOUT_SECONDS 或功能配置的 worker_cleanup_timeout_seconds 调整,任务 JSON 同名字段可覆盖。原有结果与截图保留,未完成保存的录屏尽力恢复。

精选任务

首页的精选任务来自用户收藏。任务队列、历史、报告及批次旁的星标均可收藏;批次中的单项也可单独收藏。收藏保存独立模板,删除原记录不影响复跑。

卡片直接点击“运行”会创建新任务;展开“配置”可调整模型、思考强度、模式或执行设备。模型支持选择预设或填写自定义名称,与首页及兜底模型的交互一致。不修改时沿用原配置,修改默认仅影响本次,点击“保存为默认配置”才更新收藏。旧任务优先还原实际执行配置,未记录的字段自动补齐并保存,后续全局配置变化不会改变已保存的收藏参数。原设备离线时需要选择在线设备,纯电脑任务无需安卓设备。

批次保留原顺序、循环次数和失败停止策略,默认保留各项配置,也可明确选择统一模型和思考强度。探索用例固定收藏版本,首次无复跑配置时默认 Flash;“收藏为重新探索”会创建新的探索会话并沿用原探索配置。

单任务下载全部资料时,未变化的终态报告和资料包会复用;人工复验、结果和资料变化会重新生成。批次沿用已生成的报告包,人工复验后重新打包;旧目录格式的包首次下载时更新。运行中的下载是当前快照。录像分为“安卓”“电脑”“人工示范”目录,索引路径与实际文件一致。打包优先速度,对已压缩的图片、视频和 Office 文件直接存储,保持原画质。