Skip to content

Commit 12d761e

Browse files
committed
no message
1 parent 238ee93 commit 12d761e

3 files changed

Lines changed: 9 additions & 36 deletions

File tree

astrbot/core/agent/runners/tool_loop_agent_runner.py

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
sanitize_contexts_by_modalities,
4848
)
4949
from astrbot.core.provider.provider import Provider
50+
from astrbot.core.subagent_manager import SubAgentManager
5051

5152
from ..context.compressor import ContextCompressor
5253
from ..context.config import ContextConfig
@@ -1506,12 +1507,7 @@ def _resolve_dynamic_subagent_tool(self, func_tool_name: str):
15061507
if not session_id:
15071508
return None
15081509

1509-
try:
1510-
from astrbot.core.subagent_manager import SubAgentManager
1511-
1512-
dynamic_handoffs = SubAgentManager.get_handoff_tools_for_session(session_id)
1513-
except Exception:
1514-
return None
1510+
dynamic_handoffs = SubAgentManager.get_handoff_tools_for_session(session_id)
15151511

15161512
for h in dynamic_handoffs:
15171513
if h.name == func_tool_name or f"transfer_to_{h.name}" == func_tool_name:
@@ -1538,13 +1534,7 @@ def _maybe_register_dynamic_tool_from_result(self, result_content: str) -> None:
15381534
if not session_id:
15391535
return
15401536

1541-
try:
1542-
from astrbot.core.subagent_manager import SubAgentManager
1543-
1544-
handoffs = SubAgentManager.get_handoff_tools_for_session(session_id)
1545-
except Exception as e:
1546-
logger.warning(f"[SubAgent] Failed to load dynamic handoffs: {e}")
1547-
return
1537+
handoffs = SubAgentManager.get_handoff_tools_for_session(session_id)
15481538

15491539
for handoff in handoffs:
15501540
if (

astrbot/core/astr_agent_tool_exec.py

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
from astrbot.core.platform.message_session import MessageSession
3232
from astrbot.core.provider.entites import ProviderRequest
3333
from astrbot.core.provider.register import llm_tools
34+
from astrbot.core.subagent_manager import SubAgentManager
3435
from astrbot.core.tools.computer_tools import (
3536
CuaKeyboardTypeTool,
3637
CuaMouseClickTool,
@@ -823,8 +824,6 @@ async def _execute_mcp(
823824
def _load_subagent_history(
824825
umo: str, tool: HandoffTool
825826
) -> tuple[list[Message], str]:
826-
from astrbot.core.subagent_manager import SubAgentManager
827-
828827
agent_name = getattr(tool.agent, "name", None)
829828
subagent_history = []
830829
if agent_name:
@@ -871,8 +870,6 @@ def _build_subagent_system_prompt(
871870
f"# Role\nYour name is {agent_name}(used for tool calling)\n{base}\n"
872871
)
873872
if agent_name:
874-
from astrbot.core.subagent_manager import SubAgentManager
875-
876873
runtime = prov_settings.get("computer_use_runtime", "local")
877874
static_subagent_prompt = SubAgentManager.build_static_subagent_prompts(
878875
umo, agent_name
@@ -889,8 +886,6 @@ def _save_subagent_history(
889886
umo: str, runner_messages: list[Message], agent_name: str
890887
) -> None:
891888
if agent_name and runner_messages:
892-
from astrbot.core.subagent_manager import SubAgentManager
893-
894889
# 仅在历史功能启用时保存历史
895890
if SubAgentManager.is_history_enabled():
896891
SubAgentManager.update_subagent_history(
@@ -908,8 +903,6 @@ def _register_subagent_task(umo: str, agent_name: str | None) -> str | None:
908903
if not agent_name:
909904
return None
910905
try:
911-
from astrbot.core.subagent_manager import SubAgentManager
912-
913906
session = SubAgentManager.get_session(umo)
914907
if session and (agent_name in session.subagents):
915908
subagent_task_id = SubAgentManager.create_pending_subagent_task(
@@ -967,8 +960,6 @@ def _build_background_submission_message(
967960
@staticmethod
968961
def _get_subagent_execution_timeout() -> float:
969962
try:
970-
from astrbot.core.subagent_manager import SubAgentManager
971-
972963
return SubAgentManager.get_execution_timeout()
973964
except Exception:
974965
return -1
@@ -978,8 +969,6 @@ def _handle_subagent_timeout(
978969
umo: str,
979970
agent_name: str,
980971
) -> None:
981-
from astrbot.core.subagent_manager import SubAgentManager
982-
983972
SubAgentManager.set_subagent_status(
984973
session_id=umo,
985974
agent_name=agent_name,
@@ -988,8 +977,6 @@ def _handle_subagent_timeout(
988977

989978
@staticmethod
990979
def _is_managed_subagent(umo: str, agent_name: str | None) -> bool:
991-
from astrbot.core.subagent_manager import SubAgentManager
992-
993980
if not agent_name:
994981
return False
995982
session = SubAgentManager.get_session(umo)
@@ -1011,8 +998,6 @@ async def _handle_subagent_background_result(
1011998
tool: HandoffTool,
1012999
tool_args: dict,
10131000
) -> None:
1014-
from astrbot.core.subagent_manager import SubAgentManager
1015-
10161001
success = error_text is None
10171002
status = "COMPLETED" if success else "FAILED"
10181003
SubAgentManager.set_subagent_status(

astrbot/core/subagent_manager.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
from astrbot.core.agent.agent import Agent
2020
from astrbot.core.agent.handoff import HandoffTool
2121
from astrbot.core.agent.tool import FunctionTool
22+
from astrbot.core.astr_main_agent import _get_workspace_path_for_umo
2223
from astrbot.core.utils.astrbot_path import get_astrbot_temp_path
2324

2425

@@ -220,7 +221,6 @@ def configure(
220221
cls._tools_blacklist = {
221222
"send_shared_context_for_main_agent",
222223
"create_subagent",
223-
"stop_subagent",
224224
"protect_subagent",
225225
"unprotect_subagent",
226226
"reset_subagent",
@@ -337,7 +337,7 @@ def update_subagent_history(
337337
filtered_messages.append(msg)
338338

339339
session.subagent_histories[agent_name].extend(filtered_messages)
340-
if cls._subagent_history_maxlen > len(session.subagent_histories[agent_name]):
340+
if len(session.subagent_histories[agent_name]) > cls._subagent_history_maxlen:
341341
session.subagent_histories[agent_name] = session.subagent_histories[
342342
agent_name
343343
][-cls._subagent_history_maxlen :]
@@ -1295,13 +1295,11 @@ async def call(self, context, **kwargs) -> str:
12951295
tools = kwargs.get("tools", {})
12961296
skills = kwargs.get("skills", {})
12971297
workdir = kwargs.get("workdir")
1298-
# 检查工作路径是否非法
1299-
if workdir is not None and self._check_path_safety(workdir):
1300-
pass
1301-
else:
1302-
workdir = get_astrbot_temp_path()
13031298

13041299
session_id = context.context.event.unified_msg_origin
1300+
# 工作路径如果非法,回退到该session的默认工作路径
1301+
if workdir is None or (not self._check_path_safety(workdir)):
1302+
workdir = _get_workspace_path_for_umo(session_id)
13051303
config = SubAgentConfig(
13061304
name=name,
13071305
system_prompt=system_prompt,

0 commit comments

Comments
 (0)