O
OpenClaw

工具开发

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)要谨慎启用