用途:当 NeMo Relay 已存在于应用中但运行不正常时,用于调试运行时集成问题,先确认是哪一层运行时失败,而不是直接改配置。
主要能力:
- 检查绑定或原生构件能否加载;失败调用发生时是否存在活动作用域;工作是否发生在预期的作用域栈上;订阅者、导出器或插件配置是否真正激活;应用是否选对了公开 API 层(托管 execute、手动生命周期、类型化包装、自适应/插件)。
- 覆盖常见失败类别:Python 原生扩展缺失、Go 动态库不在加载路径、Node 原生 addon 未构建或未加载、execute 调用发生在作用域之外、因未注册而缺失事件、并发导致错误作用域栈激活、自适应组件未初始化或配置校验被忽略。
必要用法(按故障类型):
- Rust 构建失败:先运行最窄的核心构建,再扩展到受影响的绑定或工作区命令。
- Python 导入失败:用 uv sync 重建虚拟环境与原生扩展,然后在与应用相同的环境中运行小型 Python 测试或导入检查。
- Node.js addon 失败:先从 Node 绑定包重装并重建原生 addon,再调试应用代码。
- Go 加载器失败:构建 release FFI 共享库,并让链接器和运行时加载器都指向 release 输出目录;macOS 上使用 DYLD_LIBRARY_PATH。
- 作用域栈为空:工作处于活动作用域之外,或跨线程、任务、goroutine、worker 边界时丢失了预期栈。
- 请求间工作泄漏:独立请求共享同一作用域栈,应为每个独立请求或 agent 创建新栈。
- 中间件缺失或顺序错误:检查全局与作用域本地注册、活动作用域祖先、名称与优先级。
- 订阅者缺失事件:在事件发出前注册;作用域本地订阅者需确保当前作用域是拥有者或其后代。
- 事件字段缺失:托管辅助函数会填充语义字段,手动生命周期调用需显式传入输入、输出、模型名和工具调用 ID。
- ATIF 为空或混杂:开始工作前注册,每次运行用一个导出器或在运行间清空,并按根作用域分离并发 agent。
- 提供方载荷转换失败:用显式编解码器转换非 JSON 的提供方对象、SDK 句柄、回调、流或类实例。
- 插件校验失败:独立于运行时注册校验配置,检查必填字段、值类型、默认值和配置来源。
- 自适应行为未变:确认插桩发出事件、自适应组件已启用、策略允许该行为、调用路径到达配置组件。
- OpenTelemetry 或 OpenInference 导出失败:先识别 Relay 版本。0.6 检查独立导出器、http_binary 与 grpc、端点、头、目标支持,以及原生 gRPC 是否有活动 Tokio 运行时;0.7 检查类型化投影、端点、头、TLS 和目标支持,订阅者拥有原生 gRPC 运行时。
- 回调成功但无生命周期事件:确认集成使用了托管 execute 辅助函数或配平的手动 start/end API,而不仅是底层业务回调。
适用场景:NeMo Relay 加载失败、作用域未激活、事件或导出缺失、插件与自适应配置不生效等运行时集成调试。
限制:来源未提供具体版本细节之外的安装步骤、收费与性能说明;以上命令与检查项需按实际环境和版本验证。