This commit is contained in:
SengokuCola
2025-06-12 22:11:31 +08:00
2 changed files with 12 additions and 5 deletions

View File

@@ -127,8 +127,9 @@ class ActionManager:
try:
# 从组件注册中心获取所有已注册的action
from src.plugin_system.core.component_registry import component_registry
action_registry = component_registry.get_action_registry()
# 从action_registry获取所有已注册动作
for action_name, action_class in action_registry.items():
# 获取动作相关信息
@@ -320,6 +321,7 @@ class ActionManager:
# 旧系统的动作创建逻辑
from src.plugin_system.core.component_registry import component_registry
action_registry = component_registry.get_action_registry()
handler_class = action_registry.get(action_name)
if not handler_class:
@@ -586,5 +588,6 @@ class ActionManager:
Optional[Type[BaseAction]]: 动作处理器类如果不存在则返回None
"""
from src.plugin_system.core.component_registry import component_registry
action_registry = component_registry.get_action_registry()
return action_registry.get(action_name)

View File

@@ -7,12 +7,14 @@ logger = get_logger("hearflow_api")
def _get_heartflow():
"""获取heartflow实例的延迟导入函数"""
from src.chat.heart_flow.heartflow import heartflow
return heartflow
def _get_subheartflow_types():
"""获取SubHeartflow和ChatState类型的延迟导入函数"""
from src.chat.heart_flow.sub_heartflow import SubHeartflow, ChatState
return SubHeartflow, ChatState
@@ -36,7 +38,7 @@ class HearflowAPI:
"""
# 使用延迟导入
heartflow = _get_heartflow()
# 直接从subheartflow_manager获取已存在的子心流
# 使用锁来确保线程安全
async with heartflow.subheartflow_manager._lock:
@@ -130,7 +132,9 @@ class HearflowAPI:
# 检查子心流是否处于FOCUSED状态且有HeartFC实例
if subflow.chat_state.chat_status != ChatState.FOCUSED:
logger.debug(f"{self.log_prefix} 子心流 {chat_id} 未处于FOCUSED状态当前状态: {subflow.chat_state.chat_status.value}")
logger.debug(
f"{self.log_prefix} 子心流 {chat_id} 未处于FOCUSED状态当前状态: {subflow.chat_state.chat_status.value}"
)
return None, None
if not subflow.heart_fc_instance:
@@ -140,12 +144,12 @@ class HearflowAPI:
# 返回replyer和expressor实例
replyer = subflow.heart_fc_instance.replyer
expressor = subflow.heart_fc_instance.expressor
if replyer and expressor:
logger.debug(f"{self.log_prefix} 成功获取子心流 {chat_id} 的replyer和expressor")
else:
logger.warning(f"{self.log_prefix} 子心流 {chat_id} 的replyer或expressor为空")
return replyer, expressor
async def get_sub_hearflow_replyer(self, chat_id: str) -> Optional[Any]: