Files
chenmingxuan fac4ccb760 feat: prepare 2.2.0 with UI and execution fixes
Add dark theme, richer Markdown and readable plugin results.
Improve Android input evidence, response integrity and diagnostics.
Unify lifecycle, guidance receipts and evidence sources across clients.
Keep direct action dispatch without an added AI quota approval layer.
Align version metadata at 2.2.0 and bundle Helper 1.2.2.

Validation: 3063 backend tests before the version bump; 44 after.
Frontend: 317 tests and production build passed.
2026-10-26 00:44:13 +08:00

6.4 KiB
Raw Permalink Blame History

任务排查与复盘

用户给了任务编号就先针对该编号取证,不重跑业务,不停止其正在运行的任务,不把最新失败任务替换成用户指定任务。

定位顺序

  1. mobile_manage_task(action="status", trace_id=...),区分排队、执行、等待指导、暂停、收尾与终态。current_step 是动作步号,不等于模型请求数。
  2. mobile_inspect_trace(action="view_report", trace_id=..., offset=0, limit=20) 读取统一结果与有限步骤。test_result.source=human 时同时展示 AI 原判,不能用旧 AI 结论覆盖人工复验。
  3. 根据问题只读相应资料:
问题 inspect action 要核对的证据
长时间没动、API 超时、499、no tool call view_requests 请求开始/结束、模型、阶段、请求/尝试/响应/链路编号、重试、取消来源与时限层级;HTTP 200 不表示输出结束,499 不能单独归因
token 特别多、缓存是否生效 view_usage,再按需 view_requests prompt/completion/cached、调用数、角色/模型分组;未记录字段不能补猜
Python、ADB、插件错误 view_logs 该任务 stdout/stderr 有限尾部;脱敏文本和实际错误链
点错、未验证、与结论矛盾 search → view_step_details / view_step_screenshots 动作前后画面、工具参数与实际回执、窗口和坐标尺寸
PC 黑屏、录像空洞、文件没保存 view_evidence 来源、时间、录屏片段、调用回执及附件,不用手机画面代替电脑画面

offset/limit 分页,使用返回的 next_offset;view_logs 的 offset 从最新行向前计数,返回每页仍按时间正序,超过尾部读取窗口的旧字节会注明。text_truncated=true 时缩小范围或读取指定步骤,不把截断当成内容缺失。

search 使用 query 或 step_range,不会执行历史动作。view_summary 返回 summary Markdown 与 steps.items/total/offset/limit/next_offset,按 next_offset 翻页,不一次加载整条长任务。items 中 step_id 是存储编号,不能用模型口述步号替代。JSON 结果同时保留 structuredContent 与兼容文本;调用严格按工具 schema,MCP 的 task_desc 与 HTTP 的 goal 不能混用,未知参数在执行前报错。

缓存与耗时

  • 缓存命中率 = cached_tokens / prompt_tokens,分母不是总 token,也不是缓存命中的请求数。
  • 输入 token 包括缓存部分。报告输入总量、缓存量、未缓存输入、输出、调用数,保留缺少统计的限制。没有用量记录不等于零费用;没有价格信息不臆算账单。
  • 按角色/模型分组判断消耗来源,不能把 Checker、视频分析和执行模型混为一个请求。旧数据未记录模型时注明 unknown。
  • 请求阶段和重试用于解释等待,时间戳 Unix 秒及 UTC 转成用户当地时区;注明时区。无终止事件或 unknown 不能当成功。
  • 区分模型生成耗时、设备/插件操作耗时、排队及用户等待。先找实际重复观测、工具参数膨胀、无进展循环,再建议优化。
  • mobile_manage_task(action="status") 的 lifecycle 与网页进度、报告同源:durations 分开记录 total、queued、resource_wait、paused、execution、final_review、report_export,缺少记录为 null。execution 包含初始化与整理,不能当作模型生成速度;旧任务分项未知不能补成零。
  • 指导回执的 accepted_at/timestamp 表示接收,consumed_at 表示执行器已读取;是否被实际应用仍需核对后续步骤。pending/reading 是等待或领取中,终态未消费为 unapplied,终态领取后未确认消费为 unconfirmed。接收成功不能表述为“已执行”或“模型已应用”。
  • 最终验收读取 view_requests 返回的 final_reviews:核对 stage、total/elapsed/remaining_seconds、request_count、retry_count 和 status;用 review_id 关联请求的 final_review 字段。最终验收与中间检查点独立计时。budget_exhausted 是验收总预算耗尽,request_retries_exhausted 是模型请求重试耗尽;cancelled 的具体来源看 cancel_reason,没有该字段或为 unknown 时保留未知,不能混称为 API 超时。验收耗尽不自动重跑设备操作;流式半截 passed 和验收 completed 都不能代替正式 test_result。
  • 取消记录核对 cancel_reason 与 cancel_phase:user_stop、guidance_replaced、task_paused、task_replaced、superseded 和 outer_timeout 分别表示已明确归因的中断。timeout_scope 的 request、transport、outer、final_review 区分单次请求、传输、外层等待和验收总预算。自动重试用 request_id 分组,以 attempt_id、previous_attempt_id 关联;可用的 client_request_id、server_request_id、response_id、server_trace_id 和 traceparent 用于对照服务端日志。HTTP 499 或裸取消不能证明来源,旧记录不补猜。

环境与插件

工具报连接/设备异常时用 mobile_diagnose。服务未启动时让用户先启动 ARTEMIS,不经 MCP 拉起另一个副本。一般检查先不启用付费凭据验证或真实设备探测;需要确认凭据或观测链路时再用 verify_credentials / probe_device。设备自愈用 attempt_fix,仅按返回的 next_steps 处理。

mobile_workspace 可见插件及 blocked_resources。只对相关已安装插件做 probe_plugin 连接检查;它会启动插件进程。结果不确定的写动作不能自动再点一次,资源保护解除由用户在网页确认。

结果与交付

给出具体结论、支持它的任务/步骤/请求编号、影响与缺失证据。执行失败不必然是被测产品缺陷;验收失败也不必然是工具故障。

报告与证据索引的 evidence_sources 区分实际执行界面与接口、文件、终端等辅助来源。业务后台名称或网址不决定执行平台,UI 截图不能单独证明后端持久状态。引用实际 step_id/call_id/source_id,保留未验证边界;来源清单不是新的验收结论,也不改写 AI 原判或人工复验。

用户只问复盘时不重新执行、不改验证结果。用户明确给出人工复验结论时,使用 mobile_manage_task(action="review", trace_id=..., review_status="passed"或"failed", review_reason=用户理由, user_confirmed=true)。AI 自己的分析不能使用这个入口冒充人工判定。

用户需要资料时再 mobile_export_report;已有 report/evidence 查看不会生成 ZIP。交付真实路径或链接,并说明未验证项。