明天好像没什么
cb97b2d8d3
rufffffff
2025-11-01 21:10:01 +08:00
Windpicker-owo
ce1c3288fd
fix: 修复数据库导入错误
...
- 修复12处从错误位置导入get_db_session/get_engine的问题
- 函数应从core导入,模型应从core.models导入
- 修复bot.py使用check_and_migrate_database代替不存在的initialize_database
影响文件:
- bot.py: 使用正确的初始化函数
- schedule_manager.py: 修复get_db_session导入
- relationship_service.py: 修复get_db_session导入
- schedule_api.py: 修复get_db_session导入
- utils.py (llm_models): 修复get_db_session导入
- utils_image.py: 修复get_db_session导入
- utils_video.py: 修复get_db_session导入
- user_ban.py: 修复get_db_session导入
- statistics.py: 修复get_db_session导入
- storage.py: 修复get_db_session导入
- anti_injector.py: 修复2处get_db_session导入
- permission_manager.py: 修复get_engine导入
2025-11-01 14:44:13 +08:00
Windpicker-owo
a1dc03cacc
refactor: 完成数据库重构 - 批量更新导入路径
...
- 更新35个文件的导入路径 (共65处修改)
- sqlalchemy_models core.models (模型类)
- sqlalchemy_database_api compatibility (兼容函数)
- database.database core (初始化/关闭函数)
- 添加自动化导入更新工具 (scripts/update_database_imports.py)
- 所有兼容性层测试通过 (26/26)
- 数据库核心功能测试通过 (18/21)
2025-11-01 14:22:54 +08:00
minecraft1024a
f2332eeb43
docs(schedule): 日程表管理器补上了注释
2025-11-01 10:55:41 +08:00
minecraft1024a
86ab01996d
feat(schedule): 优化日程提示并增加时间感知能力
...
日程系统现在可以更详细地描述当前活动,包括计划的起止时间、已进行时间和剩余时间,为AI角色提供更强的时间感知和情境感。
主要变更:
- `schedule_manager`的`get_current_activity`现在返回包含活动和时间范围的字典,而不仅仅是活动名称。
- 在`default_generator`中,重构了日程提示的生成逻辑,使其能够计算并展示活动的详细时间信息。
- 修复了多处可能因变量为空(如`msg_content`、`user_nickname`)或事件处理结果为`None`而引发的潜在错误。
- 统一了各处对日程信息的调用方式。
2025-10-12 12:57:48 +08:00
minecraft1024a
4db6a532fd
refactor(schedule): 优化日程生成日志输出
...
将月度计划的日志记录逻辑从 `plan_manager` 迁移到 `schedule_manager` 中,使其仅在生成日程并实际使用到月度计划时才打印相关信息,避免了不必要的日志输出。
- 从 `plan_manager` 中移除了获取月度计划后的日志打印。
- 在 `schedule_manager` 的日志函数中增加了对参考月度计划的展示,使日志内容更具上下文。
2025-10-11 18:52:15 +08:00
John Richard
7923eafef3
re-style: 格式化代码
2025-10-02 20:26:01 +08:00
雅诺狐
832743249d
refactor(db): 修正SQLAlchemy异步操作调用方式
...
移除session.add()方法的不必要await调用,修正异步数据库操作模式。主要变更包括:
- 将 `await session.add()` 统一改为 `session.add()`
- 修正部分函数调用为异步版本(如消息查询函数)
- 重构SQLAlchemyTransaction为完全异步实现
- 重写napcat_adapter_plugin数据库层以符合异步规范
- 添加aiomysql和aiosqlite依赖支持
2025-09-20 17:26:28 +08:00
雅诺狐
55717669dd
refactor(db): 将数据库操作异步化
...
- 将所有 session.add() 改为 await session.add()
- 将所有 session.commit() 改为 await session.commit()
- 将 session.refresh() 改为 await session.refresh()
2025-09-20 14:35:31 +08:00
雅诺狐
898208f425
perf(methods): 通过移除不必要的 self 参数优化方法签名
...
在包括 chat、plugin_system、schedule 和 mais4u 在内的多个模块中,消除冗余的实例引用。此次改动将无需访问实例状态的实用函数转换为静态方法,从而提升了内存效率,并使方法依赖关系更加清晰。
2025-09-20 10:55:06 +08:00
tt-P607
0cc4f5bb27
三次修改
2025-09-20 02:21:53 +08:00
minecraft1024a
1e2eb977bb
refactor(sleep): 解耦SleepManager与ScheduleManager的依赖关系
...
将日程表获取的逻辑从`SleepManager`转移到`TimeChecker`中,并使其直接从全局的`schedule_manager`实例获取日程,消除了`SleepManager`对日程表的直接管理责任。
这一重构简化了`SleepManager`的职责,使其更专注于睡眠状态的管理,同时提高了模块间的独立性。
- `SleepManager`不再持有`today_schedule`状态。
- `TimeChecker`现在直接从`schedule_manager`获取日程,不再依赖于`SleepManager`传递。
- 移除了`ScheduleManager`中对`sleep_manager`的引用和更新操作。
2025-09-07 12:28:15 +08:00
minecraft1024a
8e21502c31
refactor(sleep): 重构睡眠管理系统,移除桥接模式
...
将 `SleepManager` 从 `schedule_bridge` 中独立出来,使其成为一个自包含的组件。现在由 `HeartFChatting` 和 `ScheduleManager` 直接实例化和使用 `SleepManager`,移除了原有的全局单例桥接器。
主要变更:
- 删除了 `schedule_bridge.py`,其功能被直接整合到 `SleepManager` 和调用方中。
- `SleepManager` 内部逻辑被拆分为更小的模块,如 `TimeChecker`、`NotificationSender` 和 `SleepStateSerializer`,以提高内聚性和可测试性。
- `HeartFChatting` 现在直接创建并管理 `SleepManager` 实例,并通过 `HfcContext` 传递给其他需要的组件(如 `WakeUpManager`)。
- `ScheduleManager` 也创建自己的 `SleepManager` 实例来更新日程,简化了依赖关系。
- 简化了 `WakeUpManager` 中获取睡眠状态和重置状态的逻辑,直接通过上下文访问 `SleepManager`。
2025-09-06 12:16:11 +08:00
minecraft1024a
9bbf801bd9
feat(规划): 引入统一的规划系统并重构组件
...
本次提交引入了一个全新的统一规划系统,取代了独立的日程和月度计划模块。这一变更集中了配置并解耦了职责,以提高可维护性和清晰度。
核心逻辑现在被分解为专门的组件:
- PlanManager: 处理日常日程和月度目标的所有数据库交互,取代了已-删除的 monthly_plan_db.py。
- ScheduleLLMGenerator: 封装了与 LLM 交互以生成日程的逻辑,将此职责从 ScheduleManager 中移除。
- MonthlyPlanManager: 现在作为核心 PlanManager 的简化接口。
这次架构性的大修通过将数据持久化和 LLM 生成逻辑从主调度逻辑中抽象出来,简化了整体设计。
重大变更: bot_config.toml 中的配置已被迁移。移除了 [schedule] 和 [monthly_plan_system] 部分。所有相关设置现在必须在新的 [planning_system] 部分下进行配置。
2025-09-06 11:41:42 +08:00
minecraft1024a
f9b95c8881
refactor(sleep): 解耦ScheduleManager与SleepManager,引入桥接模式
...
为了降低模块间的耦合度并提升代码的可维护性,对睡眠管理系统进行了重构。
引入了`schedule_sleep_bridge`作为`ScheduleManager`和`SleepManager`之间的桥梁。`ScheduleManager`不再直接持有`SleepManager`的实例,而是通过桥接器更新其日程数据。`SleepManager`则通过桥接器获取所需的日程信息,实现了二者的解耦。
- **`ScheduleManager`**: 移除了所有与`SleepManager`直接交互的代码,现在只负责生成日程并通过桥接器发布。
- **`SleepManager`**: 构造函数和内部逻辑修改为依赖桥接器接口,而不是`ScheduleManager`实例。
- **`HeartFChatting`**: 更新了所有对睡眠状态管理的调用,使其通过新的`schedule_sleep_bridge`进行。
- **`DefaultReplyer`**: 采用了延迟导入的方式获取`schedule_manager`,减少了不必要的模块加载。
2025-09-06 10:08:31 +08:00
minecraft1024a
8074a1b082
refactor(sleep): 将睡眠和唤醒管理逻辑重构到独立的sleep_manager模块
...
将原先分散在 `chat/chat_loop` 和 `schedule` 目录下的 `WakeUpManager` 和 `SleepManager` 相关逻辑,统一移动并整合到新的 `src/chat/chat_loop/sleep_manager` 模块中。
这次重构旨在提高代码的模块化和内聚性,使睡眠相关的功能更加集中和易于管理。同时更新了所有相关的导入路径,以反映新的文件结构。
2025-09-05 21:51:55 +08:00
minecraft1024a
513757a8ee
chore: format code and remove redundant blank lines
...
This commit applies automated code formatting across the project. The changes primarily involve removing unnecessary blank lines and ensuring consistent code style, improving readability and maintainability without altering functionality.
2025-09-05 20:58:03 +08:00
minecraft1024a
0427d5cac1
refactor(schedule): 将日程生成转为后台异步任务
...
将即时日程生成的操作从直接调用修改为提交到异步任务管理器执行。这避免了在主流程中等待耗时较长的日程生成过程,改善了请求响应速度。
为此,新增了 `OnDemandScheduleGenerationTask` 类来封装按需生成日程的后台任务逻辑。
2025-08-31 13:11:45 +08:00
minecraft1024a
e2a2d102e0
refactor(schedule): 优化月度计划与日程的生成逻辑
...
将月度计划和每日日程的生成流程从异步非阻塞任务改为同步阻塞模式。这确保了在需要计划数据时,生成过程会先完成,从而避免了因数据未及时生成而导致的潜在问题。
主要变更:
- `ScheduleManager`: 在加载日程失败或数据不存在时,直接调用并等待日程生成,而不是创建一个后台任务。
- `ScheduleManager`: 当日程生成过程中发现月度计划不足时,会直接调用并等待月度计划生成完成,然后再继续。
- `MonthlyPlanManager`: 简化了生成逻辑,移除了原有的非阻塞触发方法 `trigger_generate_monthly_plans`,统一为同步执行的 `generate_monthly_plans`。
- `monthly_plan_db`: 在查询月度计划时增加了按创建时间降序排序,以支持更可靠地删除多余计划。
- `main.py`: 移除了对已不存在的 `ImportError` 的处理。
2025-08-31 13:06:06 +08:00
minecraft1024a
6b2e2d6373
refactor(schedule): 异步化月度计划生成以避免阻塞
...
将月度计划的生成过程从同步阻塞模式重构为异步非阻塞模式。
在 `ScheduleManager` 中,当月度计划耗尽时,现在会通过调用新的 `trigger_generate_monthly_plans` 方法来启动一个后台生成任务,而不是 `await` 其完成。这可以防止在生成新计划时(可能耗时较长)阻塞日常任务的调度流程。
同时,修复了 `MonthlyPlanManager` 中一个排序逻辑错误,确保在计划数量超出上限时,正确删除最旧的计划而不是最新的。
2025-08-30 12:01:04 +08:00
minecraft1024a
1bad63fcbd
ruff ci
2025-08-29 18:34:13 +08:00
minecraft1024a
35db4c5d91
refactor(schedule): 将睡眠状态管理逻辑重构并迁移到SleepManager
...
将原先分散在 `ScheduleManager` 中的睡眠状态机逻辑(包括状态判断、转换、持久化等)抽取并封装到一个新的 `SleepManager` 类中。
这次重构的主要目的如下:
- **职责分离**: `ScheduleManager` 的核心职责是管理日程的生成和查询,而睡眠状态的管理是一个独立的、复杂的逻辑单元。将其分离可以使两个类的职责更单一、代码更清晰。
- **可维护性**: 将所有与睡眠相关的状态和逻辑集中到 `SleepManager` 中,使得未来对睡眠功能的修改和扩展更加容易,减少了对 `ScheduleManager` 的影响。
- **代码简化**: `ScheduleManager` 不再需要管理内部的睡眠状态变量(如 `_current_state`, `_sleep_buffer_end_time` 等),而是通过委托 `sleep_manager` 实例来处理,简化了其内部实现。
相应的,`HfcContext` 中冗余的睡眠相关状态(如 `is_in_insomnia`)也被移除,统一由 `SleepManager` 管理。其他模块(如 `HeartFChatting`, `WakeUpManager`)对睡眠状态的调用也已更新为通过 `schedule_manager.sleep_manager` 或其代理方法进行。
2025-08-29 18:17:16 +08:00
minecraft1024a
41565eb144
refactor(schedule): 重构睡眠系统为状态机模型
...
将原有的睡眠、失眠、唤醒等分散的布尔标记逻辑重构为一个统一的睡眠状态机(SleepState),以提高代码的可读性、可维护性和可扩展性。
主要变更:
- 引入 `SleepState` 枚举,包含 `AWAKE`, `INSOMNIA`, `PREPARING_SLEEP`, `SLEEPING`, `WOKEN_UP` 状态。
- 在 `ScheduleManager` 中实现 `_update_sleep_state` 作为核心状态机,统一管理所有状态转换。
- 将原有的失眠判断逻辑从 `WakeUpManager` 移至 `ScheduleManager` 的状态机内部,与弹性睡眠决策合并,简化了模块职责。
- `heartFC_chat.py` 中的聊天循环现在直接查询 `ScheduleManager` 的当前状态,而不是处理多个独立的布尔值,使逻辑更清晰。
- 删除了 `WakeUpManager` 中与失眠相关的配置和方法,因为它现在由 `ScheduleManager` 统一管理。
- 删除了配置中已废弃的 `enable_is_sleep` 选项。
2025-08-29 17:40:22 +08:00
minecraft1024a
eb1feeeb0b
refactor(cache): 重构工具缓存机制并优化LLM请求重试逻辑
...
将工具缓存的实现从`ToolExecutor`的装饰器模式重构为直接集成。缓存逻辑被移出`cache_manager.py`并整合进`ToolExecutor.execute_tool_call`方法中,简化了代码结构并使其更易于维护。
主要变更:
- 从`cache_manager.py`中移除了`wrap_tool_executor`函数。
- 在`tool_use.py`中,`execute_tool_call`现在包含完整的缓存检查和设置逻辑。
- 调整了`llm_models/utils_model.py`中的LLM请求逻辑,为模型生成的空回复或截断响应增加了内部重试机制,增强了稳定性。
- 清理了项目中未使用的导入和过时的文档文件,以保持代码库的整洁。
2025-08-28 20:10:32 +08:00
tt-P607
829ff4cd4f
feat(sleep): 实现睡眠唤醒与重新入睡机制
...
引入了更完善的睡眠唤醒和重新入睡逻辑,以处理在睡眠期间被消息打扰的情况。
- **唤醒机制**: 当在睡眠时间内收到消息并达到唤醒阈值时,角色会被唤醒并进入愤怒状态。唤醒后,将保持清醒状态处理消息,而不是立即重新入睡。
- **状态持久化**: 新增 `_is_woken_up` 状态到 `schedule_manager`,并将其持久化,以确保在重启后能记住唤醒状态。
- **重新入睡**: 如果角色被吵醒后,在配置的一段时间内(`re_sleep_delay_minutes`)没有收到新消息,系统将自动尝试重新进入睡眠状态,以模拟更自然的行为。
- **上下文同步**: 在唤醒时,`wakeup_manager` 会通知 `schedule_manager` 更新其内部状态,确保系统各模块之间的睡眠状态一致。
2025-08-28 08:48:19 +08:00
tt-P607
910b0db5d2
feat(core): 实现HFC及睡眠状态的持久化
...
将HFC上下文、唤醒管理器和日程管理器的核心状态保存到本地存储,并在程序启动时加载。这确保了角色的能量、睡眠压力、唤醒度、失眠状态和弹性睡眠进度在重启后能够恢复,增强了长期运行的连续性和稳定性。
主要变更:
- **HfcContext**: 增加状态的加载与保存逻辑,持久化能量、睡眠压力和失眠状态。
- **WakeupManager**: 增加状态的加载与保存逻辑,持久化唤醒度及愤怒状态。
- **ScheduleManager**: 增加弹性睡眠状态的加载与保存逻辑,持久化“准备入睡”及延迟睡眠的状态。
- **HeartFChatting**: 在主循环中调用保存HFC上下文状态的方法。
- 调整了失眠和唤醒逻辑,以更好地与持久化状态和弹性睡眠机制协同工作。
2025-08-28 02:50:02 +08:00
tt-P607
f34be9728a
feat(schedule): 引入弹性睡眠与睡前通知机制
...
新增了弹性睡眠功能,使AI的入睡行为更加自然。AI现在会根据睡眠压力决定是否延迟入睡,而不是严格按日程表时间立即休眠。
主要更新包括:
- **弹性睡眠逻辑**: 在进入理论睡眠时间时,会有一段5-10分钟的准备缓冲期。如果睡眠压力低于阈值,AI会推迟入睡,以增加互动时间。
- **睡前通知**: 在决定入睡后,AI可以自动向指定群组发送晚安消息。
- **配置选项**: 在配置文件中增加了相关选项,允许用户启用/禁用这些功能,并自定义睡眠压力阈值、最大延迟时间、通知群组和提示词。
- **代码重构**: 对 `is_sleeping` 方法进行了重构,将其拆分为理论睡眠时间判断和核心弹性逻辑,提高了代码的可读性和可维护性。
2025-08-28 00:45:30 +08:00
minecraft1024a
d06cfe3a36
refactor(schedule): 重构日程与月度计划管理模块
...
将 `schedule_manager` 和 `monthly_plan_manager` 从 `src/manager` 移动到 `src/schedule` 目录,以更好地组织与日程和计划相关的功能。
主要变更:
- 将 `schedule_manager` 和 `monthly_plan_manager` 移动到新的 `src/schedule` 目录。
- 更新了所有对这两个模块的导入路径,以反映新的文件位置。
- 删除了旧的 `src/manager` 目录下的模块文件。
- `monthly_plan_manager` 内部实现被重构,取代了原有的 `plan_generator.py`,简化了计划生成逻辑。
2025-08-27 19:46:01 +08:00