diff --git a/docs/REME2_README.md b/docs/REME2_README.md new file mode 100644 index 00000000..9f19c0e8 --- /dev/null +++ b/docs/REME2_README.md @@ -0,0 +1,11 @@ + + +# TODO +- [] halumem bench开发 +- [] default版本开发,for cli版本体验 +- [] cli开发 +- [] locomo bench开发 +- [] task memory迁移 +- [] mcp开发 +- [] reme外层接口完善 +- [] reme2 readme完善 \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 47aa478d..f7b62c4a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -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/* diff --git a/reme/agent/memory/__init__.py b/reme/agent/memory/__init__.py index 024b68c4..73640f71 100644 --- a/reme/agent/memory/__init__.py +++ b/reme/agent/memory/__init__.py @@ -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) diff --git a/reme/core/application.py b/reme/core/application.py index f96b1b03..2ff5d05e 100644 --- a/reme/core/application.py +++ b/reme/core/application.py @@ -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() diff --git a/reme/reme.py b/reme/reme.py index 5f587ea5..5620fc1e 100644 --- a/reme/reme.py +++ b/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) diff --git a/reme/tool/memory/__init__.py b/reme/tool/memory/__init__.py index ff58d44f..2c99998a 100644 --- a/reme/tool/memory/__init__.py +++ b/reme/tool/memory/__init__.py @@ -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)