fix:拯救大兵ruff 2
This commit is contained in:
@@ -20,9 +20,9 @@ from src.plugins.heartFC_chat.heartFC_chat import HeartFChatting
|
||||
|
||||
# Type hinting for circular dependency
|
||||
if TYPE_CHECKING:
|
||||
from .heartflow import Heartflow # Import Heartflow for type hinting
|
||||
from .sub_heartflow import ChatState # Keep ChatState here too?
|
||||
from src.plugins.heartFC_chat.heartFC_chat import HeartFChatting # <-- Add for type hint
|
||||
from .heartflow import Heartflow # Import Heartflow for type hinting
|
||||
from .sub_heartflow import ChatState # Keep ChatState here too?
|
||||
from src.plugins.heartFC_chat.heartFC_chat import HeartFChatting # <-- Add for type hint
|
||||
|
||||
# 定义常量 (从 interest.py 移动过来)
|
||||
MAX_INTEREST = 15.0
|
||||
@@ -92,7 +92,7 @@ class InterestChatting:
|
||||
increase_rate=probability_increase_rate_per_second,
|
||||
decay_factor=global_config.probability_decay_factor_per_second,
|
||||
max_probability=max_reply_probability,
|
||||
state_change_callback: Optional[Callable[[ChatState], None]] = None
|
||||
state_change_callback: Optional[Callable[[ChatState], None]] = None,
|
||||
):
|
||||
self.interest_level: float = 0.0
|
||||
self.last_update_time: float = time.time()
|
||||
@@ -231,9 +231,9 @@ class InterestChatting:
|
||||
|
||||
|
||||
class SubHeartflow:
|
||||
def __init__(self, subheartflow_id, parent_heartflow: 'Heartflow'):
|
||||
def __init__(self, subheartflow_id, parent_heartflow: "Heartflow"):
|
||||
"""子心流初始化函数
|
||||
|
||||
|
||||
Args:
|
||||
subheartflow_id: 子心流唯一标识符
|
||||
parent_heartflow: 父级心流实例
|
||||
@@ -242,27 +242,27 @@ class SubHeartflow:
|
||||
self.subheartflow_id = subheartflow_id
|
||||
self.parent_heartflow = parent_heartflow
|
||||
self.bot_name = global_config.BOT_NICKNAME # 机器人昵称
|
||||
|
||||
|
||||
# 思维状态相关
|
||||
self.current_mind = "你什么也没想" # 当前想法
|
||||
self.past_mind = [] # 历史想法记录
|
||||
self.main_heartflow_info = "" # 主心流信息
|
||||
|
||||
|
||||
# 聊天状态管理
|
||||
self.chat_state: ChatStateInfo = ChatStateInfo() # 聊天状态信息
|
||||
self.interest_chatting = InterestChatting(state_change_callback=self.set_chat_state) # 兴趣聊天系统
|
||||
|
||||
|
||||
# 活动状态管理
|
||||
self.last_active_time = time.time() # 最后活跃时间
|
||||
self.is_active = False # 是否活跃标志
|
||||
self.should_stop = False # 停止标志
|
||||
self.task: Optional[asyncio.Task] = None # 后台任务
|
||||
self.heart_fc_instance: Optional['HeartFChatting'] = None # <-- Add instance variable
|
||||
|
||||
self.heart_fc_instance: Optional["HeartFChatting"] = None # <-- Add instance variable
|
||||
|
||||
# 观察和知识系统
|
||||
self.observations: List[ChattingObservation] = [] # 观察列表
|
||||
self.running_knowledges = [] # 运行中的知识
|
||||
|
||||
|
||||
# LLM模型配置
|
||||
self.llm_model = LLMRequest(
|
||||
model=global_config.llm_sub_heartflow,
|
||||
@@ -271,13 +271,13 @@ class SubHeartflow:
|
||||
request_type="sub_heart_flow",
|
||||
)
|
||||
|
||||
async def set_chat_state(self, new_state: 'ChatState'):
|
||||
async def set_chat_state(self, new_state: "ChatState"):
|
||||
"""更新sub_heartflow的聊天状态,并管理 HeartFChatting 实例"""
|
||||
|
||||
current_state = self.chat_state.chat_status
|
||||
if current_state == new_state:
|
||||
logger.trace(f"[{self.subheartflow_id}] State already {current_state.value}, no change.")
|
||||
return # No change needed
|
||||
return # No change needed
|
||||
|
||||
log_prefix = f"[{chat_manager.get_stream_name(self.subheartflow_id) or self.subheartflow_id}]"
|
||||
current_mai_state = self.parent_heartflow.current_state.mai_status
|
||||
@@ -288,10 +288,14 @@ class SubHeartflow:
|
||||
current_chat_count = self.parent_heartflow.count_subflows_by_state(ChatState.CHAT)
|
||||
|
||||
if current_chat_count >= normal_limit:
|
||||
logger.debug(f"{log_prefix} 拒绝从 {current_state.value} 转换到 CHAT。原因:CHAT 状态已达上限 ({normal_limit})。当前数量: {current_chat_count}")
|
||||
return # Block the state transition
|
||||
logger.debug(
|
||||
f"{log_prefix} 拒绝从 {current_state.value} 转换到 CHAT。原因:CHAT 状态已达上限 ({normal_limit})。当前数量: {current_chat_count}"
|
||||
)
|
||||
return # Block the state transition
|
||||
else:
|
||||
logger.debug(f"{log_prefix} 允许从 {current_state.value} 转换到 CHAT (上限: {normal_limit}, 当前: {current_chat_count})" )
|
||||
logger.debug(
|
||||
f"{log_prefix} 允许从 {current_state.value} 转换到 CHAT (上限: {normal_limit}, 当前: {current_chat_count})"
|
||||
)
|
||||
# If transitioning out of FOCUSED, shut down HeartFChatting first
|
||||
if current_state == ChatState.FOCUSED and self.heart_fc_instance:
|
||||
logger.info(f"{log_prefix} 从 FOCUSED 转换到 CHAT,正在关闭 HeartFChatting...")
|
||||
@@ -304,10 +308,14 @@ class SubHeartflow:
|
||||
current_focused_count = self.parent_heartflow.count_subflows_by_state(ChatState.FOCUSED)
|
||||
|
||||
if current_focused_count >= focused_limit:
|
||||
logger.debug(f"{log_prefix} 拒绝从 {current_state.value} 转换到 FOCUSED。原因:FOCUSED 状态已达上限 ({focused_limit})。当前数量: {current_focused_count}")
|
||||
return # Block the state transition
|
||||
logger.debug(
|
||||
f"{log_prefix} 拒绝从 {current_state.value} 转换到 FOCUSED。原因:FOCUSED 状态已达上限 ({focused_limit})。当前数量: {current_focused_count}"
|
||||
)
|
||||
return # Block the state transition
|
||||
else:
|
||||
logger.debug(f"{log_prefix} 允许从 {current_state.value} 转换到 FOCUSED (上限: {focused_limit}, 当前: {current_focused_count})" )
|
||||
logger.debug(
|
||||
f"{log_prefix} 允许从 {current_state.value} 转换到 FOCUSED (上限: {focused_limit}, 当前: {current_focused_count})"
|
||||
)
|
||||
if not self.heart_fc_instance:
|
||||
logger.info(f"{log_prefix} 状态转为 FOCUSED,创建并初始化 HeartFChatting 实例...")
|
||||
try:
|
||||
@@ -323,14 +331,16 @@ class SubHeartflow:
|
||||
await self.heart_fc_instance.add_time()
|
||||
logger.info(f"{log_prefix} HeartFChatting 实例已创建并启动。")
|
||||
else:
|
||||
logger.error(f"{log_prefix} HeartFChatting 实例初始化失败,状态回滚到 {current_state.value}")
|
||||
logger.error(
|
||||
f"{log_prefix} HeartFChatting 实例初始化失败,状态回滚到 {current_state.value}"
|
||||
)
|
||||
self.heart_fc_instance = None
|
||||
return # Prevent state change if HeartFChatting fails to init
|
||||
return # Prevent state change if HeartFChatting fails to init
|
||||
except Exception as e:
|
||||
logger.error(f"{log_prefix} 创建 HeartFChatting 实例时出错: {e}")
|
||||
logger.error(traceback.format_exc())
|
||||
self.heart_fc_instance = None
|
||||
return # Prevent state change on error
|
||||
return # Prevent state change on error
|
||||
|
||||
else:
|
||||
logger.warning(f"{log_prefix} 尝试进入 FOCUSED 状态,但 HeartFChatting 实例已存在。")
|
||||
@@ -341,13 +351,11 @@ class SubHeartflow:
|
||||
await self.heart_fc_instance.shutdown()
|
||||
self.heart_fc_instance = None
|
||||
|
||||
|
||||
# --- Update state and timestamp if transition is allowed --- # 更新状态必须放在所有检查和操作之后
|
||||
self.chat_state.chat_status = new_state
|
||||
self.last_active_time = time.time()
|
||||
logger.info(f"{log_prefix} 聊天状态从 {current_state.value} 变更为 {new_state.value}")
|
||||
|
||||
|
||||
async def subheartflow_start_working(self):
|
||||
while True:
|
||||
if self.should_stop:
|
||||
|
||||
Reference in New Issue
Block a user