Commit Graph

144 Commits

Author SHA1 Message Date
LuiKlee
8f77465bc3 ruff 2025-12-13 16:39:25 +08:00
Windpicker-owo
ef0c569348 fix(query_builder): 优化分页查询逻辑,确保字段可用后再释放数据库连接 2025-12-11 21:50:28 +08:00
雅诺狐
c870af768d fix(redis):更新Redis连接池初始化,以兼容redis-py 7.x版本
更新Redis连接池创建方式,使用connection_class参数替代已弃用的ssl参数,以适配redis-py 7.x及以上版本
2025-12-10 15:06:01 +08:00
Windpicker-owo
487e49c1c1 refactor(engine): 移除SQLite和PostgreSQL配置中的查询缓存禁用设置以优化性能 2025-12-09 22:03:52 +08:00
Windpicker-owo
ceee6f38d5 feat(statistic): 延迟统计任务启动时间和运行间隔以优化性能
fix(engine): 禁用 SQLAlchemy 查询编译缓存以防止 tuple 膨胀

fix(message_repository): 优化日志输出格式以提高可读性
2025-12-09 21:44:56 +08:00
Windpicker-owo
fa9b0b3d7e feat(database): 优化消息查询和计数逻辑,增加安全限制以防内存暴涨 2025-12-09 17:35:23 +08:00
雅诺狐
a6aad8b8ea Revert "fix(redis): 添加Redis缓存模块导入异常处理"
This reverts commit f76cf36bae.
2025-12-09 13:52:42 +08:00
Windpicker-owo
f76cf36bae fix(redis): 添加Redis缓存模块导入异常处理 2025-12-08 20:54:23 +08:00
Windpicker-owo
094861e6b7 Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox-Core into dev 2025-12-08 18:11:33 +08:00
Windpicker-owo
b5e7f6313f fix(sqlite): 调整busy_timeout设置为10秒以减少锁定错误 2025-12-08 18:11:23 +08:00
Windpicker-owo
7c2843de64 feat(postgresql): 增强PostgreSQL会话级性能优化配置 2025-12-08 18:08:37 +08:00
雅诺狐
87bd071ced Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox-Core into dev 2025-12-08 17:44:00 +08:00
雅诺狐
da27c865d0 引入Redis 2025-12-08 17:42:57 +08:00
Windpicker-owo
01bcfb491a Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox-Core into dev 2025-12-08 17:19:33 +08:00
Windpicker-owo
a1d60ab026 启用数据库预加载器,清理日志 2025-12-08 17:17:53 +08:00
雅诺狐
3edcc9d169 ruff 2025-12-08 15:48:40 +08:00
Windpicker-owo
fbc37bbcaf refactor(logging): 简化日志记录,移除冗余调试信息
delete(connection_pool): 移除连接池管理器相关代码
2025-12-07 15:19:12 +08:00
Windpicker-owo
06a45b3639 refactor: 移除对 MySQL 的支持,更新文档和配置以仅支持 SQLite 和 PostgreSQL 2025-12-04 23:30:43 +08:00
tt-P607
2671a6e7e5 feat(profile):对用户关系和分析系统进行重构,采用结构化数据和异步更新
此提交完全重写了用户关系和分析系统,创建了一个更强大、详细和响应式的框架。旧系统已被弃用,取而代之的是一个集中式的`UserRelationships`模型。

主要变更:

1.  ‌**增强数据库模型(`UserRelationships`):**‌
    - 添加`impression_text`用于长期、叙述式印象。
    - 引入`key_facts`(JSON)存储结构化数据如生日、工作和位置。
    - 添加`relationship_stage`跟踪关系进展(如陌生人、朋友、挚友)。
    - 添加`first_met_time`和`last_impression_update`的时间戳。

2.  ‌**重设计`UserProfileTool`:**‌
    - 工具的用途被限定为仅捕捉重要新信息,防止用于小聊。
    - 更新现在在后台异步处理,确保机器人回复不被延迟。
    - 引入`key_info_type`和`key_info_value`参数供LLM提交结构化事实。

3.  ‌**复杂的印象和情感逻辑:**‌
    - 关系追踪LLM现在分析最近聊天历史生成更丰富、更上下文的印象。
    - 用渐进的`affection_change`(最大±0.03)取代直接情感分数设置,使关系发展更真实。

4.  ‌**数据源整合:**‌
    - `RelationshipFetcher`重构为仅依赖`UserRelationships`表作为唯一数据源。
    - 简化`get_user_relationship` API并移除其缓存,确保分析的实时数据访问。

破坏性变更:`UserProfileTool`已重设计,新增参数(`key_info_type`、`key_info_value`)并改变用途。移除`affection_score`参数。此外,`get_user_relationship`数据库API签名简化为仅接受`user_id`。
2025-12-03 16:53:40 +08:00
Windpicker-owo
bcdd987e4c feat(statistic): 优化内存使用,添加分批查询和统计处理上限
feat(typo_generator): 实现单例模式以复用拼音字典和字频数据
feat(query): 添加分批迭代获取结果的功能,优化内存使用
2025-12-02 12:45:10 +08:00
拾风
28c54dbec6 Merge branch 'dev' into feature/kfc 2025-12-01 16:06:47 +08:00
Windpicker-owo
fc85338d0b feat: 更新消息管理和数据库操作日志,增强调试信息 2025-11-30 15:13:01 +08:00
ikun-11451
acafc074b1 依旧修pyright喵喵喵~ 2025-11-29 22:20:55 +08:00
ikun-11451
72e7492953 依旧修pyright喵~ 2025-11-29 21:26:42 +08:00
Windpicker-owo
2bd7e93af7 fix: 更新数据库会话管理,确保事务在正常退出时自动提交,并在异常时安全回滚 2025-11-28 13:24:41 +08:00
Windpicker-owo
3538716515 fix: 更新版本号至 0.13.0,增强数据库迁移功能,注册通知事件处理 2025-11-27 22:37:50 +08:00
Windpicker-owo
43483b934e feat: 更新机器人配置并添加数据库迁移脚本
- 将bot_config_template.toml中的版本升级至7.9.0
- 增强数据库配置选项以支持PostgreSQL
- 引入一个新脚本,用于在SQLite、MySQL和PostgreSQL之间迁移数据
- 实现一个方言适配器,用于处理特定于数据库的行为和配置
2025-11-27 18:45:01 +08:00
Windpicker-owo
0908fb50a0 优化日志 2025-11-26 21:16:16 +08:00
Windpicker-owo
6ecf5a36f2 增强聊天管理器和数据库API,添加自动注册和异步清理功能,优化模型转换为字典的逻辑 2025-11-20 16:48:18 +08:00
Windpicker-owo
03c80a08fb 优化缓存条目大小估算,添加向量存储标记,清理待处理消息逻辑 2025-11-20 12:17:43 +08:00
拾风
0cb51674b0 Potential fix for code scanning alert no. 26: Use of a broken or weak cryptographic hashing algorithm on sensitive data
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2025-11-13 21:04:02 +08:00
拾风
589256aff5 Potential fix for code scanning alert no. 15: Use of a broken or weak cryptographic hashing algorithm on sensitive data
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2025-11-13 20:54:42 +08:00
minecraft1024a
e1622ca6be refactor(config): 移除废弃的数据库配置模块
旧的数据库配置模块 `src/common/database/config` 已被完全移除。该模块已被标记为废弃,其功能已统一整合到 `global_config` 中。

本次重构旨在:
- 简化代码库,消除冗余和过时的文件。
- 统一配置管理,提高可维护性。

此外,对 `AttentionOptimizer` 中的类变量添加了 `ClassVar` 类型注解,以增强代码的清晰度和类型安全性。
2025-11-13 12:51:42 +08:00
minecraft1024a
0e1e9935b2 style: 统一代码风格并采用现代化类型注解
对整个代码库进行了一次全面的代码风格清理和现代化改造,主要包括:

- 移除了所有文件中多余的行尾空格。
- 将类型提示更新为 PEP 585 和 PEP 604 引入的现代语法(例如,使用 `list` 代替 `List`,使用 `|` 代替 `Optional`)。
- 清理了多个模块中未被使用的导入语句。
- 移除了不含插值变量的冗余 f-string。
- 调整了部分 `__init__.py` 文件中的 `__all__` 导出顺序,以保持一致性。

这些改动旨在提升代码的可读性和可维护性,使其与现代 Python 最佳实践保持一致,但未修改任何核心逻辑。
2025-11-12 12:49:40 +08:00
Windpicker-owo
d007b98f5c fix(cache-manager): 修复类型注解,使用Optional以提高代码可读性和一致性 2025-11-08 22:34:25 +08:00
Windpicker-owo
04c6c204e8 fix(cache-manager): 修复并行获取缓存统计信息和内存使用,避免死锁和重复计数
fix(scheduler): 改进调度任务的多阶段取消机制,彻底避免死锁风险
2025-11-08 22:17:12 +08:00
Windpicker-owo
98bfa05b96 feat(scheduler): 新增死锁检测器,改进任务取消机制,优化异步通知 2025-11-08 18:20:00 +08:00
Windpicker-owo
96dbb8fc55 fix(config): 增加缓存生存时间和最大内存占用限制 2025-11-08 11:03:01 +08:00
明天好像没什么
c8d7c09625 ruff 2025-11-07 21:01:45 +08:00
Windpicker-owo
eeb77e0e3c feat(emoji): 使用QueryBuilder优化数据库查询并启用缓存 2025-11-03 15:36:30 +08:00
Windpicker-owo
4e2b598164 feat(cache): 提升内存管理与监控能力
- 在CacheManager中添加健康监控系统,并提供详细的内存统计信息
- 使用新的memory_utils模块实现精确的内存估算
- 添加基于大小的缓存条目限制,以防止过大项目
- 通过去重内存计算优化缓存统计
- 在MultiLevelCache中添加过期条目的自动清理功能
- 增强批处理调度器缓存功能,支持LRU驱逐策略和内存追踪
- 更新配置以支持最大项目大小限制
- 添加全面的内存分析文档和工具

重大变更:CacheManager 的默认 TTL 参数现改为 None 而非 3600。数据库兼容层默认禁用缓存,以防止旧版代码过度使用缓存。
2025-11-03 15:18:00 +08:00
Windpicker-owo
99785d09ad feat(cache): 添加自定义TTL支持和内存限制配置 2025-11-02 13:25:39 +08:00
明天好像没什么
30658afdb4 ruff归零 2025-11-01 21:32:41 +08:00
明天好像没什么
cb97b2d8d3 rufffffff 2025-11-01 21:10:01 +08:00
Windpicker-owo
2aeb06f708 fix: 修复批处理中的多次commit问题,bulk_create后清除缓存 2025-11-01 17:31:31 +08:00
Windpicker-owo
029d133e48 fix(critical): 在session内部完成字典转换,彻底解决detached对象greenlet错误 2025-11-01 17:27:40 +08:00
Windpicker-owo
a352c69043 fix(critical): 修复SQLite事务未提交的严重bug - 在connection_pool.get_session()中添加自动commit 2025-11-01 17:19:05 +08:00
Windpicker-owo
a43ed42fb2 perf: 使用列表推导式替换循环 - 优化group_by性能 2025-11-01 17:07:11 +08:00
Windpicker-owo
cabaf74194 style: ruff自动格式化修复 - 修复180个空白行和格式问题 2025-11-01 17:06:40 +08:00
Windpicker-owo
d187174353 feat: 实现方案A - 缓存字典而非SQLAlchemy对象
核心改进:
- 添加 _model_to_dict() 和 _dict_to_model() 辅助函数
- CRUD.get/get_by/get_multi 现在缓存字典而非对象
- QueryBuilder.first/all 现在缓存字典而非对象
- 从缓存恢复时重建detached对象,所有字段已加载

优势:
- 彻底避免'not bound to Session'错误
- 缓存数据独立于Session生命周期
- 对象反序列化后所有字段可直接访问
- 提高缓存可靠性和数据可用性

技术细节:
- 缓存层存储纯字典数据(可序列化)
- 查询时在session内预加载所有列
- 返回前转换为字典并缓存
- 缓存命中时从字典重建对象
- 重建的对象虽然detached但所有字段已填充
2025-11-01 16:50:50 +08:00