mcpField
N
nemoclaw-user-manage-policy

nemoclaw-user-manage-policy

github.com/promptingcompany安全039 次安装17 周前更新
代码仓库

关于 nemoclaw-user-manage-policy

nemoclaw-user-manage-policy 用于调整 NemoClaw 沙盒可访问的网络端点,涵盖持久化基线修改和通过 OpenShell CLI 更新运行中策略,并支持预设及自定义 YAML 策略。

主要功能

  1. 01编辑持久化沙盒网络规则
  2. 02更新运行中沙盒的策略
  3. 03应用和移除策略预设
  4. 04创建自定义预设 YAML 文件
  5. 05预览更改并查看已启用预设

适用场景

  1. 01允许沙盒访问内部 API
  2. 02为运行中的沙盒添加集成访问权限
  3. 03在沙盒重建后保留网络规则
  4. 04在永久授权前测试目标地址

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/promptingcompany/nv-skills --skill nemoclaw-user-manage-policy

安装后在 Claude Code 中输入/nemoclaw-user-manage-policy确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

BENCHMARK.md
skill-card.md
skill.oms.sig
evals/
evals.json
references/
approve-network-requests.md
customize-network-policy-details.md
integration-policy-examples.md

详细介绍

自定义沙箱网络策略

注意事项

  • 自定义预设主机会绕过 NemoClaw 的审核流程,并可能将沙箱的出站访问范围扩大到任意目标。

前提条件

  • 一个正在运行的 NemoClaw 沙箱(用于动态更改),或 NemoClaw 源代码仓库(用于静态更改)。
  • PATH 中包含 OpenShell CLI。

添加、移除或修改沙箱获准访问的端点。

沙箱策略定义在 NemoClaw 仓库中的声明式 YAML 文件里,并由 NVIDIA OpenShell 在运行时强制执行。 NemoClaw 同时支持重启后仍生效的静态策略更改,以及通过 OpenShell CLI 对正在运行的沙箱应用动态更新。

注意:

如果沙箱需要访问主机上运行的 HTTP 服务,请将该服务暴露在 OpenShell 网关可以访问的主机 IP 上。 使用自定义 NemoClaw 预设,运行 nemoclaw <sandbox> policy-add --from-file。 不要将 host.docker.internal 作为通用的主机服务访问路径,因为它会绕过 OpenShell 策略路径,并且在某些沙箱运行时中可能无法访问。 请参阅 Agent 无法访问主机侧 HTTP 服务(使用 nemoclaw-user-reference 技能)。

静态更改

静态更改会修改基线策略文件,并在下次创建沙箱后生效。

编辑策略文件

打开 nemoclaw-blueprint/policies/openclaw-sandbox.yaml,添加或修改端点条目。

如果希望将内置预设纳入基线策略,请将其 network_policies 条目合并到此文件中,然后重新运行 nemoclaw onboard。

如果只需要将预设应用到正在运行的沙箱,请使用动态更改中的 nemoclaw <name> policy-add。 这会更新实时策略,不会编辑 openclaw-sandbox.yaml。

如果需要允许预设未涵盖的自定义主机(例如内部 API 或天气服务),请手动编辑 YAML。

network 部分中的每个条目都定义了一个端点组,包含以下字段:

endpoints : 沙箱可以访问的主机和端口对。

binaries : 获准使用此端点的可执行文件。

rules : 允许的 HTTP 方法和路径。

重新运行 Onboard

重新运行 onboard 向导以应用更新后的策略:

$ nemoclaw onboard

向导会读取修改后的策略文件,并将其应用到沙箱。

验证策略

检查沙箱是否正在使用更新后的策略运行:

$ nemoclaw <name> status
添加 Blueprint 策略补充项

如果你维护自定义 blueprint,可以在 nemoclaw-blueprint/blueprint.yaml 的 components.policy.additions 下添加额外的策略条目。 NemoClaw 会使用与预设文件相同的策略架构验证这些条目,在创建沙箱期间获取实时策略,将补充项合并到 network_policies 中,并通过 OpenShell 应用合并后的策略。 应用的补充项会记录在运行元数据中,方便你审计该沙箱运行期间启用的 blueprint 级策略条目。

动态更改

动态更改会将策略更新应用到正在运行的沙箱,无需重启。

警告

openshell policy set 会用你提供的文件内容替换沙箱的实时策略,不会进行合并。 正在运行的沙箱的实时策略由 openclaw-sandbox.yaml 中的基线策略,以及入门设置期间叠加的所有预设组成。 如果应用的文件只包含基线策略(或只包含单个预设),所有其他已生效的预设都会被静默移除。

选项 1:添加预设文件并使用 policy-add(推荐)

这是非破坏性方式,也是 NemoClaw 开箱即用支持的唯一一种向运行中的策略合并新条目的流程。

  1. 在 nemoclaw-blueprint/policies/presets/ 下创建一个预设格式的 YAML 文件,例如 nemoclaw-blueprint/policies/presets/influxdb.yaml:

    preset:
      name: influxdb
      description: "InfluxDB time-series database"
    network_policies:
      influxdb:
        name: influxdb
        endpoints:
          - host: influxdb.internal.example.com
            port: 8086
            protocol: rest
            enforcement: enforce
            rules:
              - allow: { method: GET, path: "/**" }
              - allow: { method: POST, path: "/api/v2/write" }
        binaries:
          - { path: /usr/bin/curl }
    
  2. 将其应用到正在运行的沙盒:

    $ nemoclaw my-assistant policy-add
    

    NemoClaw 会通过 openshell policy get --full 读取实时策略,以结构化方式将预设中的 network_policies 合并到该策略中,然后写回合并后的结果。 现有预设和基线都会保留。 presets/ 下的预设文件也会在沙盒重建后继续保留。

选项 2:通过 OpenShell 快照、编辑并设置

仅当你无法在 NemoClaw 源代码树下添加文件时,才使用此方式。 必须从实时策略开始,而不是从 openclaw-sandbox.yaml 开始,这样在引导流程中叠加的预设才能保留在你应用的文件中。

$ openshell policy get --full my-assistant > live-policy.yaml

编辑 live-policy.yaml,在 network_policies: 下添加条目,同时保留现有的 version 字段,然后应用:

$ openshell policy set --policy live-policy.yaml my-assistant
动态更改的范围

动态更改仅适用于当前会话。 沙盒停止后,运行中的策略会重置为由 openclaw-sandbox.yaml 和沙盒记录的预设共同组成的基线。 要让自定义策略在沙盒重建后继续生效,请将预设文件纳入代码库(上面的选项 1——presets/ 下的文件会持续保留),或编辑 openclaw-sandbox.yaml 并重新运行 nemoclaw onboard。

交互式批准请求

对于一次性访问,你可以在 OpenShell TUI 中批准被阻止的请求,而不是编辑基线策略:

$ openshell term

如果你想先测试某个目标地址,再决定是否将其加入永久预设或自定义策略文件,这种方式就很有用。

策略预设

NemoClaw 在 nemoclaw-blueprint/policies/presets/ 中提供常见集成的预设策略文件。 可直接应用预设,也可将其用作自定义策略的起始模板。 如需了解安装后的引导示例,请参阅常见集成策略示例。

在引导过程中,你选择的策略层级(使用 nemoclaw-user-reference 技能)决定默认启用哪些预设。 选择层级后,你可以在交互式预设界面中添加或移除单个预设。

可用预设:

预设端点
braveBrave Search API
brewHomebrew(Linuxbrew)包管理器
discordDiscord API、网关和 CDN 访问
githubGitHub 和 GitHub REST API
huggingfaceHugging Face Hub(仅下载)和推理路由器
jiraAtlassian Jira API
local-inference通过主机网关访问本地 Ollama 和 vLLM
npmnpm 和 Yarn 注册表
openclaw-pricingOpenClaw 模型定价参考获取(LiteLLM 和 OpenRouter)
outlookMicrosoft 365 和 Outlook
pypiPython Package Index
slackSlack API 和 webhook
telegramTelegram Bot API
wechatWeChat(个人版)iLink Bot API(实验性)
whatsappWhatsApp Web 消息(实验性)

对正在运行的沙盒应用预设:

$ nemoclaw <name> policy-add

注意:

省略预设名称时,预设选择过程为交互式。 在脚本化工作流中,使用 --yes 并传入预设名称。

例如,以交互方式为正在运行的沙盒添加 PyPI 访问权限:

$ nemoclaw my-assistant policy-add

查看沙盒已应用的预设:

$ nemoclaw <name> policy-list

要将预设纳入基线,请将其条目合并到 openclaw-sandbox.yaml 中,然后重新运行 nemoclaw onboard。

注意:

openshell policy set --policy <file> <sandbox-name> 命令用于原始策略文件,不接受预设 YAML 文件中使用的 preset: 元数据块。对于预设,请使用 nemoclaw <name> policy-add。

在脚本化工作流中,policy-add 和 policy-remove 将预设名称作为位置参数:

$ nemoclaw my-assistant policy-add pypi --yes
$ nemoclaw my-assistant policy-remove pypi --yes

设置 NEMOCLAW_NON_INTERACTIVE=1,而不是使用 --yes,即可通过环境变量驱动相同的流程。 完整的标志参考请参阅命令(使用 nemoclaw-user-reference 技能)。

nemoclaw <name> rebuild 会将每个策略预设重新应用到重建的沙盒,因此升级 Agent 版本后无需手动重新应用预设。

自定义预设文件

将用户编写的预设 YAML 应用到正在运行的沙盒,无需编辑基线,也无需使用 openshell policy set。

编写

自定义预设的结构与 nemoclaw-blueprint/policies/presets/ 下的内置预设相同:

preset:
  name: my-internal-api
  description: "Internal service"
network_policies:
  my-internal-api:
    name: my-internal-api
    endpoints:
      - host: api.example.internal
        port: 443
        protocol: rest
        enforcement: enforce
        rules:
          - allow: { method: GET, path: "/**" }
    binaries:
      - { path: /usr/local/bin/node }

顶层的 preset.name 必须是小写 RFC 1123 标签(字母、数字、连字符),且不得与 slack 或 pypi 等内置预设名称冲突。 如果 NemoClaw 因名称冲突而拒绝应用该文件,请重命名 preset.name。

应用单个文件
$ nemoclaw my-assistant policy-add --from-file ./presets/my-internal-api.yaml

使用 --dry-run 预览端点而不应用;使用 --yes 或导出 NEMOCLAW_NON_INTERACTIVE=1 可跳过确认提示。

应用目录中的所有文件
$ nemoclaw my-assistant policy-add --from-dir ./presets/ --yes

文件按字典序处理。 遇到第一个失败时,处理即停止;已应用的预设不会回滚。 修复失败的文件后,重新运行命令以继续。

警告:

自定义预设主机会绕过 NemoClaw 的审查流程,可能会将沙盒的外发访问范围扩大到任意目标。 应用前请检查自定义预设中的每个主机,尤其是文件来自团队外部时。

如需了解移除自定义预设的详细步骤,请参阅references/customize-network-policy-details.md。

参考资料

相关技能

  • 批准或拒绝 Agent 网络请求,用于实时操作员审批。
  • 常见集成策略示例,包含受维护的预设示例,例如 Outlook、消息、GitHub、Jira、Brave Search、包管理器、Hugging Face 和本地推理。
  • nemoclaw-user-reference — 网络策略(使用 nemoclaw-user-reference 技能)以查阅完整的基线策略参考
  • OpenShell 策略架构,用于查阅完整的 YAML 策略架构参考。
  • OpenShell 沙箱策略,用于在 OpenShell 层应用、迭代和调试策略。

评论

支持 Markdown