Files
Artemis-Plugins/plugins/artemis-device-test/skill/references/team-setup.md
T

9.7 KiB

团队部署与本地profile

适用:把同一Skill部署到其他同事电脑,或从新环境检查工具可用性。Skill分发包保存代码、路由和脱敏模板;各机器的程序路径、设备选择、平台环境和凭据分别配置。不要复制个人目录、账号统计表、真实设备SN、登录会话或API Key到分发包。

运行时与目录

将发布 ZIP 中的 artemis-device-test 文件夹复制到当前用户的 $CODEX_HOME/skills,未设置该变量时使用 ~/.codex/skills。保持 SKILL.md 位于该文件夹第一层,然后重新加载技能或新开对话。若已有同名技能,先保留旧版本再更新。用 $artemis-device-test 显式调用;本 Skill 也支持按请求内容自动匹配。代码、脚本、references 和 assets 必须一同复制。

工具脚本使用Python 3.10+标准库,团队可在约定目录部署便携Python并用绝对解释器路径启动,无需绑定开发者个人环境。优先使用经团队验证的同一Python版本;已封装串口路径使用PowerShell,不需要pySerial,另选pySerial实现时才需安装其依赖。Artemis使用其项目自有依赖环境,不要求与轻量工具脚本共用解释器。

建议各机器准备三类本地位置:Skill目录、工具目录、证据输出目录。工具从已批准来源安装或解压;发现.exe或安装包只表示文件存在,不表示产品已安装、可调用或已登录。只有当前任务包含安装/修复时才执行所需安装器,不因文件存在而遍历运行;已有授权无需逐步重复确认。用平台原产品时保留版本、许可与依赖。具体步骤见 环境安装与修复。

从Skill目录运行,示例中的python可替换为便携解释器路径:

python scripts/tool_runner.py --help
python scripts/tool_runner.py --tool-root "D:/TeamTools" list
python scripts/tool_runner.py --profile "D:/TeamConfig/tools.local.json" doctor --check-versions
python scripts/device_adapter.py --help
python scripts/device_adapter.py capabilities

--profile、--tool-root、--timeout和--dry-run是tool_runner.py全局参数,放在子命令前。每个工具都按实际可执行文件做检测,未安装不能用“计划支持”替代。具体参数与边界以 有界CLI 和脚本--help为准。

profile与凭据

tool_runner.py支持tools字典指定程序路径、runtimes.binwalk_python指定已安装Binwalk模块的独立Python、libraries.mediainfo指定本地DLL;不要在此存密码或带认证的URL。一个可移植的结构示例:

{
  "tools": {
    "ffprobe": "D:/TeamTools/ffmpeg/bin/ffprobe.exe",
    "tshark": "D:/TeamTools/Wireshark/tshark.exe",
    "dumpcap": "D:/TeamTools/Wireshark/dumpcap.exe",
    "nmap": "D:/TeamTools/Nmap/nmap.exe"
  },
  "runtimes": {"binwalk_python": "D:/TeamTools/binwalk-env/Scripts/python.exe"},
  "libraries": {"mediainfo": "D:/TeamTools/MediaInfo/MediaInfo.dll"}
}

这是每台机器的本地配置示例,不是硬编码路径。设备IP/SN/型号、平台URL/环境、路由器地址、串口和参数也由本机私有profile或运行参数提供;只有对应脚本实际声明的字段才传给它。未被脚本实现的网页/GUI目标由编排层读取,不伪装成脚本已支持的API。

Binwalk2.3.2已在独立Python3.11环境验证,因依赖imp不能直接移到Python3.12+;固定入口为python -I -m binwalk,不要更换Artemis项目的解释器。MediaInfo使用与运行器Python位数匹配的Windows DLL,正式命令为media-info,不会代调GUI。未安装时省略对应配置,依所需用例准备环境;Skill不分发个人venv,doctor和测试命令也不会隐式安装模块,环境准备阶段按已授权范围另行安装。doctor的python-module-configured/library-found只说明路径已发现,须再检查version_check并跑本地样本。

敏感值通过环境、系统凭据存储或用户当前登录态注入。probe --rtsp-env DEVICE_TEST_RTSP只接收环境变量名称;完整RTSP地址不写入命令历史、清单或聊天。FFprobe子进程仍通过参数接收URL,同机有进程查看权限的程序可能看到它,见CLI工具说明。环境变量由用户或本机安全流程设置,脚本不要求在聊天提供值。网页短信验证码由用户在当前页面完成;不复用旧文档中的历史授权。

团队使用客诉系统、联楹(连楹)及移动视联时,登录是人工前置步骤:使用者在对应网页或客户端完成账号、密码、验证码、短信及协议确认,代理不自动填登录信息或提交登录。代理先复用现有会话,登录后确认可见业务页及目标权限,再继续当前授权范围的查询、操作和证据采集。无需为后续每一步重新确认。交接方法和状态口径见 工具路由;“等待人工登录”与“登录状态未确认”不得计为工具缺失或工具调用失败。若使用者已在其他浏览器登录,应连接并复用该会话,不能用新建空会话证明整台电脑未登录。

工具烟测与验收界限

python scripts/tool_runner.py --profile "D:/TeamConfig/tools.local.json" probe --input "D:/Evidence/original-stream.mp4"
python scripts/tool_runner.py --profile "D:/TeamConfig/tools.local.json" media-info --input "D:/Evidence/original-stream.mp4"
python scripts/tool_runner.py --profile "D:/TeamConfig/tools.local.json" analyze-pcap --input "D:/Evidence/capture.pcapng"
python scripts/tool_runner.py --profile "D:/TeamConfig/tools.local.json" --dry-run scan --host 192.0.2.10 --ports 80,443,554
python scripts/tool_runner.py --profile "D:/TeamConfig/tools.local.json" firmware-scan --input "D:/Evidence/device-partition.bin"

192.0.2.10是文档示例地址,不能作为实际目标。采集使用 capture --interface <接口ID> --host <单个IP> --duration <秒> --output <pcapng>;串口使用 serial --port <COM口> --baud <波特率> --duration <秒> --output <日志>。这些操作必须绑定当前已确认目标,输出目录须已存在、输出文件须为新文件。scan仅接受最多128个明确TCP端口,不做UDP、服务版本探测或完整全端口验收;返回test_verdict=not_evaluated表示只取得工具结果,须按用例再判定。--dry-run仍校验输入文件和执行体,只是不启动进程。

设备适配器先用 capabilities 核对协议支持范围,再按实际--help调用:网络子命令用 --protocol v1/v2 选择,默认仍为 V2。V1 支持搜索、身份/原生版本查询及 TCP 4941/2170 升级;详见 协议范围 及 V1接口。型号未知时用带完整 SN 的 identify 只读观察,再用实测型号校验。offline --rom <包> [--rom-sha256 <摘要>] 不联网;upgrade 默认在线预检。写入还需当前范围授权、目标一致、包摘要与显式 --execute。verify-version 校验任务指定字段,V1 原生 firmware/dev_ver 与 V2 inner.version/outer.version 不自动互换;不覆盖升级拒绝、安全校验、循环成功率与视频参数断言。详细语义见 配置工具9行。

Artemis MCP

Skill ZIP 不包含 Artemis 程序本体,随包提供适用于指定 v1.5.2 基线的观察链源码补丁。先按 补丁说明 核对基线和适用性;其他版本不能直接套用,不能只更新 Skill 就假定 Artemis 已修复。部署后验证“只观察页面并保存笔记”的任务能正常结束、Checker 能发现被截断的笔记,并区分目标级结论与逐条断言计数。

按Artemis项目README准备其运行时和应用服务,在项目目录运行 uv run artemis doctor。需要在Codex安装MCP时,使用项目正式命令 uv run artemis mcp --install codex,然后重新加载MCP或重启宿主。需要人工配置时先查看 uv run artemis mcp --help;由当前项目生成适配本机的配置,不分发含开发者个人路径的MCP配置。标准入口是项目环境中的 python -m mcp_server 或 uv run artemis mcp。

连接后用mobile_workspace()确认目标设备和队列,再按 Artemis工作流执行。Android序列号与被测摄像机SN是不同标识,两者分别选择并核验。模拟器可验证APP路由,不自动证明摄像机物理、网络、声音或屏幕效果。

网页、Windows客户端与当前环境差异

浏览器能力与原生Windows GUI权限由宿主决定;只有浏览器能力时仍可访问平台网站,但不能据此声明可操作移动视联、SecureCRT或配置工具。若使用UIA/Win32脚本,先验证实际控件与窗口,再固定定位。平台没有已确认API时使用真实页面,不猜测接口。

开发环境已验证FFprobe、Nmap等基础调用,以及Binwalk隔离模块和MediaInfo DLL的本地样本解析;这不是其他同事电脑的预置保证。mainThread已取得真实PyQt程序和手册,可按实际窗口路由到端侧数据只读查询,尚未以下载或启动证据认定业务通过。路由器及平台入口已有登录页观察,登录后的权限和功能仍待验证;firmware_encrypt所需对应SDK与实际工具仍缺。每台机器独立记录CLI发现、GUI可操作性、登录态与业务断言,不能只凭doctor评估全部工具。当前机器的设备标识、账号与登录态不进入本参考文档。

分发前检查所有参考文件能相对打开,profile不含秘密,工具版本和路径在本机复核;先做只读设备查询与APP观察,再按当前任务范围推进。测试结果、pcap、固件、日志和截图可能含敏感内容,证据包按团队既定访问范围保存;不要把本地完整证据目录作为Skill资产复制。