perf(methods): 通过移除不必要的 self 参数优化方法签名

在包括 chat、plugin_system、schedule 和 mais4u 在内的多个模块中,消除冗余的实例引用。此次改动将无需访问实例状态的实用函数转换为静态方法,从而提升了内存效率,并使方法依赖关系更加清晰。
This commit is contained in:
雅诺狐
2025-09-20 10:55:06 +08:00
parent 0cc4f5bb27
commit 898208f425
111 changed files with 643 additions and 467 deletions

View File

@@ -27,9 +27,9 @@ class ActionManager:
# === 执行Action方法 ===
@staticmethod
def create_action(
self,
action_name: str,
action_name: str,
action_data: dict,
reasoning: str,
cycle_timers: dict,

View File

@@ -243,7 +243,8 @@ class ActionModifier:
return deactivated_actions
def _generate_context_hash(self, chat_content: str) -> str:
@staticmethod
def _generate_context_hash(chat_content: str) -> str:
"""生成上下文的哈希值用于缓存"""
context_content = f"{chat_content}"
return hashlib.md5(context_content.encode("utf-8")).hexdigest()

View File

@@ -27,7 +27,8 @@ class PlanExecutor:
"""
self.action_manager = action_manager
async def execute(self, plan: Plan):
@staticmethod
async def execute(plan: Plan):
"""
遍历并执行 Plan 对象中 `decided_actions` 列表里的所有动作。

View File

@@ -297,15 +297,17 @@ class PlanFilter:
)
return parsed_actions
@staticmethod
def _filter_no_actions(
self, action_list: List[ActionPlannerInfo]
action_list: List[ActionPlannerInfo]
) -> List[ActionPlannerInfo]:
non_no_actions = [a for a in action_list if a.action_type not in ["no_action", "no_reply"]]
if non_no_actions:
return non_no_actions
return action_list[:1] if action_list else []
async def _get_long_term_memory_context(self) -> str:
@staticmethod
async def _get_long_term_memory_context() -> str:
try:
now = datetime.now()
keywords = ["今天", "日程", "计划"]
@@ -329,7 +331,8 @@ class PlanFilter:
logger.error(f"获取长期记忆时出错: {e}")
return "回忆时出现了一些问题。"
async def _build_action_options(self, current_available_actions: Dict[str, ActionInfo]) -> str:
@staticmethod
async def _build_action_options(current_available_actions: Dict[str, ActionInfo]) -> str:
action_options_block = ""
for action_name, action_info in current_available_actions.items():
param_text = ""
@@ -347,7 +350,8 @@ class PlanFilter:
)
return action_options_block
def _find_message_by_id(self, message_id: str, message_id_list: list) -> Optional[Dict[str, Any]]:
@staticmethod
def _find_message_by_id(message_id: str, message_id_list: list) -> Optional[Dict[str, Any]]:
if message_id.isdigit():
message_id = f"m{message_id}"
for item in message_id_list:
@@ -355,7 +359,8 @@ class PlanFilter:
return item.get("message")
return None
def _get_latest_message(self, message_id_list: list) -> Optional[Dict[str, Any]]:
@staticmethod
def _get_latest_message(message_id_list: list) -> Optional[Dict[str, Any]]:
if not message_id_list:
return None
return message_id_list[-1].get("message")

View File

@@ -2,7 +2,7 @@
PlanGenerator: 负责搜集和汇总所有决策所需的信息,生成一个未经筛选的“原始计划” (Plan)。
"""
import time
from typing import Dict, Optional, Tuple
from typing import Dict
from src.chat.utils.chat_message_builder import get_raw_msg_before_timestamp_with_chat
from src.chat.utils.utils import get_chat_type_and_target_info

View File

@@ -8,12 +8,10 @@ from src.chat.planner_actions.action_manager import ActionManager
from src.chat.planner_actions.plan_executor import PlanExecutor
from src.chat.planner_actions.plan_filter import PlanFilter
from src.chat.planner_actions.plan_generator import PlanGenerator
from src.common.data_models.info_data_model import ActionPlannerInfo
from src.common.logger import get_logger
from src.plugin_system.base.component_types import ChatMode
# 导入提示词模块以确保其被初始化
from . import planner_prompts
logger = get_logger("planner")