Files
Artemis-Eapil/docs/plans/2.0.0-plugins.md
T

128 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ARTEMIS 2.0.0:插件与跨端测试
状态:核心插件链路、首发 Windows 插件适配已实现;Flash/Pro 纯电脑任务和基础浏览器表单实测通过,跨端与长期稳定性验收仍在进行,不是正式发行。
开发分支:`codex/v2.0.0-plugins`,从 1.5.2 主线建立。版本号为 2.0.0,发布前不创建正式版本标签。1.5.x 的 BUG 修复继续在主线进行,后续正常合并进开发分支。
插件市场仓库:<https://git.playones.com/chenmingxuan/Artemis-Plugins>
## 产品目标
用户在 ARTEMIS 网页输入一个任务,由 ARTEMIS 自身完成电脑、Web 控制台和 Android 的组合测试,生成统一证据和验收结论。外部 AI 仍通过现有 MCP 发起任务、指导任务并查询报告。
首版运行环境为本机 Windows。Flash、Pro 共用插件能力,纯电脑任务不要求连接 Android;架构保留远程执行和其他平台的扩展位置。
首发仅提供一个电脑控制插件,适配 [open-codex-computer-use](https://github.com/iFurySt/open-codex-computer-use)。浏览器通过该插件的窗口观察、点击和输入能力操作;首版不增加独立浏览器插件。终端、SSH、专用 API 等能力通过后续插件扩展。
## 插件市场和安装
- 市场以独立 Git 仓库维护索引、说明、来源和验证记录,发行附件分发插件安装包。
- 用户从 ARTEMIS 的插件页面安装、配置、检查、启用、升级及卸载插件,显示下载、安装和失败状态。
- 完整插件包包含清单、Skill、MCP 启动信息、配置表单定义及必要资源或依赖说明;允许纯 Skill 类型。
- 安装时使用最新已验证且兼容的版本。依赖进入插件专用目录,校验下载文件;安装失败保留原可用版本。
- 已安装插件提示更新,用户点击升级。任务固定使用启动时的版本,插件空闲时完成升级。
- 高级入口允许本地插件和自定义 MCP 接入,标明来源,用户手动启用。
- 验证记录注明 ARTEMIS、插件、系统版本及覆盖场景。开发预览包列明已完成的验证范围与未覆盖场景,不宣称已完成正式版全面验收。
## 配置、授权与 Skill
- 同一插件支持多套命名连接配置,例如不同路由器或控制台,允许设置默认项。
- 任务界面和 JSON 可以覆盖连接配置与可用插件;凭据保存在本机,任务参数和普通报告仅引用配置名称。
- 用户启用插件时授权其控制范围,范围内自动执行;超出范围等待用户指导。
- 执行层校验可调用工具及可识别的目标参数。第三方进程的系统权限必须如实说明,工具参数检查不能宣称等同于操作系统沙箱。
- AI 从已启用且配置就绪的插件中按需选择,按需加载工具、Skill 及其引用资源。
- 复用第三方 Skill 时适配工具名称和运行环境。依赖宿主专用 API 的 Skill 需要对应适配,不能仅复制文件就宣称可用。
## 任务执行和共享资源
- 复用后台配置、任务队列、批次、历史和报告存储,不另建调度器。
- 执行上下文从单个 Android 设备扩展为资源集合,按资源路由动作和观察结果。
- 同一桌面或同一路由器上的用例整条串行;独立资源上的任务可并行。当前按任务可用插件统一预留资源;显式禁用插件的手机任务不占用桌面资源。按需扩大资源集合的调度尚未实现。
- 多资源获取应避免相互等待;资源身份需要跨插件一致,不能因为通过不同插件访问同一路由器而绕开互斥。
- 暂停先停止派发并确认正在执行的动作停止,再释放资源。恢复重新排队、观察和核对环境,不沿用过期截图或状态假设。
- 网页显示正在控制的资源并提供暂停和指导入口;跨端任务沿用现有用户指导语义。
- 工具结果区分成功、失败和结果不确定;保留文本、图像、结构化结果和错误,不因 MCP 调用返回就自动认定业务成功。
- 插件启动、连接、操作和恢复受明确超时及任务总预算约束;不得产生无界重试。
- 结果不明的点击或配置修改先核对状态再决定是否重试,业务用例不因模型或插件重试而重新提交。
- 恢复无效时结束当前用例、记录插件与工具的失败原因,后续用例遵循批次的失败即停止设置。
## 环境恢复和报告
- 环境恢复由任务提示词或配置决定,不统一强制回滚。
- 具备读取能力时记录配置修改前后的值;要求恢复时将恢复纳入结束阶段并验证,失败单独展示并标记受影响资源。
- 手机、电脑和浏览器操作进入同一时间线,记录资源、插件版本、耗时、动作结果及证据来源。
- 首版电脑证据以步骤截图和工具结果为主。保留 Android 录屏,插件接口允许返回视频附件,电脑持续录屏后续扩展。
- 执行完成与测试通过继续分开。缺少验收证据时记录未验证或阻塞,保留已有明确结论,人工复验沿用现有优先级。
- 网页、Word、Excel、单任务资料包和批次资料包提供一致的跨端结果与证据。
- 对外 MCP、参数文档和随源码分发的自动化 Skill 同步新任务配置及能力查询。
## 已核实的接入基础
现有代码具有 Actuator 能力描述、内部 MCP ActionSession、统一队列和 DataEngine。外部 MCP 连接、内部 Skill 动态加载及跨资源上下文仍需新增。
Flash 的扩展调用需要完整处理 MCP 错误及多种输出;Pro 的发现、工具绑定和动作分派需要连通,不能仅向模型声明工具名称。
电脑控制项目已有 Windows 实现。前期静态检查发现截图采用屏幕区域截取,窗口定位和元素索引具有会话状态;应通过固定版本实测遮挡、DPI、多窗口、连续操作、超时和退出清理,再确定市场发布包。这里不代表已通过运行验证。
## 交付顺序和验收
### 0. 开发基线
- [x] 独立开发分支,版本统一为 2.0.0。
- [x] 保存确认过的设计和市场仓库地址。
- [x] 形成可运行的插件功能;版本标记不代表功能已经完成。
### 1. 通用插件基础
- [x] 明确清单和市场索引契约,并实现版本兼容与参数校验。
- [x] 支持本地 stdio / 远程 MCP 连接、自定义接入、会话生命周期及有界取消。
- [x] 支持 Skill 按需加载、命名配置、凭据引用和授权范围检查。
- [x] Flash / Pro 共用工具分派,完整保存错误与图像等结果。
### 2. 插件页面和市场
- [x] 市场查询、安装进度、配置、启停、诊断、更新和卸载。
- [x] 下载完整性检查、失败恢复、任务版本固定与升级互斥。
- [x] 发布首个电脑插件开发预览及实际验证范围;正式版全面验收继续。
### 3. 跨端执行
- [x] 适配首发电脑控制插件,安卓任务自主调用插件;保留高级 API 纯电脑入口。
- [x] 多资源互斥、暂停恢复、指导、超时及共享环境变更处理。
- [ ] 跨端证据、验收、人工复验和各类导出保持一致。
- [x] 同步 HTTP、工作区 MCP 和自动化 Skill。
### 4. 验收
- [x] 确定性测试覆盖连接失败、结果不确定、超时、取消、升级及资源互斥。
- [ ] Windows 实测窗口遮挡、多窗口、DPI、输入、观察和浏览器控制台操作。
- [x] 实际跑通电脑修改参数、手机验证、按要求恢复及完整证据导出。
- [ ] 验证 Flash / Pro、纯电脑任务、批量执行、暂停恢复和人工指导。
- [ ] 执行仓库质量检查、前端交互检查,并完成真实安装包验证后发布。
### 本轮验证记录(2026-10-14)
- 确定性测试覆盖 stdio、Streamable HTTP、任务固定版本、取消/超时资源保护、图片来源与共享证据清理;网页测试与构建通过。
- 首发包增加窗口自身截图与子控件消息路由,修复实际发现的遮挡画面污染和按钮收不到点击问题。两个临时窗口验证了遮挡下截图来源与实际点击效果。
- 隔离 Chrome 窗口通过 MCP 修改本地表单参数、提交一次并读回确认。
- 使用已配置的 `gpt-6-luna / high` 跑同一个中文输入与结果确认任务:Flash 57 秒、Pro 112 秒,真实控件值和最终通过结果一致。只代表这两个基础样本。
- 真实 Pro 记录成功生成 Word、Excel 与含插件来源命名的截图列表。修复了接口清洗导致来源字段丢失的问题。
- 队列回归复现并修复两处资源遗漏:活动任务元数据丢失插件资源,以及取消后遗留版本占用。运行任务仍等进程退出才释放占用,避免提前允许升级。
- 真实 stdio MCP 的确定性用例验证暂停关闭连接、释放共享资源,恢复等待另一任务完成,再新建连接重新观察;该验证不代替真实模型的批次和指导组合验收。
- 真实 Flash 跨端任务使用选定的 Android 17 模拟器和隔离 Chrome:电脑修改参数、手机刷新验证、电脑恢复、手机再次验证,最终用例通过,耗时约 119 秒;后台仅收到改值与恢复两次提交。Word/Excel 导出包含 11 步、8 条插件操作、23 项截图引用,手机和插件图片分别保留。
- 同一跨端场景实际验证暂停后设备与桌面锁释放、恢复等待另一资源占用者退出;指导已被执行端领取并记录在下一步,未重复提交已完成的修改。该次操作完成但终检发现手机文字层级陈旧,保留为未验证,未把后续修复结果覆盖旧记录。
- 联调修复 Flash 跨端切换时将电脑图像带入手机观察的问题。插件图片保留在带来源的工具结果和步骤记录内,切回手机时重新获取手机截图与元素。
- 插件截图在首次入库时同时保存本次观察文字,回归确认后续动作不会将新文字补写到前一步图片上。
- 联调还复现 Android 辅助服务缓存旧网页文字。辅助 APK 1.2.1 在 Android 13+ 每次观察前清理节点缓存,修复后同一模型任务终检通过;另有不调用模型的动态网页回归,同时验证文字与像素从初始值更新并恢复。Android 12 及更早版本不使用此 API,仍需单独验收。
- 最终默认 Python 测试 2451 通过、2 跳过、8 未选中;Ruff 格式/静态检查、质量基线、核心 Pyright 均通过。前端 187 项测试与生产构建通过,真实 Android 动态网页回归通过。历史检索测试改用同步存储以消除测试自身的线程等待竞争,断言保持不变。
- 复杂浏览器控制台、多 DPI、多显示器、长程运行、真实批次组合及混合 Pro 模式还需要验收。这些未覆盖项不包含在首个电脑插件开发预览包的验证范围内。
### 插件入口修正(2026-10-14)
- 普通安卓任务自动提供已启用且默认连接已授权的扩展简介,由模型按需加载工具和 Skill。无需选择 mixed。仍可通过 plugins: [] 禁用或指定命名配置。
- 首页、工作区和批次导入移除执行目标选择,使用默认收起的浅色「扩展插件 · 自动」入口;保留高级 API 的纯电脑目标。
- 插件市场区分加载、失败、空列表与可安装内容,明确标注开发预览。电脑控制 1.0.0 包和校验文件已上传市场仓库,索引已推送。
- 公开 HTTPS 下载、SHA-256 与清单校验、隔离目录安装通过。新装保持未授权、未启用;不覆盖用户配置。
- 回归覆盖普通安卓任务按需加载跨端插件、默认连接、禁用与未授权边界、MCP 不自动换执行器。默认 Python 2456 通过、2 跳过、8 未选中;前端 190 项通过,生产构建及 Ruff、质量基线、核心类型检查通过。
- 浏览器已检查市场卡片、安装按钮、首页/工作区的折叠插件入口。这一轮未额外运行付费模型任务,真实跨端模型证据沿用上述联调记录。