NeMoRelay迁移技能Skill nemo-relay-migrate-from-flow

本技能用于指导用户将 NeMo Flow 代码/文档迁移到 NeMo Relay,涵盖 Python、Rust、Node.js、Go、C FFI、CLI、配置和可观测性。提供机械重命名映射、自动化辅助脚本、语言特定清理及验证步骤。关键词:NeMo Flow, NeMo Relay, 迁移, 重命名, Python, Rust, Node.js, Go, C FFI, CLI, 配置, 可观测性, 自动化迁移脚本

技能治理 0 次安装 1 次浏览 更新于 9/7/2026
名称 nemo-relay-migrate-from-flow
描述 当用户需要将现有的 NeMo Flow 应用、示例、集成、文档、清单或仓库代码迁移到 NeMo Relay,并涉及 Python、Rust、Node.js、Go、C FFI、CLI、配置和可观测性层面时,使用本技能。
开源协议 Apache-2.0 metadata:
作者 NVIDIA Corporation and Affiliates

从 NeMo Flow 迁移到 NeMo Relay

当用户已有 NeMo Flow 代码或文档并希望转换为 NeMo Relay 时,使用此技能。将迁移视为机械性重命名加语言特定验证,而不是行为重写。在进行广泛重命名之前,先明确兼容性例外。

默认工作流程

  1. 检查工作树并确定所涉及的层面:Rust、Python、Node.js、Go、C FFI、CLI/配置、文档或集成。
  2. 将 SKILL_DIR 解析为包含此 SKILL.md 的绝对目录,将 TARGET_PATH 解析为源仓库或目标项目。在编辑之前,以 dry-run 模式运行捆绑的辅助脚本: python3 "$SKILL_DIR/scripts/migrate_from_nemo_flow.py" "$TARGET_PATH" --rename-paths
  3. 与用户一起审查报告的文本编辑、路径重命名和旧项目配置警告。不要将项目本地的 .nemo-flow/config.toml.nemo-flow/plugins.toml 迁移到 .nemo-relay。审查后,手动将这些设置移动到受支持的用户或显式配置路径。
  4. 在获得用户对已解析目标根目录的明确确认后,使用 --write--rename-paths--confirm-root "$TARGET_PATH" 参数重新运行。
  5. 对包管理器锁文件、生成工件和公共 API 示例执行特定语言清理。
  6. 搜索剩余的 Flow 名称并验证受影响的语言层面。

机械重命名映射

  • 品牌与仓库:NeMo Flow -> NeMo RelayNeMo-Flow -> NeMo-Relay
  • Python:nemo-flow -> nemo-relaynemo_flow -> nemo_relaypython/nemo_flow -> python/nemo_relay
  • Rust:nemo-flow -> nemo-relaynemo-flow-adaptive -> nemo-relay-adaptivenemo_flow:: -> nemo_relay::
  • Node.js:nemo-flow-node -> nemo-relay-node,包括相关入口点,如 /typed/plugin/adaptive/observability
  • Go:github.com/NVIDIA/NeMo-Flow/go/nemo_flow -> github.com/NVIDIA/NeMo-Relay/go/nemo_relay,包别名 nemo_flow -> nemo_relay,源目录 go/nemo_flow -> go/nemo_relay
  • C FFI:nemo_flow.h -> nemo_relay.hnemo_flow_* -> nemo_relay_*NemoFlow* -> NemoRelay*NEMO_FLOW_* -> NEMO_RELAY_*
  • CLI/配置:nemo-flow -> nemo-relay~/.config/nemo-flow -> ~/.config/nemo-relayNEMO_FLOW_* -> NEMO_RELAY_*x-nemo-flow-* -> x-nemo-relay-*。不要盲目地将项目本地的 .nemo-flow/config.toml.nemo-flow/plugins.toml 重命名为 .nemo-relay;这些文件需要手动迁移到受支持的用户或显式配置路径。

不要替换单独的 flowFlowFlowError。这些可能是领域词汇或故意的兼容性名称。

语言清理

  • Python:更新 pyproject.toml、导入、类型桩、集成包路径、额外依赖和原生模块名称。在源代码编辑后,使用用户的包工作流重新生成或刷新锁文件。
  • Rust:更新 Cargo.toml 中的 crate 名称、工作区依赖、包引用以及 use nemo_relay::... 导入。当依赖变化时,让 Cargo 重新生成 Cargo.lock
  • Node.js:更新 package.json、工作区名称、package-lock 条目、原生插件工件名称以及从 nemo-relay-node 的导入。运行包管理器刷新锁文件。
  • Go:更新 go.mod、导入路径、包声明、别名以及 go/nemo_relay 下的本地目录布局。
  • C FFI:更新头文件包含、导出符号名称、状态和回调类型名称、宏常量、加载器路径以及下游绑定。
  • 文档和示例:更新徽章、包安装命令、仓库链接、托管文档 URL、CLI 命令、配置路径和集成名称。

自动化辅助

使用 $SKILL_DIR/scripts/migrate_from_nemo_flow.py 进行第一轮编辑。该辅助程序:

  • 除非传入 --write,否则以 dry-run 模式运行
  • 跳过常见的 vendor、构建、缓存和生成目录
  • 除非传入 --include-lockfiles,否则跳过锁文件
  • 跳过符号链接和包含凭证的 dotenv 文件
  • 检测项目本地的 .nemo-flow/config.toml.nemo-flow/plugins.toml,将其保持不变,并报告它们需要手动迁移到受支持的用户或显式配置路径
  • 在写入前要求已审查的目标根目录与 --confirm-root 重复,且拒绝写入文件系统根目录或主目录
  • 将写入和重命名锚定到经验证的目录句柄,不跟随符号链接,并拒绝在无法提供这些保证的平台上使用写入模式
  • 使用原子式无替换路径重命名,并在任何请求的变更失败时以非零状态退出
  • 可以使用 --rename-paths 报告或执行路径重命名
  • 仅重写显式的 NeMo Flow 标识符、包名、仓库名、配置路径、头文件、环境变量和 FFI 类型前缀

该辅助程序不会把任意 JSON、YAML、TOML 或 INI 文件分类为秘密。请审查 dry-run 报告中的每个配置文件。如果任何报告的文件未经审查或包含凭证,请勿在该根目录使用 --write。手动应用已审查的更改,并保持含秘密的文件不变,不要读取或显示其值。

在调用辅助程序之前设置 shell 安全的绝对路径。将示例值替换为已解析的技能目录以及源仓库或用户的目标项目:

SKILL_DIR="/resolved/absolute/path/to/nemo-relay-migrate-from-flow"
TARGET_PATH="/resolved/absolute/path/to/target-project"

python3 "$SKILL_DIR/scripts/migrate_from_nemo_flow.py" "$TARGET_PATH" --rename-paths
python3 "$SKILL_DIR/scripts/migrate_from_nemo_flow.py" "$TARGET_PATH" \
  --write --rename-paths --confirm-root "$TARGET_PATH"

仅当用户希望直接编辑锁文件时,才使用 --include-lockfiles;否则请使用 Cargo、uv/pip、npm 或 Go 工具重新生成它们。

验证

  • 搜索剩余的显式 Flow 标识符: rg -n "NeMo Flow|NeMo-Flow|nemo_flow|nemo-flow|NEMO_FLOW|NemoFlow|nemo_flow\\.h|nemo_flow_"
  • 为每个受影响的语言层面运行针对性测试。
  • 对于 Rust 更改,运行 cargo test 或仓库的 Rust 测试配方。
  • 对于 Python 更改,在目标环境中运行相关导入检查和测试。
  • 对于 Node.js 更改,运行包安装、类型检查和包测试。
  • 对于 Go 更改,从更新后的模块运行 go test ./...
  • 对于仅文档迁移,如果站点导航、安装命令或 API 引用发生更改,请构建或检查文档链接。

相关技能

  • nemo-relay-get-started
  • nemo-relay-instrument-calls
  • nemo-relay-debug-runtime-integration