Skip to content
Gains Summary
Main Navigation 首页 / Home
C++ 编程 / C++ Programming
系统与高性能 / Systems & Performance
Web 开发 / Web Development
人工智能 / Artificial Intelligence
工业软件 / Industrial Software
其他内容 / Other Topics
C++ 编程 / C++系统与性能 / SystemsWeb 开发 / Web人工智能 / AI工业软件 / Industrial

外观

Sidebar Navigation

← 工业软件 / Industrial Software

SAM 平台开发 / SAM Platform Development

1. SAM 二次开发总览与证据分级 / SAM Secondary Development Overview and Evidence Levels

2. 从 P0 到 P5:SAM 插件界面开发流程 / SAM Plugin Interface Development from P0 to P5

3. PYD 注册、Model Fragment 与 Part Fragment / PYD Registration, Model Fragments, and Part Fragments

4. Python 2 SAM API:已验证接口与失败清单 / Verified Python 2 SAM APIs and Known Failures

5. C++ SAM SDK:模型、网格与 ODB 接口 / C++ SAM SDK APIs for Models, Meshes, and ODB Data

6. SAM 参数化构件建模:从二维轮廓到三维网格 / SAM Parametric Component Modeling from 2D Profiles to 3D Meshes

7. Agent 接入 SAM:插件架构、工具注册与安全边界 / Integrating AI Agents into SAM with Plugins, Tools, and Safety Boundaries

8. SAM API 验证工作流:禁止猜测与七级验收门 / A Seven-Gate SAM API Validation Workflow Without Guesswork

9. 真实案例、当前边界与后续路线 / Validated Cases, Current Boundaries, and the Development Roadmap

10. SAM 二次开发指南:架构总览与系列索引 / SAM Secondary Development Architecture and Series Index

11. SAM GUI、Toolset 与交互类 API / SAM GUI, Toolset, and Interaction APIs

12. SAM 命令桥、Python 与 PYD 扩展 API / SAM Command Bridge, Python, and PYD Extension APIs

13. SAM 数据模型、Part 与 Mesh API / SAM Data Models, Parts, and Mesh APIs

14. SAM 场景、显示表示与渲染 API / SAM Scene, Display Representation, and Rendering APIs

15. SAM 插件编译、部署与故障排查 / Building, Deploying, and Troubleshooting SAM Plugins

16. SAM 二次开发旧入口 / Legacy Entry for SAM Secondary Development

17. SAM 二次开发知识体系 / SAM Secondary Development Knowledge System

本页目录

SAM API 验证工作流:禁止猜测与七级验收门 / A Seven-Gate SAM API Validation Workflow Without Guesswork ​

📅 创建时间:2026-07-23
🏷️ 标签:#SAM #API验证 #回归测试 #调试 #INP
📚 前置知识:03-python2-verified-api
📖 系列导航:总目录 · 上一篇:06-agent-plugin-architecture · 下一篇:08-validated-cases-and-roadmap


第10部分:禁止猜测 API 的开发流程 ​

10.1 接口证据优先级 ​

text
1. 当前版本 SAM 用户手册
2. 老师发布的 7231 / Example / VTKIO / LiftingLug 源码
3. sam.rpy 操作记录
4. 当前对象的 dir() 只读探针
5. 最小不保存调用探针
6. 保存并重新打开
7. 导出 INP / 求解验证
1
2
3
4
5
6
7

sam.rpy 只能证明 GUI 尝试过某条命令。若 GUI 操作随后报错,该命令不能被列为可用 API。

证据等级的意义,是把“看起来像”与“已经证明”分开。文档或源码可以确认名称和设计意图,却可能属于其他版本;运行时 dir() 能确认成员存在,但不能说明参数、返回值或副作用;一次调用不抛异常,也可能什么都没有写入。只有状态、持久化、导出和求解逐层通过,才能扩大结论范围。

10.2 标准探针模板 ​

python
def attempt(name, func):
    try:
        value = func()
        print('%s: PASS repr=%r' % (name, value))
        return True
    except Exception as error:
        print('%s: FAIL type=%r message=%s' %
              (name, type(error), error))
        return False
1
2
3
4
5
6
7
8
9

探针规则:

  • 使用模型副本
  • 默认不保存
  • 一次只测试一个参数差异
  • 打印对象类型、仓库键和数量变化
  • 不以 repr() 好看为成功标准
  • 失败参数进入禁用清单

探针必须记录 SAM 版本、模型副本标识、目标对象完整路径、调用参数、异常类型和调用前后差异。一次只改变一个变量,才能把结果归因到具体参数。会删除数据、启动求解或覆盖文件的接口不适合直接探测,应先寻找只读查询、dry-run 或独立临时目录。

text
声明:某接口在对象 X 上接受参数 P
  -> 静态证据:手册/头文件/示例
  -> 运行证据:成员存在且最小调用成功
  -> 状态证据:对象图发生预期变化
  -> 持久化证据:保存、重开后仍存在
  -> 交换证据:INP/ODB/VTK 引用完整
  -> 业务证据:下游求解或显示正确
1
2
3
4
5
6
7

每通过一层,只能声明对应强度的结论。例如只读探针通过时,可以写“当前对象暴露此名称”,不能写“该方法可用于生产建模”。

10.3 正式修改的验收门 ​

text
Gate 1:调用成功
Gate 2:内存对象数量与属性正确
Gate 3:另存成功
Gate 4:重新打开后对象仍存在
Gate 5:Set/Section/连接关系仍正确
Gate 6:导出 INP 引用完整
Gate 7:求解器能够读入并运行
1
2
3
4
5
6
7

七级门之间为什么不能跳跃 ​

调用成功只是语法和入口成立。内存对象检查用于发现静默失败、错误挂载或数量异常;另存与重开验证序列化协议;集合、Section 和连接关系检查确保引用没有丢失;导出验证平台模型能转换为求解器语义;最终读入运行才覆盖下游契约。某个任务如果不涉及求解,也要明确最后适用的 Gate,而不是假装通过全部七级。

失败后应保留最小复现:原始模型副本、探针脚本、控制台输出和差异摘要。对于会崩溃宿主的调用,在独立进程和可恢复环境中验证,并记录为高风险禁用项。不要在同一个已被失败调用污染的会话里继续得出结论。

回归与版本迁移 ​

已验证 API 需要形成小型回归集。升级 SAM、编译器或插件后,先运行只读和内存 Gate,再逐步进行保存、导出和求解,避免高成本测试掩盖基础加载错误。测试结果按版本保存,不能因为新版本通过就改写旧版本事实。

当接口变化时,适配层负责把稳定的内部命令转换为具体 SAM 调用。业务代码不应到处散布未经验证的对象路径和参数组合。这样失败能够集中诊断,已知禁用项也能在调用前阻止。

完成验证的定义是证据可复现:另一位开发者拿到相同版本、模型和脚本,能够得到相同对象差异与下游结果。只在个人机器上“点过一次没报错”不构成 API 合同。

团队证据台账 ​

团队应为每个关键接口维护简洁台账:接口名称、对象路径、SAM 版本、证据来源、已通过 Gate、已知失败、最小脚本和最后验证日期。台账不是把运行日志全部粘贴进文档,而是让开发者能找到产生结论的原始证据,并知道结论能否迁移到当前环境。

当两次结果冲突时,先检查版本、模型状态、插件组合和调用前置条件,不应简单用较新的记录覆盖旧记录。若原因尚未确定,两种结果都要保留并降低可信等级。这样可以防止偶然成功被传播为稳定 API,也避免一个环境中的失败被误判为所有版本均不支持。

自动化回归应从风险和成本排序:模块导入、符号发现和只读探针可以每次构建运行;保存重开适合每日或发布前运行;完整导出与求解可能进入较慢的验收流水线。每一级失败都应阻止后续更昂贵测试,并给出最接近根因的诊断。

对于 GUI 才能触发的能力,可以通过录制操作发现候选命令,但最终仍要抽离为最小脚本,去掉时间、路径和随机状态依赖。只有可独立重复的探针,才能成为升级时的兼容性契约。


最后更新于:

Pager
上一篇7. Agent 接入 SAM:插件架构、工具注册与安全边界 / Integrating AI Agents into SAM with Plugins, Tools, and Safety Boundaries
下一篇9. 真实案例、当前边界与后续路线 / Validated Cases, Current Boundaries, and the Development Roadmap

持续记录,持续成长

Copyright © Tidenflow