Skip to content

Commit b8a582f

Browse files
feat: integrate Mem0 memory management into code_scratch (#730)
Co-authored-by: 班扬 <[email protected]>
1 parent e4253b4 commit b8a582f

File tree

12 files changed

+501
-31
lines changed

12 files changed

+501
-31
lines changed

ms_agent/agent/llm_agent.py

Lines changed: 41 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -235,8 +235,14 @@ async def _prepare_memory(self):
235235
assert _memory.name in memory_mapping, (
236236
f'{_memory.name} not in memory_mapping, '
237237
f'which supports: {list(memory_mapping.keys())}')
238-
self.memory_tools.append(memory_mapping[_memory.name](
239-
self.config))
238+
if _memory.name == 'mem0':
239+
from .memory.mem0ai import SharedMemoryManager
240+
shared_memory = SharedMemoryManager.get_shared_memory(
241+
_memory)
242+
self.memory_tools.append(shared_memory)
243+
else:
244+
self.memory_tools.append(
245+
memory_mapping[_memory.name](_memory))
240246

241247
async def _prepare_planer(self):
242248
"""Load and initialize the planer component from the config."""
@@ -446,7 +452,21 @@ def _save_history(self, messages: List[Message], **kwargs):
446452
messages (List[Message]): Current message history to save.
447453
"""
448454
query = messages[1].content
449-
if not query or not self.task or self.task == 'subtask':
455+
if not query:
456+
return
457+
458+
if self.memory_tools:
459+
user_id = None
460+
if hasattr(self.config, 'memory') and self.config.memory:
461+
for memory_config in self.config.memory:
462+
if hasattr(memory_config,
463+
'user_id') and memory_config.user_id:
464+
user_id = memory_config.user_id
465+
break
466+
for memory_tool in self.memory_tools:
467+
memory_tool._add_memories_from_conversation(messages, user_id)
468+
469+
if not self.task or self.task == 'subtask':
450470
return
451471
config: DictConfig = deepcopy(self.config) # noqa
452472
config.runtime = self.runtime.to_dict()
@@ -456,6 +476,21 @@ def _save_history(self, messages: List[Message], **kwargs):
456476
config=config,
457477
messages=messages)
458478

479+
def _save_memory(self, messages: List[Message], **kwargs):
480+
"""
481+
Save memories to disk for future resuming.
482+
483+
Args:
484+
messages (List[Message]): Current message history to save.
485+
"""
486+
487+
if self.memory_tools:
488+
agent_id = self.tag
489+
for memory_tool in self.memory_tools:
490+
memory_tool._add_memories_from_procedural(
491+
messages, 'subagent', agent_id, 'procedural_memory')
492+
return
493+
459494
async def _run(self, messages: Union[List[Message], str],
460495
**kwargs) -> AsyncGenerator[Any, Any]:
461496
"""Run the agent, mainly contains a llm calling and tool calling loop.
@@ -512,6 +547,9 @@ async def _run(self, messages: Union[List[Message], str],
512547
# save history
513548
self._save_history(messages, **kwargs)
514549

550+
# save memory
551+
self._save_memory(messages, **kwargs)
552+
515553
await self._loop_callback('on_task_end', messages)
516554
await self._cleanup_tools()
517555
yield messages

ms_agent/agent/memory/mem0.py

Lines changed: 0 additions & 2 deletions
This file was deleted.

0 commit comments

Comments
 (0)