Coverage for merco/memory/backend.py: 100%
23 statements
« prev ^ index » next coverage.py v7.15.0, created at 2026-07-07 14:04 +0800
« prev ^ index » next coverage.py v7.15.0, created at 2026-07-07 14:04 +0800
1"""MemoryBackend ABC + MemoryBackendRegistry"""
2from __future__ import annotations
4from abc import ABC, abstractmethod
7class MemoryBackend(ABC):
8 """记忆存储后端基类"""
9 name: str = ""
11 @abstractmethod
12 def save(self, key: str, value, tags: list = None) -> None:
13 """保存记忆"""
14 ...
16 @abstractmethod
17 def load(self, key: str) -> dict | None:
18 """加载记忆"""
19 ...
21 @abstractmethod
22 def delete(self, key: str) -> None:
23 """删除记忆"""
24 ...
26 @abstractmethod
27 def list_keys(self, tag: str = None) -> list[str]:
28 """列出所有记忆键"""
29 ...
31 @abstractmethod
32 def search(self, query: str) -> list[dict]:
33 """搜索记忆"""
34 ...
37class MemoryBackendRegistry:
38 """MemoryBackend 注册表"""
40 def __init__(self):
41 self._backends: dict[str, MemoryBackend] = {}
43 def register(self, backend: MemoryBackend) -> None:
44 self._backends[backend.name] = backend
46 def get(self, name: str) -> MemoryBackend | None:
47 return self._backends.get(name)
49 def list(self) -> list[MemoryBackend]:
50 return list(self._backends.values())