feat(planner): 实现大小脑规划器分离以优化决策流程

将规划器(Planner)拆分为“大脑”和“小脑”两个部分,以实现更精细化的决策控制。

- **大脑(BIG_BRAIN)**: 负责宏观决策,如是否回复、是否需要@人等高层级意图。
- **小脑(SMALL_BRAIN)**: 负责具体的功能性动作执行。

此重构引入了 `PlannerType` 枚举,并更新了动作(Action)定义,允许将动作明确分配给大脑或小脑,从而提升了AI回复的逻辑性和条理性。同时,新增了 `no_action` 类型,用于在规划阶段明确表示“无动作”,提高了处理流程的清晰度。
This commit is contained in:
minecraft1024a
2025-09-06 20:49:56 +08:00
parent c097b5d00b
commit 132354804c
5 changed files with 38 additions and 27 deletions

View File

@@ -228,6 +228,8 @@ class CycleProcessor:
async def execute_action(action_info):
"""执行单个动作的通用函数"""
try:
if action_info["action_type"] == "no_action":
return {"action_type": "no_action", "success": True, "reply_text": "", "command": ""}
if action_info["action_type"] == "no_reply":
# 直接处理no_reply逻辑不再通过动作系统
reason = action_info.get("reasoning", "选择不回复")
@@ -245,7 +247,7 @@ class CycleProcessor:
)
return {"action_type": "no_reply", "success": True, "reply_text": "", "command": ""}
elif action_info["action_type"] != "reply":
elif action_info["action_type"] != "reply" and action_info["action_type"] != "no_action":
# 执行普通动作
with Timer("动作执行", cycle_timers):
success, reply_text, command = await self._handle_action(
@@ -420,7 +422,7 @@ class CycleProcessor:
if "reply" in available_actions:
fallback_action = "reply"
elif available_actions:
fallback_action = list(available_actions.keys())
fallback_action = list(available_actions.keys())[0]
if fallback_action and fallback_action != action:
logger.info(f"{self.context.log_prefix} 使用回退动作: {fallback_action}")