Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,6 @@ cognee/.cognee_system/
cognee/.data_storage/
*.db
croissant_files
.env
.env
.venv/
*.tgz
8 changes: 7 additions & 1 deletion agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,9 @@ def _initialize_agent_by_type(self, agent_config, dataset_config):
elif self._is_agent_type("agentmemory"):
from methods.agentmemory import initialize_agentmemory_agent
initialize_agentmemory_agent(self, agent_config)
elif self._is_agent_type("statecore"):
from methods.statecore import initialize_statecore_agent
initialize_statecore_agent(self, agent_config)
elif self._is_agent_type("rag"):
self._initialize_rag_agent(agent_config, dataset_config)
else:
Expand Down Expand Up @@ -277,7 +280,7 @@ def send_message(self, message, memorizing=False, query_id=None, context_id=None
# Route to appropriate agent handler based on agent type
if 'Long_context_agent' in self.agent_name:
return self._handle_long_context_agent(message, memorizing)
elif any(self._is_agent_type(agent_type) for agent_type in ["letta", "cognee", "mem0", "zep", "knowl", "agentmemory"]):
elif any(self._is_agent_type(agent_type) for agent_type in ["letta", "cognee", "mem0", "zep", "knowl", "agentmemory", "statecore"]):
return self._handle_memory_agent(message, memorizing, query_id, context_id)
elif self._is_agent_type("rag"):
return self._handle_rag_agent(message, memorizing, query_id, context_id)
Expand Down Expand Up @@ -418,6 +421,9 @@ def _handle_memory_agent(self, message, memorizing, query_id, context_id):
elif self._is_agent_type("agentmemory"):
from methods.agentmemory import handle_agentmemory_agent
return handle_agentmemory_agent(self, message, memorizing, query_id, context_id)
elif self._is_agent_type("statecore"):
from methods.statecore import handle_statecore_agent
return handle_statecore_agent(self, message, memorizing, query_id, context_id)
else:
raise NotImplementedError(f"Memory agent type not supported: {self.agent_name}")

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# The LLM-assisted arm of the StateCore pair: writes are stored as events and the engine's
# own distillation runs (extraction into supersession-tracked facts, semantic conflict
# resolution). The distillation model is gpt-5-mini -- the engine's recommended model; its
# runtime is operated with gpt-5-class models -- while the reader stays gpt-4o-mini like every
# other row. All other values are copied from Simple_rag_bm25, matching the deterministic arm.
# The delta between the two StateCore rows is the measured value of the engine's distillation.
agent_name: Agentic_memory_statecore_digest
model: gpt-4o-mini
temperature: 0.7
input_length_limit: 10000000
buffer_length: 200
output_dir: ./outputs/statecore-digest-gpt-4o-mini

retrieve_num: 10
statecore_digest: true
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# StateCore (github.com/yul761/StateCore), driven through its published MCP front end --
# the wrapper spawns `npx -y statecore-mcp@0.6.0` itself, so there is no service to start.
# Every value except the output_dir is copied from Simple_rag_bm25 so the row sits beside
# the published baselines on the same terms: retrieve_num 10 is what BM25, Zep, Cognee,
# HippoRAG-v2 and the embedding baselines use. The memory side makes zero model calls
# (deterministic supersession + lexical retrieval); see methods/statecore.py.
agent_name: Agentic_memory_statecore
model: gpt-4o-mini
temperature: 0.7
input_length_limit: 10000000
buffer_length: 200
output_dir: ./outputs/statecore-gpt-4o-mini

retrieve_num: 10
Loading