概述
代码执行技能是 OpenClaw 最具生产力的能力之一。AI 智能体不仅能编写代码,还能在安全的沙箱环境中运行代码、观察输出,并根据结果迭代改进。这种"编写——执行——观察——改进"的循环大幅提升了 AI 智能体处理技术问题的准确性。
执行架构
代码执行技能构建在 OpenClaw 的沙箱隔离环境之上。Pi SDK 的直接嵌入架构消除了从代码生成到执行请求传递的进程间通信开销。执行流程如下:
- AI 智能体生成代码片段
- 代码通过沙箱的容器执行模块提交
- 容器在隔离环境中运行代码
- 输出结果(stdout、stderr、退出码)返回给智能体
- 智能体根据结果决定下一步操作
基础配置
skills:
codeExec:
enabled: true
sandbox:
containerExec: true
image: openclaw/code-sandbox:latest
timeout: 30s
memoryLimit: 256m
cpuLimit: 0.5
languages:
- python
- javascript
- bash
- typescript
支持的编程语言
Python
Python 是最常用的执行语言。沙箱镜像预装了 Python 3.11 运行时和常用的科学计算库。
skills:
codeExec:
python:
version: "3.11"
preinstalledPackages:
- numpy
- pandas
- matplotlib
- requests
allowPipInstall: false
maxOutputSize: 1MB
allowPipInstall 控制是否允许在执行时安装额外的 Python 包。出于安全考虑,默认关闭。如果启用,建议配合包白名单使用。
JavaScript / TypeScript
Node.js 运行时支持执行 JavaScript 和 TypeScript 代码。
skills:
codeExec:
javascript:
runtime: node
version: "20"
allowNpmInstall: false
esModules: true
Bash
支持 Shell 脚本执行,但命令范围受沙箱路径约束的限制。
skills:
codeExec:
bash:
allowedCommands:
- ls
- cat
- grep
- awk
- sed
- curl
deniedCommands:
- rm
- dd
- mkfs
安全机制
容器隔离
每次代码执行都在一个独立的容器实例中运行。容器销毁后,执行环境中的所有更改都会被清除。这意味着恶意代码无法对宿主系统产生持久影响。
网络控制
默认情况下,代码执行容器没有网络访问权限。如果需要网络请求(如调用外部 API),可以显式启用受限网络模式:
skills:
codeExec:
network:
mode: restricted
allowedHosts:
- "api.example.com"
- "pypi.org"
maxBandwidth: 10MB
资源限制
沙箱对代码执行施加严格的资源限制:
- 时间限制:默认 30 秒,超时后容器被强制终止
- 内存限制:默认 256MB,防止内存泄漏和内存炸弹
- CPU 限制:限制 CPU 使用比例,防止挖矿等滥用行为
- 输出限制:最大输出大小限制,防止日志炸弹
- 文件系统:限制可写文件的总大小
系统调用过滤
容器使用 seccomp 配置文件限制可用的系统调用,阻止 fork 炸弹、直接设备访问等危险操作。
执行模式
单次执行
最基本的模式——提交代码并获取输出。适用于简单计算、数据处理和结果验证。
交互式会话
OpenClaw 支持交互式会话,在多次代码执行之间保持执行状态。变量和状态在多次代码执行间共享,类似 Jupyter Notebook 的体验。
skills:
codeExec:
interactiveSession:
enabled: true
maxDuration: 600s
persistState: true
交互式会话的状态通过容器的持续运行来维护,会话超时后容器被回收。
文件输出
代码执行可以生成文件输出(如图表、CSV 数据等)。输出文件通过挂载目录映射回宿主系统,然后通过消息工具发送给用户。
skills:
codeExec:
outputDir: /tmp/openclaw/code-output
allowedOutputTypes:
- "*.png"
- "*.csv"
- "*.json"
- "*.txt"
maxOutputFileSize: 5MB
渠道集成
代码格式化
不同渠道对代码展示的格式要求不同。系统会根据渠道类型自动格式化代码输出:
- Discord:使用 Markdown 代码块,带语法高亮
- Telegram:使用
<pre>标签包裹代码 - Slack:使用 Slack 原生的代码块格式
- WhatsApp:使用等宽字体标记
输出截断
当代码输出超过渠道的消息长度限制时,系统会自动截断并附加"查看完整输出"的提示。完整输出可以作为文件附件发送。
使用场景
代码执行技能的常见应用场景包括:
- 数据分析:处理 CSV/JSON 数据并生成统计报告
- 数学计算:精确的数值计算,避免 AI 模型的算术错误
- 图表生成:使用 matplotlib 等库创建可视化图表
- 原型验证:快速验证代码逻辑的正确性
- 自动化脚本:执行文件处理、格式转换等自动化任务
监控与审计
所有代码执行都会被完整记录,包括提交的代码、执行输出、资源使用和执行时长。管理员可以审查执行历史,发现滥用行为。
skills:
codeExec:
audit:
enabled: true
logCode: true
logOutput: true
retentionDays: 30
总结
代码执行技能将 AI 智能体从"只能说"升级为"能说也能做"。通过 OpenClaw 的沙箱隔离机制,代码执行在安全可控的环境中进行,让用户在享受强大能力的同时无需担心安全风险。