是openclaw 3.23+版本schema转换与参数解析双bug导致的工具参数丢失问题,需手动修复pi-embedded-basvmupw.js中addclaudeparamaliasestoschema和tryparsemalformedtoolcallarguments两处逻辑并重启网关。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

OpenClaw工具调用时出现参数错误,表现为exec、web_fetch等工具返回空对象{}、提示must have required property 'xxx'或连续调用中参数随机丢失,根本原因是Schema转换与参数解析两处底层Bug叠加导致。
确认是否为3.23+版本参数丢失问题
运行openclaw doctor检查诊断报告,若输出中包含“tool call arguments may be dropped”或“required property validation failed”类提示,则基本可锁定为已知的Schema别名处理缺陷。
查看当前版本:openclaw --version,输出为3.23或3.24即符合触发条件。
该问题在长时间对话后高发,且仅影响需传参的工具(exec/read/web_fetch/message),不涉及无参技能调用。
手动修复核心JS文件
第一步:定位待修改文件
打开路径 C:\Users\用户名\AppData\Roaming\npm\node_modules\openclaw\dist\pi-embedded-BaSvmUpW.js(Windows)或 /usr/local/lib/node_modules/openclaw/dist/pi-embedded-BaSvmUpW.js(macOS/Linux)。
第二步:修复Schema别名注册逻辑
搜索函数 addClaudeParamAliasesToSchema,找到形如 params.required.splice(idx, 1); 的语句,将其替换为 params.required.splice(idx, 1, alias);。【此操作确保别名被加入required数组,否则Kimi模型将视参数为可选】
第三步:修复参数解析丢弃逻辑
搜索函数 tryParseMalformedToolCallArguments(约第173338行),将原代码 JSON.parse(raw); return; 替换为:
const parsed = JSON.parse(raw); if (!parsed) return undefined; return { args: parsed, trailingSuffix: "" };
保存文件,关闭所有编辑器窗口,防止文件被系统锁住。
重启并验证修复效果
方法一:终端执行 openclaw gateway restart,等待网关重新加载模块。
方法二:若使用Docker部署,需重建容器:docker-compose down && docker-compose up -d,确保新JS文件被挂载生效。
验证调用是否正常:openclaw exec --command "echo test",观察返回结果是否含stdout字段而非空对象{}。
执行 openclaw web_fetch --url "https://httpbin.org/json",确认响应体能正确解析并返回JSON内容。










