diff --git a/src/daemon/spawner.py b/src/daemon/spawner.py index 734a486..72d6d14 100644 --- a/src/daemon/spawner.py +++ b/src/daemon/spawner.py @@ -235,29 +235,34 @@ curl -X POST http://{self.api_host}:{self.api_port}/api/projects/{project_id}/ta new_session: bool = False, task_id: Optional[str] = None, on_complete: Optional[Any] = None, + use_main_session: bool = False, ) -> str: """Spawn Full Agent(异步非阻塞) Args: on_complete: async callback(agent_id, outcome) — Agent 完成后调用 + use_main_session: True = 投递到主 Agent session(不传 --session-id) Returns: session_id """ - session_id = str(uuid.uuid4()) + session_id = None if use_main_session else str(uuid.uuid4()) if self.dry_run: - logger.info("[DRY RUN] Would spawn agent %s (session=%s)", agent_id, session_id) - self._register_session(session_id, agent_id, task_id, pid=None) - return session_id + logger.info("[DRY RUN] Would spawn agent %s (session=%s)", agent_id, session_id or "main") + self._register_session(session_id or "main", agent_id, task_id, pid=None) + return session_id or "main" cmd = [ "openclaw", "agent", "--agent", agent_id, - "--session-id", session_id, + ] + if session_id: + cmd.extend(["--session-id", session_id]) + cmd.extend([ "--message", message, "--json", - ] + ]) try: proc = await asyncio.create_subprocess_exec(