v0.6.0 产品化收官 —— 八协议端点 + 质量工程 + 多模型评测矩阵
新增
- OPC UA 端点 (4840): 连接级诊断 only —— probe(UA 会话握手 + Server_ServerArray 规范节点最小读)/ plc_read(NodeId 字符串寻址,UA 原生类型返回)/ 新工具 plc_browse(地址空间一层展开,200 子节点预算 + truncated sentinel);SecurityPolicy None(诊断场景声明);不做帧级诊断(parse_frame/validate_frame/diagnose 帧证据显式拒绝——设计声明非缺陷)
- hypothesis 模糊测试: 随机/变异字节喂 parse/validate 纯函数层,"永不崩"契约——首轮即炸出 7 处用户输入可触发的解析崩溃(melsec 短帧/ASCII 非 hex、s7 写数据项头越界、iec104 I 帧截断方向、enip item 边界),逐一修复并回归;白名单收敛至文档化契约
- 工具输出 token 预算: parse_pcap 64KB 字节预算截断(truncated sentinel 流带 total/shown)+ plc_browse 200 子节点硬上限——大地址空间不再撑爆 Agent 上下文
- 元数据诚实性基建: send_raw 从抽象方法降级为可选能力(会话协议不再被迫实现虚报方法);detect 按 _Profile 独立 probe 预算(opcua 会话握手 2.5s)
- docs/cases/ 脱敏诊断案例 5 篇(现象→探测→定位→结论)+ demo.gif 扩幕至八幕 16 帧(新增钓鱼监听幕与 enip tag 读幕)
评测
- 多模型裸基线矩阵(4 模型 × 双跑 × 五档 35 条):glm-5.3-flash 13/35、glm-5-2 10/35、doubao-turbo 9/35、deepseek-v4-flash 8/35——双跑总分逐分复现,fins_melsec 档 8 轮 0/96;挂上 plctap 工具层恒 49/49 且与模型强弱无关(两种失败模式——推理跑飞与"流畅的错误"——同时被工具层免疫)
- 工具模式八档 49/49(2026-09-07 按当前语料复跑)
质量
- 测试 569 passed 0 skipped(v0.5.5 的 520 → 569)
- 发布前本地 wheel 台架验收 30/30(五仿真器 + fastmcp MCP 工具链 + pymodbus/snap7/pymcprotocol/IoTClient 交叉读回 + 审计逐帧核对)
安装
PyPI: https://pypi.org/project/plctap/0.6.0/