fix(agents): use jsonSchema helper instead of zod for tool inputSchema
zod 4 + AI SDK 6.x 下 tool({ inputSchema: z.object(...) }) 经过
prepareToolsAndToolChoice() 处理后 schema 被错误转换为
{"properties":{}, "additionalProperties":false},所有参数定义被剥光,
导致 LLM 工具调用乱传参/静默失败/死循环。
修复方案:改用 AI SDK 官方 jsonSchema() helper 替代 z.object(),
绕过出 bug 的 zod 转换路径。不动 node_modules,
未来 SDK 升级也不会回归。
改动 9 个文件,全部为 z.object → jsonSchema 替换:
- src/agents/scriptAgent/{tools.ts, index.ts}
- src/agents/productionAgent/{tools.ts, index.ts}
- src/utils/agent/{memory.ts, skillsTools.ts}
- src/routes/script/extractAssets.ts
- src/routes/setting/vendorConfig/modelTest.ts
- src/routes/cornerScape/batchBindAudio.ts
E2E 验证:
- 9 个工具 inputSchema.jsonSchema.properties 字段完整保留
- storySkeleton 子代理收到 get_novel_events([1,2,3,4,5]) 完整章节范围
(之前 schema 损坏时只能盲传 [1],导致死循环)
- 故事骨架 / 改编策略 / 分镜面板等多 sub-agent 不再因 schema 损坏卡死
Related upstream: vercel/ai#13460, vercel/ai#12020
Fixes: HBAI-Ltd/Toonflow-app#80, #94, #121, #122 类似症状
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>