Default Flash final review to off and persist the setting across the UI, MCP, SDK and queued tasks. Keep execution separate from test verdicts. Bundle UI fonts and licenses to remove Google Fonts from startup builds. Align backend/frontend versions and document installation and upgrades.
99 lines
19 KiB
Markdown
99 lines
19 KiB
Markdown
# 报告、批量任务与历史检索
|
||
|
||
工作区右侧或顶部的 **报告与自动化** 入口包含结论报告、批量任务。历史任务在任务队列中按浏览器本地日期分组,支持名称、目标、编号和标签搜索,以及日期、状态筛选和分页。
|
||
|
||
## 多页面与加载排查
|
||
|
||
同一浏览器、同一服务地址的可见页面共享一条任务实时连接;持有连接的页面关闭后,其他页面自动接管。后台页面暂停实时订阅和设备画面预览,返回前台时重新读取任务状态、步骤和结论,不影响后台任务执行或录屏。旧浏览器不支持共享连接时,仍会释放后台页面的实时连接。
|
||
|
||
配置读取、状态和队列轮询有 15 秒的网页请求时限,重复轮询不会堆积;它与模型执行超时无关。若升级后旧页面一直显示“正在读取配置”,而后端诊断正常,请先保存尚未提交的输入,关闭旧 ARTEMIS 标签页,再重新打开网页。重启后台不会替换已打开页面中的旧脚本,旧版页面的长连接可能占满浏览器连接额度,拖慢其他页面。
|
||
|
||
## 导出结论报告
|
||
|
||
选择已有任务,在“报告与质量”中下载 Word、Excel、按步骤排序的截图 ZIP、录屏分段 ZIP,或一键下载包含上述文件和清单的资料 ZIP。只有启用并成功保存录屏的任务才有录屏可下载。默认报告格式为 Word 和 Excel;勾选所需格式并保存,后续提交使用新的默认值。
|
||
|
||
报告包含目标、预期结果、执行状态、验证结论、实际输出和步骤证据。Word 内嵌关键截图,Excel 包含结果与证据工作表;任务输出中的 Markdown 表格会转换为真正的文档表格和 Excel 工作表。
|
||
|
||
“执行完成”与测试结论分开记录。预期直接写在任务提示词中即可;Pro 默认用只读终检核对提示词、用户指导、执行结论及实际证据,不增加必填表单。Flash 的“最终 AI 判定与分析”默认关闭,可在首页功能配置开启;关闭时正常完成的任务显示“执行完成 · 未做 AI 判定”,历史、批次与 Word/Excel 保持一致,不自动记为测试通过。终检出错或缺少证据时仍显示“未验证”,设备或执行异常不当作产品缺陷;已确认的断言失败会保留。正在执行的任务也可以下载,但文件只代表下载时的快照。
|
||
|
||
Flash 开关保存在全局配置中,对网页、批量、精选、MCP/SDK 和探索提炼用例的 Flash 复跑统一生效;在任务开始时固定,排队中的任务使用最新配置,运行中的任务不变。开关只省去末尾独立 AI 复核,执行模型的最终答复、步骤摘要收尾和资源清理仍保留,不影响 Pro 或主动探索。环境变量为 `ARTEMIS_FLASH_FINAL_CHECK_ENABLED=false`,JSON 默认在 `agent.flash.final_check_enabled`;旧配置缺少该字段时也默认关闭。
|
||
|
||
终检已输出完整且符合结构的结论时,直接校验并保存,不额外请求模型改写格式;若兼容接口把 `test_result` 编码为 JSON 字符串,会先解码再按同一规则校验。普通说明文字、被截断的输出、缺少检查项或证据的结果不会直接算通过。判定范围以提示词为准:明确要求“发现并如实报告问题、不要求无缺陷”的检查任务通过,不表示被测产品没有缺陷。
|
||
|
||
报告由项目自己的 `python-docx`、`openpyxl` 生成,不依赖 Codex 客户端的私有工具。输出保存在 `artifacts/reports/`。
|
||
|
||
任务结束后,可在“用例测试结果”中点击“人工复验”,确认通过或不通过,备注选填。复验会保留原始结果和历次复验记录,不改变任务的执行状态。任务队列、单任务报告和批次汇总采用最近一次人工结论,标明“人工确认”;已做 AI 判定的结论标明“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](ai-automation.md)。操作回放已移除,旧记录仅供历史查看,不能继续或重新执行。
|
||
|
||
## 环境配置
|
||
|
||
设备刷新、启动和重启 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 文件直接存储,保持原画质。
|