Skip to main content
WASM 工具运行在 wasmtime 沙箱中。除 IronClaw 暴露的宿主函数外,网络、文件系统、凭据等能力都必须在 capabilities.json 中显式声明。 对于需要强隔离的自定义集成,这是 IronClaw 推荐方案。

工作流程


沙箱机制

Fuel 计量

每条 WASM 指令都会消耗 fuel,耗尽即终止,防止死循环。

内存限制

模块使用固定线性内存,超限会 trap 并终止。

速率限制

每个工具可配置独立限流:

capabilities.json

每个 WASM 工具都需与 .wasm 放在同目录,并包含 capabilities.json

网络白名单

network.allowed_hosts 决定允许访问的域名。未命中白名单的请求会在建立连接前被拒绝。

文件系统访问

默认无主机文件系统权限,filesystem.read/filesystem.write 声明的路径才会挂载进沙箱。

凭据注入

凭据不会进入 WASM 内存。模块发出请求后,由代理在转发时注入 Header。

宿主函数


工具发现与安装

启动时从以下目录发现工具:
  • ~/.ironclaw/tools/
  • <workspace>/tools/
每个工具目录至少包含:
  • <toolname>.wasm
  • capabilities.json
安装示例:

安全说明

安装来自不可信来源的 WASM 工具前,请先审阅 capabilities.json
凭据仅由代理注入到出站请求,模块无法直接读取密钥存储。
模块不能执行 shell、fork 子进程或加载动态库。
无限循环会在 fuel 用尽时被强制终止。