auto-sync: 2026-05-19 13:26:18
This commit is contained in:
+15
-1
@@ -188,9 +188,13 @@ class AgentSpawner:
|
||||
message: str,
|
||||
new_session: bool = False,
|
||||
task_id: Optional[str] = None,
|
||||
on_complete: Optional[Any] = None,
|
||||
) -> str:
|
||||
"""Spawn Full Agent(异步非阻塞)
|
||||
|
||||
Args:
|
||||
on_complete: async callback(agent_id, outcome) — Agent 完成后调用
|
||||
|
||||
Returns:
|
||||
session_id
|
||||
"""
|
||||
@@ -221,7 +225,8 @@ class AgentSpawner:
|
||||
|
||||
# Schedule timeout + cleanup
|
||||
asyncio.create_task(
|
||||
self._monitor_process(session_id, proc, agent_id, task_id)
|
||||
self._monitor_process(session_id, proc, agent_id, task_id,
|
||||
on_complete=on_complete)
|
||||
)
|
||||
|
||||
return session_id
|
||||
@@ -259,6 +264,7 @@ class AgentSpawner:
|
||||
proc: asyncio.subprocess.Process,
|
||||
agent_id: str,
|
||||
task_id: Optional[str],
|
||||
on_complete: Optional[Any] = None,
|
||||
) -> None:
|
||||
"""监控子进程,超时 kill,完成后记录"""
|
||||
try:
|
||||
@@ -283,6 +289,14 @@ class AgentSpawner:
|
||||
logger.info("Agent %s finished (session=%s, outcome=%s, exit=%d)",
|
||||
agent_id, session_id, outcome, exit_code)
|
||||
|
||||
# 完成回调(释放 counter 等)
|
||||
if on_complete:
|
||||
try:
|
||||
await on_complete(agent_id, outcome)
|
||||
except Exception:
|
||||
logger.warning("on_complete callback failed for %s",
|
||||
agent_id, exc_info=True)
|
||||
|
||||
def _register_session(
|
||||
self,
|
||||
session_id: str,
|
||||
|
||||
Reference in New Issue
Block a user