diff --git a/README.md b/README.md index ba276b2..b3e6529 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ ARTEMIS 的插件市场。配套 ARTEMIS 2.2.0 发布的电脑控制插件为 ** ## 从 OCU 切换 -Open Computer Use(OCU)已从市场索引下架,当前市场只提供 Cua。已安装 OCU 的用户请先安装并启用 Cua,再停用 OCU,避免同一任务加载两套电脑控制工具。排队、暂停或运行中的任务结束后再切换。 +Open Computer Use(OCU)已从市场索引下架,电脑控制使用 Cua。已安装 OCU 的用户请先安装并启用 Cua,再停用 OCU,避免同一任务加载两套电脑控制工具。排队、暂停或运行中的任务结束后再切换。 旧插件的源码、发行附件、历史任务与证据继续保留。下架不会删除用户的已安装版本,也不会替其他用户自动授权新插件。需要复核旧任务时仍可按其固定版本处理。 @@ -42,3 +42,11 @@ python tests/cua_discovery_smoke.py <安装后的artemis-cua-adapter.exe> --app [task-review](plugins/task-review/README.md) 使用 ARTEMIS 清单版本 3,为任务回放增加原始用例与人工评审侧栏,支持自动保存和上一条/下一条,并将选填结果写入报告。此插件不运行 MCP 或设备操作,需要 ARTEMIS 2.4.0+,在主程序插件市场安装并启用;2.2.x 尚不支持。 构建:`python scripts/build_task_review.py`。输出 ZIP 与校验文件位于 `artifacts/task-review/`。验证范围见 [VERIFICATION](plugins/task-review/VERIFICATION.md)。发行标签 `task-review-v1.1.0`,市场安装包与 SHA256 以 `catalog-v4.json` 为准;`catalog.json` 保留给 2.2.x。 + +## 家庭安防多工具测试 0.5.0+artemis.6(预览) + +[artemis-device-test](plugins/artemis-device-test/README.md) 提供环境自检、用例路由、媒体/抓包/串口、设备协议及联合证据工具。仅声明 Windows x64;需要已安装 MCP、dotenv 的 Python 和对应外部工具/驱动,按[部署说明](plugins/artemis-device-test/DEPLOYMENT.md)配置。纯电脑任务还需选择 Cua 等已授权视觉插件;固件写入默认关闭。 + +本修订统一子进程生命周期并纠正未知执行的回执。134 项单元测试通过,正常 ARTEMIS 离线证据任务 5/5 通过,完成暂停恢复与报告导出核验;真实固件升级、设备发现、抓包、串口及全部 357 条业务用例未测,详见[审查记录](plugins/artemis-device-test/VERIFICATION.md)。原资料按公司市场分发授权记录,适配层 Apache-2.0。 + +构建:`python scripts/build_device_test.py --ref <固定提交>`。输出 ZIP、SHA256 和源码提交记录位于 `artifacts/device-test/`;发行标签 `artemis-device-test-v0.5.0+artemis.6`。安装包与校验值以对应市场索引及不可变发行附件为准。 diff --git a/catalog-v3.json b/catalog-v3.json index 9de3acc..b7f76b1 100644 --- a/catalog-v3.json +++ b/catalog-v3.json @@ -277,6 +277,348 @@ "archive_url": "https://git.playones.com/chenmingxuan/Artemis-Plugins/releases/download/task-review-v1.0.0/task-review-1.0.0.zip", "sha256": "5487fef365cfa9ec5d2eda7be60b5a5110bcf2edd24b2d10495ccda8ca02c454", "verification": "ARTEMIS 2.3.0+ 声明式工作区插件,无 MCP、模型或设备操作。Windows 隔离示例验证 Markdown 初始需求、左右侧栏、人工中文评分、选填备注与 Word/Excel 导出;宿主默认回归 3197 项、前端 336 项及构建通过。macOS/Linux 未实测;真实业务结果由人工评审,详见 plugins/task-review/VERIFICATION.md。" + }, + { + "manifest": { + "schema_version": 2, + "id": "artemis-device-test", + "name": "家庭安防多工具测试", + "version": "0.5.0+artemis.6", + "description": "集成 artemis-device-test Skill:PATH/统一目录自动发现工具及匹配位数的 MediaInfo DLL、按能力独立自检、本机网卡枚举、357 条用例路由、媒体/抓包/串口、V1/V2 设备及联合证据。PC/网站复用视觉插件,手机沿用 Artemis;工具成功不等于用例通过。", + "artemis_version": ">=2.0.0,<3.0.0", + "platforms": [ + "win32" + ], + "architectures": [ + "amd64" + ], + "license": "LicenseRef-Yitong-Artemis-Market; Apache-2.0-Adapter", + "server": { + "transport": "stdio", + "command": "${config.python}", + "args": [ + "-B", + "${plugin_dir}/server.py" + ], + "env": { + "ARTEMIS_DEVICE_TEST_PROFILE": "${config.profile}", + "ARTEMIS_DEVICE_TEST_TOOL_ROOT": "${config.tool_root}", + "ARTEMIS_DEVICE_TEST_ENV_FILE": "${config.rtsp_env_file}", + "ARTEMIS_DEVICE_TEST_TIMEOUT": "${config.operation_timeout_seconds}", + "ARTEMIS_DEVICE_TEST_ALLOW_FIRMWARE_WRITE": "${config.allow_firmware_write}" + } + }, + "config": { + "python": { + "label": "Artemis Python 解释器", + "description": "填写已安装 MCP 依赖的 Python 绝对路径。源码环境可使用项目 .venv/Scripts/python.exe。", + "default": "python", + "required": true + }, + "profile": { + "label": "本机工具 profile JSON", + "description": "可选,固定 tools/runtimes/libraries 路径;不保存凭据。留空时自动发现统一目录和宿主 PATH;显式错误路径不回退。", + "default": "" + }, + "tool_root": { + "label": "已解压工具目录", + "description": "可选,本机已解压工具目录绝对路径;自动发现 EXE/匹配位数的 MediaInfo.dll,以及 binwalk-python/Scripts/python.exe。不安装程序。", + "default": "" + }, + "rtsp_env_file": { + "label": "本机 RTSP 环境文件", + "description": "可选,受控 .env 文件的绝对路径;仅按工具指定的环境变量名读取,不回显凭据。", + "default": "" + }, + "operation_timeout_seconds": { + "label": "单次操作预算(秒)", + "description": "默认 45。10..3300;增加前须将宿主 ARTEMIS_PLUGIN_TOOL_TIMEOUT_SECONDS 设得至少大 10 秒。任务总时限同样生效。", + "default": "45" + }, + "allow_firmware_write": { + "label": "允许显式固件写入", + "description": "默认 false。仅当前用例明确授权升级时设置 true;工具还要求 execute、完整身份、ROM SHA-256 和审阅摘要。", + "default": "false" + } + }, + "skill": "SKILL.md", + "targets": [ + "android", + "mixed", + "computer" + ], + "resources": [ + "desktop:local", + "lab:device-test" + ], + "capabilities": { + "kind": "other", + "recording": "none", + "required_tools": [ + "environment_doctor", + "lookup_case", + "probe_media", + "media_info", + "analyze_pcap", + "scan_ports", + "scan_firmware", + "device_capabilities", + "list_network_interfaces", + "discover_devices", + "identify_device", + "device_info", + "inspect_firmware", + "firmware_preflight", + "verify_firmware", + "capture_packets", + "capture_serial", + "upgrade_firmware", + "import_evidence", + "bundle_evidence" + ], + "tools": { + "environment_doctor": { + "effect": "read", + "observation": false, + "idempotent": true, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ] + }, + "lookup_case": { + "effect": "read", + "observation": false, + "idempotent": true, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ] + }, + "probe_media": { + "effect": "read", + "observation": false, + "idempotent": true, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ], + "target_argument": "input_file" + }, + "media_info": { + "effect": "read", + "observation": false, + "idempotent": true, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ], + "target_argument": "input_file" + }, + "analyze_pcap": { + "effect": "read", + "observation": false, + "idempotent": true, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ], + "target_argument": "input_file" + }, + "scan_ports": { + "effect": "read", + "observation": false, + "idempotent": true, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ], + "target_argument": "host" + }, + "scan_firmware": { + "effect": "read", + "observation": false, + "idempotent": true, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ], + "target_argument": "input_file" + }, + "device_capabilities": { + "effect": "read", + "observation": false, + "idempotent": true, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ] + }, + "list_network_interfaces": { + "effect": "read", + "observation": false, + "idempotent": true, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ] + }, + "discover_devices": { + "effect": "read", + "observation": false, + "idempotent": true, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ] + }, + "identify_device": { + "effect": "read", + "observation": false, + "idempotent": true, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ], + "target_argument": "host" + }, + "device_info": { + "effect": "read", + "observation": false, + "idempotent": true, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ], + "target_argument": "host" + }, + "inspect_firmware": { + "effect": "read", + "observation": false, + "idempotent": true, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ], + "target_argument": "rom_file" + }, + "firmware_preflight": { + "effect": "read", + "observation": false, + "idempotent": true, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ], + "target_argument": "host" + }, + "verify_firmware": { + "effect": "read", + "observation": false, + "idempotent": true, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ], + "target_argument": "host" + }, + "capture_packets": { + "effect": "write", + "observation": false, + "idempotent": false, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ], + "target_argument": "host" + }, + "capture_serial": { + "effect": "write", + "observation": false, + "idempotent": false, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ], + "target_argument": "port" + }, + "upgrade_firmware": { + "effect": "write", + "observation": false, + "idempotent": false, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ], + "target_argument": "host" + }, + "import_evidence": { + "effect": "write", + "observation": false, + "idempotent": false, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ], + "target_argument": "input_file" + }, + "bundle_evidence": { + "effect": "write", + "observation": false, + "idempotent": false, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ], + "target_argument": "run_id" + } + } + } + }, + "release_stage": "preview", + "archive_url": "https://git.playones.com/chenmingxuan/Artemis-Plugins/releases/download/artemis-device-test-v0.5.0+artemis.6/artemis-device-test-0.5.0-artemis.6.zip", + "sha256": "0409323ba738a784fd26dca04d4757024d2e41c2a0ab7a7a17754b08bd763a74", + "verification": "Windows x64 预览;Python 3.14.0 / ARTEMIS 2.4.4 实测。134 项单元测试、Windows Job 进程树/超时/取消、文件字节绑定、权限与资源互斥、真实 MCP20工具检查通过;正常宿主离线证据任务 5/5 AI验收通过,暂停恢复及 Word/Excel/全部资料导出读回通过。真实烧录、设备发现/网络扫描、抓包、串口及357条完整业务用例未测;外部工具和驱动需自行准备。原资料按公司市场分发授权记录,适配层 Apache-2.0。" } ] } diff --git a/catalog-v4.json b/catalog-v4.json index 0ee7491..01d39a6 100644 --- a/catalog-v4.json +++ b/catalog-v4.json @@ -277,6 +277,348 @@ "archive_url": "https://git.playones.com/chenmingxuan/Artemis-Plugins/releases/download/task-review-v1.1.0/task-review-1.1.0.zip", "sha256": "380faee187c122244ff36e20982ceb4e17ec6f6f5ae42533df52f621ad1fc708", "verification": "ARTEMIS 2.4.0+ 声明式工作区插件。Windows 隔离验证原始用例、自动保存、保存失败保留输入、上下条导航、所有模式面板、宽窄布局及深浅色。宿主本轮默认回归与前端 347 项及构建通过。macOS/Linux 未实测;真实业务结论由人工评审,详见包内 VERIFICATION.md。" + }, + { + "manifest": { + "schema_version": 2, + "id": "artemis-device-test", + "name": "家庭安防多工具测试", + "version": "0.5.0+artemis.6", + "description": "集成 artemis-device-test Skill:PATH/统一目录自动发现工具及匹配位数的 MediaInfo DLL、按能力独立自检、本机网卡枚举、357 条用例路由、媒体/抓包/串口、V1/V2 设备及联合证据。PC/网站复用视觉插件,手机沿用 Artemis;工具成功不等于用例通过。", + "artemis_version": ">=2.0.0,<3.0.0", + "platforms": [ + "win32" + ], + "architectures": [ + "amd64" + ], + "license": "LicenseRef-Yitong-Artemis-Market; Apache-2.0-Adapter", + "server": { + "transport": "stdio", + "command": "${config.python}", + "args": [ + "-B", + "${plugin_dir}/server.py" + ], + "env": { + "ARTEMIS_DEVICE_TEST_PROFILE": "${config.profile}", + "ARTEMIS_DEVICE_TEST_TOOL_ROOT": "${config.tool_root}", + "ARTEMIS_DEVICE_TEST_ENV_FILE": "${config.rtsp_env_file}", + "ARTEMIS_DEVICE_TEST_TIMEOUT": "${config.operation_timeout_seconds}", + "ARTEMIS_DEVICE_TEST_ALLOW_FIRMWARE_WRITE": "${config.allow_firmware_write}" + } + }, + "config": { + "python": { + "label": "Artemis Python 解释器", + "description": "填写已安装 MCP 依赖的 Python 绝对路径。源码环境可使用项目 .venv/Scripts/python.exe。", + "default": "python", + "required": true + }, + "profile": { + "label": "本机工具 profile JSON", + "description": "可选,固定 tools/runtimes/libraries 路径;不保存凭据。留空时自动发现统一目录和宿主 PATH;显式错误路径不回退。", + "default": "" + }, + "tool_root": { + "label": "已解压工具目录", + "description": "可选,本机已解压工具目录绝对路径;自动发现 EXE/匹配位数的 MediaInfo.dll,以及 binwalk-python/Scripts/python.exe。不安装程序。", + "default": "" + }, + "rtsp_env_file": { + "label": "本机 RTSP 环境文件", + "description": "可选,受控 .env 文件的绝对路径;仅按工具指定的环境变量名读取,不回显凭据。", + "default": "" + }, + "operation_timeout_seconds": { + "label": "单次操作预算(秒)", + "description": "默认 45。10..3300;增加前须将宿主 ARTEMIS_PLUGIN_TOOL_TIMEOUT_SECONDS 设得至少大 10 秒。任务总时限同样生效。", + "default": "45" + }, + "allow_firmware_write": { + "label": "允许显式固件写入", + "description": "默认 false。仅当前用例明确授权升级时设置 true;工具还要求 execute、完整身份、ROM SHA-256 和审阅摘要。", + "default": "false" + } + }, + "skill": "SKILL.md", + "targets": [ + "android", + "mixed", + "computer" + ], + "resources": [ + "desktop:local", + "lab:device-test" + ], + "capabilities": { + "kind": "other", + "recording": "none", + "required_tools": [ + "environment_doctor", + "lookup_case", + "probe_media", + "media_info", + "analyze_pcap", + "scan_ports", + "scan_firmware", + "device_capabilities", + "list_network_interfaces", + "discover_devices", + "identify_device", + "device_info", + "inspect_firmware", + "firmware_preflight", + "verify_firmware", + "capture_packets", + "capture_serial", + "upgrade_firmware", + "import_evidence", + "bundle_evidence" + ], + "tools": { + "environment_doctor": { + "effect": "read", + "observation": false, + "idempotent": true, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ] + }, + "lookup_case": { + "effect": "read", + "observation": false, + "idempotent": true, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ] + }, + "probe_media": { + "effect": "read", + "observation": false, + "idempotent": true, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ], + "target_argument": "input_file" + }, + "media_info": { + "effect": "read", + "observation": false, + "idempotent": true, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ], + "target_argument": "input_file" + }, + "analyze_pcap": { + "effect": "read", + "observation": false, + "idempotent": true, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ], + "target_argument": "input_file" + }, + "scan_ports": { + "effect": "read", + "observation": false, + "idempotent": true, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ], + "target_argument": "host" + }, + "scan_firmware": { + "effect": "read", + "observation": false, + "idempotent": true, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ], + "target_argument": "input_file" + }, + "device_capabilities": { + "effect": "read", + "observation": false, + "idempotent": true, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ] + }, + "list_network_interfaces": { + "effect": "read", + "observation": false, + "idempotent": true, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ] + }, + "discover_devices": { + "effect": "read", + "observation": false, + "idempotent": true, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ] + }, + "identify_device": { + "effect": "read", + "observation": false, + "idempotent": true, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ], + "target_argument": "host" + }, + "device_info": { + "effect": "read", + "observation": false, + "idempotent": true, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ], + "target_argument": "host" + }, + "inspect_firmware": { + "effect": "read", + "observation": false, + "idempotent": true, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ], + "target_argument": "rom_file" + }, + "firmware_preflight": { + "effect": "read", + "observation": false, + "idempotent": true, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ], + "target_argument": "host" + }, + "verify_firmware": { + "effect": "read", + "observation": false, + "idempotent": true, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ], + "target_argument": "host" + }, + "capture_packets": { + "effect": "write", + "observation": false, + "idempotent": false, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ], + "target_argument": "host" + }, + "capture_serial": { + "effect": "write", + "observation": false, + "idempotent": false, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ], + "target_argument": "port" + }, + "upgrade_firmware": { + "effect": "write", + "observation": false, + "idempotent": false, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ], + "target_argument": "host" + }, + "import_evidence": { + "effect": "write", + "observation": false, + "idempotent": false, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ], + "target_argument": "input_file" + }, + "bundle_evidence": { + "effect": "write", + "observation": false, + "idempotent": false, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ], + "target_argument": "run_id" + } + } + } + }, + "release_stage": "preview", + "archive_url": "https://git.playones.com/chenmingxuan/Artemis-Plugins/releases/download/artemis-device-test-v0.5.0+artemis.6/artemis-device-test-0.5.0-artemis.6.zip", + "sha256": "0409323ba738a784fd26dca04d4757024d2e41c2a0ab7a7a17754b08bd763a74", + "verification": "Windows x64 预览;Python 3.14.0 / ARTEMIS 2.4.4 实测。134 项单元测试、Windows Job 进程树/超时/取消、文件字节绑定、权限与资源互斥、真实 MCP20工具检查通过;正常宿主离线证据任务 5/5 AI验收通过,暂停恢复及 Word/Excel/全部资料导出读回通过。真实烧录、设备发现/网络扫描、抓包、串口及357条完整业务用例未测;外部工具和驱动需自行准备。原资料按公司市场分发授权记录,适配层 Apache-2.0。" } ] } diff --git a/catalog.json b/catalog.json index 4a93fce..0f8d292 100644 --- a/catalog.json +++ b/catalog.json @@ -187,6 +187,348 @@ "archive_url": "https://git.playones.com/chenmingxuan/Artemis-Plugins/releases/download/cua-driver-v0.38.0+artemis.1/cua-driver-0.38.0+artemis.1-windows-amd64.zip", "sha256": "c007da16d58c4165a1a344113e650e68bd92a69ad3ce4ca8285818c5426dc0f4", "verification": "Windows x64 预览,配套 ARTEMIS 2.2.0。固定 Driver 0.38.0、源码提交和官方 ZIP 校验值;包含已知无标题 Shell/菜单兼容补丁及重新构建运行库。Go 测试、vet、构建及包内源码/二进制校验通过;菜单/任务栏 9 次调用、隔离 Brave 表单 38 次调用通过,并参与仅 PC 与跨端集中回归。前台输入占用桌面;显示光标与系统鼠标偶发分离待复现,未全面覆盖多屏/DPI、长时间压力、其他托盘菜单及原失败业务全流程。详情见 plugins/cua-driver/VERIFICATION.md。" + }, + { + "manifest": { + "schema_version": 2, + "id": "artemis-device-test", + "name": "家庭安防多工具测试", + "version": "0.5.0+artemis.6", + "description": "集成 artemis-device-test Skill:PATH/统一目录自动发现工具及匹配位数的 MediaInfo DLL、按能力独立自检、本机网卡枚举、357 条用例路由、媒体/抓包/串口、V1/V2 设备及联合证据。PC/网站复用视觉插件,手机沿用 Artemis;工具成功不等于用例通过。", + "artemis_version": ">=2.0.0,<3.0.0", + "platforms": [ + "win32" + ], + "architectures": [ + "amd64" + ], + "license": "LicenseRef-Yitong-Artemis-Market; Apache-2.0-Adapter", + "server": { + "transport": "stdio", + "command": "${config.python}", + "args": [ + "-B", + "${plugin_dir}/server.py" + ], + "env": { + "ARTEMIS_DEVICE_TEST_PROFILE": "${config.profile}", + "ARTEMIS_DEVICE_TEST_TOOL_ROOT": "${config.tool_root}", + "ARTEMIS_DEVICE_TEST_ENV_FILE": "${config.rtsp_env_file}", + "ARTEMIS_DEVICE_TEST_TIMEOUT": "${config.operation_timeout_seconds}", + "ARTEMIS_DEVICE_TEST_ALLOW_FIRMWARE_WRITE": "${config.allow_firmware_write}" + } + }, + "config": { + "python": { + "label": "Artemis Python 解释器", + "description": "填写已安装 MCP 依赖的 Python 绝对路径。源码环境可使用项目 .venv/Scripts/python.exe。", + "default": "python", + "required": true + }, + "profile": { + "label": "本机工具 profile JSON", + "description": "可选,固定 tools/runtimes/libraries 路径;不保存凭据。留空时自动发现统一目录和宿主 PATH;显式错误路径不回退。", + "default": "" + }, + "tool_root": { + "label": "已解压工具目录", + "description": "可选,本机已解压工具目录绝对路径;自动发现 EXE/匹配位数的 MediaInfo.dll,以及 binwalk-python/Scripts/python.exe。不安装程序。", + "default": "" + }, + "rtsp_env_file": { + "label": "本机 RTSP 环境文件", + "description": "可选,受控 .env 文件的绝对路径;仅按工具指定的环境变量名读取,不回显凭据。", + "default": "" + }, + "operation_timeout_seconds": { + "label": "单次操作预算(秒)", + "description": "默认 45。10..3300;增加前须将宿主 ARTEMIS_PLUGIN_TOOL_TIMEOUT_SECONDS 设得至少大 10 秒。任务总时限同样生效。", + "default": "45" + }, + "allow_firmware_write": { + "label": "允许显式固件写入", + "description": "默认 false。仅当前用例明确授权升级时设置 true;工具还要求 execute、完整身份、ROM SHA-256 和审阅摘要。", + "default": "false" + } + }, + "skill": "SKILL.md", + "targets": [ + "android", + "mixed", + "computer" + ], + "resources": [ + "desktop:local", + "lab:device-test" + ], + "capabilities": { + "kind": "other", + "recording": "none", + "required_tools": [ + "environment_doctor", + "lookup_case", + "probe_media", + "media_info", + "analyze_pcap", + "scan_ports", + "scan_firmware", + "device_capabilities", + "list_network_interfaces", + "discover_devices", + "identify_device", + "device_info", + "inspect_firmware", + "firmware_preflight", + "verify_firmware", + "capture_packets", + "capture_serial", + "upgrade_firmware", + "import_evidence", + "bundle_evidence" + ], + "tools": { + "environment_doctor": { + "effect": "read", + "observation": false, + "idempotent": true, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ] + }, + "lookup_case": { + "effect": "read", + "observation": false, + "idempotent": true, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ] + }, + "probe_media": { + "effect": "read", + "observation": false, + "idempotent": true, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ], + "target_argument": "input_file" + }, + "media_info": { + "effect": "read", + "observation": false, + "idempotent": true, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ], + "target_argument": "input_file" + }, + "analyze_pcap": { + "effect": "read", + "observation": false, + "idempotent": true, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ], + "target_argument": "input_file" + }, + "scan_ports": { + "effect": "read", + "observation": false, + "idempotent": true, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ], + "target_argument": "host" + }, + "scan_firmware": { + "effect": "read", + "observation": false, + "idempotent": true, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ], + "target_argument": "input_file" + }, + "device_capabilities": { + "effect": "read", + "observation": false, + "idempotent": true, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ] + }, + "list_network_interfaces": { + "effect": "read", + "observation": false, + "idempotent": true, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ] + }, + "discover_devices": { + "effect": "read", + "observation": false, + "idempotent": true, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ] + }, + "identify_device": { + "effect": "read", + "observation": false, + "idempotent": true, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ], + "target_argument": "host" + }, + "device_info": { + "effect": "read", + "observation": false, + "idempotent": true, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ], + "target_argument": "host" + }, + "inspect_firmware": { + "effect": "read", + "observation": false, + "idempotent": true, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ], + "target_argument": "rom_file" + }, + "firmware_preflight": { + "effect": "read", + "observation": false, + "idempotent": true, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ], + "target_argument": "host" + }, + "verify_firmware": { + "effect": "read", + "observation": false, + "idempotent": true, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ], + "target_argument": "host" + }, + "capture_packets": { + "effect": "write", + "observation": false, + "idempotent": false, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ], + "target_argument": "host" + }, + "capture_serial": { + "effect": "write", + "observation": false, + "idempotent": false, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ], + "target_argument": "port" + }, + "upgrade_firmware": { + "effect": "write", + "observation": false, + "idempotent": false, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ], + "target_argument": "host" + }, + "import_evidence": { + "effect": "write", + "observation": false, + "idempotent": false, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ], + "target_argument": "input_file" + }, + "bundle_evidence": { + "effect": "write", + "observation": false, + "idempotent": false, + "cancellation": "unknown", + "evidence": [ + "text", + "state", + "file" + ], + "target_argument": "run_id" + } + } + } + }, + "release_stage": "preview", + "archive_url": "https://git.playones.com/chenmingxuan/Artemis-Plugins/releases/download/artemis-device-test-v0.5.0+artemis.6/artemis-device-test-0.5.0-artemis.6.zip", + "sha256": "0409323ba738a784fd26dca04d4757024d2e41c2a0ab7a7a17754b08bd763a74", + "verification": "Windows x64 预览;Python 3.14.0 / ARTEMIS 2.4.4 实测。134 项单元测试、Windows Job 进程树/超时/取消、文件字节绑定、权限与资源互斥、真实 MCP20工具检查通过;正常宿主离线证据任务 5/5 AI验收通过,暂停恢复及 Word/Excel/全部资料导出读回通过。真实烧录、设备发现/网络扫描、抓包、串口及357条完整业务用例未测;外部工具和驱动需自行准备。原资料按公司市场分发授权记录,适配层 Apache-2.0。" } ] }