auto-sync: 2026-05-19 13:26:18

This commit is contained in:
cfdaily
2026-05-19 13:26:18 +08:00
parent 14b7f0ef40
commit cef913a2e1
+15 -1
View File
@@ -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,