Files
Artemis-Plugins/plugins/artemis-device-test/SKILL.md
T

73 lines
11 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.
> Rust 3 测试市场版本 `0.5.0+artemis.7`;独立 Python/MCP/dotenv 与外部工具由使用者准备。验证边界见 [RUST3-VERIFICATION.md](RUST3-VERIFICATION.md)。下文保留原 2.x 版本的历史范围。
---
name: artemis-device-test
description: 在 Artemis 任务中联合媒体、抓包、串口、V1/V2 设备协议和独立证据包执行家庭安防测试;手机使用本任务的 Android 工具,PC/网站使用已授权电脑控制插件。
---
# 家庭安防多工具测试插件
本插件由用户提供的 `artemis-device-test 0.5.0-internal` 适配,提供 20 个有界 MCP 工具和原 Skill 的用例路由、参考资料。Artemis 负责执行模型、任务队列、资源锁、超时和报告;工具只返回实际观测,不决定整条业务用例通过。
## 在当前任务内执行
1. 执行指定摄像机用例时明确原用例工作表、行号、编号、完整前置条件与预期、摄像机完整 SN、实际上报型号和手机序列号。局域网设备盘点可先发现再获取身份,无需用户预先提供 SN、型号、协议或本机网卡。用 `lookup_case(sheet=..., row=...)` 查询路由;357 条保留记录不是完整用例规格,不包含分类为“无法实现”的项。编号可能重复,`sheet + row` 才是唯一键。
2. 首次调用 `environment_doctor` 检查 profile、统一目录和宿主 PATH;`check_versions=true` 验证启动/加载,`check_functional=true` 同时运行固定本地样本。读取 `discovery/startup/functional` 及按能力状态;某项缺失只阻塞依赖它的阶段,预算耗尽或未检查不能算已验证。驱动、网卡、COM、登录和业务仍须现场核验。接收方部署参考 [首次部署与自检](DEPLOYMENT.md);原 [环境说明](skill/references/environment-repair.md) 保留历史资料。使用现有授权电脑维护能力;本插件没有安装器或任意命令入口。
3. 按 [原工具路由](skill/references/tool-routing.md) 选择所需说明,确定输入、实际观测和判据后执行。以下原生工具代替文档中的 Python CLI,不把脚本路径发给没有命令执行能力的插件。
4. 本任务内直接使用 Artemis 已有 Android 动作与观察工具。原资料中的 `mobile_workspace/mobile_run_task/mobile_*` 是外部 Codex 接入工作流,不能在本任务里递归提交另一手机任务或另建执行器。模型与 Key 使用 Artemis 本机配置,不收取聊天明文。
5. PC 程序、路由器和平台网站由已启用、已授权的 Cua 等视觉插件观察和操作;操作前核对真实窗口及登录态。本插件不提供画面或录像,不声明自动观察能力。纯电脑任务还必须选择视觉插件。
## 原生工具
| 用途 | 工具与边界 |
| --- | --- |
| 环境与用例 | `environment_doctor`;`lookup_case` 按表/行或关键词分页查询 |
| 媒体 | `probe_media` 使用本机 ffprobe,二选一输入本机绝对路径或 `rtsp_env` 环境变量名;`media_info` 使用 profile/统一目录/PATH 发现的匹配位数 MediaInfo.dll。FFmpeg 当前只盘点及自检,未提供通用转码/滤镜工具 |
| 抓包 | `capture_packets` 明确网卡、单 IP、时长;`analyze_pcap` 只提取固定头字段,最多 10000 包 |
| 端口 | `scan_ports` 一个明确单播 IP、最多 128 个数字 TCP 端口,不做网段/NSE/服务版本扫描 |
| 固件分析 | `scan_firmware` 仅本地 Binwalk 签名扫描;`inspect_firmware` 离线格式及摘要检查 |
| 串口 | `capture_serial` 明确 COM、波特率、时长;不发送命令,DTR/RTS 默认关闭,显式开启可能影响设备 |
| 本机网络 | `list_network_interfaces` 只读枚举已连接 IPv4 网卡,返回 `eligible_interfaces`、网段和广播地址;不连接摄像机 |
| 设备协议 | `device_capabilities` 离线;`discover_devices` 使用枚举得到的本机 IPv4/PREFIX 及 V1/V2;`identify_device` 核对完整 SN 并观察型号;`device_info` 再核对准确型号 |
| 固件流程 | `firmware_preflight` 只读联网预检;`upgrade_firmware` 默认仍只预检;`verify_firmware` 独立回读指定字段 |
| 联合证据 | `import_evidence` 复制当前用例明确选中的本机文件并校验;`bundle_evidence` 用显式断言生成独立 Markdown/JSON/ZIP |
所有网络目标均要求明确 IP,不能用主机名、网段或相似显示名代替设备身份。输入文件须为本机绝对路径,不接受 URL/UNC。输出文件名由插件生成,保存在宿主注入的本任务资料目录;回执返回普通附件名与 SHA-256。
## 查询当前局域网设备
“通过配置工具查询设备”包含原 Skill 的 V1/V2 协议适配器。环境诊断中的 `configurer: manual-interface` 仅说明 GUI 没有已验证通用 CLI,不代表协议发现不可用;无需先找到或打开 EapilCameraConfigurer 窗口。
1. 调用 `device_capabilities` 和 `list_network_interfaces`。后者只查询本机网络状态,不要求用户手填网卡;`eligible_interfaces` 已排除虚拟/VPN、回环、链路本地和无可用广播地址的接口,只包含已连接的物理 IPv4 接口。
2. 用户指定接口时沿用该范围;只要求“当前局域网”时使用实际返回的 `eligible_interfaces`。若有多个接口,可按接口分批查询并标记来源;空列表或枚举失败才阻塞网络发现。不要猜 IP、使用旧任务地址或把网段地址填成本机接口。
3. 未知协议的设备盘点,在同一范围分别调用 `discover_devices(protocol="v1", interfaces=[...])` 和 `discover_devices(protocol="v2", interfaces=[...])`,每种协议一次。这是两个协议的只读发现,不是固件操作或失败后的写入重试。已知协议或用户指定协议则只查指定协议。
4. 按返回的协议、IP、完整 SN、型号调用 `identify_device` / `device_info` 核对身份与版本,汇总本次实际响应的设备及来源。某协议失败时保留其错误,不把另一协议结果当成完整清单;未调用发现工具不能报告“已搜索但无设备”。
## 必须保留的执行规则
- 手机 APP 的设备条目须与同一摄像机完整 SN 关联;IP 变化后按同 SN 重新发现,显示名相似不能证明是同一设备。
- 客诉系统、联楹/连楹、移动视联采用“人工登录 → 确认登录态 → 自动操作”。复用已有会话;账号、密码、验证码、短信与协议确认由用户完成,代理不代填或提交。未登录记“等待人工登录”,不能观察记“登录状态未确认”;已进入业务页且具备目标权限后继续当前授权用例。
- 授权仅覆盖当前具体用例,不从只读检查扩展到升级、解绑、恢复出厂、千次循环或路由断网。历史文档中的授权不适用于当前任务。路由修改须记录原值和用例要求的恢复结果。
- 同一摄像机、COM、网卡、PC 和共享实验台串行。本插件声明 `desktop:local` 与 `lab:device-test`,复用 Artemis 的资源锁;不自行启动后台测试、抢占任务或另建队列。
- 指定设备的查询及固件操作沿用实测 V1/V2 协议,配置软件版本不能代替设备协议。未知设备盘点按上节分别只读发现。V1 使用 TCP 4941/2170,不自动改为 V2 的 EPFP 通道;V2 无响应不能证明 V1 设备离线。
- 固件写入要求本机配置 `allow_firmware_write=true`、当前用例明确授权、`execute=true`、完整 SN/型号、已审阅 ROM SHA-256 以及说明授权/兼容性/验收字段的 `review_summary`。最多传包一次;超时、取消、部分执行后先观察,不能自动重传。
- 协议完成后必须重新查询同 SN、准确型号及原用例指定固件字段。V1 原生字段是 `firmware/dev_ver`,V2 是 `inner.version/outer.version`;不能改用硬件版本或擅自改变验收字段。`PROTOCOL_SUCCESS_POSTCHECK_REQUIRED` 不是升级验收通过。
- 默认单次预算 45 秒,采集时长还需预留至少 8 秒清理时间。更长操作需先同步调整宿主和插件预算,仍服从任务总时限。超过预算先阻塞该阶段,不拆成后台任务规避限制。
- 工具 `completed`、退出码 0、截图或数据包不是业务 PASS。保留人工声画评估、物理场景和其他未验证项。13.9 无本地 Web 服务不能靠通用端口检查扩大判据;13.3 Flash 加密不能靠 Binwalk 失败证明;9.136 需原流帧类型及时间戳,不能用 APP 录屏。异常固件的客户端预检或网络失败不能当成设备按预期拒绝。
## 凭据与证据
本机 profile 与发布包分离,示例见 [profile.example.json](skill/assets/profile.example.json)。密码、Key、RTSP URL 不放进 profile、工具参数、任务提示词或发布包。RTSP 通过进程环境变量或本机设置的受控 `.env` 文件读取,工具只接收变量名;stdio 不保证继承所有自定义环境变量,可配置 `rtsp_env_file`。输出会脱敏,原始 PCAP/媒体/串口文件仍需按内部资料权限管理。
用 `import_evidence` 取回并归档当前用例的 PC/手机报告或其他明确选择的本机证据;未实际取回的远端文件不能算已归档。单附件上限 64 MiB;超限明确报告,不声称已进入附件索引。
`bundle_evidence` 接收 `run_id`、`assertions` 和 `context`。断言必须写明 `id/expected/actual/verdict/evidence`;证据用当前任务的普通附件文件名,也可附预期 SHA-256。只写“passed”而缺失证据,或摘要不符,会降为 `inconclusive`;哈希检查不能理解证据的业务含义。联合包输入总计不超过 48 MiB,以保留宿主附件预算。
导入文件后,使用 `import_evidence` 返回的 `imported_evidence.name` 作为证据名,配合同一回执的 SHA-256;不要把原输入绝对路径、宿主附件路径或整个返回对象放进 `evidence`。参数校验拒绝且回执为 `not_started/none` 时,修正参数后再调用;部分执行或结果不明时先核对已保存的文件。
`context.execution_mode` 必须是 `live/offline/simulation`;离线和模拟不得声明真机已执行。`context.manual_verification` 保存仍需人工核验事项。没有必需断言不能通过;失败、阻塞和未验证均须展示。
独立联合包与插件调用回执进入本任务附件;Artemis 原生结论和报告仍由平台正常流程生成。不能修改 trace/数据库、把独立结论冒充平台原生结论,或把 Agent 判断标成人工复验。交付时分别说明实际调用、业务判定、环境阻塞、能力验证层次及证据缺口。
相关参考:[CLI 工具](skill/references/cli-tools.md)、[协议范围](skill/references/protocol-support.md)、[V1 协议](skill/references/v1-protocol.md)、[设备适配器](skill/references/device-adapter.md)、[原联合证据契约](skill/references/evidence.md)。原 [Skill](skill/SKILL.md) 供来源核对;其中 Codex 专用部署和旧版 Artemis 补丁不自动应用到当前平台。