This commit is contained in:
SengokuCola
2025-05-27 12:44:46 +08:00
parent 890a7b6505
commit 5b8e4c0690
6 changed files with 37 additions and 41 deletions

View File

@@ -56,18 +56,18 @@ class ActionProcessor(BaseProcessor):
all_actions = None
hfc_obs = None
chat_obs = None
# 收集所有观察对象
for obs in observations:
if isinstance(obs, HFCloopObservation):
hfc_obs = obs
if isinstance(obs, ChattingObservation):
chat_obs = obs
# 合并所有动作变更
merged_action_changes = {"add": [], "remove": []}
reasons = []
# 处理HFCloopObservation
if hfc_obs:
obs = hfc_obs
@@ -77,32 +77,32 @@ class ActionProcessor(BaseProcessor):
# 合并动作变更
merged_action_changes["add"].extend(action_changes["add"])
merged_action_changes["remove"].extend(action_changes["remove"])
# 收集变更原因
if action_changes["add"]:
reasons.append(f"添加动作{action_changes['add']}因为检测到大量无回复")
if action_changes["remove"]:
reasons.append(f"移除动作{action_changes['remove']}因为检测到连续回复")
# 处理ChattingObservation
if chat_obs and all_actions is not None:
obs = chat_obs
# 检查动作的关联类型
chat_context = chat_manager.get_stream(obs.chat_id).context
type_mismatched_actions = []
for action_name in all_actions.keys():
data = all_actions[action_name]
if data.get("associated_types"):
if not chat_context.check_types(data["associated_types"]):
type_mismatched_actions.append(action_name)
logger.debug(f"{self.log_prefix} 动作 {action_name} 关联类型不匹配,移除该动作")
if type_mismatched_actions:
# 合并到移除列表中
merged_action_changes["remove"].extend(type_mismatched_actions)
reasons.append(f"移除动作{type_mismatched_actions}因为关联类型不匹配")
# 如果有任何动作变更设置到action_info中
if merged_action_changes["add"] or merged_action_changes["remove"]:
action_info.set_action_changes(merged_action_changes)

View File

@@ -15,7 +15,6 @@ from src.chat.heart_flow.observation.hfcloop_observation import HFCloopObservati
from typing import Dict
from src.chat.focus_chat.info.info_base import InfoBase
from src.chat.focus_chat.info.self_info import SelfInfo
from src.chat.utils.utils import get_recent_group_speaker
logger = get_logger("processor")
@@ -101,8 +100,7 @@ class SelfProcessor(BaseProcessor):
如果return_prompt为True:
tuple: (current_mind, past_mind, prompt) 当前想法、过去的想法列表和使用的prompt
"""
for observation in observations:
if isinstance(observation, ChattingObservation):
is_group_chat = observation.is_group_chat
@@ -115,13 +113,11 @@ class SelfProcessor(BaseProcessor):
memory_str = "以下是当前在聊天中,你回忆起的记忆:\n"
for running_memory in running_memorys:
memory_str += f"{running_memory['topic']}: {running_memory['content']}\n"
relation_prompt = ""
for person in person_list:
if len(person) >= 3 and person[0] and person[1]:
relation_prompt += await relationship_manager.build_relationship_info(person,is_id=True)
relation_prompt += await relationship_manager.build_relationship_info(person, is_id=True)
if observations is None:
observations = []
@@ -161,7 +157,6 @@ class SelfProcessor(BaseProcessor):
relation_prompt = relation_prompt_init + relation_prompt
else:
relation_prompt = relation_prompt_init + "没有特别在意的人\n"
prompt = (await global_prompt_manager.get_prompt_async("indentify_prompt")).format(
name_block=name_block,
@@ -172,7 +167,7 @@ class SelfProcessor(BaseProcessor):
time_now=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()),
chat_observe_info=chat_observe_info,
)
# print(prompt)
content = ""