Skip to content

WaveBench v0.7.0

Choose a tag to compare

@Scaxlibur Scaxlibur released this 24 Jul 11:18
· 420 commits to master since this release
v0.7.0
585f746

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.schemarun.checkcapture.inspect
  • run.checkcapture.inspect 增加路径边界,限制在预期目录内,避免通过 MCP 读取任意路径。
  • 新增网络发现命令:wavebench net discover,支持扫描网段、探测常见仪器端口,并对 SCPI socket 执行只读 *IDN?
  • CLI 内部拆分出 cli_parser.pycli_output.py,降低 cli.py 复杂度。
  • RunService 拆分出 run_analysis.pyrun_artifacts.pyrun_safety.pyrun_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.tomldoc/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 doctorplugin market search rigolplugin scpi doctor ... --probe ... 均通过
  • 现场验证:仅对已开机的 RIGOL DP832A 执行只读 *IDN? probe,返回 RIGOL TECHNOLOGIES,DP832A,... 且 IDN 匹配声明片段