Commit Graph

72 Commits

Author SHA1 Message Date
Windpicker-owo
d7ab785ced 删除无用文档和测试文件 2025-12-13 20:50:19 +08:00
LuiKlee
9a0163d06b 优化消息管理 2025-12-13 20:19:11 +08:00
LuiKlee
170832cf09 优化喵( 2025-12-13 18:36:10 +08:00
minecraft1024a
cdd3f82748 test 2025-12-13 12:39:42 +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
Eric-Terminal
2348dc1082 feat: 集成 AWS Bedrock 支持
- 新增 BedrockClient 客户端实现,支持 Converse API
- 支持两种认证方式:IAM 凭证和 IAM 角色
- 支持对话生成、流式输出、工具调用、多模态、文本嵌入
- 添加配置模板和完整文档
- 更新依赖:aioboto3, botocore
2025-12-06 17:26:40 +08:00
Windpicker-owo
06a45b3639 refactor: 移除对 MySQL 的支持,更新文档和配置以仅支持 SQLite 和 PostgreSQL 2025-12-04 23:30:43 +08:00
tt-P607
659a8e0d78 refactor(api, chat): 改进异步处理并解决并发问题
内存可视化器 API 端点之前在异步路由中执行同步的阻塞操作(文件 I/O、数据处理)。在处理大型图文件时,这可能导致服务器冻结。现在,这些任务已被移至 ThreadPoolExecutor,从而使 API 非阻塞并显著提高响应速度。

在聊天消息管理器中,竞争条件可能导致消息处理重叠或中断后数据流停滞。此提交引入了:
- 并发锁(`is_chatter_processing`)以防止流循环同时运行多个 chatter 实例。
- 故障保护机制,在中断时重置处理状态,确保数据流能够恢复并正确继续。
2025-12-02 14:40:58 +08:00
拾风
28c54dbec6 Merge branch 'dev' into feature/kfc 2025-12-01 16:06:47 +08:00
tt-P607
f4c31ddce7 feat(scripts): 增强数据库迁移工具,支持自动修复 PostgreSQL 问题
- 新增 fix_postgresql_boolean_columns(): 自动将 SQLite INTEGER 布尔列转换为 PostgreSQL BOOLEAN
- 新增 fix_postgresql_sequences(): 迁移后自动重置序列值,避免主键冲突
- 迁移完成后自动执行上述修复,无需手动干预
- 批量插入失败时自动降级为逐行插入,最大程度保留数据
- 新增 --only-tables 和 --no-create-tables 参数支持增量迁移
- 移除 reset_pg_sequences.py(功能已整合到主脚本)
2025-11-30 20:45:23 +08:00
minecraft1024a
06b4b7e4b9 feat(log_viewer): 添加日志查看器功能,支持实时查看、搜索和筛选日志 2025-11-30 12:13:35 +08:00
ikun-11451
311a161941 喵呜!修好了好多 Pyright 的报错捏~ 🐾
主人主人,猫猫把代码里的红红的报错都赶跑啦!
1. memory_visualizer_router.py: 把 load_graph_data_from_file 变成异步的啦,这样就不会卡住咯~
2. message_router.py: 加上了 global_config 的检查,不会再因为空空的配置摔倒啦!
3. emoji_manager.py: 修复了好多类型转换的问题,还加上了配置检查,表情包系统更稳定了捏!
4. energy_manager.py: 能量计算器的类型也修好啦,统计数据不会再打架了~

代码现在变得干干净净的,猫猫是不是很棒?快摸摸头!🐱💕
2025-11-29 20:03:29 +08:00
Windpicker-owo
ac017986fd feat: 添加重置 PostgreSQL 序列值的脚本,自动检测并重置所有序列以避免主键冲突 2025-11-28 00:29:44 +08:00
Windpicker-owo
c9c6a11593 fix: 修复数据迁移中的事务处理,确保每张表的迁移在独立事务中进行 2025-11-28 00:08:51 +08:00
Windpicker-owo
86e04638a2 fix: 移除迁移数据中的 NUL 字符并记录警告 2025-11-27 23:18:05 +08:00
Windpicker-owo
25571bf0ec fix: 修复返回的 embedding 为空时的处理逻辑 2025-11-27 22:08:22 +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
copilot-swe-agent[bot]
1ca3aa6a07 fix: 修复代码质量和隐形问题 - 移除未使用导入、修复asyncio任务引用、修复类型注解
Co-authored-by: Windpicker-owo <221029311+Windpicker-owo@users.noreply.github.com>
2025-11-26 14:43:44 +00:00
Windpicker-owo
0908fb50a0 优化日志 2025-11-26 21:16:16 +08:00
Windpicker-owo
b5cfa41d36 feat:实现短期内存管理器和统一内存管理器
- 添加了ShortTermMemoryManager来管理短期记忆,包括提取、决策和记忆操作。
- 集成大型语言模型(LLM),用于结构化记忆提取和决策过程。
- 基于重要性阈值,实现了从短期到长期的内存转移逻辑。
- 创建了UnifiedMemoryManager,通过统一接口整合感知记忆、短期记忆和长期记忆的管理。
- 通过法官模型评估来增强记忆提取过程的充分性。
- 增加了自动和手动内存传输功能。
- 包含内存管理操作和决策的全面日志记录。
2025-11-18 11:12:05 +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
e2236f5bc1 feat:增强记忆节点的嵌入生成和日志记录- 在 MemoryBuilder 中为 SUBJECT 和 VALUE 节点类型添加了嵌入生成,确保仅为内容足够的节点创建嵌入。- 改进了 MemoryTools 的日志记录,在初始向量搜索期间提供详细见解,包括低召回情况的警告。- 调整了不同记忆类型的评分权重,以强调相似性和重要性,提高记忆检索的质量。- 将向量搜索限制从 2 倍提高到 5 倍,以改善初始召回率。- 引入了一个新脚本,用于为现有节点生成缺失的嵌入,支持批量处理并改进索引。 2025-11-11 19:25:03 +08:00
Windpicker-owo
2123efb6f4 feat(concurrency): 增加并发控制,优化信息提取和数据导入性能配置 2025-11-09 22:40:17 +08:00
Windpicker-owo
6d727eeda9 feat(embedding): 提升并发能力,优化嵌入生成和索引重建流程 2025-11-09 22:30:21 +08:00
Windpicker-owo
eb16508fb5 feat(extraction): 优化信息提取流程,支持异步并发和缓存管理 2025-11-09 21:38:31 +08:00
明天好像没什么
626dbfe998 权限已修复 2025-11-09 11:10:08 +08:00
明天好像没什么
c8d7c09625 ruff 2025-11-07 21:01:45 +08:00
copilot-swe-agent[bot]
5caf630623 fix: 修复代码质量问题 - 更正异常处理和导入语句
Co-authored-by: Windpicker-owo <221029311+Windpicker-owo@users.noreply.github.com>
2025-11-07 04:39:35 +00:00
Windpicker-owo
28d41acc51 feat(deduplicate_memories): 添加记忆去重工具,支持预览模式和相似度阈值设置 2025-11-06 21:09:31 +08:00
Windpicker-owo
4e2b598164 feat(cache): 提升内存管理与监控能力
- 在CacheManager中添加健康监控系统,并提供详细的内存统计信息
- 使用新的memory_utils模块实现精确的内存估算
- 添加基于大小的缓存条目限制,以防止过大项目
- 通过去重内存计算优化缓存统计
- 在MultiLevelCache中添加过期条目的自动清理功能
- 增强批处理调度器缓存功能,支持LRU驱逐策略和内存追踪
- 更新配置以支持最大项目大小限制
- 添加全面的内存分析文档和工具

重大变更:CacheManager 的默认 TTL 参数现改为 None 而非 3600。数据库兼容层默认禁用缓存,以防止旧版代码过度使用缓存。
2025-11-03 15:18:00 +08:00
明天好像没什么
30658afdb4 ruff归零 2025-11-01 21:32:41 +08:00
明天好像没什么
cb97b2d8d3 rufffffff 2025-11-01 21:10:01 +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
Windpicker-owo
c91fee75d2 refactor(database): 阶段二 - 完成核心层重构
- models.py: 迁移25个模型类,使用统一的Mapped类型注解
  * 包含: ChatStreams, Messages, PersonInfo, LLMUsage等
  * 新增: PermissionNodes, UserPermissions, UserRelationships
  * 654行纯模型定义代码,无初始化逻辑

- migration.py: 重构数据库迁移逻辑
  * check_and_migrate_database: 自动检查和迁移表结构
  * create_all_tables: 快速创建所有表
  * drop_all_tables: 测试用删除所有表
  * 使用新架构的engine和models

- __init__.py: 完善导出清单
  * 导出所有25个模型类
  * 导出迁移函数
  * 导出Base和工具函数

- 辅助脚本:
  * extract_models.py: 自动提取模型定义
  * cleanup_models.py: 清理非模型代码

核心层现已完整,下一步进入优化层实现
2025-11-01 12:45:33 +08:00
明天好像没什么
0e129d385e refactor: 统一类型注解风格并优化代码结构
- 将裸 except 改为显式 Exception 捕获
- 用列表推导式替换冗余 for 循环
- 为类属性添加 ClassVar 注解
- 统一 Union/Optional 写法为 |
- 移除未使用的导入
- 修复 SQLAlchemy 空值比较语法
- 优化字符串拼接与字典更新逻辑
- 补充缺失的 noqa 注释与异常链

BREAKING CHANGE: 所有插件基类的类级字段现要求显式 ClassVar 注解,自定义插件需同步更新
2025-10-31 22:42:39 +08:00
minecraft1024a
a29be48091 refactor(core): 优化类型提示与代码风格
本次提交对项目代码进行了广泛的重构,主要集中在以下几个方面:

1.  **类型提示现代化**:
    -   将 `typing` 模块中的 `Optional[T]`、`List[T]`、`Dict[K, V]` 等旧式类型提示更新为现代的 `T | None`、`list[T]`、`dict[K, V]` 语法。
    -   这提高了代码的可读性,并与较新 Python 版本的风格保持一致。

2.  **代码风格统一**:
    -   移除了多余的空行和不必要的空格,使代码更加紧凑和规范。
    -   统一了部分日志输出的格式,增强了日志的可读性。

3.  **导入语句优化**:
    -   调整了部分模块的 `import` 语句顺序,使其符合 PEP 8 规范。

这些更改不涉及任何功能性变动,旨在提升代码库的整体质量、可维护性和开发体验。
2025-10-31 20:56:17 +08:00
Windpicker-owo
cfa642cf0a feat(expression): 增强表达学习与选择系统的健壮性和智能匹配
- 改进表达学习器的提示词格式规范,增强LLM输出解析的容错性
- 优化表达选择器的模型预测模式,添加情境提取和模糊匹配机制
- 增强StyleLearner的错误处理和日志记录,提高训练和预测的稳定性
- 改进流循环管理器的日志输出,避免重复信息刷屏
- 扩展SendAPI的消息查找功能,支持DatabaseMessages对象兼容
- 添加智能回退机制,当模型预测失败时自动切换到经典模式
- 优化数据库查询逻辑,支持跨聊天流的表达方式共享

BREAKING CHANGE: 表达选择器的模型预测模式现在需要情境提取器配合使用,旧版本配置可能需要更新依赖关系
2025-10-30 11:16:30 +08:00
明天好像没什么
7b80d7c0b3 feat(plugin): 集成 MCP 协议支持并优化代码风格
- 新增 fastmcp 依赖,支持通过 Streamable HTTP 连接外部工具服务器
- 在 component_registry 与 tool_api 中实现 MCP 工具加载、注册及调用链路
- 补充 README 中的 MCP 特性说明
- 统一修复多处 import 顺序、空行、引号及类型注解,提升代码整洁度
- 在 pyproject.toml 中忽略 PERF203 规则,允许循环内异常处理
- 优化语音缓存与本地 ASR 调用逻辑,减少冗余代码
2025-10-26 13:10:31 +08:00
minecraft1024a
3c4a3b0428 chore: 统一代码风格并进行现代化改造
本次提交主要包含以下内容:
- **代码风格统一**:对多个文件进行了格式化,包括移除多余的空行、调整导入顺序、统一字符串引号等,以提高代码一致性和可读性。
- **类型提示现代化**:在多个文件中将旧的 `typing` 模块类型提示(如 `Optional[T]`、`List[T]`、`Union[T, U]`)更新为现代 Python 语法(`T | None`、`list[T]`、`T | U`)。
- **f-string 格式化**:在 `scripts/convert_manifest.py` 中,将 `.format()` 调用更新为更现代和易读的 f-string `!r` 表示法。
- **文件末尾换行符**:为多个文件添加或修正了文件末尾的换行符,遵循 POSIX 标准。
2025-10-25 13:31:22 +08:00
tt-P607
a94bd57912 fix(knowledge): 修复知识库嵌入生成中的并发处理问题
原有的多线程 (`ThreadPoolExecutor`) 嵌入生成方式已被重构为完全异步的并发模型。

旧的实现为每个线程创建新的 `asyncio` 事件循环来运行协程,这种模式效率低下且不稳定,容易引发难以调试的并发问题。

新的实现统一在单个事件循环中处理所有异步任务,使用 `asyncio.Semaphore` 控制并发等级,并通过 `asyncio.gather` 高效地执行批量嵌入请求。此更改显著提高了代码的稳定性、性能和可维护性。

BREAKING CHANGE: `EmbeddingStore` 和 `EmbeddingManager` 中的多个核心方法(如 `store_new_data_set`, `check_embedding_model_consistency`, `batch_insert_strs` 等)已从同步方法更改为异步方法。所有对这些方法的调用现在都必须使用 `await`。
2025-10-23 11:42:35 +08:00
tt-P607
88a4b01556 孩子们,知识库的高并发太恐怖了 2025-10-19 14:11:45 +08:00
tt-P607
4f2cb56740 refactor(learning): 在线程池工作函数中实例化LLMRequest
将 `LLMRequest` 对象的实例化从 `extract_information` 函数移动到线程池执行的 `extract_info_sync` 函数内部。

此更改确保每个工作线程都有自己独立的 `LLMRequest` 实例,避免了在多线程环境下共享同一实例可能引发的潜在并发问题。
2025-10-18 23:38:03 +08:00
tt-P607
d65f6dcefe chore(scripts): 为学习工具脚本引入并发依赖 2025-10-18 20:21:54 +08:00
minecraft1024a
c9c2de40ee chore(scripts): 移除过时的一次性脚本
移除了两个用于项目重构的一次性脚本:
- `convert_sqlalchemy_models.py`:用于将 SQLAlchemy 模型从旧版 `Column` 语法转换为 `Mapped` 语法。
- `update_prompt_imports.py`:用于批量更新 `Prompt` 类的导入路径。

这些脚本已完成其历史使命,不再需要维护。

同时,对插件加载日志和 manifest 转换脚本进行了小幅改进:
- 插件加载日志现在会显示组件的简短描述,方便快速了解其功能。
- manifest 转换脚本增加了对更多元数据字段(如仓库地址、关键字、分类等)的支持。
2025-10-18 19:22:34 +08:00
tt-P607
e702480411 Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev 2025-10-18 17:09:35 +08:00
tt-P607
373db77768 Revert "总之就是知识库"
This reverts commit 0383a999fb.
2025-10-18 17:09:18 +08:00
minecraft1024a
8c97774465 ruff ci 2025-10-18 11:11:05 +08:00
minecraft1024a
0b5a536855 chore(scripts): 移除无用的脚本文件
删除了两个已不再需要的脚本:
- `run_multi_stage_smoke.py`: 用于早期烟雾测试,现已过时。
- `text_length_analysis.py`: 用于分析数据库中的消息文本长度,功能已不再需要。

feat(scripts):为来自MaiBot的插件提供了转换插件的 _manifest.json 文件的脚本
2025-10-17 20:25:44 +08:00