mirror of
https://github.com/agentscope-ai/ReMe.git
synced 2026-09-06 08:16:00 +00:00
refactor(memory): update memory registration and configuration handling
This commit is contained in:
parent
f00dd9be1b
commit
6e72bcac2e
6 changed files with 54 additions and 29 deletions
11
docs/REME2_README.md
Normal file
11
docs/REME2_README.md
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
|
||||
# TODO
|
||||
- [] halumem bench开发
|
||||
- [] default版本开发,for cli版本体验
|
||||
- [] cli开发
|
||||
- [] locomo bench开发
|
||||
- [] task memory迁移
|
||||
- [] mcp开发
|
||||
- [] reme外层接口完善
|
||||
- [] reme2 readme完善
|
||||
|
|
@ -67,8 +67,14 @@ reme_ai = [
|
|||
"**/*.json",
|
||||
]
|
||||
|
||||
reme = [
|
||||
"**/*.yaml",
|
||||
"**/*.py",
|
||||
"**/*.json",
|
||||
]
|
||||
|
||||
[tool.setuptools.dynamic]
|
||||
version = { attr = "reme_ai.__version__" }
|
||||
version = { attr = "reme.__version__" }
|
||||
|
||||
[project.urls]
|
||||
Homepage = "https://github.com/agentscope-ai/ReMe"
|
||||
|
|
@ -77,5 +83,6 @@ Repository = "https://github.com/agentscope-ai/ReMe"
|
|||
|
||||
[project.scripts]
|
||||
reme = "reme_ai.main:main"
|
||||
reme2 = "reme.reme:main"
|
||||
|
||||
# python -m build && twine upload dist/*
|
||||
|
|
|
|||
|
|
@ -28,5 +28,10 @@ __all__ = [
|
|||
]
|
||||
|
||||
for name in __all__:
|
||||
tool_class = globals()[name]
|
||||
R.op.register()(tool_class)
|
||||
agent_class = globals()[name]
|
||||
if (
|
||||
isinstance(agent_class, type)
|
||||
and issubclass(agent_class, BaseMemoryAgent)
|
||||
and agent_class is not BaseMemoryAgent
|
||||
):
|
||||
R.op.register()(agent_class)
|
||||
|
|
|
|||
|
|
@ -106,4 +106,7 @@ class Application:
|
|||
|
||||
def run_service(self):
|
||||
"""Run the configured service (HTTP, MCP, or CMD)."""
|
||||
import warnings
|
||||
|
||||
warnings.filterwarnings("ignore", category=DeprecationWarning)
|
||||
self.service_context.service.run()
|
||||
|
|
|
|||
50
reme/reme.py
50
reme/reme.py
|
|
@ -50,9 +50,9 @@ class ReMe(Application):
|
|||
embedding_model: dict | None = None,
|
||||
vector_store: dict | None = None,
|
||||
token_counter: dict | None = None,
|
||||
personal_memory_target: list[str] | None = None,
|
||||
procedural_memory_target: list[str] | None = None,
|
||||
tool_memory_target: list[str] | None = None,
|
||||
target_user_names: list[str] | None = None,
|
||||
target_task_names: list[str] | None = None,
|
||||
target_tool_names: list[str] | None = None,
|
||||
profile_dir: str = "reme_profile",
|
||||
**kwargs,
|
||||
):
|
||||
|
|
@ -71,25 +71,25 @@ class ReMe(Application):
|
|||
**kwargs,
|
||||
)
|
||||
memory_target_type_mapping: dict[str, MemoryType] = {}
|
||||
if personal_memory_target:
|
||||
for name in personal_memory_target:
|
||||
assert name not in memory_target_type_mapping, f"Memory target name {name} is already used."
|
||||
if target_user_names:
|
||||
for name in target_user_names:
|
||||
assert name not in memory_target_type_mapping, f"target_user_names={name} is already used."
|
||||
memory_target_type_mapping[name] = MemoryType.PERSONAL
|
||||
|
||||
if procedural_memory_target:
|
||||
for name in procedural_memory_target:
|
||||
assert name not in memory_target_type_mapping, f"Memory target name {name} is already used."
|
||||
if target_task_names:
|
||||
for name in target_task_names:
|
||||
assert name not in memory_target_type_mapping, f"target_task_names={name} is already used."
|
||||
memory_target_type_mapping[name] = MemoryType.PROCEDURAL
|
||||
|
||||
if tool_memory_target:
|
||||
for name in tool_memory_target:
|
||||
assert name not in memory_target_type_mapping, f"Memory target name {name} is already used."
|
||||
if target_tool_names:
|
||||
for name in target_tool_names:
|
||||
assert name not in memory_target_type_mapping, f"target_tool_names={name} is already used."
|
||||
memory_target_type_mapping[name] = MemoryType.TOOL
|
||||
|
||||
self.service_context.memory_target_type_mapping = memory_target_type_mapping
|
||||
self.profile_dir: str = profile_dir
|
||||
|
||||
def add_meta_memory(self, memory_type: str | MemoryType, memory_target: str):
|
||||
def _add_meta_memory(self, memory_type: str | MemoryType, memory_target: str):
|
||||
"""Register or validate a memory target with the given memory type."""
|
||||
if memory_target in self.service_context.memory_target_type_mapping:
|
||||
assert self.service_context.memory_target_type_mapping[memory_target] is memory_type
|
||||
|
|
@ -172,30 +172,30 @@ class ReMe(Application):
|
|||
if isinstance(user_name, str):
|
||||
for message in format_messages:
|
||||
message.name = user_name
|
||||
self.add_meta_memory(MemoryType.PERSONAL, user_name)
|
||||
self._add_meta_memory(MemoryType.PERSONAL, user_name)
|
||||
elif isinstance(user_name, list):
|
||||
for name in user_name:
|
||||
self.add_meta_memory(MemoryType.PERSONAL, name)
|
||||
self._add_meta_memory(MemoryType.PERSONAL, name)
|
||||
else:
|
||||
raise RuntimeError("user_name must be str or list[str]")
|
||||
memory_agents.append(personal_summarizer)
|
||||
|
||||
if task_name:
|
||||
if isinstance(task_name, str):
|
||||
self.add_meta_memory(MemoryType.PROCEDURAL, task_name)
|
||||
self._add_meta_memory(MemoryType.PROCEDURAL, task_name)
|
||||
elif isinstance(task_name, list):
|
||||
for name in task_name:
|
||||
self.add_meta_memory(MemoryType.PROCEDURAL, name)
|
||||
self._add_meta_memory(MemoryType.PROCEDURAL, name)
|
||||
else:
|
||||
raise RuntimeError("task_name must be str or list[str]")
|
||||
memory_agents.append(procedural_summarizer)
|
||||
|
||||
if tool_name:
|
||||
if isinstance(tool_name, str):
|
||||
self.add_meta_memory(MemoryType.TOOL, tool_name)
|
||||
self._add_meta_memory(MemoryType.TOOL, tool_name)
|
||||
elif isinstance(tool_name, list):
|
||||
for name in tool_name:
|
||||
self.add_meta_memory(MemoryType.TOOL, name)
|
||||
self._add_meta_memory(MemoryType.TOOL, name)
|
||||
else:
|
||||
raise RuntimeError("tool_name must be str or list[str]")
|
||||
memory_agents.append(tool_summarizer)
|
||||
|
|
@ -289,30 +289,30 @@ class ReMe(Application):
|
|||
memory_agents = []
|
||||
if user_name:
|
||||
if isinstance(user_name, str):
|
||||
self.add_meta_memory(MemoryType.PERSONAL, user_name)
|
||||
self._add_meta_memory(MemoryType.PERSONAL, user_name)
|
||||
elif isinstance(user_name, list):
|
||||
for name in user_name:
|
||||
self.add_meta_memory(MemoryType.PERSONAL, name)
|
||||
self._add_meta_memory(MemoryType.PERSONAL, name)
|
||||
else:
|
||||
raise RuntimeError("user_name must be str or list[str]")
|
||||
memory_agents.append(personal_retriever)
|
||||
|
||||
if task_name:
|
||||
if isinstance(task_name, str):
|
||||
self.add_meta_memory(MemoryType.PROCEDURAL, task_name)
|
||||
self._add_meta_memory(MemoryType.PROCEDURAL, task_name)
|
||||
elif isinstance(task_name, list):
|
||||
for name in task_name:
|
||||
self.add_meta_memory(MemoryType.PROCEDURAL, name)
|
||||
self._add_meta_memory(MemoryType.PROCEDURAL, name)
|
||||
else:
|
||||
raise RuntimeError("task_name must be str or list[str]")
|
||||
memory_agents.append(procedural_retriever)
|
||||
|
||||
if tool_name:
|
||||
if isinstance(tool_name, str):
|
||||
self.add_meta_memory(MemoryType.TOOL, tool_name)
|
||||
self._add_meta_memory(MemoryType.TOOL, tool_name)
|
||||
elif isinstance(tool_name, list):
|
||||
for name in tool_name:
|
||||
self.add_meta_memory(MemoryType.TOOL, name)
|
||||
self._add_meta_memory(MemoryType.TOOL, name)
|
||||
else:
|
||||
raise RuntimeError("tool_name must be str or list[str]")
|
||||
memory_agents.append(tool_retriever)
|
||||
|
|
|
|||
|
|
@ -43,6 +43,5 @@ __all__ = [
|
|||
|
||||
for name in __all__:
|
||||
tool_class = globals()[name]
|
||||
# Only register classes that inherit from BaseMemoryTool
|
||||
if isinstance(tool_class, type) and issubclass(tool_class, BaseMemoryTool) and tool_class is not BaseMemoryTool:
|
||||
R.op.register()(tool_class)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue