Skip to content

Commit 06cb7ea

Browse files
committed
subagent运行状态监控
1 parent fb39593 commit 06cb7ea

4 files changed

Lines changed: 125 additions & 99 deletions

File tree

astrbot/core/astr_agent_tool_exec.py

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -447,23 +447,27 @@ async def _execute_handoff_background(
447447

448448
if agent_name:
449449
session = DynamicSubAgentManager.get_session(umo)
450-
if session and agent_name in session.subagents:
450+
if session and (agent_name in session.subagents):
451451
subagent_task_id = (
452452
DynamicSubAgentManager.create_pending_subagent_task(
453453
session_id=umo, agent_name=agent_name
454454
)
455455
)
456-
DynamicSubAgentManager.set_subagent_status(
457-
session_id=umo,
458-
agent_name=agent_name,
459-
status="RUNNING",
460-
)
461456

462-
logger.info(
463-
f"[EnhancedSubAgent] Created background task {subagent_task_id} for {agent_name}"
464-
)
457+
if subagent_task_id.startswith("__PENDING_TASK_CREATE_FAILED__"):
458+
logger.info(subagent_task_id)
459+
else:
460+
DynamicSubAgentManager.set_subagent_status(
461+
session_id=umo,
462+
agent_name=agent_name,
463+
status="RUNNING",
464+
)
465+
466+
logger.info(
467+
f"[EnhancedSubAgent] Created background task {subagent_task_id} for {agent_name}"
468+
)
465469
except Exception as e:
466-
logger.debug(f"[EnhancedSubAgent] Failed to create pending task: {e}")
470+
logger.info(f"[EnhancedSubAgent] Failed to create pending task: {e}")
467471

468472
# 生成原始的 task_id(用于唤醒机制等)
469473
original_task_id = uuid.uuid4().hex
@@ -561,7 +565,7 @@ async def _do_handoff_background(
561565
session = DynamicSubAgentManager.get_session(umo)
562566
if session and agent_name:
563567
# 检查是否是动态创建的 SubAgent
564-
if agent_name in session.agents:
568+
if agent_name in session.subagents:
565569
enhanced_subagent_enabled = True
566570
except Exception:
567571
session = None

astrbot/core/astr_main_agent.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -970,8 +970,9 @@ def _apply_enhanced_subagent_tools(
970970
if DynamicSubAgentManager.is_auto_cleanup_per_turn():
971971
req.func_tool.add_tool(PROTECT_SUBAGENT_TOOL)
972972
req.func_tool.add_tool(UNPROTECT_SUBAGENT_TOOL)
973-
req.func_tool.add_tool(VIEW_SHARED_CONTEXT_TOOL)
974-
req.func_tool.add_tool(SEND_SHARED_CONTEXT_TOOL_FOR_MAIN_AGENT)
973+
if DynamicSubAgentManager.is_shared_context_enabled():
974+
req.func_tool.add_tool(VIEW_SHARED_CONTEXT_TOOL)
975+
req.func_tool.add_tool(SEND_SHARED_CONTEXT_TOOL_FOR_MAIN_AGENT)
975976
req.func_tool.add_tool(WAIT_FOR_SUBAGENT_TOOL)
976977

977978
# Configure logger
@@ -1346,8 +1347,9 @@ async def build_main_agent(
13461347
elif config.computer_use_runtime == "local":
13471348
_apply_local_env_tools(req)
13481349

1349-
# Apply enhanced SubAgent tools
1350-
_apply_enhanced_subagent_tools(config, req, event)
1350+
if config.enhanced_subagent.get("enabled", False):
1351+
# Apply enhanced SubAgent tools
1352+
_apply_enhanced_subagent_tools(config, req, event)
13511353

13521354
agent_runner = AgentRunner()
13531355
astr_agent_ctx = AstrAgentContext(

astrbot/core/computer/booters/local.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -159,10 +159,16 @@ def _run() -> dict[str, Any]:
159159
[os.environ.get("PYTHON", sys.executable), "-c", code],
160160
timeout=timeout,
161161
capture_output=True,
162-
text=True,
162+
# text=True,
163+
)
164+
# stdout = "" if silent else result.stdout
165+
# stderr = result.stderr if result.returncode != 0 else ""
166+
stdout = "" if silent else _decode_shell_output(result.stdout)
167+
stderr = (
168+
_decode_shell_output(result.stderr)
169+
if result.returncode != 0
170+
else ""
163171
)
164-
stdout = "" if silent else result.stdout
165-
stderr = result.stderr if result.returncode != 0 else ""
166172
return {
167173
"data": {
168174
"output": {"text": stdout, "images": []},

0 commit comments

Comments
 (0)