ai在openclaw中调用自定义脚本需将其注册为llm可识别的原子能力:脚本须含shebang、posix参数、utf-8输出且首行为result:json;放入tools/并chmod +x;配同名.yaml描述文件(含name、description、args);最后重启容器挂载tools目录。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

让AI在OpenClaw中调用自定义脚本工具,核心是将脚本注册为可被LLM识别并调度的“原子能力”,而非简单地把文件丢进目录就完事。这一步做错,AI永远只会说“我无法执行该操作”,不会主动找到你的脚本。
确认脚本符合OpenClaw工具规范
脚本必须是独立可执行文件,且第一行含明确的shebang声明(如#!/usr/bin/env python3或#!/bin/bash)。Windows批处理(.bat)或PowerShell(.ps1)脚本默认不被支持,除非你在runtime容器中手动注入对应运行时环境。
脚本入口参数必须采用标准POSIX风格:所有输入通过命令行参数传入,禁止读取stdin或环境变量——因为OpenClaw的工具调用层不转发stdin流,也不透传宿主机环境变量。
脚本输出必须为UTF-8纯文本,且首行必须以RESULT:开头,后接JSON格式结果(如RESULT:{"status":"success","data":"xxx"})。任何前置日志、空行、ANSI颜色码都会导致LLM解析失败。
将脚本放入指定工具目录并赋予执行权限
进入OpenClaw工作区根目录,确保存在tools/子目录。若不存在,手动创建:mkdir -p tools。
把你的脚本(例如fetch_user_data.py)复制到tools/下:cp /path/to/fetch_user_data.py tools/。
【必须执行chmod +x】否则OpenClaw runtime会报“Permission denied”并静默跳过该工具:chmod +x tools/fetch_user_data.py。
编写工具描述文件(YAML格式)
在tools/目录下,为每个脚本创建同名的.yaml文件(如fetch_user_data.py.yaml)。
文件内容需严格包含三部分:name、description、args。示例:
name: fetch_user_data<br>description: 根据用户ID从内部API拉取完整档案,返回JSON结构化数据<br>args:<br> - name: user_id<br> type: string<br> required: true<br> description: 目标用户的唯一标识符,长度6-12位数字或字母组合
description字段会被LLM用于判断是否调用该工具,务必用自然语言写清楚用途和输入约束,避免出现“执行数据获取”这类模糊表述。
重启OpenClaw服务使工具生效
停止当前容器:docker stop openclaw-dev。
重新运行启动命令,确保挂载了更新后的tools/目录:docker run -itd --rm -v $(pwd)/workspace:/workspace -v $(pwd)/tools:/workspace/tools -p 3000:3000 --name openclaw-dev openclaw:latest。
等待约15秒,访问http://localhost:3000,在Agent控制台输入“列出所有可用工具”,应能看到fetch_user_data出现在返回列表中。










