工具开发
OpenClaw 支持自定义工具(Tools),让 Agent 可以执行代码、查询数据、控制设备等操作。
什么是工具?
工具是 Agent 可以调用的功能函数。当 Agent 认为需要某个工具来完成任务时,它会自动调用。
内置工具
OpenClaw 默认包含以下工具:
- read - 读取文件
- write - 写入文件
- edit - 编辑文件
- exec - 执行 shell 命令
- browser - 浏览器自动化
- web_search - 网络搜索
- web_fetch - 获取网页内容
- memory_search - 搜索记忆
- memory_get - 获取记忆片段
- sessions_list - 列出会话
- sessions_send - 发送消息到会话
- sessions_spawn - 创建子会话
- cron - 定时任务管理
- message - 发送消息
创建自定义工具
工具是放在 ~/.openclaw/skills/ 目录下的文件夹,每个工具包含:
SKILL.md- 工具定义和使用说明index.js- 工具实现(可选)
示例:天气查询工具
创建工具目录:
mkdir -p ~/.openclaw/skills/weather创建 SKILL.md:
# Weather Tool
查询指定城市的天气信息。
## 用法
{ "city": "string // 城市名称,如:北京、上海" }
## 示例
查询北京天气:
{ "city": "北京" }创建 index.js:
module.exports = async function(params, context) {
const { city } = params;
// 这里调用天气 API
// const weather = await fetchWeather(city);
return {
temperature: "25°C",
condition: "晴天",
humidity: "60%"
};
};工具配置
在 openclaw.json 中启用/禁用工具:
{
"tools": {
"weather": { "enabled": true },
"exec": { "enabled": false }
}
}最佳实践
- 工具描述要清晰,让 Agent 知道何时使用该工具
- 参数类型要明确,提供示例
- 错误处理要完善,返回有意义的错误信息
- 敏感操作(如 exec)要谨慎启用