修改能量值系统日志输出

----之前的太刷屏了...
- 添加能量值日志时间间隔控制 (90秒) -暂时先这么写
- 减少日志刷屏问题

修改文件:
- src/chat/chat_loop/heartFC_chat.py
- template/model_config_template.toml: 别问为什么改了这个,问就是手残()
This commit is contained in:
Navinatte
2025-08-11 22:22:45 +08:00
parent 3444675df2
commit 25a2caf3c0
2 changed files with 36 additions and 9 deletions

View File

@@ -120,6 +120,10 @@ class HeartFChatting:
self.focus_energy = 1 self.focus_energy = 1
self.no_reply_consecutive = 0 self.no_reply_consecutive = 0
# 能量值日志时间控制
self.last_energy_log_time = 0 # 上次记录能量值日志的时间
self.energy_log_interval = 90 # 能量值日志间隔(秒)
async def start(self): async def start(self):
"""检查是否需要启动主循环,如果未激活则启动。""" """检查是否需要启动主循环,如果未激活则启动。"""
@@ -172,11 +176,33 @@ class HeartFChatting:
self._current_cycle_detail.end_time = time.time() self._current_cycle_detail.end_time = time.time()
def _handle_energy_completion(self, task: asyncio.Task): def _handle_energy_completion(self, task: asyncio.Task):
if exception := task.exception(): """处理能量循环任务的完成"""
logger.error(f"{self.log_prefix} HeartFChatting: 能量循环异常: {exception}") if task.cancelled():
logger.error(traceback.format_exc()) 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: else:
logger.info(f"{self.log_prefix} HeartFChatting: 能量循环完成") # 仍然以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): async def _energy_loop(self):
while self.running: while self.running:
@@ -298,7 +324,7 @@ class HeartFChatting:
if self.last_action == "no_reply": if self.last_action == "no_reply":
if not await self._execute_no_reply(recent_messages_dict): if not await self._execute_no_reply(recent_messages_dict):
self.energy_value -= 0.3 / global_config.chat.focus_value self.energy_value -= 0.3 / global_config.chat.focus_value
logger.info(f"{self.log_prefix} 能量值减少,当前能量值:{self.energy_value:.1f}") self._log_energy_change("能量值减少")
await asyncio.sleep(0.5) await asyncio.sleep(0.5)
return True return True
@@ -306,7 +332,7 @@ class HeartFChatting:
if await self._observe(): if await self._observe():
self.energy_value += 1 / global_config.chat.focus_value self.energy_value += 1 / global_config.chat.focus_value
logger.info(f"{self.log_prefix} 能量值增加,当前能量值:{self.energy_value:.1f}") self._log_energy_change("能量值增加")
if self.energy_value <= 1: if self.energy_value <= 1:
self.energy_value = 1 self.energy_value = 1
@@ -335,11 +361,12 @@ class HeartFChatting:
if if_think: if if_think:
factor = max(global_config.chat.focus_value, 0.1) factor = max(global_config.chat.focus_value, 0.1)
self.energy_value *= 1.1 * factor self.energy_value *= 1.1 * factor
logger.info(f"{self.log_prefix} 进行了思考,能量值按倍数增加,当前能量值:{self.energy_value:.1f}") self._log_energy_change("进行了思考,能量值按倍数增加")
else: else:
self.energy_value += 0.1 * global_config.chat.focus_value self.energy_value += 0.1 * global_config.chat.focus_value
logger.debug(f"{self.log_prefix} 没有进行思考,能量值线性增加,当前能量值:{self.energy_value:.1f}") self._log_energy_change("没有进行思考,能量值线性增加")
# 这个可以保持debug级别因为它是总结性信息
logger.debug(f"{self.log_prefix} 当前能量值:{self.energy_value:.1f}") logger.debug(f"{self.log_prefix} 当前能量值:{self.energy_value:.1f}")
return True return True

View File

@@ -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