feat: release 2.2.0 with PC-only tests and execution reliability fixes

Unify task scheduling and queue state, fix Android input and observation recovery, preserve screenshot paths, and match final review criteria accurately. Add collapsible copyable results and publish the complete 2.1.0 upgrade notes. Validation: 3189 backend tests, 326 frontend tests, 24 client tests, production build and quality gates.
This commit is contained in:
chenmingxuan committed 2026-10-27 01:13:41 +08:00
1 parent fac4ccb760
commit be6e8c2abd
79 files changed
+2263 -277

No files matched your search

+3 -1
View File
@@ -1,4 +1,4 @@
# 使用 AI 完成 Android 自动化
# 使用 AI 完成 Android 与电脑自动化
官方 `skills/artemis-use/` 随源码和 wheel 分发,包含执行、探索、诊断复盘及插件开发规范、模板和校验脚本。启动脚本、直接 `artemis ui` / `artemis-admin` 启动服务、显式 `artemis mcp --install codex` 共用同步逻辑;MCP 桥连接/握手不安装、不启动主程序。
@@ -26,6 +26,8 @@ Flash 和 Pro 都支持任务内的安卓文件工具 `android_file`:保存原
## MCP 能力
仅 PC 测试与网页“仅 PC”勾选项使用同一任务目标。先用 `mobile_workspace(include_devices=false)` 查看实际电脑插件,再提交 `mobile_run_task(task_desc="在电脑浏览器检查指定页面", model="Flash", request_id="本次提交唯一编号", runtime_overrides={"execution_target":"computer"})`。无需手机或模拟器在线;仍需可用模型和已启用并授权的电脑观察插件。`model="Pro"` 与 `mobile_exploration` 的 `task_config.execution_target="computer"` 同样适用。每项批量用例的 `task_config` 使用相同字段;插件参数见 [插件任务参数](../skills/artemis-use/references/plugins.md)。
| 工具 | 功能 |
| --- | --- |
| `mobile_diagnose` | 环境、凭据、设备诊断和自带修复 |
+12
View File
@@ -2,6 +2,18 @@
工作区右侧或顶部的 **报告与自动化** 入口包含结论报告、批量任务。历史任务在任务队列中按浏览器本地日期分组,支持名称、目标、编号和标签搜索,以及日期、状态筛选和分页。
## 仅 PC 测试
首页任务输入区的“仅 PC”勾选项适用于只测试电脑桌面或浏览器的用例。勾选后 Flash、Pro、探索均不要求 Android 设备或模拟器在线,也不检查 Android 锁屏;仍需 Python、有效模型配置,以及已启用并授权、提供电脑画面观察的插件(例如 CUA)。取消勾选恢复默认手机任务。扩展插件列表随目标筛选,切换目标会移除不兼容的手动选择;所用版本与桌面资源仍由统一队列固定和保护。
单任务 HTTP/MCP 使用 `runtime_overrides: {"execution_target":"computer"}`;批量用例在“任务配置(JSON)”填写 `{"execution_target":"computer"}`,无需填写 `device_serial`。可同时指定 `plugins`;不提供时使用匹配目标的授权默认插件,`plugins: []` 无法运行需要画面观察的仅 PC 任务。混合手机与电脑的用例仍需在线手机,不勾选“仅 PC”。
## 串行执行与观测故障
2.2.0 中所有任务按提交顺序串行执行,包括仅 PC、Android 和跨端任务;网页、MCP、批量 JSON、CLI 与 SDK 共用队列和跨进程执行锁。当前不开放跨设备并行,旧版 `per_device`、`parallel`、`max_concurrency` 等设置也不会启用并行。队首等待资源时,后续任务继续排队。
模拟器窗口仍在运行,不代表屏幕辅助服务、UIAutomator2 或 ADB 截图一定正常。观测失败时保留所处阶段与最近错误;辅助服务回退和 UIAutomator2 重连共用本次观测预算,退出任务会取消后续恢复,并清理迟到连接。不能把这类基础设施故障直接判为被测应用缺陷。
## 多页面与加载排查
同一浏览器、同一服务地址的可见页面共享一条任务实时连接;持有连接的页面关闭后,其他页面自动接管。后台页面暂停实时订阅和设备画面预览,返回前台时重新读取任务状态、步骤和结论,不影响后台任务执行或录屏。旧浏览器不支持共享连接时,仍会释放后台页面的实时连接。
+4
View File
@@ -1,5 +1,9 @@
# 开发交接:2026-10-19
2026-10-27 发布主线已整理为 **ARTEMIS 2.2.0**,配套插件为 **Cua 0.38.0+artemis.1**,Helper 为 **1.2.3**。最新升级内容、验证与未测范围以[2.2.0 发行说明](releases/2.2.0.md)为准;下方“尚未发布”、分叉计数和候选版本均属于对应日期快照。插件从独立工作树发布,原插件主目录的 OCU 开发现场保留。
2026-10-26 已再次接续开发会话,当前基线为主程序本地提交 `fac4ccb`(2.2.0)。两个仓库现场、已撤回机制与后续验收范围见[本次接续记录](plans/2026-10-26-session-handoff.md)。以下继续保留原始交接快照。
2026-10-24 开发主线已迁入新会话,迁入基线为 2.1.0;2026-10-26 工作区已升至 2.2.0,尚未发布,完整增量见[2.2.0 说明](releases/2.2.0.md)。新增工作与待办优先级见[本轮主线计划](plans/2026-10-25-mainline.md);以下保留原始迁入快照,不将其提交号、分叉计数或测试数量视为当前状态。
本文件保留 2026-10-19 从《Artemis开发主线-1017-2》迁入时的开发快照。历史结论已结合代码、发行说明和当时的本地 Git 引用核对;后续开发以[仓库指南](../AGENTS.md)、[设计约定](../DESIGN.md)和实时 Git 状态为准,以下提交号与分叉计数不随后续提交自动更新。
+119
View File
@@ -0,0 +1,119 @@
# 开发主线:2026-10-26 会话接续
本次依据用户提供的上一会话完整记录,并核对两个仓库及 CUA 隔离工作树。本文是当前接续入口;此前实现过程与验证见[上一阶段主线](2026-10-25-mainline.md),最终变更清单见[2.2.0 发行说明](../releases/2.2.0.md)。
## 迁入时核实的开发基线
| 范围 | 迁入时状态 |
| --- | --- |
| 主程序 | `main`,HEAD 为 `fac4ccb76075b3360b11053ecb0e33ade9d94a61`,提交信息为 `feat: prepare 2.2.0 with UI and execution fixes`;相对本地 `eapil/main` 跟踪引用领先 1 个提交。已跟踪文件无修改,仅有未跟踪的 `.angular/` 缓存。 |
| 版本与交付 | 主程序及前端版本为 2.2.0;上一会话已完成本地提交,记录为未推送、未打标签、未发布源码包。本次未刷新远端,HEAD 没有本地标签。 |
| 插件主目录 | `main` 为 `757b829`,相对本地 `origin/main` 领先 4 个、落后 7 个提交;有原有已修改及未跟踪文件,不能作为发布现场直接合并或整体提交。 |
| CUA 隔离工作树 | 分支 `codex/cua-shell-observation`,HEAD 为 `dccddaa`;候选 `0.38.0+artemis.1` 的源码、测试和文档仍为未提交改动,市场尚未发布该候选。 |
| 已安装插件 | 上一会话记录本机已安装并启用此 CUA 候选;本次未查询运行服务或重新核验实际安装,不由仓库版本推定运行状态。 |
以上分叉计数均来自本地跟踪引用,属于此次接续快照。
## 已完成内容与持续约束
上一阶段 P1、P2 和已确认的 P3 均已实现:Markdown 与暗色模式、Flash 开关即时保存、真实输入与目标证据、模型响应完整性、启动恢复、取消与请求诊断、生命周期与指导回执、证据来源及 MCP/HTTP 协议改进。具体行为以发行说明和当前源码为准,不重复列为待开发功能。
用户明确要求移除的次数配额、自然语言约束编译、提交内容指纹和 AI 二次动作否决已完整撤回。旧计划中相关修复与较高测试数量属于历史过程,不代表当前机制。后续不恢复该机制,也不增加替代审批层。模型依据用户任务原文、指导、观察和历史遵守次数及禁止要求;资源锁、既有工具参数与插件授权校验、暂停取消和真实工具错误处理继续保留。
保护现有配置、历史任务及两个仓库的开发现场;模型请求重试不自动重放业务动作。运行中的服务是否加载新代码需独立核对,不能由源码版本或旧构建记录推定。下一次正常重启后再核验后台行为,不因迁移会话而停止任务或重启服务。
## 后续工作与验收缺口
1. **主程序外部验收。** 在明确的设备和业务范围内,以新任务核对首次输入与发送、审批动作、Flash 最终判定设置、暂停及新指导、响应与超时诊断、报告来源。保留原失败任务和结论,将新任务证据与确定性回归分开记录。
2. **独立 CUA 候选收尾。** 在隔离工作树核对最终源码、补丁、包内构建来源、版本及校验值,按插件仓库指南完成所需回归,再单独整理提交与发布范围。原业务流程、其他托盘应用、多屏和 DPI 组合仍有未测范围;主程序升级不会自动升级插件。
3. **2.2.0 发布。** 主程序已有本地提交;后续推送、标签与源码包按发布任务推进,分别核对远端提交、交付范围及实际验证。插件候选不能夹带进入主程序发布。
4. **后续产品候选。** 素材准备句柄、跨次任务取代关系仍属待明确需求,尚未排为本轮实现;不据此自动扩展调度、状态存储或历史结论覆盖行为。
## 验证记录的使用
上一阶段最终记录为:撤回机制后默认后端 **3063 项通过、2 项跳过、8 项排除**,专项 **38 项通过**;Ruff 两项、质量基线及核心类型检查通过。升版后启动与打包等专项 **44 项通过**,前端 **317 项通过**、生产构建通过。CUA 候选另有 Go 检查及隔离桌面验证,详见插件自身记录。
以上是上一会话的验证结果。本会话新增修复与验证见下节;未执行设备业务任务或调用付费模型。
## 本会话修复:动作卡片复制与离线诊断
用户反馈任务 `58b6b4cc-5dbe-49dd-9b46-187d37e2339e` 的 `Pixel verification failed`。日志显示实时截图连续失败,后续明确出现 `device offline`,用户也已确认设备离线;该次点击没有下发。保留原任务与历史记录,不自动重跑。
- 共用的动作卡片允许选择文字,可复制目标、参数、错误和 `ATTEMPTS` 等内容;拖选标题不会触发展开/收起,普通点击继续切换。已在实际工作区页面拖选“点击元素”并通过 Ctrl+C 验证复制内容,卡片保持展开。
- 像素校验无法完成时使用 `pixel_verification_unavailable`,保留截图、超时或模型解析的具体错误。观察不可用不再误归为目标消失,也不缓存为被拒绝的目标;实际识别出目标消失时仍使用原分类。既有校验与重试次数保持不变。
- 前端生产构建已由运行服务加载并验证;后台服务未重启,后端诊断调整在下一次正常重启后生效。
本次验证:默认后端回归 **3063 项通过、6 项跳过、8 项排除**;定向后端回归 **50 项通过**;前端 **320 项通过**、生产构建通过。Ruff 格式与静态检查、质量基线、核心类型检查及 `git diff --check` 均通过。后端回归仍有 Pillow `getdata()` 的弃用警告;本次未执行设备业务复测。
## 本会话新增:仅 PC 测试
- 首页输入区新增符合主题的“仅 PC”勾选项,默认关闭;Flash、Pro、探索共用 `execution_target="computer"`。开启后标题、提示和插件列表切换为电脑,不再因 Android 离线、锁屏或 ADB 工具未就绪阻止提交;运行时、模型和授权的电脑观察插件仍必需。
- 复用现有后台任务队列、固定插件版本和桌面资源锁。MCP 的任务追踪统一绑定 `computer:local`,忽略传入的离线手机;批量“任务配置(JSON)”使用 `{"execution_target":"computer"}`,模板说明页补充例子,未增加会被意外执行的示例用例。
- 远程 Python SDK 的 `submit/run` 和兼容 `Task` 支持 `execution_target`;修正 `options` 对应的 HTTP 字段为 `runtime_overrides`,仅 PC 不携带客户端保存的手机序列号。MCP 离线工具目录同步工具说明,工具名称和白名单未改动。
- 实际网页验证 Android 离线时勾选后执行按钮可用、取消后恢复阻塞,电脑插件筛选正常、控制台无错误;未提交真实任务或调用模型。前端新构建已加载,后台和 MCP 后端代码需在下一次正常重启后完整加载,本轮未重启服务。
合并前述修复后的最新验证:默认后端 **3072 项通过、6 项跳过、8 项排除**;前端 ChromeHeadless **326 项通过**,生产构建通过;Ruff 格式与静态检查、质量基线、核心类型检查、差异空白检查均通过,10 份变更文档的 67 个本地链接有效。后端保留 102 条既有 Pillow 弃用警告。未执行真实 PC 或 Android 业务用例,不将网页提交可用或确定性回归等同于端到端验收。
## 本会话后续修复:截图坐标、串行与观测恢复
- 像素校验按每张编码截图的尺寸换算原生设备坐标,红点及拒绝缓存裁剪使用同一转换;保留实际派发坐标,方向变化时要求重新观察。
- 2.2.0 固定所有目标串行执行,统一调度与原子共享执行锁覆盖网页、MCP、批量 JSON、CLI 和 SDK。旧并行参数保留兼容接收但不能启用并行;队首等待资源时不允许后续任务越过。保留同任务嵌套持锁、暂停释放和恢复排队。
- 观测预算传入 Helper 回退和 UIAutomator2 同步线程,启动等待与重试共用期限;退出后阻止后续恢复,清理并丢弃迟到连接,超时保留阶段和最近错误。
- 第57步失败前 Helper、UIAutomator2 和 ADB 截图均失去响应;连接在收尾期间才恢复。模拟器窗口运行不等于观测服务正常,最初卡顿的设备端原因未确认,不归为已证实离线或应用缺陷。
- RESULT 默认折叠、全文限高滚动与可复制已完成并在前一轮浏览器验证。本轮按用户要求暂缓 CUA 鼠标问题,等待复现。
本轮实际验证:默认后端 **3095 项通过、2 项跳过、8 项排除**,独立远程 SDK **24 项通过**;Ruff 格式与静态检查、质量基线、核心类型检查均通过,保留102条既有Pillow弃用警告。前端沿用上一轮326项测试及构建记录,本轮未再修改前端。未重启服务、未重跑设备业务任务、未提交或发布;完整加载后台修复需下一次正常重启。
## 后续实测发现与修复:Pro 收尾空转
后续真实测试中,安卓输入和清空均已完成,但普通 Pro 没有从内部工具循环及时返回最终验收;完成说明仍被当成缺少工具调用而继续恢复。另有局部 `update_note` 的 replacement 夹带 target 范围之外的后续里程碑,产生重复待办。这里的失败不能归因于手机离线。
- 普通 Pro 的完整计划可以直接返回既有收尾流程,包括最后一次允许的辅助工具调用;完成说明不再强制转成设备动作。未完成子任务、持续循环、新指导和验收反馈保留各自处理规则,探索仍需交付报告,执行完成不直接成为通过结论。
- Operator 的三种计划写入共用重复顶层里程碑检查;若同名项数量新增或增加,撤销写入并返回工具错误,提示修正替换范围。已有重复项可以减少或整理,正常状态更新不受影响。
- 本轮确定性验证:专项 **103 项通过**;默认后端 **3112 项通过、2 项跳过、8 项排除**,仍为102条既有Pillow弃用警告。Ruff 两项、质量基线、核心类型检查通过。
- 本次修复后尚未执行设备复测,也未重启服务、提交或发布。上一轮浏览器精确大小写断言失败和历史筛选期间使用旧坐标的问题,不据此归为已确认的产品代码缺陷;RESULT 交互的真实任务复测仍未完成。CUA 鼠标跟随问题继续按用户要求等待复现。
## 后续实测修复:输入清空与结果判定
- 旧全量清空依赖全选后固定 21 次退格;23 字符测试串在全选未生效时剩下 `AR`。已统一使用控件清空接口,清空失败停止后续输入,空文本不再触发粘贴;回执丢失不跨后端重复派发清空。
- Pro、Flash 按意图核对新鲜控件状态:输入要求 `present`,空文本替换要求 `empty`,未知状态不判成功。状态确认不等于最终业务通过。
- 实测进一步定位 Helper 的焦点节点选择错误:键盘窗口的不可编辑聚焦容器排在应用输入框之前。Helper 1.2.3(versionCode 9)跳过不可编辑、不可用或不可见的聚焦节点;源码、APK 与校验清单同步构建,模拟器已实际加载新版。
- Pro 实测首次清空成功,记录 `input_verification=empty`;正式验收为 5 项通过、1 项未验证,原因是禁止发送等断言未产出判定,不覆盖原结果。计划未同步时仍发生两次额外点击,随后将恢复提示改为先核对并同步计划、禁止为凑工具调用追加点击;该提示尚未再次进行 Pro 设备复跑。
- Flash 独立实测完整通过:点击、输入、截图、首次清空、截图、报告后进入最终验收;未追加点击,队列恢复空闲。8 次模型请求全部为 `gpt-6-luna / high`,没有注入指导。
- 最终确定性验证:默认后端 **3145 项通过、2 项跳过、8 项排除**;输入专项 **105 项通过**;Helper 构建后相关回归 **81 项通过**。Ruff 两项、质量基线、核心类型检查和差异空白检查通过;保留 102 条既有 Pillow 弃用警告。未重启主服务、未提交或发布。
## 补充实测:Pro 输入与收尾
用户要求继续实测后,Pro 独立回归正式验收通过:6 项通过、0 项失败、0 项未验证,约 217 秒完成。Helper 为 1.2.3,26 次请求均为 `gpt-6-luna / high`,没有请求重试或中途指导注入。完整输入、首次清空和两张截图均有实际证据;清空后只整理笔记与读取历史证据,没有追加点击或输入,队列恢复空闲。
本轮正常同步计划并收尾,没有触发此前的无工具调用恢复分支,因此记录为本轮未复现,不推断已穷尽所有计划不同步场景。本轮未修改程序代码、未重跑单元测试,保留之前任务的原结论。
## 集中回归及回执、证据引用修复
集中回归正式用例 9/9 通过,覆盖安卓三轮输入清空、暂停/恢复、PC 接续、安卓/PC/跨端各两轮,以及最终只读连接复检;针对性自动化检查 313 项通过。全部 224 次模型请求为 `gpt-6-luna / high`,包含探索准备 33 次和正式用例 191 次;一次请求因计划内暂停取消,没有请求重试或正式任务指导注入。探索准备另有 1 项范围约束失败(读取原 Brave 页面),原结果保留,不计入正式用例通过数。
用户随后要求修复回归发现的两个问题:
- MCP 在派发前标记 `pending`,收到入队回执后不再强行覆盖为 `running`;返回调度器任务状态,并优先保留工作进程已经写入的新状态。丢失回复后的队列补查使用相同规则。工具说明和离线目录同步注明排队状态及全局串行。
- Android 文件工具和笔记参数明确要求原样引用成功回执的 `trace_path`。新增笔记写入校验:当任务根目录的绝对文件引用不存在、但任务 `artifacts/` 中有同名文件时,拒绝本次写入并列出候选真实路径,供模型核对回执后修正;不自动移动文件或猜选同名证据。覆盖保存、追加、局部更新;已有根目录文件及没有同名证据的未来路径不按此规则拒绝。
- 原安卓三轮笔记的 5 条遗漏目录路径已只读复核,均能检出,原始笔记未更改。新增端到端工具测试验证截图一次后,错误笔记写入被拒绝、按回执路径重写成功,无需重新截图或执行设备动作。
- 修复后默认测试 **3162 项通过、2 项跳过、8 项排除**,保留 102 条已有 Pillow 警告;Ruff、格式、质量基线、核心类型和差异空白检查通过。
- 运行中的 ARTEMIS/MCP 未重启,修复后的真实任务尚未复测;下次正常重启/重连加载代码后再验收实时行为。历史回归成绩不冒充本次修复后实测。
## 用户重启后的实测与状态补修(10 月 26 日晚至 27 日凌晨)
- 截图路径校验已在真实 Pro 任务中触发:遗漏目录的引用被拒绝,使用成功回执完整路径后保存及追加成功;5 张截图的文件、笔记路径与 SHA-256 核对一致。负向测试中一次 Android 文件工具参数误用被拒绝,另有说明文字引用错误路径而再次被拒绝;这些实际过程均保留。
- 实测发现入队改为 pending 后,执行进程未将 MCP 状态更新为 running。现由工作进程取得资源、写入 running 控制状态时同步推进已有状态文件;锁内只允许 pending → running,避免迟到更新覆盖取消或终态。新工作进程已实际加载补丁;MCP 观察到 C running / D pending,随后 C completed / D running,最终均 completed,时序无重叠。
- 本轮四个真实任务正式结果为 **3 passed、1 inconclusive**。最后一个用例将提示中的排队说明误解为需要从手机观察队列,补充一次 MCP 调度证据后完成截图;指导已消费,不能记为无指导通过。
- 新发现尚未修复:最后用例的 Checker 将 `[verify] (on_complete)` / `[assert] (at_end)` 展示前缀写进 item_text,原文精确匹配未识别已覆盖项,同一三条要求被补为未验证。原始结论保持 3 项通过、3 项未验证,没有人工改判或自动重跑。
- 本轮共 61 次模型请求,均为 `gpt-6-luna / high`、completed,无请求重试;最终队列空闲、设备在线且未占用,未操作电脑。详细原始记录与审计保存在本地 artifacts/regression-fixes-20261026/live-results.md。
- 最新专项 85 项通过;完整默认测试 **3168 项通过、2 项跳过、8 项排除**,仍为 102 条已有 Pillow 警告;Ruff、格式、质量基线、核心类型及差异空白检查均通过。未提交或发布。
## 验收项展示标签匹配修复(10 月 27 日)
用户要求修复上述新增问题后,Checker 在完整 JSON 直接复用和结构化结果归一化两条路径中,共用本轮检查项展示标签的精确映射。仅还原本轮实际生成的 `[kind] (when)` 标签及可选列表符号;正文、类型或时点不同不模糊匹配,字面正文优先,已有失败和矛盾证据不丢弃。模型输出字段说明同步要求只返回检查正文。
- 原失败场景的三条模型结论只读复核后恰好匹配三个原检查项,不再额外产生未验证项;旧 ledger 未改写,历史正式结论保持原样。
- 新安卓 Pro 实测任务 `0cacbe39-4fe3-4995-bc2a-d7a034b28a27` 正式通过:3 项通过、0 项失败、0 项未验证。截图、笔记路径和 SHA-256 核对一致。11 次模型请求均为 `gpt-6-luna / high`、completed,无请求重试、无中途指导;新工作进程已加载修复。
- 针对性测试 74 项通过;最新默认测试 **3189 项通过、2 项跳过、8 项排除**,102 条已有 Pillow 警告。Ruff、格式、质量基线、核心类型及差异空白检查通过。
- 最终队列空闲、安卓在线且未占用。详细验证及边界见本地 artifacts/checker-label-fix-20261027/results.md;未提交或发布。
+67 -39
View File
@@ -1,57 +1,85 @@
# ARTEMIS-Eapil 2.2.0
日期:2026-10-26。比较基线:`v2.1.0`(`83bcfd5`)至当前工作区,包括本轮新增文件。
日期:2026-10-27。升级基线:`v2.1.0`(`83bcfd5`)。
主程序、前端及各自锁文件已统一为 **2.2.0**。当前为本地开发提交,尚未推送、创建标签或发布源码包。远程薄客户端 `artemis-client` 与安卓 Helper 沿用各自独立版本。
本版新增无需手机在线的仅 PC 测试,统一 Android、PC 与跨端任务的串行执行,并修复安卓输入清空、观测恢复、排队状态与最终验收匹配问题。网页新增暗色模式、Markdown 表格和可折叠、可复制的工具结果。
## 主程序变更清单
主程序、前端及锁文件为 **2.2.0**;Android Accessibility Helper 为 **1.2.3**;配套 Cua 插件独立发布 **0.38.0+artemis.1**,继续标注 Windows x64 预览。远程 Python 客户端沿用独立的 0.1.0 版本。
| 范围 | 2.1.0 → 2.2.0 的变化 |
## 任务入口与执行
| 升级内容 | 2.2.0 行为 |
| --- | --- |
| Markdown | 计划、笔记和报告复用渲染器,支持表格与对齐、嵌套列表、任务清单、引用、链接、图片、删除线和围栏代码;保留计划进度与验收标记,处理 HTML 转义、链接协议和流式未闭合代码围栏。 |
| 暗色模式 | 导航太阳/月亮按钮一键切换,首次跟随系统,浏览器记忆并在首次绘制前应用;首页、工作区、配置、插件和报告共用亮暗主题。 |
| Flash 最终 AI 判定设置 | 开关切换后立即保存,保存中防止重复操作,失败恢复原值;保存成功后后续未开始任务使用新值,无须重启。默认关闭、运行任务配置快照及 Pro 验收行为保持原约定。 |
| 插件结果阅读 | 窗口状态、控件与工具结果采用摘要、分组及可展开原始数据展示,改善 `get_window_state` 大 payload 的阅读;此次优化网页呈现,保留执行模型收到的工具证据。 |
| 安卓输入真实性 | 区分输入值、占位提示、可编辑性、焦点与掩码;保留空输入框,输入后重新观察,避免把提示文字当成已经填写。未确认输入时停止继续批量提交,保留已派发事实。 |
| 安卓 Helper | 升至独立版本 **1.2.2**,补充节点输入相关属性,同步 APK、清单与校验信息。 |
| 点击定位与历史引用 | 动作保留实际目标、坐标、截图和快照身份,旧步骤不会随控件编号复用而改变;像素定位结合真实控件和局部画面,避免改称空白区域绕过目标检查。 |
| 写操作错误处理 | 不因一次执行错误自动重复物理动作;区分未派发、已派发和结果不明,扩展工具错误及证据回执保存失败不会被错误记作成功或诱发重发。 |
| 应用启动恢复 | 启动重试不再隐式强制停止应用;焦点为空时结合已恢复活动所在任务判断,仅可见的候选任务不足以证明已就绪,保留有界等待与诊断。 |
| 模型响应完整性 | 流式、非流式、结构化结果及串接解析器要求服务端完整结束;缺少终止事件、失败、未完成或截断 JSON 不进入工具与正式结论。恢复只重试无效模型请求,保留工具证据,不重新执行业务动作。 |
| 取消、超时和请求诊断 | 传递用户停止、新指导、暂停、任务/检查替换及已知外层时限;区分单次请求、传输与验收总预算。用请求和尝试编号关联重试,显示可用服务端请求、响应及链路编号;未知来源和 HTTP 499 保留未知。 |
| 任务生命周期 | 网页、MCP 与报告共用阶段和耗时投影,区分排队、资源等待、暂停/示范、执行、最终验收和导出;增加实际工作进程开始、导出完成时点,旧数据缺失项不补成零。 |
| 中途指导回执 | 区分接收、领取与消费;终态尚未消费、领取后未确认消费分别显示,收到指导不再等同于已经执行。 |
| 证据来源与验收范围 | 页面、Word/Excel、报告和证据索引汇总实际执行界面及接口、终端、文件等辅助来源,保留步骤和调用引用;最终复核明确未验证边界,不按网址或业务名称猜测平台。 |
| MCP、HTTP 与阶段更新 | 拒绝未知字段,JSON 工具结果提供 `structuredContent` 与兼容文本;历史摘要带总数、下一页和实际存储步号;任务阶段支持按 id 局部更新,保留其他阶段并原子校验。工具名称和白名单不变。 |
| 仅 PC 测试 | 首页增加“仅 PC”勾选项,Flash、Pro 和探索均可在没有在线 Android 时运行。仍需有效模型和已启用、授权的电脑观察插件;切换目标同步更新就绪状态及插件筛选。 |
| MCP、HTTP、SDK 与 JSON | 单任务通过 `runtime_overrides: {"execution_target":"computer"}` 指定电脑目标;批量“任务配置(JSON)”使用 `{"execution_target":"computer"}`;Python 客户端支持 `execution_target="computer"`。混合任务仍需在线 Android。 |
| 全局串行 | Android、仅 PC 和跨端任务共用 FIFO 队列与跨进程锁,当前不开放跨设备并行。网页、MCP、批量、CLI 与 SDK 使用同一调度。暂停后可释放资源,恢复时重新排队。 |
| 排队状态一致 | MCP 提交、丢失响应后的查询和工作进程启动按真实状态更新。等待资源显示 pending,获得执行权后显示 running;迟到更新不能覆盖已完成或已取消状态。 |
| Flash 最终 AI 判定 | 开关切换即保存,失败恢复原值;保存后未开始任务采用新值,无须重启。已运行任务仍使用启动时配置,Pro 保留最终验收。 |
| Pro 收尾 | 已完成计划进入最终验收,减少结束阶段重复操作;保留计划进度与恢复信息。 |
## 本轮撤回的机制
详细入口见[工作区说明](../automation-workspace.md)、[AI 自动化](../ai-automation.md)和[Python 客户端](../../packages/artemis-client/README.md)。
开发中曾自行加入次数约束编译、配额持久化、提交内容指纹和 AI 二次动作否决,造成首次 Send、Approve 被误拦。已按用户明确要求完整删除运行时、调用接入及专属测试,没有留下开关或替代审批层。
## Android 与操作可靠性
2.2.0 由执行模型依据用户原文、指导、观察与历史遵守任务次数和禁止要求。资源锁、既有参数及插件授权校验、暂停取消、输入状态观察和真实错误处理继续保留。旧任务及历史约束记录保留,不再作为执行配额读取。
| 修复 | 变化 |
| --- | --- |
| 输入与清空 | 使用控件清空能力,不再依赖固定次数退格;输入、清空后重新观察真实值。区分占位提示、可编辑性、焦点及掩码,不把提示文字当成输入成功。 |
| Helper 1.2.3 | 补全输入属性,排除键盘窗口中的不可编辑焦点容器,避免选错输入目标。同步 APK、版本清单与 SHA256。 |
| 观测与连接恢复 | Helper 回退、UIAutomator2 重连和截图共用本次观测预算,取消时停止恢复并回收迟到连接。模拟器窗口运行不等于 ADB、截图或辅助服务正常;诊断保留实际失败阶段。 |
| 像素定位 | 按真实截图尺寸映射坐标,检查旋转及快照时效;历史目标保留自己的坐标和快照身份,避免控件编号复用导致引用变化。 |
| 写入失败 | 区分未派发、已派发和结果不明,不因工具错误或证据回执保存失败重复物理动作。 |
| 应用启动 | 重试不再隐式强制停止应用;结合恢复中的活动和焦点判断就绪,保留有界等待及诊断。 |
## 同期 CUA 插件候选
## 验收、证据和诊断
此项位于独立的 `Artemis-Plugins` 仓库和隔离工作树,**不是主程序升版后自动更新的插件**:
- **修复“已有通过项却额外出现未验证项”**:兼容模型返回检查项时携带的、本程序生成的类别和时机展示标签,映射回原检查项。只匹配确切格式;正文、类别或时机冲突仍保留,失败项不被改成通过。旧任务结论不会自动重写。
- **修复 Pro 笔记的截图路径**:保存、追加和更新笔记时,拒绝把实际位于 artifacts 子目录的文件误写为不存在的任务根目录路径,并返回真实候选位置,不自动猜选文件。截图回执要求沿用真实路径和 SHA256。
- **完整响应才形成结果**:流式、非流式及结构化输出要求完整结束;失败、截断 JSON 或缺少终止事件不能进入工具执行或正式通过结论。请求重试保留已有工具证据。
- **取消与超时可追踪**:区分用户停止、暂停、新指导、任务替换及预算到期;记录请求和尝试编号,区分单次请求、传输与最终验收总预算。
- **统一进度与证据来源**:网页、MCP、Word/Excel 报告共用阶段和耗时信息;中途指导区分接收、领取与消费,证据注明实际 Android、PC、接口或文件来源及验收边界。
- **接口结果更明确**:拒绝未知字段,MCP JSON 结果同时提供 structuredContent 和兼容文本;历史分页返回总数、下一页与真实存储步号,阶段更新按 id 合并并原子校验。
- 本地候选 **0.38.0+artemis.1**:同步官方 Driver 0.38.0,补充任务栏、托盘及无标题原生菜单发现。
- 根据实际键盘焦点和经验证的 PID、线程及窗口归属选择动作后观察窗口,返回实际来源。
- 对固定上游源码增加已知 Shell/菜单无标题窗口的兼容补丁,重新构建 Driver、UIA helper 与 SDK DLL,记录来源和 SHA256。
- 移除新版驱动已处理的滚动预缩放,避免坐标重复转换;保留最新截图编号、边界与窗口校验。
- 先前验证记录包含 Go 测试、vet、构建,以及共享桌面锁内的菜单/任务栏 9 次调用和隔离浏览器表单 38 次调用。候选市场索引尚未发布,原失败业务全流程未重跑。
## 网页体验
## 验证与交付范围
- 顶部太阳/月亮按钮切换亮暗主题,首次跟随系统并记住浏览器选择;首页、工作区、配置、插件和报告共用主题。
- 计划、笔记和报告支持 Markdown 表格、列对齐、嵌套列表、任务清单、引用、链接、图片、删除线与代码块,保留转义和链接安全检查。
- 工具和动作卡片允许选择、复制内容;RESULT 默认折叠为短预览和字符数,展开后限高滚动并支持复制全文。显示折叠不截断模型收到的工具证据。
- 插件窗口状态和控件数据采用摘要及分组展示,需要时展开原始结果。
升版前、撤回次数约束后的当前源码已完成:默认后端 **3063 项通过、2 项跳过、8 项排除**,保留 102 条现有 Pillow 弃用警告;专项 **38 项通过**;Ruff 格式与静态检查、质量基线、核心类型及差异空白检查通过。以上为上一轮实际执行的结果,非本次升版后重跑全量。
## 配套 Cua 插件
本次升版后实际完成:
[Cua 0.38.0+artemis.1](https://git.playones.com/chenmingxuan/Artemis-Plugins/releases/tag/cua-driver-v0.38.0+artemis.1) 在独立插件仓库发布,包含上游升级和 ARTEMIS 适配修复:
- 后端项目、UV 锁、前端项目、NPM 锁顶层与根包、本机发行元数据及运行时公开版本共七个读数均为 **2.2.0**。
- `uv lock --check --offline` 通过;离线重建并更新本机 Artemis 可编辑安装,仅调整该包,其他依赖版本保留。
- 启动导入、安装资源、状态路径及配置/源码打包相关测试 **44 项通过**。
- 前端 ChromeHeadless **317 项通过**,生产构建通过。
- 本轮版本文件及文档的差异空白、相对链接检查通过。未重复执行升版前已通过的后端全量和质量门禁,不把上轮结果标作升版后重跑。
- 固定官方 Driver 0.38.0、源码提交和官方 ZIP SHA256。
- 补充任务栏、托盘及无标题原生菜单发现;根据真实键盘焦点以及 PID、线程和窗口归属决定动作后观察目标。
- 对固定上游源码应用已知 Shell/菜单无标题窗口兼容补丁,重新构建 Driver、UIA helper 和 SDK DLL;包内包含补丁、来源与二进制 SHA256。
- 移除新版驱动已经处理的滚动预缩放,避免重复坐标转换;保留新截图编号、边界与窗口检查。
- 沿用宿主桌面锁、证据、录像和子进程回收。前台输入会占用桌面;此前反馈的显示光标与系统鼠标偶发分离仍待复现,本版不宣称已解决。
本轮未调用付费模型、操作设备、修改历史任务或重启后台;现有原业务、真实多 DPI、多显示器、长任务和压力场景不能据此视为全部通过。
## 验证结果与边界
更新安装时由现有安装/升级流程同步包元数据和网页构建;运行中的后台需正常重启后加载新代码。主程序升级不会自动升级或授权插件。
本次发布代码的验证结果:
| 检查 | 结果 |
| --- | --- |
| 默认 Python 测试 | 3189 通过、2 跳过、8 按标记排除;102 条已有 Pillow 弃用警告 |
| Checker 专项 | 74 通过,覆盖展示标签兼容、缺项、冲突和失败保留 |
| 远程 Python 客户端 | 24 通过 |
| Angular ChromeHeadless | 326 通过,生产构建通过 |
| Python 质量门禁 | Ruff 静态与格式、质量基线、核心类型检查通过 |
| 依赖与差异 | UV 锁离线检查、Git 差异空白检查通过 |
| Cua 确定性检查 | Go 测试、vet 与构建通过;源码、补丁和包内二进制来源分别核对 |
10 月 26 日集中实测的 **9 项正式用例全部通过**,覆盖 Android 三轮输入清空与暂停恢复、仅 PC,以及两轮跨端传递;同时完成 313 项针对性检查。该组使用 `gpt-6-luna / high`,观察到任务按序执行。另一次准备探索因超出指定页面范围而失败,单独保留,未计入 9 项通过。
后续排队状态、笔记路径与验收匹配修复另做新任务验证:实际观察到 running/pending 顺序切换;无效笔记路径被拒绝,真实文件和哈希可核对。最后的 Android Pro 验收任务 **3 项通过、无重复未验证项**,11 次 `gpt-6-luna / high` 请求全部完成、无重试和中途指导。先前曾未判定的任务保留原结论,没有用新解析覆盖历史。
Cua 此版本另有菜单/任务栏 9 次调用与隔离 Brave 表单 38 次调用验证。上述覆盖不等于原失败业务全部复跑,也未覆盖长时间压力、强制真实断连、多设备及全部多屏/DPI 组合。仅 PC 的无手机在线准入另由确定性测试和页面检查覆盖。
## 安装与升级
1. 等待当前任务结束,运行 `update.bat`,国内镜像运行 `update-cn.bat`。升级流程会停止本项目进程并同步环境。
2. 完成后运行 `start.bat` 或 `start-cn.bat`,由新版后台加载代码并构建网页。
3. 如需新电脑控制能力,在插件市场单独更新至 Cua `0.38.0+artemis.1`,确认授权后再创建任务。**主程序升级不会自动升级或授权插件**,已创建任务固定原插件版本。
发布附件为 `artemis-eapil-2.2.0-source.zip` 与 `SHA256SUMS.txt`。源码包通过仓库打包脚本生成,保留浅 Git 更新能力;不包含本机配置、凭据、历史任务、依赖目录及预构建网页。