fix(device-test): contain tool processes and add reviewed preview

This commit is contained in:
chenmingxuan committed 2026-10-30 12:43:36 +08:00
1 parent c98d7527a0
commit 7d31e09cb7
59 files changed
+23722

No files matched your search

+70
View File
@@ -0,0 +1,70 @@
---
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 补丁不自动应用到当前平台。