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

+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 更新能力;不包含本机配置、凭据、历史任务、依赖目录及预构建网页。