From 7d2c62716cfc7d9bfb86ca986cd46b51845cb2e7 Mon Sep 17 00:00:00 2001 From: chengyongru <2755839590@qq.com> Date: Sun, 5 Apr 2026 22:03:32 +0800 Subject: [PATCH] fix(dream): allow LLM to retry on tool errors instead of failing immediately Dream Phase 2 uses fail_on_tool_error=True, which terminates the entire run on the first tool error (e.g. old_text not found in edit_file). Normal agent runs default to False so the LLM can self-correct and retry. Dream should behave the same way. --- nanobot/agent/memory.py | 2 +- tests/agent/test_dream.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/nanobot/agent/memory.py b/nanobot/agent/memory.py index 62de34bba..73010b13f 100644 --- a/nanobot/agent/memory.py +++ b/nanobot/agent/memory.py @@ -627,7 +627,7 @@ class Dream: model=self.model, max_iterations=self.max_iterations, max_tool_result_chars=self.max_tool_result_chars, - fail_on_tool_error=True, + fail_on_tool_error=False, )) logger.debug( "Dream Phase 2 complete: stop_reason={}, tool_events={}", diff --git a/tests/agent/test_dream.py b/tests/agent/test_dream.py index 7898ea267..38faafa7d 100644 --- a/tests/agent/test_dream.py +++ b/tests/agent/test_dream.py @@ -72,7 +72,7 @@ class TestDreamRun: mock_runner.run.assert_called_once() spec = mock_runner.run.call_args[0][0] assert spec.max_iterations == 10 - assert spec.fail_on_tool_error is True + assert spec.fail_on_tool_error is False async def test_advances_dream_cursor(self, dream, mock_provider, mock_runner, store): """Dream should advance the cursor after processing."""