关于 nemoclaw-user-manage-policy
nemoclaw-user-manage-policy 用于调整 NemoClaw 沙盒可访问的网络端点,涵盖持久化基线修改和通过 OpenShell CLI 更新运行中策略,并支持预设及自定义 YAML 策略。
主要功能
- 01编辑持久化沙盒网络规则
- 02更新运行中沙盒的策略
- 03应用和移除策略预设
- 04创建自定义预设 YAML 文件
- 05预览更改并查看已启用预设
适用场景
- 01允许沙盒访问内部 API
- 02为运行中的沙盒添加集成访问权限
- 03在沙盒重建后保留网络规则
- 04在永久授权前测试目标地址
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ promptingcompany/ nv-skills --skill nemoclaw-user-manage-policy安装后在 Claude Code 中输入/nemoclaw-user-manage-policy确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
BENCHMARK.mdskill-card.mdskill.oms.sigevals/evals.jsonreferences/approve-network-requests.mdcustomize-network-policy-details.mdintegration-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 开箱即用支持的唯一一种向运行中的策略合并新条目的流程。
-
在
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 } -
将其应用到正在运行的沙盒:
$ nemoclaw my-assistant policy-addNemoClaw 会通过
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 技能)决定默认启用哪些预设。
选择层级后,你可以在交互式预设界面中添加或移除单个预设。
可用预设:
| 预设 | 端点 |
|---|---|
brave | Brave Search API |
brew | Homebrew(Linuxbrew)包管理器 |
discord | Discord API、网关和 CDN 访问 |
github | GitHub 和 GitHub REST API |
huggingface | Hugging Face Hub(仅下载)和推理路由器 |
jira | Atlassian Jira API |
local-inference | 通过主机网关访问本地 Ollama 和 vLLM |
npm | npm 和 Yarn 注册表 |
openclaw-pricing | OpenClaw 模型定价参考获取(LiteLLM 和 OpenRouter) |
outlook | Microsoft 365 和 Outlook |
pypi | Python Package Index |
slack | Slack API 和 webhook |
telegram | Telegram Bot API |
wechat | WeChat(个人版)iLink Bot API(实验性) |
whatsapp | WhatsApp 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。
参考资料
- references/integration-policy-examples.md — 指导用户为受维护的 NemoClaw 策略预设完成常见的安装后集成策略设置,包括 Outlook、消息渠道、GitHub、Jira、Brave Search、包管理器、Hugging Face、本地推理和 OpenShell 审批工作流。
- 在审批或拒绝沙箱出站请求、管理被阻止的网络调用或使用审批 TUI 时,请加载 references/approve-network-requests.md。在 TUI 中审查并批准被阻止的 Agent 网络请求。
- 需要了解如何移除自定义预设的详细步骤时,请加载 references/customize-network-policy-details.md。
相关技能
- 批准或拒绝 Agent 网络请求,用于实时操作员审批。
- 常见集成策略示例,包含受维护的预设示例,例如 Outlook、消息、GitHub、Jira、Brave Search、包管理器、Hugging Face 和本地推理。
nemoclaw-user-reference— 网络策略(使用nemoclaw-user-reference技能)以查阅完整的基线策略参考- OpenShell 策略架构,用于查阅完整的 YAML 策略架构参考。
- OpenShell 沙箱策略,用于在 OpenShell 层应用、迭代和调试策略。