现象
本地启动FastGPT v4.14.0版本服务时,工具箱列表接口返回的所有id值均为systemTool-undefined。查看相关代码逻辑后发现,代码中尝试读取item.toolId字段,但该字段的值均为undefined。进一步直接调用fastgpt-plugin模块的插件列表接口,发现返回结果仅包含id字段,未返回toolId字段,这是异常id产生的直接诱因。
可能原因
工具箱列表的id生成逻辑依赖toolId字段,但fastgpt-plugin模块返回的插件列表接口未提供toolId字段,仅返回id字段。当代码尝试读取item.toolId时,该字段不存在于接口返回结果中,因此值为undefined,最终拼接生成了systemTool-undefined的异常id。
排查步骤
- 确认当前使用的FastGPT版本为v4.14.0,检查本地服务的启动配置与依赖模块状态。
- 直接调用fastgpt-plugin模块的插件列表接口,查看返回的JSON数据结构,确认是否包含toolId字段,仅存在id字段。
- 定位工具箱列表接口的业务代码,找到id生成的逻辑部分,确认是否使用了item.toolId作为拼接参数。
- 对比接口返回字段与代码中使用的字段,确认字段不匹配的问题。
解决与验证
解决该问题需要调整代码中的id生成逻辑,将原本依赖的toolId字段替换为接口返回的id字段,或补充toolId字段的赋值逻辑。具体可将代码中读取item.toolId的位置,替换为读取item.id,或在调用插件列表接口后,将item.id赋值给item.toolId后再执行id拼接。完成代码修改后,重新启动FastGPT服务,调用工具箱列表接口,验证返回的id字段不再为systemTool-undefined,恢复为正常的id格式。