OpenClaw本地部署默认不支持外部工具调用,v0.8.3版本强制禁用外部命令执行;需手动挂载宿主机工具目录、设置ALLOWED_TOOLS环境变量、通过config.yaml或TOOL_CONFIG注册工具,否则提示“Tool not found”。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

OpenClaw本地部署后无法直接调用外部工具,因为它的设计定位是轻量级、隔离型的AI操作代理,不内置工具注册机制或插件系统;必须通过修改配置文件显式声明工具路径,并在容器启动时挂载对应二进制文件或脚本目录。
确认OpenClaw是否支持外部工具调用
OpenClaw(注意:非OpenHands)当前版本(v0.8.3)默认禁用所有外部命令执行能力,这是出于安全隔离强制策略。它仅允许在沙箱内运行预编译的Python函数或内置CLI命令(如ls、cat)。若需调用curl、git、jq等任意外部工具,必须手动启用exec权限并挂载宿主机工具链。
挂载宿主机工具目录到容器
第一步:在宿主机创建工具目录并复制必要二进制文件
mkdir -p ~/openhands-tools && cp $(which curl) $(which git) $(which jq) $(which python3) ~/openhands-tools/
第二步:启动容器时通过-v参数挂载该目录
docker run -it --rm \
-v ~/openhands-tools:/usr/local/bin/tools:ro \
-e ALLOWED_TOOLS="curl,git,jq,python3" \
--cap-add=SYS_ADMIN \
docker.all-hands.dev/all-hands-ai/openhands:0.39
【ALLOWED_TOOLS必须精确匹配文件名,且不含路径】 否则OpenClaw在初始化时会跳过加载,后续调用直接报“Tool not found”错误。
在Agent配置中注册工具
方法一:通过环境变量注入工具定义
启动时添加 -e TOOL_CONFIG='[{"name":"http_fetch","executable":"curl","args":["-s","-L"]},{"name":"json_parse","executable":"jq","args":["."]}'
方法二:修改config.yaml挂载进容器
OpenClaw 自我进化框架一键部署。安装宪法(AGENTS.md)、可进化灵魂(SOUL.md)、心跳系统、PARA三层记忆架构、目标管理,并通过场景化对话引导用户定义 Agent 性格。自动配置 EvoClaw(审批制进化)和 Self-Improving Agent(自主学习)。触发场景:"setup o...
在宿主机编写tools-config.yaml:
tools:
- name: http_fetch
executable: /usr/local/bin/tools/curl
args: ["-s", "-L"]
- name: json_parse
executable: /usr/local/bin/tools/jq
args: ["."]
然后启动命令中加入 -v $(pwd)/tools-config.yaml:/app/config/tools-config.yaml:ro
这一步不做,即使二进制已挂载,OpenClaw也不会识别为可用工具。
验证工具能否被Agent调用
① 打开浏览器访问 http://localhost:3000,等待页面加载完成
② 点击右上角齿轮图标 → 进入“Advanced Settings” → 查看“Available Tools”列表
③ 输入自然语言指令测试,例如:“用http_fetch获取 https://httpbin.org/json 的内容,再用json_parse提取key值”
④ 观察右侧执行日志:若出现 “Executing tool: http_fetch” 且返回JSON解析结果,则说明调用链通路已打通
如果日志只显示“Tool http_fetch not registered”,说明config.yaml未被正确加载或tool name拼写不一致——注意大小写和下划线。

















