refactor(context): 将能量值和睡眠压力状态持久化到数据库

将HFC上下文中的能量值(energy_value)和睡眠压力(sleep_pressure)的状态管理从本地文件存储(local_storage)迁移到主数据库。

这一重构的主要改动包括:
- 在`ChatStreams`数据库模型中添加`energy_value`和`sleep_pressure`字段。
- 更新`ChatStream`类,使其能够加载和保存这两个新字段。
- 移除`HfcContext`中原有的基于`local_storage`的加载和保存逻辑,改为直接通过`ChatStream`实例进行状态读写。
- 在`EnergyManager`中,每当能量或睡眠压力发生变化时,调用`save_context_state()`方法,确保状态能够实时持久化。

此举统一了应用的状态管理方式,提高了数据的可靠性和一致性,并为后续在多实例或分布式环境下部署应用奠定了基础。
This commit is contained in:
minecraft1024a
2025-08-31 13:32:05 +08:00
parent 0427d5cac1
commit d19f211461
4 changed files with 22 additions and 30 deletions

View File

@@ -102,6 +102,7 @@ class EnergyManager:
self.context.sleep_pressure -= decay_per_10s
self.context.sleep_pressure = max(self.context.sleep_pressure, 0)
self._log_sleep_pressure_change("睡眠压力释放")
self.context.save_context_state()
else:
# 清醒时:处理能量衰减
is_group_chat = self.context.chat_stream.group_info is not None
@@ -122,6 +123,7 @@ class EnergyManager:
self.context.energy_value = max(self.context.energy_value, 0.3)
self._log_energy_change("能量值衰减")
self.context.save_context_state()
def _should_log_energy(self) -> bool:
"""
@@ -149,6 +151,7 @@ class EnergyManager:
self.context.sleep_pressure += increment
self.context.sleep_pressure = min(self.context.sleep_pressure, 100.0) # 设置一个100的上限
self._log_sleep_pressure_change("执行动作,睡眠压力累积")
self.context.save_context_state()
def _log_energy_change(self, action: str, reason: str = ""):
"""