fix(device-test): contain tool processes and add reviewed preview
This commit is contained in:
1 parent
c98d7527a0
commit
7d31e09cb7
59 files changed
+23722
No files matched your search
@@ -0,0 +1,78 @@
|
||||
# 团队部署与本地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`或安装包只表示文件存在,不表示产品已安装、可调用或已登录。只有当前任务包含安装/修复时才执行所需安装器,不因文件存在而遍历运行;已有授权无需逐步重复确认。用平台原产品时保留版本、许可与依赖。具体步骤见 [环境安装与修复](environment-repair.md)。
|
||||
|
||||
从Skill目录运行,示例中的`python`可替换为便携解释器路径:
|
||||
|
||||
```powershell
|
||||
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](cli-tools.md) 和脚本`--help`为准。
|
||||
|
||||
## profile与凭据
|
||||
|
||||
`tool_runner.py`支持`tools`字典指定程序路径、`runtimes.binwalk_python`指定已安装Binwalk模块的独立Python、`libraries.mediainfo`指定本地DLL;不要在此存密码或带认证的URL。一个可移植的结构示例:
|
||||
|
||||
```json
|
||||
{
|
||||
"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工具说明。环境变量由用户或本机安全流程设置,脚本不要求在聊天提供值。网页短信验证码由用户在当前页面完成;不复用旧文档中的历史授权。
|
||||
|
||||
团队使用客诉系统、联楹(连楹)及移动视联时,登录是人工前置步骤:使用者在对应网页或客户端完成账号、密码、验证码、短信及协议确认,代理不自动填登录信息或提交登录。代理先复用现有会话,登录后确认可见业务页及目标权限,再继续当前授权范围的查询、操作和证据采集。无需为后续每一步重新确认。交接方法和状态口径见 [工具路由](tool-routing.md);“等待人工登录”与“登录状态未确认”不得计为工具缺失或工具调用失败。若使用者已在其他浏览器登录,应连接并复用该会话,不能用新建空会话证明整台电脑未登录。
|
||||
|
||||
## 工具烟测与验收界限
|
||||
|
||||
```powershell
|
||||
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 升级;详见 [协议范围](protocol-support.md) 及 [V1接口](v1-protocol.md)。型号未知时用带完整 SN 的 `identify` 只读观察,再用实测型号校验。`offline --rom <包> [--rom-sha256 <摘要>]` 不联网;`upgrade` 默认在线预检。写入还需当前范围授权、目标一致、包摘要与显式 `--execute`。`verify-version` 校验任务指定字段,V1 原生 `firmware/dev_ver` 与 V2 `inner.version/outer.version` 不自动互换;不覆盖升级拒绝、安全校验、循环成功率与视频参数断言。详细语义见 [配置工具9行](tool-routing.md#配置工具9行的独立断言)。
|
||||
|
||||
## Artemis MCP
|
||||
|
||||
Skill ZIP 不包含 Artemis 程序本体,随包提供适用于指定 v1.5.2 基线的观察链源码补丁。先按 [补丁说明](artemis-patch.md) 核对基线和适用性;其他版本不能直接套用,不能只更新 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工作流](artemis-workflow.md)执行。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资产复制。
|
||||
Reference in new issue
Block a user