乐于分享
好东西不私藏

我的第一款OpenClaw插件Wasm Sandbox上架ClawHub

我的第一款OpenClaw插件Wasm Sandbox上架ClawHub

openclaw-wasm-sandbox 是一款 OpenClaw 插件,提供了一个基于能力(capability-based)的安全沙箱,用于运行 WebAssembly (WASM) 组件。它基于 WebAssembly 组件模型和 WASI(WebAssembly 系统接口)构建,允许您安全地执行不受信任的 WASM 代码,并对文件系统访问、网络请求、环境变量以及计算资源进行细粒度的控制。

🔧 核心能力一览

这款插件不是简单的”限制器”,而是一个完整的安全执行环境

零信任默认安全(Default Deny)

  • 不同于传统环境的”默认全开”,WASM 组件初始零权限
  • 文件系统、网络、环境变量等访问必须显式授权
  • 基于 Capability-based Security 模型,最小权限原则

精细化资源管控

# 限制执行时间、内存、栈空间和计算燃料openclaw wasm-sandbox run ./agent.wasm \  --wasm-timeout 30 \  --wasm-max-memory-size 67108864 \  --wasm-max-stack 1048576 \  --wasm-fuel 1000000

网络访问白名单机制

# 只允许访问特定域名,支持通配符openclaw wasm-sandbox run ./agent.wasm \  --allowed-outbound-hosts "https://api.github.com" \  --allowed-outbound-hosts "https://*.openai.com" \  --block-networks "private"# 阻断私有网段访问

目录映射隔离

通过 --map-dir host::guest 语法,将宿主机目录只读或读写映射到沙箱内的特定路径,避免全盘暴露:

openclaw wasm-sandbox run ./processor.wasm \  --map-dir ./input_data::/data:ro \  --map-dir ./output_dir::/output:rw

双模式执行支持

  • run 模式:单次执行 WASM 组件,适用于批处理任务
  • serve 模式:将 WASM 组件作为 HTTP 服务长期运行,适用于 API 代理

🚀 快速上手指南

安装插件

# 从 ClawHub 官方仓库安装openclaw plugins install clawhub:openclaw-wasm-sandbox# 或从 npm 安装openclaw plugins install openclaw-wasm-sandbox

准备 WASM 组件

注意:此插件运行的是 WebAssembly Component Model.wasm 组件),而非传统的 Core WASM 模块。如果你有的是 Core WASM,需要转换:

# 使用 wasm-tools 转换wasm-tools component new input.wasm -o output.wasm

实战示例:安全运行第三方数据处理技能

假设你从 ClawHub 下载了一个数据处理技能,但不确定其安全性:

# 在严格沙箱中运行,限制只能读取 ./data 目录,禁止网络访问openclaw wasm-sandbox run ./untrusted-processor.wasm \  --map-dir ./data::/data:ro \  --env PROCESS_MODE=batch \  --wasm-timeout 60 \  --wasm-max-memory-size 134217728 \  --block-networks "0.0.0.0/0"# 完全禁止出站网络

部署 WASM 微服务

# 将 WASM 组件作为 HTTP 服务运行在 3000 端口openclaw wasm-sandbox serve ./api-handler.wasm \  -i 0.0.0.0 \  -p 3000 \  --env NODE_ENV=production \  --allowed-outbound-hosts "https://database.internal.company.com" \  --config-var LOG_LEVEL=info

相关资源

  • openclaw-wasm-sandbox:https://clawhub.ai/plugins/openclaw-wasm-sandbox
  • openclaw-wasm-sandbox npm:https://www.npmjs.com/package/openclaw-wasm-sandbox