feat: add official Codex skill and harden task execution
Install and update artemis-use with task diagnostics and plugin guidance. Preserve cross-device file receipts, review canonical reports, guard stage transitions and reduce small history summaries. Improve exploration lifecycle, request recovery and browser live connections.
This commit is contained in:
1 parent
2328a4df0c
commit
e1ea099592
128 files changed
+4944
-700
No files matched your search
+25
-9
@@ -1,12 +1,14 @@
|
||||
# 使用 AI 完成 Android 自动化
|
||||
|
||||
源码内的 `skills/artemis-automation/` 是可分发 Skill,不依赖本机 Codex 的私有能力。将整个目录复制到宿主支持的 Skill 目录即可;Codex 为 `$CODEX_HOME/skills/`(未配置时 `~/.codex/skills/`)。仓库包含 Skill,启动程序不会修改用户的全局 Skill 目录。
|
||||
官方 `skills/artemis-use/` 随源码和 wheel 分发,包含执行、探索、诊断复盘及插件开发规范、模板和校验脚本。启动脚本、直接 `artemis ui` / `artemis-admin` 启动服务、显式 `artemis mcp --install codex` 共用同步逻辑;MCP 桥连接/握手不安装、不启动主程序。
|
||||
|
||||
目前仅支持 Codex MCP 配置。Windows 一键脚本检测并同步 Codex;未检测到配置目录时,在项目目录执行 `uv run artemis mcp --install codex`。配置模板使用 `uv run artemis mcp --generate-config codex` 查看;其他名称和 `all` 不再支持。更新后重新加载 Codex MCP;复制 Skill 后重新加载技能。
|
||||
默认安装到 `~/.agents/skills/artemis-use`;已有 `~/.codex/skills/artemis-use` 时复用该目录,显式设置 `CODEX_HOME` 时使用 `$CODEX_HOME/skills/artemis-use`。官方同名目录直接覆盖,不保留用户定制、不弹冲突提示;其他 Skill 不受影响。复制和内容校验成功后替换目录,内容未变不重写;同步失败保留旧版并告警,网页仍启动。记录版本与来源,较旧 ARTEMIS 不覆盖已安装的较新版官方 Skill;默认路径中的重复 artemis-use 合并为一份。Skill 成功安装后备份并移除 Codex 全局 AGENTS 文件内带 ARTEMIS 标记的旧规则块,保留其他内容。
|
||||
|
||||
目前只支持 Codex。源码环境执行 `uv run artemis mcp --install codex` 可手动修复集成,`--generate-config codex` 查看配置模板。安装器保留 MCP 启用/禁用、工具 allowlist/denylist 和审批策略;配置变化后重载 MCP,Skill 未显示时重启 Codex。`-SkipMcpSync` 跳过该次启动的 MCP 和 Skill 同步;直接启动可设置 `ARTEMIS_SKIP_CODEX_SYNC=1`。
|
||||
|
||||
可以向 AI 这样下达任务:
|
||||
|
||||
> 使用 artemis-automation。在我指定的模拟器上验证系统设置首页能打开,不修改设置,输出 Word 和 Excel 报告。
|
||||
> 使用 artemis-use。在我指定的模拟器上验证系统设置首页能打开,不修改设置,输出 Word 和 Excel 报告。
|
||||
|
||||
> 校验这份 Excel 的测试用例,指出所有错误;先不执行。
|
||||
|
||||
@@ -27,14 +29,14 @@ Flash 和 Pro 都支持任务内的安卓文件工具 `android_file`:保存原
|
||||
| 工具 | 功能 |
|
||||
| --- | --- |
|
||||
| `mobile_diagnose` | 环境、凭据、设备诊断和自带修复 |
|
||||
| `mobile_workspace` | 设备列表、统一队列、插件配置和资源保护状态 |
|
||||
| `mobile_workspace` | 设备列表、统一队列、插件状态及按需连接诊断;include_development 返回插件开发环境 |
|
||||
| `mobile_config` | 读取或明确保存非敏感模型、功能、报告默认设置 |
|
||||
| `mobile_run_task` | 单任务执行;`model=flash/pro` 表示执行模式 |
|
||||
| `mobile_manage_task` | 单任务状态、安全暂停、排队恢复、指导提交/领取记录和停止 |
|
||||
| `mobile_run_task` | 单任务执行(request_id 去重);`model=flash/pro` 表示执行模式 |
|
||||
| `mobile_manage_task` | 单任务状态、提交反查、暂停/继续、指导和停止;删除预览及删除、代录用户人工复验 |
|
||||
| `mobile_get_device_state` | 设备截图、界面层级 |
|
||||
| `mobile_task_file` | XLSX 模板与导入校验 |
|
||||
| `mobile_batch` | JSON 用例建批次、开始、暂停、继续、复制失败项、删除非活跃批次 |
|
||||
| `mobile_search_history` | 全库搜索、日期/状态筛选和分页 |
|
||||
| `mobile_search_history` | 全库搜索、日期/状态/批次筛选和分页 |
|
||||
| `mobile_inspect_trace` | 只读步骤、截图和执行证据 |
|
||||
| `mobile_export_report` | Word、Excel、步骤截图、录屏片段、单任务资料及批次 ZIP,返回本地绝对路径 |
|
||||
| `mobile_exploration` | 探索对话、指导、人工示范、暂停续跑、用例版本、Flash/Pro 复跑和批次草稿 |
|
||||
@@ -49,9 +51,9 @@ Python 按 `uv.lock` 同步缺失/变化的依赖;前端依据源码、资源
|
||||
|
||||
scrcpy 固定版本的国内下载采用多个来源,失败或 SHA256 不符时自动尝试下一来源,全部失败会显示 HTTP 状态、超时或校验原因。`config/downloads.json` 的 `overrides.scrcpy_url` 指定首选 HTTPS 地址,`overrides.scrcpy_fallback_urls` 指定备用地址数组;`null` 使用默认备用源,`[]` 禁用备用源。国内模式不自动回退到 GitHub 直连。
|
||||
|
||||
MCP 同步仅检查 `$CODEX_HOME/config.toml`;未设置或为空时使用当前用户的 `~/.codex/config.toml`。日志会显示实际路径,以及新装、更新、已是最新、未检测到或自定义跳过的结果。检测到目录但缺少 ARTEMIS 条目时安装当前源码的标准配置;已有标准配置即使指向旧解压目录,也会更新解释器、项目目录、环境路径和工具清单。保留用户额外环境变量、禁用状态、`tools` 下的工具审批策略及其他服务;不会重建权限表、添加 `eager` 或删除旧工具策略。自定义启动包装器保持原样并提示。其他客户端的配置和规则文件不读取、不修改,其格式错误不会阻止启动。Codex 原配置无法解析,或同步程序生成的更新未通过校验时,均停止启动且不覆盖原文件;日志会区分这两种原因,不把同步生成错误归因于用户配置。遇到后者请更新 ARTEMIS,不要删除有效的 `config.toml`;可使用 `-SkipMcpSync` 临时仅启动网页。首次修改保留备份。同步后需在 Codex 中重新加载 MCP 或重启 Codex,脚本无法替宿主重启已加载的 MCP 进程。
|
||||
MCP 同步仅检查 `$CODEX_HOME/config.toml`;未设置或为空时使用当前用户的 `~/.codex/config.toml`。日志会显示实际路径,以及新装、更新、已是最新、未检测到或自定义跳过的结果。检测到目录但缺少 ARTEMIS 条目时安装当前源码的标准配置;已有标准配置即使指向旧解压目录,也会更新解释器、项目目录和环境路径,保留已有工具白名单。保留用户额外环境变量、禁用状态、`tools` 下的工具审批策略及其他服务;不会重建权限表、添加 `eager` 或删除旧工具策略。自定义启动包装器保持原样并提示。其他客户端的配置和规则文件不读取、不修改,其格式错误不会阻止启动。Codex 原配置无法解析,或同步程序生成的更新未通过校验时,均告警且不覆盖原文件,继续启动网页;日志会区分这两种原因,不把同步生成错误归因于用户配置。遇到后者请更新 ARTEMIS,不要删除有效的 `config.toml`;可使用 `-SkipMcpSync` 临时仅启动网页。首次修改保留备份。同步后需在 Codex 中重新加载 MCP 或重启 Codex,脚本无法替宿主重启已加载的 MCP 进程。
|
||||
|
||||
创建批次时必须提供唯一 `request_id`;请求超时后可以按编号查询或用相同内容重发,避免重复用例。创建只保存草稿,`start` 才执行。AI 无需先制造 Excel,也可直接提交 JSON;字段与示例见 [Skill 批量任务参考](../skills/artemis-automation/references/batches.md)。
|
||||
创建批次时必须提供唯一 `request_id`;请求超时后可以按编号查询或用相同内容重发,避免重复用例。创建只保存草稿,`start` 才执行。AI 无需先制造 Excel,也可直接提交 JSON;字段与示例见 [Skill 批量任务参考](../skills/artemis-use/references/batches.md)。
|
||||
|
||||
报告按任务或批次归档到 `artifacts/mcp_exports/`,包含本地路径及服务下载链接;删除批次时会清理对应导出副本。运行中导出是快照;执行完成不等于验证通过,报告会保留未验证、失败、跳过与中断状态。
|
||||
|
||||
@@ -106,3 +108,17 @@ Flash、Pro(启用 transcript)和探索共用分阶段上下文。一个阶
|
||||
有请求诊断的调用同时发送 `X-Client-Request-Id`,默认与 trace 内的 `request_id` 一致,便于对照 API 日志。`request_sent_at` 表示实际发送时间;`routing_header_fingerprints` 只记录发送的会话头的哈希,`client_request_id_matches` 表示关联 ID 是否一致。不记录认证头或其他请求头正文。稳定标识提供路由亲和条件,实际命中仍取决于前缀和上游缓存。
|
||||
|
||||
辅助摘要继续独立处理各自片段,避免为了提高命中比例累积不相关的历史。视觉摘要中完全重复的插件执行结果与控件树只发送一份;独立错误、状态、不同观察及原始 trace 均保留。
|
||||
|
||||
## 指定任务诊断、复盘与管理
|
||||
|
||||
流式请求中的 `click`、`long_press`、`swipe`、`press_key`、`manage_app`、`wait_for_delay` 每次调用参数超过 16,384 字符时,会立即关闭该请求并丢弃未完成输出,避免持续生成异常参数直到超时。该保护只针对小型设备动作,不限制输入文本、笔记、报告或插件参数,也不改变模型思考强度与输出 token 配置。异常最多额外尝试一次(配置为不重试时不重试);仍异常时进入现有备用模型或暂停恢复流程。诊断记录保留 `invalid_output` 分类及 `stream_guard` 中的工具名、实际字符数和保护上限,不保存参数正文;无法据此断定异常来自模型生成还是 API 中转。
|
||||
|
||||
`mobile_inspect_trace` 增加 `view_report`、`view_usage`、`view_requests`、`view_logs`、`view_evidence`。这些动作复用 HTTP `/api/sessions/{id}/inspection`,不生成下载文件、不执行设备动作;`offset/limit` 控制分页。日志只读取有限尾部并脱敏,正文超限明确 text_truncated。用量展示缓存输入/总输入、角色及已记录的模型分组;未记录模型显示 unknown。
|
||||
|
||||
`mobile_run_task(request_id=...)` 在既有自动化存储中登记提交回执。同一个 ID/相同内容只派发一次;内容不同拒绝。连接断开先用 `mobile_manage_task(action="lookup", request_id=...)` 找 trace_id,查实际状态,未知结果不自动重跑。普通状态与报告统一读取人工复验结果,保留 AI 原判。
|
||||
|
||||
`mobile_manage_task(deletion_preview/delete)` 可预览和删除非活动任务;探索也有对应动作,并保留独立复跑。`delete` 需要 user_confirmed=true,表明用户明确要求删除,不强制重复确认。`review` 只代录用户明确给出的 review_status=passed/failed 和 review_reason,需 user_confirmed=true;Agent 自己的推断不能标成人工结论。
|
||||
|
||||
## 插件开发
|
||||
|
||||
使用官方 Skill 的 [插件开发参考](../skills/artemis-use/references/plugin-development.md),从自带模板开始。通过 `mobile_workspace(include_devices=false, include_development=true)` 找到当前服务的 Python;在任意目录均可调用 Skill 自带校验脚本。静态检查、MCP 握手与真实操作验收分别报告。市场发布需用户明确要求,验证未覆盖场景必须注明。
|
||||
Reference in new issue
Block a user