Архитектура

NemoClaw состоит из двух основных компонентов: TypeScript-плагина, интегрирующегося с CLI OpenClaw, и Python-блюпринта, оркестрирующего ресурсы OpenShell.

Плагин NemoClaw

Плагин — это тонкий TypeScript-пакет, регистрирующий команды в openclaw nemoclaw. Он работает в одном процессе со шлюзом OpenClaw и обрабатывает пользовательские взаимодействия через CLI.

nemoclaw/
├── src/
│   ├── index.ts                    Plugin entry — registers all commands
│   ├── cli.ts                      Commander.js subcommand wiring
│   ├── commands/
│   │   ├── launch.ts               Fresh install into OpenShell
│   │   ├── connect.ts              Interactive shell into sandbox
│   │   ├── status.ts               Blueprint run state + sandbox health
│   │   ├── logs.ts                 Stream blueprint and sandbox logs
│   │   └── slash.ts                /nemoclaw chat command handler
│   └── blueprint/
│       ├── resolve.ts              Version resolution, cache management
│       ├── fetch.ts                Download blueprint from OCI registry
│       ├── verify.ts               Digest verification, compatibility checks
│       ├── exec.ts                 Subprocess execution of blueprint runner
│       └── state.ts                Persistent state (run IDs)
├── openclaw.plugin.json            Plugin manifest
└── package.json                    Commands declared under openclaw.extensions

Блюпринт NemoClaw

Блюпринт — это версионированный артефакт на Python со собственным потоком релизов. Плагин разрешает, проверяет и выполняет блюпринт как подпроцесс. Блюпринт управляет всеми взаимодействиями с CLI OpenShell.

nemoclaw-blueprint/
├── blueprint.yaml                  Manifest — version, profiles, compatibility
├── orchestrator/
│   └── runner.py                   CLI runner — plan / apply / status
├── policies/
│   └── openclaw-sandbox.yaml       Strict baseline network + filesystem policy

Жизненный цикл блюпринта

flowchart LR
    A[resolve] --> B[verify digest]
    B --> C[plan]
    C --> D[apply]
    D --> E[status]
  1. Разрешение. Плагин находит артефакт блюпринта и проверяет версию на соответствие ограничениям min_openshell_version и min_openclaw_version в blueprint.yaml.
  2. Проверка. Плагин проверяет дайджест артефакта на соответствие ожидаемому значению.
  3. Планирование. Runner определяет, какие ресурсы OpenShell необходимо создать или обновить: шлюз, провайдеры, песочницу, маршрут инференса и политику.
  4. Применение. Runner выполняет план, вызывая команды CLI openshell.
  5. Статус. Runner сообщает текущее состояние.

Среда песочницы

Песочница использует образ контейнера ghcr.io/nvidia/openshell-community/sandboxes/openclaw. Внутри песочницы:

  • OpenClaw работает с предустановленным плагином NemoClaw.
  • Вызовы инференса маршрутизируются через OpenShell к настроенному провайдеру.
  • Исходящий сетевой трафик ограничен базовой политикой в openclaw-sandbox.yaml.
  • Доступ к файловой системе ограничен: /sandbox и /tmp доступны для чтения-записи, системные пути — только для чтения.

Маршрутизация инференса

Запросы инференса от агента никогда не покидают песочницу напрямую. OpenShell перехватывает их и направляет настроенному провайдеру:

Agent (sandbox)  ──▶  OpenShell gateway  ──▶  NVIDIA cloud (build.nvidia.com)

Обратитесь к Профилям инференса для получения подробностей о настройке провайдеров.