Bug: 工具不存在时进入无限循环调用无法退出
描述
当 LLM 调用一个不存在的工具(工具名拼写错误/工具未安装)时,系统会进入无限循环:LLM 一直重复调用同一个不存在的工具,无法自行退出,必须用户手动执行 /reset 或 /new 重启会话才能恢复。
复现步骤
- 让 LLM 调用一个不存在的工具名称,例如
some_non_existent_tool
- 系统返回错误:
Tool 'some_non_existent_tool' not found
- LLM 收到错误后,仍然重复尝试调用同一个不存在的工具,陷入死循环
- 循环持续,直到用户手动干预重启
预期行为
- 连续 N 次(建议 2 次)调用同一个不存在的工具后,系统应该自动停止循环
- 抛出明确错误给用户,请求用户介入纠正工具名称/安装工具
- 不应该让 LLM 无限重试浪费 token 和时间
环境信息
- 操作系统: macOS 25.3.0 (arm64)
- Node 版本: v25.8.2
- OpenClaw 版本: 当前最新开发版
建议修复方向
- 在工具调用层增加计数器:对同一个会话中连续调用同一个不存在工具的次数进行统计
- 超过阈值(比如 2 次)后,停止调度,直接返回错误给用户,终止当前轮次
- 或者在错误提示信息中明确指示 LLM:工具不存在,停止调用,等待用户修正,打破循环
Bug: 工具不存在时进入无限循环调用无法退出
描述
当 LLM 调用一个不存在的工具(工具名拼写错误/工具未安装)时,系统会进入无限循环:LLM 一直重复调用同一个不存在的工具,无法自行退出,必须用户手动执行
/reset或/new重启会话才能恢复。复现步骤
some_non_existent_toolTool 'some_non_existent_tool' not found预期行为
环境信息
建议修复方向