From 56506974757bc03c00bc29d1874df00bbf733286 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Mon, 20 Jan 2025 11:10:43 -0800 Subject: [PATCH] no turn errors, with upd_cur_msgs fix and summarizer disabled --- aider/coders/base_coder.py | 17 ++++++++++------- aider/coders/single_wholefile_func_coder.py | 2 +- aider/coders/wholefile_func_coder.py | 2 +- aider/sendchat.py | 5 ++--- 4 files changed, 14 insertions(+), 12 deletions(-) diff --git a/aider/coders/base_coder.py b/aider/coders/base_coder.py index 8e7814372..d746673d6 100755 --- a/aider/coders/base_coder.py +++ b/aider/coders/base_coder.py @@ -459,6 +459,7 @@ class Coder: self.summarizer_thread = None self.summarized_done_messages = [] + self.summarizing_messages = None if not self.done_messages and restore_chat_history: history_md = self.io.read_text(self.io.chat_history_file) @@ -930,6 +931,7 @@ class Coder: self.last_keyboard_interrupt = now def summarize_start(self): + return if not self.summarizer.too_big(self.done_messages): return @@ -942,8 +944,9 @@ class Coder: self.summarizer_thread.start() def summarize_worker(self): + self.summarizing_messages = list(self.done_messages) try: - self.summarized_done_messages = self.summarizer.summarize(self.done_messages) + self.summarized_done_messages = self.summarizer.summarize(self.summarizing_messages) except ValueError as err: self.io.tool_warning(err.args[0]) @@ -957,7 +960,9 @@ class Coder: self.summarizer_thread.join() self.summarizer_thread = None - self.done_messages = self.summarized_done_messages + if self.summarizing_messages == self.done_messages: + self.done_messages = self.summarized_done_messages + self.summarizing_messages = None self.summarized_done_messages = [] def move_back_cur_messages(self, message): @@ -1327,6 +1332,8 @@ class Coder: self.num_exhausted_context_windows += 1 return + self.add_assistant_reply_to_cur_messages() + if self.partial_response_function_call: args = self.parse_partial_args() if args: @@ -1359,8 +1366,6 @@ class Coder: edited = self.apply_updates() - self.update_cur_messages() - if edited: self.aider_edited_files.update(edited) saved_message = self.auto_commit(edited) @@ -1381,7 +1386,6 @@ class Coder: ok = self.io.confirm_ask("Attempt to fix lint errors?") if ok: self.reflected_message = lint_errors - self.update_cur_messages() return shared_output = self.run_shell_commands() @@ -1398,7 +1402,6 @@ class Coder: ok = self.io.confirm_ask("Attempt to fix test errors?") if ok: self.reflected_message = test_errors - self.update_cur_messages() return def reply_completed(self): @@ -1474,7 +1477,7 @@ class Coder: return res - def update_cur_messages(self): + def add_assistant_reply_to_cur_messages(self): if self.partial_response_content: self.cur_messages += [dict(role="assistant", content=self.partial_response_content)] if self.partial_response_function_call: diff --git a/aider/coders/single_wholefile_func_coder.py b/aider/coders/single_wholefile_func_coder.py index a10efdbb4..493581c46 100644 --- a/aider/coders/single_wholefile_func_coder.py +++ b/aider/coders/single_wholefile_func_coder.py @@ -38,7 +38,7 @@ class SingleWholeFileFunctionCoder(Coder): self.gpt_prompts = SingleWholeFileFunctionPrompts() super().__init__(*args, **kwargs) - def update_cur_messages(self, edited): + def add_assistant_reply_to_cur_messages(self, edited): if edited: self.cur_messages += [ dict(role="assistant", content=self.gpt_prompts.redacted_edit_message) diff --git a/aider/coders/wholefile_func_coder.py b/aider/coders/wholefile_func_coder.py index 987010ea7..3c4fbd3ca 100644 --- a/aider/coders/wholefile_func_coder.py +++ b/aider/coders/wholefile_func_coder.py @@ -49,7 +49,7 @@ class WholeFileFunctionCoder(Coder): self.gpt_prompts = WholeFileFunctionPrompts() super().__init__(*args, **kwargs) - def update_cur_messages(self, edited): + def add_assistant_reply_to_cur_messages(self, edited): if edited: self.cur_messages += [ dict(role="assistant", content=self.gpt_prompts.redacted_edit_message) diff --git a/aider/sendchat.py b/aider/sendchat.py index 410823405..0158c52a4 100644 --- a/aider/sendchat.py +++ b/aider/sendchat.py @@ -31,9 +31,8 @@ def sanity_check_messages(messages): continue if last_role and role == last_role: - print(format_messages(messages)) - # import sys ; sys.exit() - raise ValueError("Messages don't properly alternate user/assistant") + turns = format_messages(messages) + raise ValueError("Messages don't properly alternate user/assistant:\n\n" + turns) last_role = role last_non_system_role = role