From d3354942120d2b7bfcdf38da152397b31ae6b53d Mon Sep 17 00:00:00 2001 From: Re-bin Date: Thu, 12 Feb 2026 06:25:25 +0000 Subject: [PATCH] feat: add interleaved chain-of-thought to agent loop --- nanobot/agent/context.py | 2 +- nanobot/agent/loop.py | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/nanobot/agent/context.py b/nanobot/agent/context.py index d807854..543e2f0 100644 --- a/nanobot/agent/context.py +++ b/nanobot/agent/context.py @@ -103,7 +103,7 @@ IMPORTANT: When responding to direct questions or conversations, reply directly Only use the 'message' tool when you need to send a message to a specific chat channel (like WhatsApp). For normal conversation, just respond with text - do not call the message tool. -Always be helpful, accurate, and concise. When using tools, explain what you're doing. +Always be helpful, accurate, and concise. When using tools, think step by step: what you know, what you need, and why you chose this tool. When remembering something, write to {workspace_path}/memory/MEMORY.md""" def _load_bootstrap_files(self) -> str: diff --git a/nanobot/agent/loop.py b/nanobot/agent/loop.py index b764c3d..46a31bd 100644 --- a/nanobot/agent/loop.py +++ b/nanobot/agent/loop.py @@ -225,6 +225,8 @@ class AgentLoop: messages = self.context.add_tool_result( messages, tool_call.id, tool_call.name, result ) + # Interleaved CoT: reflect before next action + messages.append({"role": "user", "content": "Reflect on the results and decide next steps."}) else: # No tool calls, we're done final_content = response.content @@ -330,6 +332,8 @@ class AgentLoop: messages = self.context.add_tool_result( messages, tool_call.id, tool_call.name, result ) + # Interleaved CoT: reflect before next action + messages.append({"role": "user", "content": "Reflect on the results and decide next steps."}) else: final_content = response.content break