From b00cb063be9ca463ad152a9e0b3d5e7691495d71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B8=AD=E9=98=B3=E9=98=B3?= Date: Wed, 5 Nov 2025 20:27:58 +0800 Subject: [PATCH 1/2] feat: add optional sync mode in server router api --- src/memos/api/product_models.py | 3 +++ src/memos/api/routers/server_router.py | 13 +++++++++---- src/memos/api/server_api.py | 2 +- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/memos/api/product_models.py b/src/memos/api/product_models.py index 0412754c3..c189a08ea 100644 --- a/src/memos/api/product_models.py +++ b/src/memos/api/product_models.py @@ -198,6 +198,9 @@ class APIADDRequest(BaseRequest): operation: list[PermissionDict] | None = Field( None, description="operation ids for multi cubes" ) + sync: str | None = Field( + None, description="optional async or sync when processing add memories" + ) class APIChatCompleteRequest(BaseRequest): diff --git a/src/memos/api/routers/server_router.py b/src/memos/api/routers/server_router.py index 684e02a0c..08e7a65ed 100644 --- a/src/memos/api/routers/server_router.py +++ b/src/memos/api/routers/server_router.py @@ -507,10 +507,15 @@ def add_memories(add_req: APIADDRequest): target_session_id = "default_session" # If text memory backend works in async mode, submit tasks to scheduler - try: - sync_mode = getattr(naive_mem_cube.text_mem, "mode", "sync") - except Exception: - sync_mode = "sync" + if add_req.sync and add_req.sync in ["sync", "async"]: + sync_mode = add_req.sync + logger.info(f"User Input sync_mode is: {sync_mode}") + naive_mem_cube.text_mem.mode = sync_mode + else: + try: + sync_mode = getattr(naive_mem_cube.text_mem, "mode", "sync") + except Exception: + sync_mode = "sync" logger.info(f"Add sync_mode mode is: {sync_mode}") def _process_text_mem() -> list[dict[str, str]]: diff --git a/src/memos/api/server_api.py b/src/memos/api/server_api.py index 0dfef99d9..201699d63 100644 --- a/src/memos/api/server_api.py +++ b/src/memos/api/server_api.py @@ -38,7 +38,7 @@ import uvicorn parser = argparse.ArgumentParser() - parser.add_argument("--port", type=int, default=8001) + parser.add_argument("--port", type=int, default=8004) parser.add_argument("--workers", type=int, default=1) args = parser.parse_args() uvicorn.run("memos.api.server_api:app", host="0.0.0.0", port=args.port, workers=args.workers) From 8aa781e1014fb177ad68006ae9859dd2b06b0cf1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B8=AD=E9=98=B3=E9=98=B3?= Date: Wed, 5 Nov 2025 20:45:51 +0800 Subject: [PATCH 2/2] feat: port --- src/memos/api/server_api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/memos/api/server_api.py b/src/memos/api/server_api.py index 201699d63..0dfef99d9 100644 --- a/src/memos/api/server_api.py +++ b/src/memos/api/server_api.py @@ -38,7 +38,7 @@ import uvicorn parser = argparse.ArgumentParser() - parser.add_argument("--port", type=int, default=8004) + parser.add_argument("--port", type=int, default=8001) parser.add_argument("--workers", type=int, default=1) args = parser.parse_args() uvicorn.run("memos.api.server_api:app", host="0.0.0.0", port=args.port, workers=args.workers)