Skip to content

Commit 91924d7

Browse files
committed
feat & fix bugs & refactor: mem scheudler add more functions of monitors and web logs, and refactor the code structure
1 parent 2398e5e commit 91924d7

35 files changed

+1494
-953
lines changed
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
backend: general_scheduler
22
config:
33
top_k: 10
4-
top_n: 5
4+
top_n: 10
55
act_mem_update_interval: 30
6-
context_window_size: 5
6+
context_window_size: 10
77
thread_pool_max_workers: 5
88
consume_interval_seconds: 1
99
enable_parallel_dispatch: true

examples/data/config/mem_scheduler/memos_config_w_scheduler.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,9 @@ mem_scheduler:
3333
backend: "general_scheduler"
3434
config:
3535
top_k: 10
36-
top_n: 5
36+
top_n: 10
3737
act_mem_update_interval: 30
38-
context_window_size: 5
38+
context_window_size: 10
3939
thread_pool_max_workers: 10
4040
consume_interval_seconds: 1
4141
enable_parallel_dispatch: true

examples/data/config/mem_scheduler/memos_config_w_scheduler_and_openai.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,10 @@ mem_reader:
3434
mem_scheduler:
3535
backend: "general_scheduler"
3636
config:
37-
top_k: 2
38-
top_n: 5
37+
top_k: 10
38+
top_n: 10
3939
act_mem_update_interval: 30
40-
context_window_size: 5
40+
context_window_size: 10
4141
thread_pool_max_workers: 10
4242
consume_interval_seconds: 1
4343
enable_parallel_dispatch: true

examples/mem_os/chat_w_scheduler.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from memos.configs.mem_os import MOSConfig
88
from memos.mem_cube.general import GeneralMemCube
99
from memos.mem_os.main import MOS
10-
from memos.mem_scheduler.utils import parse_yaml
10+
from memos.mem_scheduler.utils.misc_utils import parse_yaml
1111

1212

1313
# init MOS

examples/mem_scheduler/memos_w_scheduler.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@
1010
from memos.log import get_logger
1111
from memos.mem_cube.general import GeneralMemCube
1212
from memos.mem_os.main import MOS
13-
from memos.mem_scheduler.modules.schemas import (
13+
from memos.mem_scheduler.scheduler_factory import SchedulerFactory
14+
from memos.mem_scheduler.schemas.general_schemas import (
1415
ANSWER_LABEL,
1516
QUERY_LABEL,
16-
ScheduleMessageItem,
1717
)
18-
from memos.mem_scheduler.scheduler_factory import SchedulerFactory
19-
from memos.mem_scheduler.utils import parse_yaml
18+
from memos.mem_scheduler.schemas.message_schemas import ScheduleMessageItem
19+
from memos.mem_scheduler.utils.misc_utils import parse_yaml
2020

2121

2222
FILE_PATH = Path(__file__).absolute()

examples/mem_scheduler/schedule_chat_and_web.py renamed to examples/mem_scheduler/memos_w_scheduler_for_test.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616

1717
if TYPE_CHECKING:
18-
from memos.mem_scheduler.modules.schemas import (
18+
from memos.mem_scheduler.schemas import (
1919
ScheduleLogForWebItem,
2020
)
2121

@@ -169,11 +169,12 @@ def show_web_logs(mem_scheduler: GeneralScheduler):
169169
mos.add(conversations, user_id=user_id, mem_cube_id=mem_cube_id)
170170

171171
for item in questions:
172+
print("===== Chat Start =====")
172173
query = item["question"]
173-
174+
print(f"Query:\n {query}\n")
174175
response = mos.chat(query=query, user_id=user_id)
175-
print(f"Query:\n {query}\n\nAnswer:\n {response}")
176-
176+
print(f"Answer:\n {response}")
177+
print("===== Chat End =====")
177178
show_web_logs(mos.mem_scheduler)
178179

179180
mos.mem_scheduler.stop()

examples/mem_scheduler/rabbitmq_example.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
def publish_message(rabbitmq_module, message):
99
"""Function to publish a message."""
1010
rabbitmq_module.rabbitmq_publish_message(message)
11-
print(f"Published message: {message}")
11+
print(f"Published message: {message}\n")
1212

1313

1414
def main():
@@ -24,8 +24,7 @@ def main():
2424
rabbitmq_module.initialize_rabbitmq(config=AuthConfig.from_local_yaml().rabbitmq)
2525

2626
try:
27-
# Start consumer
28-
rabbitmq_module.rabbitmq_start_consuming()
27+
rabbitmq_module.wait_for_connection_ready()
2928

3029
# === Publish some test messages ===
3130
# List to hold thread references
@@ -38,6 +37,9 @@ def main():
3837
thread.start()
3938
threads.append(thread)
4039

40+
# Start consumer
41+
rabbitmq_module.rabbitmq_start_consuming()
42+
4143
# Join threads to ensure all messages are published before proceeding
4244
for thread in threads:
4345
thread.join()
@@ -47,7 +49,7 @@ def main():
4749

4850
finally:
4951
# Give some time for cleanup
50-
time.sleep(5)
52+
time.sleep(3)
5153

5254
# Close connections
5355
rabbitmq_module.rabbitmq_close()

examples/mem_scheduler/redis_example.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@
88

99
from memos.configs.mem_scheduler import SchedulerConfigFactory
1010
from memos.mem_cube.general import GeneralMemCube
11-
from memos.mem_scheduler.modules.schemas import QUERY_LABEL, ScheduleMessageItem
1211
from memos.mem_scheduler.scheduler_factory import SchedulerFactory
12+
from memos.mem_scheduler.schemas.general_schemas import QUERY_LABEL
13+
from memos.mem_scheduler.schemas.message_schemas import ScheduleMessageItem
1314

1415

1516
if TYPE_CHECKING:

examples/mem_scheduler/try_schedule_modules.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,16 @@
1414
from memos.log import get_logger
1515
from memos.mem_cube.general import GeneralMemCube
1616
from memos.mem_scheduler.general_scheduler import GeneralScheduler
17-
from memos.mem_scheduler.modules.schemas import (
17+
from memos.mem_scheduler.mos_for_test_scheduler import MOSForTestScheduler
18+
from memos.mem_scheduler.schemas.general_schemas import (
1819
NOT_APPLICABLE_TYPE,
1920
QUERY_LABEL,
20-
ScheduleMessageItem,
2121
)
22-
from memos.mem_scheduler.mos_for_test_scheduler import MOSForTestScheduler
22+
from memos.mem_scheduler.schemas.message_schemas import ScheduleMessageItem
2323

2424

2525
if TYPE_CHECKING:
26-
from memos.mem_scheduler.modules.schemas import (
26+
from memos.mem_scheduler.schemas import (
2727
ScheduleLogForWebItem,
2828
)
2929

@@ -180,14 +180,14 @@ def show_web_logs(mem_scheduler: GeneralScheduler):
180180
query = item["question"]
181181

182182
# test process_session_turn
183-
mos.mem_scheduler.process_session_turn(
183+
working_memory, new_candidates = mos.mem_scheduler.process_session_turn(
184184
queries=[query],
185185
user_id=user_id,
186186
mem_cube_id=mem_cube_id,
187187
mem_cube=mem_cube,
188188
top_k=10,
189-
query_history=None,
190189
)
190+
print(f"\nnew_candidates: {[one.memory for one in new_candidates]}")
191191

192192
# test query_consume
193193
message_item = ScheduleMessageItem(
@@ -198,7 +198,13 @@ def show_web_logs(mem_scheduler: GeneralScheduler):
198198
content=query,
199199
timestamp=datetime.now(),
200200
)
201+
print(
202+
f"\nworking memories before: {[one.memory for one in mos.mem_scheduler.mem_cubes[mem_cube_id].text_mem.get_working_memory()]}"
203+
)
201204
mos.mem_scheduler._query_message_consumer(messages=[message_item])
205+
print(
206+
f"\nworking memories after: {[one.memory for one in mos.mem_scheduler.mem_cubes[mem_cube_id].text_mem.get_working_memory()]}"
207+
)
202208

203209
# test activation memory update
204210
mos.mem_scheduler.update_activation_memory_periodically(

src/memos/configs/mem_scheduler.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@
66
from pydantic import ConfigDict, Field, field_validator, model_validator
77

88
from memos.configs.base import BaseConfig
9-
from memos.mem_scheduler.modules.schemas import (
9+
from memos.mem_scheduler.modules.misc import DictConversionMixin
10+
from memos.mem_scheduler.schemas.general_schemas import (
1011
BASE_DIR,
1112
DEFAULT_ACT_MEM_DUMP_PATH,
1213
DEFAULT_CONSUME_INTERVAL_SECONDS,
1314
DEFAULT_THREAD__POOL_MAX_WORKERS,
14-
DictConversionMixin,
1515
)
1616

1717

@@ -21,6 +21,7 @@ class BaseSchedulerConfig(BaseConfig):
2121
top_k: int = Field(
2222
default=10, description="Number of top candidates to consider in initial retrieval"
2323
)
24+
# TODO: The 'top_n' field is deprecated and will be removed in future versions.
2425
top_n: int = Field(default=5, description="Number of final results to return after processing")
2526
enable_parallel_dispatch: bool = Field(
2627
default=True, description="Whether to enable parallel message processing using thread pool"
@@ -48,7 +49,7 @@ class GeneralSchedulerConfig(BaseSchedulerConfig):
4849
default=300, description="Interval in seconds for updating activation memory"
4950
)
5051
context_window_size: int | None = Field(
51-
default=5, description="Size of the context window for conversation history"
52+
default=10, description="Size of the context window for conversation history"
5253
)
5354
act_mem_dump_path: str | None = Field(
5455
default=DEFAULT_ACT_MEM_DUMP_PATH, # Replace with DEFAULT_ACT_MEM_DUMP_PATH

0 commit comments

Comments
 (0)