WaveBench v0.7.0
WaveBench v0.7.0 发布说明
WaveBench v0.7.0 是一次面向自动化、远程集成和插件生态的主线版本。这个版本把 v0.6.0 的 TUI 收口之后继续推进:新增只读 HTTP MCP 接口、局域网仪器发现、RunService/CLI 内部拆分,以及第一版插件注册表和声明式 SCPI 插件元数据能力。
这个版本仍然保持安全边界:HTTP MCP 只暴露只读工具,插件系统默认只处理 metadata,不自动安装、不下载、不导入市场条目、不执行任意 SCPI,也不改变现有 service/driver 控制路径。声明式 SCPI probe/doctor 只允许显式资源参数下的只读 IDN 查询,用于确认设备身份。
新增与改进
- 新增只读 HTTP MCP 服务:
wavebench mcp serve。 - HTTP MCP 默认只绑定
127.0.0.1,拒绝0.0.0.0,并对/mcp、/tools、/call强制 Bearer token。 - HTTP MCP 提供只读工具:
run.schema、run.check、capture.inspect。 run.check和capture.inspect增加路径边界,限制在预期目录内,避免通过 MCP 读取任意路径。- 新增网络发现命令:
wavebench net discover,支持扫描网段、探测常见仪器端口,并对 SCPI socket 执行只读*IDN?。 - CLI 内部拆分出
cli_parser.py和cli_output.py,降低cli.py复杂度。 - RunService 拆分出
run_analysis.py、run_artifacts.py、run_safety.py、run_restore.py,让分析、产物写出、安全检查、source restore 边界更清楚。 - 新增插件 metadata 注册表:
wavebench plugin list/info,内置 RTM2032、DG4202、DP800、DM3000 四类驱动 metadata。 - 新增插件诊断:
wavebench plugin doctor,检查 API 版本、仪器类型、capability 命名和 entry point 加载问题。 - 支持显式 entry point 发现:
--include-entry-points会加载wavebench.drivers,默认不导入第三方包。 - 新增本地只读插件市场索引:
wavebench plugin market search/info,仅读取包内 JSON index,不联网、不安装。 - 新增声明式 SCPI 插件 metadata:
wavebench plugin scpi check/info,用于校验和展示本地 TOML 插件描述。 - 新增声明式 SCPI 只读 probe:
wavebench plugin scpi probe,只发送 TOML 中通过校验的 IDN query。 - 新增声明式 SCPI doctor:
wavebench plugin scpi doctor,默认只检查 metadata;显式--probe --resource时才执行只读 IDN 匹配。 - 新增 SCPI 插件示例:
doc/project/scpi-plugin.example.toml和doc/project/scpi-dp800.example.toml。 - 新增插件注册表、插件市场索引、声明式 SCPI 插件、HTTP MCP 只读接口等项目文档。
- 删除不再维护的英文文档副本
doc/README_EN.md,当前公开文档以中文为准。
安全与边界
- HTTP MCP 不暴露 raw SCPI、不提供 output on/off、不执行真实仪器写操作。
- HTTP MCP token 必须通过
--token或--token-env提供,示例只展示环境变量名,不记录 token 值。 wavebench net discover和 SCPI plugin probe 只做只读 IDN 查询。- 插件系统不自动下载插件,不自动安装插件,不导入 market index 条目中的 Python 包。
- 声明式 SCPI 插件不注册为可执行 driver,不让 service 层按声明式插件执行控制命令。
plugin scpi doctor --probe必须显式提供--resource,不会自己扫描或碰未指定仪器。
验证
本地门禁已通过:
ruff check src tests: OK- full test suite:
373 passed, 16 subtests passed git diff --check: OK- wheel build:
wavebench-0.7.0-py3-none-any.whl - wheel metadata:
Version: 0.7.0 - wheel 内容检查:HTTP MCP、network discovery、plugin market JSON、SCPI plugin、CLI parser/output 都已入包
- 插件 smoke:
plugin doctor、plugin market search rigol、plugin scpi doctor ... --probe ...均通过 - 现场验证:仅对已开机的 RIGOL DP832A 执行只读
*IDN?probe,返回RIGOL TECHNOLOGIES,DP832A,...且 IDN 匹配声明片段