Merge pull request #99 from agentscope-ai/fix_0204

fix(agent): implement memory targets filtering in base memory agent
This commit is contained in:
jinliyl 2026-02-04 20:47:02 +08:00 committed by GitHub
commit ce7fffbd58
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 22 additions and 1 deletions

View file

@ -53,7 +53,12 @@ class BaseMemoryAgent(BaseReact, metaclass=ABCMeta):
@property
def memory_target_type_mapping(self) -> dict[str, MemoryType]:
"""Get the memory target type mapping from context."""
return self.context.service_context.memory_target_type_mapping
memory_targets = self.context.memory_targets
memory_target_type_mapping = self.context.service_context.memory_target_type_mapping.copy()
if memory_targets:
return {memory_target: memory_target_type_mapping[memory_target] for memory_target in memory_targets}
else:
return memory_target_type_mapping
@property
def meta_memory_info(self) -> str:

View file

@ -304,14 +304,17 @@ class ReMe(Application):
raise NotImplementedError
memory_agents = []
memory_targets = []
if user_name:
if isinstance(user_name, str):
for message in format_messages:
message.name = user_name
self._add_meta_memory(MemoryType.PERSONAL, user_name)
memory_targets.append(user_name)
elif isinstance(user_name, list):
for name in user_name:
self._add_meta_memory(MemoryType.PERSONAL, name)
memory_targets.append(name)
else:
raise RuntimeError("user_name must be str or list[str]")
memory_agents.append(personal_summarizer)
@ -319,9 +322,11 @@ class ReMe(Application):
if task_name:
if isinstance(task_name, str):
self._add_meta_memory(MemoryType.PROCEDURAL, task_name)
memory_targets.append(task_name)
elif isinstance(task_name, list):
for name in task_name:
self._add_meta_memory(MemoryType.PROCEDURAL, name)
memory_targets.append(name)
else:
raise RuntimeError("task_name must be str or list[str]")
memory_agents.append(procedural_summarizer)
@ -329,9 +334,11 @@ class ReMe(Application):
if tool_name:
if isinstance(tool_name, str):
self._add_meta_memory(MemoryType.TOOL, tool_name)
memory_targets.append(tool_name)
elif isinstance(tool_name, list):
for name in tool_name:
self._add_meta_memory(MemoryType.TOOL, name)
memory_targets.append(name)
else:
raise RuntimeError("tool_name must be str or list[str]")
memory_agents.append(tool_summarizer)
@ -349,6 +356,7 @@ class ReMe(Application):
messages=format_messages,
description=description,
service_context=self.service_context,
memory_targets=memory_targets,
**kwargs,
)
@ -469,12 +477,15 @@ class ReMe(Application):
raise NotImplementedError
memory_agents = []
memory_targets = []
if user_name:
if isinstance(user_name, str):
self._add_meta_memory(MemoryType.PERSONAL, user_name)
memory_targets.append(user_name)
elif isinstance(user_name, list):
for name in user_name:
self._add_meta_memory(MemoryType.PERSONAL, name)
memory_targets.append(name)
else:
raise RuntimeError("user_name must be str or list[str]")
memory_agents.append(personal_retriever)
@ -482,9 +493,11 @@ class ReMe(Application):
if task_name:
if isinstance(task_name, str):
self._add_meta_memory(MemoryType.PROCEDURAL, task_name)
memory_targets.append(task_name)
elif isinstance(task_name, list):
for name in task_name:
self._add_meta_memory(MemoryType.PROCEDURAL, name)
memory_targets.append(name)
else:
raise RuntimeError("task_name must be str or list[str]")
memory_agents.append(procedural_retriever)
@ -492,9 +505,11 @@ class ReMe(Application):
if tool_name:
if isinstance(tool_name, str):
self._add_meta_memory(MemoryType.TOOL, tool_name)
memory_targets.append(tool_name)
elif isinstance(tool_name, list):
for name in tool_name:
self._add_meta_memory(MemoryType.TOOL, name)
memory_targets.append(name)
else:
raise RuntimeError("tool_name must be str or list[str]")
memory_agents.append(tool_retriever)
@ -513,6 +528,7 @@ class ReMe(Application):
messages=messages,
description=description,
service_context=self.service_context,
memory_targets=memory_targets,
**kwargs,
)