Commit Graph

27 Commits

Author SHA1 Message Date
minecraft1024a
8a8d2ed574 refactor(memory): 重构向量记忆清理逻辑以提高稳定性
原有的清理逻辑直接使用 delete 和 where 条件(timestamp: {"$lt": ...})来删除过期记录。然而,ChromaDB 对元数据中复杂的查询操作符(如 $lt)的支持并不可靠。

为确保过期记录能被稳定地清除,本次提交将清理策略修改为更稳健的“获取-过滤-删除”模式:

1.  为向量数据库抽象层新增 `get` 方法,并为 ChromaDB 提供具体实现。
2.  在 `VectorInstantMemoryV2` 中,先获取指定聊天的所有记录。
3.  在应用代码中根据时间戳筛选出过期的记录ID。
4.  最后根据ID列表精确删除过期记录,确保了清理操作的准确性。
2025-08-27 21:40:03 +08:00
minecraft1024a
4ced72010b feat(core): 集成统一向量数据库服务并重构相关模块
本次提交引入了一个统一的、可扩展的向量数据库服务层,旨在解决代码重复、实现分散以及数据库实例泛滥的问题。

主要变更:

新增向量数据库抽象层:

在 src/common/vector_db/ 目录下创建了 VectorDBBase 抽象基类,定义了标准化的数据库操作接口。
创建了 ChromaDBImpl 作为具体的实现,并采用单例模式确保全局只有一个数据库客户端实例。
重构语义缓存 (CacheManager):

移除了对 chromadb 库的直接依赖。
改为调用统一的 vector_db_service 来进行向量的添加和查询操作。
重构瞬时记忆 (VectorInstantMemoryV2):

彻底解决了为每个 chat_id 创建独立数据库实例的问题。
现在所有记忆数据都存储在统一的 instant_memory 集合中,并通过 metadata 中的 chat_id 进行数据隔离和查询。
新增使用文档:

在 docs/ 目录下添加了 vector_db_usage_guide.md,详细说明了如何使用新的 vector_db_service 代码接口。
带来的好处:

高内聚,低耦合: 业务代码与具体的向量数据库实现解耦。
易于维护和扩展: 未来可以轻松替换或添加新的向量数据库支持。
性能与资源优化: 整个应用共享一个数据库连接,显著减少了文件句柄和内存占用
2025-08-27 19:18:28 +08:00
minecraft1024a
be114223b4 fix(memory_system): 修复即时记忆的 orjson 编码与解码问题
`orjson.dumps` 返回 `bytes` 类型,在存入数据库前需要解码为 `str`。

同时,将关键词的反序列化库从标准 `json` 统一为 `orjson`,以保持序列化和反序列化操作的一致性。
2025-08-27 18:01:12 +08:00
雅诺狐
dec88bf20d Update instant_memory.py 2025-08-27 12:09:14 +08:00
Furina-1013-create
434c174dcc chore(deps): 导入 json 模块 2025-08-27 10:00:52 +08:00
minecraft1024a
1e037e5ce9 feat(maizone): 新增QQ空间互通组功能,根据聊天上下文生成说说
引入了全新的“QQ空间互通组”功能。用户可以配置多个群聊为一个互通组。
在通过指令发布说说时,系统会自动获取这些群聊的近期聊天记录作为上下文,从而生成与当前讨论话题更相关的说说内容。

- 在 `config.toml` 中新增了 `[maizone_intercom]` 配置项用于定义互通组。
- 重构并增强了动态(说说)的拉取逻辑,提高了对不同数据格式的兼容性和解析的稳定性。
- 对项目中的多个文件进行了代码清理,移除了未使用的导入,使代码更加整洁。
2025-08-26 20:20:54 +08:00
雅诺狐
0e815779b7 Merge branch 'master' of https://github.com/MaiBot-Plus/MaiMbot-Pro-Max 2025-08-26 14:20:32 +08:00
雅诺狐
4a44ba9866 全面更换orjson 2025-08-26 14:20:26 +08:00
tt-P607
e5d6b6979b fix(chat): 修复关键词非列表形式时导致的解析错误
在处理记忆关键词时,旧代码使用 `ast.literal_eval` 来解析存储为字符串的关键词列表。当关键词字段为空或格式不正确时,这会引发 `ValueError` 或 `SyntaxError`。

本次修改将解析方式更换为 `json.loads`,并增加了 `try-except` 块来处理可能的 `json.JSONDecodeError`。同时,在添加记忆时,使用 `json.dumps` 来确保关键词列表被正确地序列化为 JSON 字符串,从而保证了数据存储和读取的健壮性和一致性。
2025-08-26 12:07:30 +08:00
雅诺狐
f308adcf5b refactor: 清理代码质量和移除未使用文件
- 移除未使用的导入语句和变量
- 修复代码风格问题(空格、格式化等)
- 删除备份文件和测试文件
- 改进异常处理链式调用
- 添加权限系统数据库模型和配置
- 更新版本号至6.4.4
- 优化SQL查询使用正确的布尔表达式
2025-08-24 22:11:20 +08:00
minecraft1024a
11eceb6b90 refactor: 移除未使用的导入和优化代码风格
本次提交主要包含以下代码重构和风格优化:
- 从多个文件中移除了未被使用的导入,例如 `Dict`, `Any`, `List`, `os`, `threading` 等,以保持代码的整洁性。
- 统一了测试脚本中的输出格式,移除了不必要的 f-string,使代码更加简洁。
- 清理了部分冗余的类型提示,提升了代码的可读性。
2025-08-22 14:19:21 +08:00
minecraft1024a
822491abd5 feat(memory): 增加瞬时记忆系统的独立开关
在配置文件中为基于LLM的瞬时记忆和基于向量的瞬时记忆增加了独立的启用开关。这允许用户根据需要更灵活地控制每种记忆类型。

同时,将记忆系统初始化日志的级别从DEBUG提升到INFO,使其在默认配置下可见,便于问题排查。
2025-08-22 14:08:07 +08:00
minecraft1024a
d67a831eb4 feat(memory): 实现瞬时记忆系统的延迟加载和按需初始化
引入了对LLM和向量瞬时记忆系统的延迟初始化机制。现在,只有在实际需要存储或检索记忆时,才会触发相应记忆系统的初始化过程。

此项改动优化了应用的启动性能,避免了不必要的资源预加载。同时,新增了独立的配置开关,允许用户根据需求分别启用或禁用LLM和向量记忆模块,提供了更灵活的配置选项。
2025-08-22 14:07:49 +08:00
Furina-1013-create
60eaef6b20 移除多余的测试文件 2025-08-22 13:49:20 +08:00
Furina-1013-create
980221d589 异步记忆系统优化 & Action组件修复
主要改进:
1. 异步记忆系统优化 - 解决记忆操作阻塞主程序问题
   - 新增异步记忆队列管理器 (async_memory_optimizer.py)
   - 新增异步瞬时记忆包装器 (async_instant_memory_wrapper.py)
   - 优化主程序记忆构建任务为后台非阻塞执行
   - 优化消息处理器记忆调用,增加超时保护和回退机制

2. Action组件修复 - 解决'未找到Action组件: no_reply'问题
   - 修复no_reply动作激活类型配置错误
   - 新增reply回退动作 (reply.py)
   - 增强planner.py动作选择回退机制
   - 增强cycle_processor.py动作创建回退机制
2025-08-22 13:16:19 +08:00
雅诺狐
f8ba0d0e43 Refactor web search plugin and clean up code
Refactored the web search plugin by removing the old Bing search implementation and reorganizing the plugin structure. Introduced modular search engine classes under 'web_search_tool/engines' and utility tools under 'web_search_tool/tools' and 'web_search_tool/utils'. Updated references and initialization logic to support multiple search engines and improved maintainability. Also performed minor code cleanups and replaced 'except ...: pass' with 'except ...: ...' for brevity.
2025-08-21 23:42:16 +08:00
minecraft1024a
756f8e5dc3 feat(chat): 实现可配置的主动思考范围并优化逻辑
- 将主动思考的prompt移至代码内部,并区分私聊和群聊场景。
- 增加`The_scope_that_proactive_thinking_can_trigger`配置项,允许用户将主动思考限制在“全部”、“私聊”或“群聊”范围。
- 删除了旧的`proactive_thinking_prompt_template`配置。
- 优化了主动思考的触发条件,现在会根据新的范围配置进行检查。
- 清理了代码中多余的空行和未使用的导入。
2025-08-20 11:27:37 +08:00
minecraft1024a
0364c38152 refactor(memory): 移除混合记忆模型,全面转向向量化瞬时记忆
删除了 `HybridInstantMemory` 模块及其复杂的策略判断、同步和检索逻辑。此举旨在简化记忆系统的架构,统一采用 `VectorInstantMemoryV2` 作为唯一的瞬时记忆解决方案。(虽然我也不知道效果好不好反正先转了再说,因为基于大模型的瞬时记忆有那么一点点慢)
2025-08-19 20:15:42 +08:00
minecraft1024a
f2c46d0d1d refactor(memory): 重构瞬时记忆为全量向量化存储模型
新系统采用“全量存储,定时清理”的设计理念,将所有聊天消息向量化并存入ChromaDB。通过后台线程定时清理过期消息,取代了之前基于“重要性模式”判断是否记忆的复杂逻辑。

主要变更:
- **全量存储**: 不再进行前置判断,所有消息均被向量化存储,简化了记忆创建流程。
- **定时清理**: 引入基于`threading`的后台任务,根据设定的`retention_hours`自动清理过期记忆,确保系统轻量高效。
- **简化检索**: 检索逻辑更新为直接查询相似消息,并增加了相似度阈值过滤和时间差格式化,提高了上下文的准确性和可读性。

在 `DefaultReplyer` 中,已切换至新的 `HybridInstantMemory`(其底层实现为V2),并优化了记忆上下文的构建逻辑,使其能更稳定地处理不同类型的记忆返回结果。
2025-08-19 19:56:56 +08:00
minecraft1024a
ac542f1e71 feat(memory): 引入基于向量的瞬时记忆系统
用基于 ChromaDB 和向量相似度的新瞬时记忆系统取代了原有的实现。此更改旨在提高记忆创建和检索的准确性和相关性。

主要变更:
- **向量化重要性判断**: 放弃了原有的 LLM 判断方法,通过将聊天记录与预定义的“重要性模式”进行向量相似度比较,来决定是否创建记忆。
- **高效去重**: 在存储新记忆之前,通过向量相似度检查,有效避免了内容重复。
- **精准检索**: 利用向量搜索,根据用户当前输入检索最相关的记忆,提高了上下文的连贯性。
- **双重存储**: 为了保持系统兼容性,记忆同时存储在 ChromaDB 向量数据库和现有的 SQLAlchemy 数据库中。
- **代码集成**: 在 `DefaultReplyer` 中将 `InstantMemory` 的实现切换为新的 `VectorInstantMemory`。
2025-08-19 18:48:10 +08:00
雅诺狐
1405b50d5a Refactor config system to use Pydantic validation
Refactored configuration classes to inherit from a new ValidatedConfigBase using Pydantic for robust validation and error reporting. Updated api_ada_configs.py, config.py, config_base.py, and official_configs.py to replace dataclasses with Pydantic models, add field validation, and improve error messages. This change enhances configuration reliability and developer feedback for misconfigurations. Also includes minor code cleanups and removal of unused variables in other modules.
2025-08-19 15:33:43 +08:00
雅诺狐
d46d689c43 数据库重构 2025-08-16 23:43:45 +08:00
Furina-1013-create
f4968c5751 炸飞Breaking形式并顺手修了一个数据库的小bug 2025-08-14 22:34:44 +08:00
雅诺狐
fe97d897ef 优化项目结构,格式化代码 2025-08-13 09:49:39 +08:00
minecraft1024a
0a726ede55 修正Hippocampus类中的文档注释,更新关键词相关性计算逻辑,确保相似度计算基于关键词列表而非文本。同时,修复ParahippocampalGyrus类中获取边缘数据的逻辑,确保在未找到最后修改时间时使用当前时间。 2025-08-12 15:11:57 +08:00
Navinatte
194465830d 修复记忆整合功能错误喵~
- 修复 AttributeError: 'ParahippocampalGyrus' object has no attribute 'operation_consolidate_memory'的错误喵
~
- 将 consolidate_memory 方法中的调用改为使用存在的 operation_build_memory 方法了喵~

这里是修改的文件喵~:
- src/chat/memory_system/Hippocampus.py: 更正方法调用
2025-08-11 22:48:24 +08:00
雅诺狐
2d4745cd58 初始化 2025-08-11 19:34:18 +08:00