소스 정보
- 저장소
- NVIDIA/NeMo-Relay
- 최근 소스 활동
- 2026년 8월 13일 23:15
- 감지된 SKILL.md 언어
- 영어
- 스타
- 127
- 포크
- 57
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/NVIDIA/NeMo-Relay --skill add-middleware명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SOC 직업 분류 기준
SKILL.md 표시 중
| name | add-middleware |
| description | Add a new guardrail or intercept type to the NeMo Relay middleware pipeline |
| author | NVIDIA Corporation and Affiliates |
| license | Apache-2.0 |
Use karpathy-guidelines alongside this skill for implementation or review
work. Keep changes scoped, surface assumptions, and define focused validation
before editing.
NeMo Relay supports guardrails (validate/gate) and intercepts (transform) at various pipeline stages. Adding a new middleware type requires changes across all layers.
Use this skill when introducing a new middleware registration surface or adding middleware behavior to a new pipeline stage.
Decide these before editing code:
data, category_profile, and
metadata can change, and is the event used only as immutable context?Refer to docs/about-nemo-relay/concepts/middleware.mdx for the full diagrams.
Tool execution callbacks and each execution-intercept next continuation
return the canonical ToolExecutionResult { result, annotation }. A forwarding
intercept must preserve both fields in ToolExecutionInterceptOutcome; Relay
retains pending_marks separately. Tool sanitize-response guardrails receive
only result. Scope-end event sanitizers govern the annotation after Relay
projects it to category_profile.tool_result_annotation.
crates/core/src/api/runtime/callbacks.rs.pub type MyNewFn = Box<dyn Fn(&str, Json) -> Json + Send + Sync>;
NemoRelayContextState in
crates/core/src/api/runtime/state.rs.Add a SortedRegistry<GuardrailEntry<MyNewFn>> or SortedRegistry<Intercept<MyNewFn>>
field to the state struct.
crates/core/src/api/.Use the existing global_*_registry_api! and scope_*_registry_api! macro
patterns in crates/core/src/api/registry.rs. Both global and scope-local
variants are needed unless the design explicitly rules one out.
NemoRelayContextState in
crates/core/src/api/runtime/state.rs.Follow the pattern of tool_sanitize_request_chain or tool_request_intercepts_chain.
Update the relevant lifecycle owner to call the new chain method at the
appropriate pipeline stage. Tool and LLM paths live in
crates/core/src/api/tool.rs and crates/core/src/api/llm.rs; shared mark and
scope event sanitization lives in crates/core/src/api/shared.rs and is called
from crates/core/src/api/scope.rs.
Follow the add-binding-feature skill for the cross-binding implementation checklist.
crates/core/src/api/tool.rs, crates/core/src/api/llm.rscrates/core/src/api/runtime/callbacks.rscrates/core/src/api/runtime/state.rscrates/core/src/context/registries.rscrates/core/src/registry.rsdocs/about-nemo-relay/concepts/middleware.mdxdocs/about-nemo-relay/architecture.mdxdocs/instrument-applications/advanced-guide.mdxvalidate-change