修改能量值系统日志输出
----之前的太刷屏了... - 添加能量值日志时间间隔控制 (90秒) -暂时先这么写 - 减少日志刷屏问题 修改文件: - src/chat/chat_loop/heartFC_chat.py - template/model_config_template.toml: 别问为什么改了这个,问就是手残()
This commit is contained in:
committed by
Windpicker-owo
parent
94a68ba578
commit
b8905c672a
@@ -113,8 +113,10 @@ class HeartFChatting:
|
|||||||
|
|
||||||
self.focus_energy = 1
|
self.focus_energy = 1
|
||||||
self.no_reply_consecutive = 0
|
self.no_reply_consecutive = 0
|
||||||
# 最近三次no_reply的新消息兴趣度记录
|
|
||||||
self.recent_interest_records: deque = deque(maxlen=3)
|
# 能量值日志时间控制
|
||||||
|
self.last_energy_log_time = 0 # 上次记录能量值日志的时间
|
||||||
|
self.energy_log_interval = 90 # 能量值日志间隔(秒)
|
||||||
|
|
||||||
async def start(self):
|
async def start(self):
|
||||||
"""检查是否需要启动主循环,如果未激活则启动。"""
|
"""检查是否需要启动主循环,如果未激活则启动。"""
|
||||||
@@ -163,6 +165,45 @@ class HeartFChatting:
|
|||||||
self._current_cycle_detail.timers = cycle_timers
|
self._current_cycle_detail.timers = cycle_timers
|
||||||
self._current_cycle_detail.end_time = time.time()
|
self._current_cycle_detail.end_time = time.time()
|
||||||
|
|
||||||
|
def _handle_energy_completion(self, task: asyncio.Task):
|
||||||
|
"""处理能量循环任务的完成"""
|
||||||
|
if task.cancelled():
|
||||||
|
logger.info(f"{self.log_prefix} 能量循环任务被取消")
|
||||||
|
elif task.exception():
|
||||||
|
logger.error(f"{self.log_prefix} 能量循环任务发生异常: {task.exception()}")
|
||||||
|
|
||||||
|
def _should_log_energy(self) -> bool:
|
||||||
|
"""判断是否应该记录能量值日志(基于时间间隔控制)"""
|
||||||
|
current_time = time.time()
|
||||||
|
if current_time - self.last_energy_log_time >= self.energy_log_interval:
|
||||||
|
self.last_energy_log_time = current_time
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
def _log_energy_change(self, action: str, reason: str = ""):
|
||||||
|
"""记录能量值变化日志(受时间间隔控制)"""
|
||||||
|
if self._should_log_energy():
|
||||||
|
if reason:
|
||||||
|
logger.info(f"{self.log_prefix} {action},{reason},当前能量值:{self.energy_value:.1f}")
|
||||||
|
else:
|
||||||
|
logger.info(f"{self.log_prefix} {action},当前能量值:{self.energy_value:.1f}")
|
||||||
|
else:
|
||||||
|
# 仍然以debug级别记录,便于调试
|
||||||
|
if reason:
|
||||||
|
logger.debug(f"{self.log_prefix} {action},{reason},当前能量值:{self.energy_value:.1f}")
|
||||||
|
else:
|
||||||
|
logger.debug(f"{self.log_prefix} {action},当前能量值:{self.energy_value:.1f}")
|
||||||
|
|
||||||
|
async def _energy_loop(self):
|
||||||
|
while self.running:
|
||||||
|
await asyncio.sleep(10)
|
||||||
|
if self.loop_mode == ChatMode.NORMAL:
|
||||||
|
self.energy_value -= 0.3
|
||||||
|
self.energy_value = max(self.energy_value, 0.3)
|
||||||
|
if self.loop_mode == ChatMode.FOCUS:
|
||||||
|
self.energy_value -= 0.6
|
||||||
|
self.energy_value = max(self.energy_value, 0.3)
|
||||||
|
|
||||||
def print_cycle_info(self, cycle_timers):
|
def print_cycle_info(self, cycle_timers):
|
||||||
# 记录循环信息和计时器结果
|
# 记录循环信息和计时器结果
|
||||||
timer_strings = []
|
timer_strings = []
|
||||||
@@ -285,9 +326,56 @@ class HeartFChatting:
|
|||||||
# 统一的消息处理逻辑
|
# 统一的消息处理逻辑
|
||||||
should_process,interest_value = await self._should_process_messages(recent_messages_dict)
|
should_process,interest_value = await self._should_process_messages(recent_messages_dict)
|
||||||
|
|
||||||
if should_process:
|
if self.loop_mode == ChatMode.FOCUS:
|
||||||
|
|
||||||
|
if self.last_action == "no_reply":
|
||||||
|
if not await self._execute_no_reply(recent_messages_dict):
|
||||||
|
self.energy_value -= 0.3 / global_config.chat.focus_value
|
||||||
|
self._log_energy_change("能量值减少")
|
||||||
|
await asyncio.sleep(0.5)
|
||||||
|
return True
|
||||||
|
|
||||||
self.last_read_time = time.time()
|
self.last_read_time = time.time()
|
||||||
await self._observe(interest_value = interest_value)
|
|
||||||
|
if await self._observe():
|
||||||
|
self.energy_value += 1 / global_config.chat.focus_value
|
||||||
|
self._log_energy_change("能量值增加")
|
||||||
|
|
||||||
|
if self.energy_value <= 1:
|
||||||
|
self.energy_value = 1
|
||||||
|
self.loop_mode = ChatMode.NORMAL
|
||||||
|
return True
|
||||||
|
|
||||||
|
return True
|
||||||
|
elif self.loop_mode == ChatMode.NORMAL:
|
||||||
|
if global_config.chat.focus_value != 0:
|
||||||
|
if new_message_count > 3 / pow(global_config.chat.focus_value, 0.5):
|
||||||
|
self.loop_mode = ChatMode.FOCUS
|
||||||
|
self.energy_value = (
|
||||||
|
10 + (new_message_count / (3 / pow(global_config.chat.focus_value, 0.5))) * 10
|
||||||
|
)
|
||||||
|
return True
|
||||||
|
|
||||||
|
if self.energy_value >= 30:
|
||||||
|
self.loop_mode = ChatMode.FOCUS
|
||||||
|
return True
|
||||||
|
|
||||||
|
if new_message_count >= self.focus_energy:
|
||||||
|
earliest_messages_data = recent_messages_dict[0]
|
||||||
|
self.last_read_time = earliest_messages_data.get("time")
|
||||||
|
|
||||||
|
if_think = await self.normal_response(earliest_messages_data)
|
||||||
|
if if_think:
|
||||||
|
factor = max(global_config.chat.focus_value, 0.1)
|
||||||
|
self.energy_value *= 1.1 * factor
|
||||||
|
self._log_energy_change("进行了思考,能量值按倍数增加")
|
||||||
|
else:
|
||||||
|
self.energy_value += 0.1 * global_config.chat.focus_value
|
||||||
|
self._log_energy_change("没有进行思考,能量值线性增加")
|
||||||
|
|
||||||
|
# 这个可以保持debug级别,因为它是总结性信息
|
||||||
|
logger.debug(f"{self.log_prefix} 当前能量值:{self.energy_value:.1f}")
|
||||||
|
return True
|
||||||
|
|
||||||
else:
|
else:
|
||||||
# Normal模式:消息数量不足,等待
|
# Normal模式:消息数量不足,等待
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ retry_interval = 10 # 重试间隔时间(单位:秒)
|
|||||||
[[api_providers]] # SiliconFlow的API服务商配置
|
[[api_providers]] # SiliconFlow的API服务商配置
|
||||||
name = "SiliconFlow"
|
name = "SiliconFlow"
|
||||||
base_url = "https://api.siliconflow.cn/v1"
|
base_url = "https://api.siliconflow.cn/v1"
|
||||||
api_key = "your-siliconflow-api-key"
|
api_key = "your-siliconflow-api-key-here"
|
||||||
client_type = "openai"
|
client_type = "openai"
|
||||||
max_retry = 2
|
max_retry = 2
|
||||||
timeout = 30
|
timeout = 30
|
||||||
|
|||||||
Reference in New Issue
Block a user