fix: remove duplicate memory extraction call from _finalize_kickoff

`AgentExecutor._save_to_memory` (added in 62d097a7) already handles
memory persistence with full conversation context after each kickoff.
Leaving the older `_save_kickoff_to_memory` call in `_finalize_kickoff`
caused `extract_memories` to be invoked twice, breaking
`test_agent_kickoff_memory_recall_and_save`.

Update the test assertion to match the conversation-aware format now
produced by `AgentExecutor._save_to_memory` (checks for "Conversation:"
or "Final result:" instead of the stale "Input:/Agent:/Result:" markers).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Joao Moura
2026-04-26 17:07:33 -07:00
parent e81721b19e
commit 6e53a206f8
3 changed files with 3 additions and 5 deletions

View File

@@ -1598,8 +1598,6 @@ class Agent(BaseAgent):
response_format=response_format,
)
self._save_kickoff_to_memory(messages, output.raw)
crewai_event_bus.emit(
self,
event=LiteAgentExecutionCompletedEvent(

View File

@@ -27,6 +27,7 @@ from crewai.mcp.filters import (
create_static_tool_filter,
)
if TYPE_CHECKING:
from crewai.mcp.client import MCPClient
from crewai.mcp.tool_resolver import MCPToolResolver

View File

@@ -704,11 +704,10 @@ def test_agent_kickoff_memory_recall_and_save(tmp_path: Path, mock_embedder: Mag
recall_mock.assert_called_once()
# Verify extract_memories and remember_many were called (passive batch save)
# Memory extraction is now conversation-aware (via AgentExecutor._save_to_memory)
extract_mock.assert_called_once()
raw_content = extract_mock.call_args.args[0]
assert "Input:" in raw_content
assert "Agent:" in raw_content
assert "Result:" in raw_content
assert "Conversation:" in raw_content or "Final result:" in raw_content
# remember_many was called with the extracted memories
remember_many_mock.assert_called_once()