NeMoRelay上下文隔离Skill nemo-relay-instrument-context-isolation

本技能用于在并发请求、异步任务、线程、工作器、协程或多个智能体等场景下,为每个独立执行流配置NeMo Relay的独立作用域栈,确保正确的事件祖先传播。它提供各语言(Python、Rust、Go、Node.js)的实现指南、作用域模型说明和常见失败模式,帮助开发者避免作用域串扰和中间件泄漏。关键词:NeMo Relay, 上下文隔离, 作用域栈, 并发编程, 异步, 线程, 智能体, 可观测性

其他 0 次安装 0 次浏览 更新于 9/7/2026
名称 nemo-relay-instrument-context-isolation
描述 当并发请求、异步任务、线程、工作器、协程或智能体需要独立的NeMo Relay作用域栈以及正确的祖先传播时,使用此技能。
开源协议 Apache-2.0 metadata:
作者 NVIDIA 公司及其附属公司

使用上下文隔离

当应用程序在同一进程中运行并发请求、工作池、异步任务、线程、协程或多个智能体时,请使用此技能。将作用域栈的所有权视为请求边界的一部分。

核心规则

每个独立的请求、智能体或工作流都需要自己的作用域栈。除非您希望共享祖先和共享的作用域局部中间件,否则不要在无关的并发工作之间共享一个可变的栈。

嵌入式作用域模型

  • 根作用域始终存在,推入的作用域在其下方形成父-子树。
  • 作用域层级决定事件的父子关系、生命周期边界以及作用域局部中间件和订阅者的可见性。
  • 标准作用域类型包括 AgentFunctionToolLlmRetrieverEmbedderRerankerGuardrailEvaluatorCustomUnknown
  • 当作用域表示请求、任务或有意义的结果边界时,作用域开始和结束事件可以携带语义化的 inputoutput 载荷。
  • 作用域局部注册在所属作用域关闭时消失;使用它们来获得不应超过请求或智能体运行期的行为。
  • 标记事件对于重试、检查点、中断以及不是完整跨度的重要状态转换非常有用。

各语言默认行为

  • Python:通过 get_scope_stack()contextvars 依赖任务局部行为,或者在工作离开当前执行上下文时显式传播。
  • Rust 核心:当集成需要显式栈所有权时,使用运行时辅助函数,如 create_scope_stack()current_scope_stack()set_thread_scope_stack(...)
  • Go:使用 NewScopeStack()ScopeStack.Run(...) 实现 goroutine 安全的用法。
  • Node.js:使用 createScopeStack()setThreadScopeStack(...) 为当前执行路径显式创建并设置作用域栈。

常见错误

  • 来自不同请求的事件出现在同一个根 UUID 下。
  • 作用域局部中间件在请求之间泄漏。
  • 工作线程工作在没有预期活动作用域的情况下运行。
  • 集成在未显式初始化栈的情况下激活 NeMo Relay。
  • 在跨越异步任务、goroutine 或 JS 工作器边界后,依赖线程局部栈。

相关技能

  • nemo-relay-instrument-calls
  • nemo-relay-plugin-observability
  • nemo-relay-debug-runtime-integration