mcpField
N
nemo-relay-instrument-context-isolation

nemo-relay-instrument-context-isolation

github.com/nvidia開発3.8k189 回インストール今日更新
リポジトリ

nemo-relay-instrument-context-isolation について

nemo-relay-instrument-context-isolation は、ワーカープールや非同期タスク、複数のエージェントを扱うアプリで NeMo Relay のスコープスタックを管理するスキルです。独立した処理ごとにスタックを分け、イベント階層やミドルウェアの混在を防ぐ方法を示します。

主な機能

  1. 01独立したリクエストごとにスタックを作成
  2. 02スコープ階層とイベントの親子関係を理解
  3. 03スコープ内登録のライフタイムを管理
  4. 04複数言語でのスタック管理方法
  5. 05並行処理におけるコンテキスト障害の診断

活用シーン

  1. 01並行リクエストのイベントツリーを分離
  2. 02リクエスト間のミドルウェア漏れを防止
  3. 03非同期タスクへアクティブなスコープを伝播

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/nvidia/skills --skill nemo-relay-instrument-context-isolation

インストール後、Claude Code で/nemo-relay-instrument-context-isolationを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

BENCHMARK.md
skill-card.md
skill.oms.sig
evals/
evals.json

詳細

コンテキスト分離を使用する

アプリケーションが、同じプロセス内で並行リクエスト、ワーカープール、非同期タスク、goroutine、または複数のエージェントを実行する場合に、このスキルを使用します。 スコープスタックの所有権をリクエスト境界の一部として扱います。

基本ルール

独立したリクエスト、エージェント、またはワークフローごとに、専用のスコープスタックが必要です。無関係な並行処理間で変更可能なスタックを共有しないでください。共有すると、祖先関係とスコープローカルのミドルウェアが共有されます。

埋め込みスコープモデル

  • ルートスコープは常に存在し、プッシュされたスコープはその下に親子ツリーを形成します。
  • スコープ階層によって、イベントの親子関係、ライフタイムの境界、スコープローカルのミドルウェアやサブスクライバーの可視性が決まります。
  • 標準的なスコープタイプには、Agent、Function、Tool、Llm、Retriever、Embedder、Reranker、Guardrail、Evaluator、Custom、Unknownがあります。
  • スコープがリクエスト、タスク、または意味のある結果の境界を表す場合、スコープの開始イベントと終了イベントには、意味的なinputおよびoutputペイロードを含めることができます。
  • スコープローカルの登録は、所有するスコープが閉じると解除されます。リクエストやエージェントの実行を超えて存続させない動作には、これらを使用します。
  • マークイベントは、完全なスパンではない再試行、チェックポイント、中断、重要な状態遷移に役立ちます。

言語ごとのデフォルト

  • Python:get_scope_stack()とcontextvarsによるタスクローカルの動作を利用するか、現在の実行コンテキストを離れる処理に対して明示的に伝播します
  • Rust core:統合に明示的なスタック所有権が必要な場合は、create_scope_stack()、current_scope_stack()、set_thread_scope_stack(...)などのランタイムヘルパーを使用します
  • Go:goroutineで安全に使用するには、NewScopeStack()とScopeStack.Run(...)を使用します
  • Node.js:createScopeStack()とsetThreadScopeStack(...)を使用して、現在の実行パス用のスコープスタックを明示的に作成・設定します

よくある失敗

  • 異なるリクエストのイベントが、同じルートUUIDの下に表示される
  • スコープローカルのミドルウェアがリクエスト間に漏れる
  • ワーカースレッドの処理が、想定されるアクティブなスコープなしで実行される
  • 統合で、スタックを明示的に初期化せずにNeMo Relayが有効化される
  • 非同期タスク、goroutine、またはJSワーカーの境界を越えた後も、スレッドローカルスタックに依存する

関連するスキル

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

コメント