diff --git a/src/daemon/spawner.py b/src/daemon/spawner.py index 6119c29..c842845 100644 --- a/src/daemon/spawner.py +++ b/src/daemon/spawner.py @@ -243,17 +243,25 @@ curl -X POST http://{self.api_host}:{self.api_port}/api/projects/{project_id}/ta on_complete: Optional[Any] = None, use_main_session: bool = False, task_db_path: Optional[Path] = None, + reuse_session_id: Optional[str] = None, ) -> str: """Spawn Full Agent(异步非阻塞) Args: on_complete: async callback(agent_id, outcome) — Agent 完成后调用 use_main_session: True = 投递到主 Agent session(不传 --session-id) + reuse_session_id: 传入指定 session-id 复用(用于续杯) Returns: session_id """ - session_id = None if use_main_session else str(uuid.uuid4()) + # Session 策略:main > reuse > new + if use_main_session: + session_id = None + elif reuse_session_id: + session_id = reuse_session_id + else: + session_id = str(uuid.uuid4()) if self.dry_run: logger.info("[DRY RUN] Would spawn agent %s (session=%s)", agent_id, session_id or "main") @@ -552,7 +560,7 @@ curl -X POST http://{api_host}:{api_port}/api/projects/{project_id}/tasks/{task_ message=message, task_id=task_id, on_complete=on_complete, - use_main_session=(session_id is None), + reuse_session_id=session_id, task_db_path=db_path, ) except Exception: