openclaw调用工具后界面空白、日志无action输出、返回空json,主因是技能注册失败(文件名或id不规范)、后端响应格式不合规(缺status/data/message三字段)、模型不支持tool calling、或工具权限被白名单拦截;需依次核查openclaw.plugin.json命名与id、响应json结构、模型supports_tools字段及tools.profile配置。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

OpenClaw调用工具后界面显示空白、日志里没有action输出、终端只返回空JSON对象或null,说明工具执行流程在某处被静默截断,不是模型没想做,而是系统根本没让它做完。
确认技能是否成功注册
插件文件名错一个字母,OpenClaw就当它不存在——连报错都不会有,直接跳过调用。
进入你的技能所在目录,检查是否存在【openclaw.plugin.json】这个精确名称的文件。不是claw.plugin.json,也不是openclaw_plugin.json,必须全小写、带点、带下划线、结尾是.json。
打开该文件,确认"id"字段值只含ASCII字符:允许字母、数字、下划线、短横线;禁止中文、空格、括号、emoji、点号(.)或星号(*)。
执行openclaw skills list,观察输出中是否包含你刚检查的那个id。若没出现,说明注册失败,此时所有调用都必然为空。
验证后端响应格式是否合规
WorkBuddy和OpenClaw要求技能后端返回严格三字段JSON:status、data、message,缺一不可,类型不能错。
第一步:在WorkBuddy右上角头像→【设置】→【开发者选项】中开启“显示网络请求详情”。
第二步:触发一次该技能,点开控制台里的POST /claw/invoke请求,展开【Response】标签页,复制原始响应体内容。
第三步:粘贴到jsonlint.com校验是否为合法JSON;再人工确认是否同时存在status(值为"success"或"error")、data(不能为null,也不能是字符串化的JSON)、message(非空字符串)这三个顶层字段。
⚠️特别注意:如果data字段值是"{\"result\":\"ok\"}"这种带双引号和转义符的,说明后端代码对data又做了一次JSON.stringify(),必须删掉那一层冗余序列化。
检查模型是否支持工具调用
不是所有本地Ollama模型都能调用工具,qwen3.5-9b-nl这类纯推理模型会直接忽略tool_calls指令,导致空响应。
方法一:运行ollama list,查看已加载模型列表;再执行curl http://localhost:11434/api/show -d '{"name":"your-model-name"}',检查响应中是否有"supports_tools": true字段。
方法二:临时换用明确支持tool calling的模型测试,例如ollama run llama3.2:latest,然后配置OpenClaw指向它,看空结果是否消失。
若确认模型不支持,必须更换为标注了function calling能力的版本,比如qwen3.5-4b-claude-4.6-Opus-Reasoning-Distilled-GGUF。
强制重置工具权限策略
自2026年3月起,OpenClaw默认启用工具调用白名单机制,未显式授权的技能会被拦截,且不报错、不记录、不响应。
执行命令:openclaw config set tools.profile full
这一步将解除所有工具执行限制,让技能能真正抵达后端。若此前为空响应,执行后立即恢复,说明问题根源就是权限拦截。










