Windpicker-owo
572485a3f4
feat(database): 实现多级缓存管理器
...
- cache_manager.py: 完整的多级缓存系统
* LRUCache: O(1)的LRU缓存实现
* MultiLevelCache: L1+L2两级缓存架构
* L1缓存: 1000项/60秒,用于热点数据
* L2缓存: 10000项/300秒,用于温数据
* 自动淘汰: LRU策略淘汰最少使用数据
* 统计监控: 命中率、淘汰率等指标
* 智能提升: L2命中自动提升到L1
* 定期清理: 后台任务清理过期数据
- 功能特性:
* 异步锁保证线程安全
* 自动估算数据大小
* 支持自定义loader函数
* 全局单例模式
优化层第一部分完成,命中率预期>80%
2025-11-01 12:47:29 +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
Windpicker-owo
fbe6fb759d
refactor(database): 阶段一 - 创建新架构基础
...
- 创建分层目录结构 (core/api/optimization/config/utils)
- 实现核心层: engine.py, session.py
- 实现配置层: database_config.py
- 实现工具层: exceptions.py
- 迁移连接池管理器到优化层
- 添加详细的重构计划文档
2025-11-01 12:35:39 +08:00
minecraft1024a
5e7f17ebf9
refactor(api): 合并兴趣度API和关系API,以及扩展关系API
2025-11-01 11:38:12 +08:00
minecraft1024a
5b1cbb49b0
refactor(schedule): centralize schedule and monthly plan prompts
...
Extracts the prompt templates for daily schedule and monthly plan generation from `llm_generator.py` into a new `prompts.py` module. This change centralizes prompt management and improves code readability and maintainability by separating prompt logic from the generation workflow.
The `ScheduleLLMGenerator` and `MonthlyPlanLLMGenerator` classes now use the `global_prompt_manager` to format and retrieve the necessary prompts, simplifying the generator code.
2025-11-01 11:21:53 +08:00
minecraft1024a
14f5334fb5
feat(schedule): 自动删除两月前的月份计划
2025-11-01 11:21:40 +08:00
minecraft1024a
b8e790a764
ruff
2025-11-01 10:59:38 +08:00
minecraft1024a
f2332eeb43
docs(schedule): 日程表管理器补上了注释
2025-11-01 10:55:41 +08:00
tt-P607
4936a6d65c
refactor(permission): 优化权限装饰器逻辑并增强健壮性
...
对权限系统进行了一系列重构和加固,主要包括:
- **增强健壮性**:在 `require_permission` 和 `require_master` 装饰器中增加了对 `user_info` 和 `user_id` 的存在性检查。当无法获取用户信息时,会记录警告日志并安全退出,防止因用户信息缺失导致程序崩溃。
- **兼容性提升**:权限装饰器现在会优先从 `PlusCommand` 实例的 `chat_stream` 属性获取聊天流,同时保留了对旧的 `message.chat_stream` 属性的兼容性支持,使代码更具前瞻性。
- **异步改造**:将 `is_master` 方法从同步改为异步,以统一权限检查的调用方式,并为未来可能引入的异步权限源做好准备。
- **代码简化**:移除了部分冗余注释,使代码更加清晰。
2025-11-01 02:32:15 +08:00
tt-P607
ca7e2adca1
refactor(chatter): 优化规划器逻辑,仅在兴趣度足够时才执行动作修改与规划
...
将动作修改器(ActionModifier)和初始规划(initial_plan)的生成逻辑,移动到兴趣度检查之后。这样可以避免在用户消息兴趣度不足、不会执行任何动作的情况下,进行不必要的规划和动作修改,从而优化了性能并减少了潜在的资源消耗。
同时,为了增强代码的健壮性,对情绪状态的获取增加了`getattr`以提供默认值,防止因缺少特定属性而引发的潜在错误。
2025-11-01 02:01:36 +08:00
Windpicker-owo
215183e50f
refactor(expression_learner): 优化表达方式查询逻辑,减少数据库查询次数并批量处理更新操作
...
refactor(storage): 添加消息更新批处理器,优化消息ID更新逻辑以减少数据库连接次数
2025-11-01 01:07:37 +08:00
Windpicker-owo
06342e1f96
refactor(affinity_interest_calculator): 优化私聊判断逻辑,改用group_info对象进行判断,并增强日志记录
2025-11-01 00:58:36 +08:00
Windpicker-owo
69ee822ef7
refactor(logging): 将多个info日志级别的记录更改为debug级别,以减少日志输出
2025-11-01 00:44:50 +08:00
Windpicker-owo
49f376dc1c
refactor(client): 优化OpenaiClient的全局缓存,支持事件循环检测
2025-11-01 00:23:25 +08:00
Windpicker-owo
e0b4b16581
refactor(planner): 根据focus_energy概率优化Focus模式切换到Normal模式的逻辑
2025-10-31 23:50:35 +08:00
Windpicker-owo
33f434aafa
fix(plugin): 禁用hello_world_plugin以防止意外启用
...
fix(replyer): 修改提示信息中的“这句话”为“这条消息”以提高表达准确性
2025-10-31 23:14:41 +08:00
tt-P607
dc6bf24dc9
呀,柒柒!这次的代码改动虽然不大,但却像给我们的数据库连接池加了一层坚固的“护盾”呢,真是个很棒的优化!♪~
...
我为你准备好了这次的 Commit Message,快来看看吧!
refactor(database): 优化数据库连接池的关闭与验证逻辑
- 使用 `asyncio.shield` 保护连接关闭操作,确保即使在任务被取消(如流式聊天中断)的情况下,数据库会话也能被安全地关闭,防止资源泄漏。
- 在连接验证查询中,使用 `sqlalchemy.text()` 构造SQL语句,这是SQLAlchemy 2.0推荐的最佳实践,可以避免潜在的SQL注入风险并提高代码可读性。
2025-10-31 23:11:38 +08:00
Windpicker-owo
c4f5d56aa9
Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev
2025-10-31 22:49:07 +08:00
Windpicker-owo
9ccf27d642
refactor(replyer): 更新init_prompt函数,添加格式化标记输出限制
2025-10-31 22:49:01 +08:00
明天好像没什么
1bbae55d6f
Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev
2025-10-31 22:43:34 +08:00
明天好像没什么
0e129d385e
refactor: 统一类型注解风格并优化代码结构
...
- 将裸 except 改为显式 Exception 捕获
- 用列表推导式替换冗余 for 循环
- 为类属性添加 ClassVar 注解
- 统一 Union/Optional 写法为 |
- 移除未使用的导入
- 修复 SQLAlchemy 空值比较语法
- 优化字符串拼接与字典更新逻辑
- 补充缺失的 noqa 注释与异常链
BREAKING CHANGE: 所有插件基类的类级字段现要求显式 ClassVar 注解,自定义插件需同步更新
2025-10-31 22:42:39 +08:00
Windpicker-owo
ac4c92b620
feat(chatter): 添加should_quote_reply参数以控制引用回复行为
2025-10-31 22:36:53 +08:00
minecraft1024a
320e686df6
refactor(chatter): 将主动思考的Prompt模板化
...
将 `proactive_thinking_executor.py` 中的硬编码Prompt字符串重构为独立的 `Prompt` 对象。
这次重构主要有以下几个好处:
- **提高可读性**:将大段的文本从业务逻辑中分离,让代码结构更清晰。
- **便于维护**:以后要调整 Prompt 的时候,直接修改模板对象就行,不用在函数里大海捞针了。
- **提升复用性**:虽然现在还没复用,但以后有类似需求时,这种模式也更容易扩展。
2025-10-31 22:06:19 +08:00
Windpicker-owo
e2f988745a
refactor(config): 移除普通聊天配置及相关字段,更新配置模板以反映变更
2025-10-31 21:56:21 +08:00
Windpicker-owo
5080cfccfc
Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev
2025-10-31 21:41:19 +08:00
Windpicker-owo
df22ff91cc
refactor(nlp): 将jieba替换为rjieba进行中文标记化
2025-10-31 21:41:02 +08:00
minecraft1024a
0d99b4e6cb
fix(chatter): 修复因消息无ID导致的处理错误
...
在处理消息映射时,增加了一项检查。如果从数据库或缓存中获取的消息对象缺少 `message_id` 或 `id` 字段,将跳过该消息的处理,以防止后续流程因缺少关键标识符而引发 `NoneType` 相关的异常。(实现了plan_filiter.py的basic模式下的类型错误清零)
2025-10-31 21:39:50 +08:00
明天好像没什么
1a6d17fbed
Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev
2025-10-31 21:32:11 +08:00
明天好像没什么
e051955c05
调整一下目录结构
2025-10-31 21:32:06 +08:00
Windpicker-owo
e46d9529f5
Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev
2025-10-31 21:29:32 +08:00
Windpicker-owo
ce03ced355
feat(message-manager): 改进流生命周期管理和消息对象处理
...
-通过适当的任务取消为流循环添加强制重启功能
-通过更安全的删除和适当的任务终止来增强流清理
-改进亲和流聊天插件中的消息对象转换
-用DatabaseMessages对象替换基于字典的消息处理
-为任务取消添加超时处理,以防止死锁
-简化计划执行中的用户ID提取和消息ID处理
2025-10-31 21:27:11 +08:00
minecraft1024a
bee9406c8d
refactor(replyer): 统一消息与用户信息模型
...
将 `_generate_prompt` 方法中的 `reply_message` 参数统一为 `DatabaseMessages` 类型,并确保从 `anchor_message` 获取的 `sender_info` 被正确转换为 `UserInfo` 模型。同时,简化了情绪提示词的构建逻辑。
此外,在 `_get_master_prompt` 中增加了对 `user_info` 的空值检查,以避免潜在的属性访问错误。
2025-10-31 21:23:06 +08:00
minecraft1024a
c1beb2c526
Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev
2025-10-31 21:14:17 +08:00
minecraft1024a
6b1531b70d
feat(interest_system): 调整兴趣标签生成提示的长度限制
...
将生成Bot兴趣标签的提示中,对单个标签的长度限制从4个字符放宽到10个字符。
这主要是因为4个字符的限制过于严格,导致LLM难以生成准确且有意义的中文兴趣标签,例如“角色扮演”或“科幻电影”这类常见的兴趣点都会超出长度。放宽限制有助于提高生成标签的质量和多样性。
2025-10-31 21:14:12 +08:00
minecraft1024a
0ffcae4d44
refactor(mood): 移除与唤醒愤怒和失眠相关的状态管理
...
删除了 `ChatMood` 类中的 `is_angry_from_wakeup` 属性,并移除了 `MoodManager` 中所有与之相关的方法,包括:
- `reset_mood_by_chat_id`
- `set_angry_from_wakeup`
- `clear_angry_from_wakeup`
- `start_insomnia`
- `stop_insomnia`
- `get_angry_prompt_addition`
这些逻辑现在由更通用的状态机和动作系统处理,简化了情绪模块的职责,使其更专注于核心情绪值的管理。
2025-10-31 21:13:54 +08:00
minecraft1024a
26ba4c3643
refactor(chatter): 统一动作消息对象为DatabaseMessages模型
...
将动作规划与执行流程中的 `action_message` 从原始字典统一为 `DatabaseMessages` Pydantic模型实例。这增强了类型安全性和代码可读性,并简化了后续处理逻辑。
主要变更:
- `plan_filter`: 在解析LLM输出后,将目标消息字典转换为`DatabaseMessages`对象。
- `plan_executor`:
- 移除已废弃的、用于处理字典格式消息的 `user_id` 兼容性代码,现在直接从 `DatabaseMessages` 对象中获取用户信息。
- 删除了针对 `poke_user` 动作的特殊数据处理逻辑,因为相关信息已由 `DatabaseMessages` 模型统一承载。
- 增加了对 `action_message` 中 `user_id` 缺失的健壮性检查。
2025-10-31 21:12:43 +08:00
明天好像没什么
5bbe037367
Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev
2025-10-31 21:11:20 +08:00
明天好像没什么
7835c1b349
支持一下stdio
...
顺便说一下猫猫真的很可爱,拾风真的很好rua
,狐狐真的很可爱
2025-10-31 21:10:52 +08:00
minecraft1024a
6bacd7299f
Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev
2025-10-31 20:59:53 +08:00
minecraft1024a
f3a8ffafdd
fix(chatter): 修复impression_llm未初始化时调用问题
...
在调用`impression_llm.generate_response_async`之前增加空值检查,避免在`impression_llm`未被初始化时引发异常,增强了代码的健壮性。
2025-10-31 20:59:02 +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
tt-P607
7936909192
Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev
2025-10-31 20:52:54 +08:00
tt-P607
11ddc70c3e
feat(proactive-thinking): 优化提示词以生成更具情境感知和人性化的主动互动
...
本次更新重构了主动思维执行器的核心提示词,旨在显著提升AI主动发起互动的质量,使其更自然、更有同理心,并与聊天上下文更紧密地结合。
主要改进包括:
- 将单一的“抛出话题” (`throw_topic`) 行动升级为分层次的“有目的的互动”模型。
- 建立了新的互动优先级:
1. **延续约定或提醒** (最高优先级)
2. **展现真诚的关心**
3. **开启新话题** (最低优先级)
- 增加了获取的聊天记录上下文数量(从20条增至40条),为AI提供更全面的决策依据。
- 全面优化了决策和生成回复的提示词,使指令更清晰,引导AI更好地遵循其人设、心情和当前对话氛围,从而创造更连贯、更有温度的对话体验。
2025-10-31 20:52:46 +08:00
minecraft1024a
926adf16dd
feat(interest): 增加机器人兴趣标签长度限制和截断处理
...
在机器人兴趣系统(BotInterestManager)中,为生成的兴趣标签增加了长度校验和处理逻辑。
- 在生成兴趣标签的 Prompt 中,明确要求每个标签的长度不超过4个字符。
- 在解析模型返回的兴趣标签时,增加了一个检查机制。如果标签长度超过10个字符,系统会记录一条警告日志,并自动将标签截断为前10个字符,以确保数据的规范性和后续处理的稳定性。
2025-10-31 20:50:14 +08:00
Windpicker-owo
655b4f20c6
refactor(message-manager): 删除自适应流管理器并优化上下文加载
...
-从distribution_manager和message_manager中删除adaptive_stream_manager.py及其集成
-删除过时的message_recv_backup.py,因为MessageRecv已被DatabaseMessages完全替换
-在context_manager中添加异步历史初始化,以便在启动时从数据库加载消息
-优化default_generator以使用内存中的消息,而不是重复的数据库查询
-修复message.py中的回复消息段处理,以处理DatabaseMessages格式
-从chat_stream.py中删除deepcopy并改进context_manager初始化
-清理bot.py和适配器响应方法中未使用的通知处理
突破性变化:自适应流管理系统已被完全删除。所有消息处理现在都依赖于DatabaseMessages格式。上下文管理器现在在创建时从数据库异步初始化历史记录。
2025-10-31 20:45:25 +08:00
Windpicker-owo
371041c9db
重构消息处理并用DatabaseMessages替换MessageRecv
...
-更新PlusCommand以使用DatabaseMessages而不是MessageRecv。
-将消息处理逻辑重构到一个新模块message_processor.py中,以处理消息段并从消息字典中创建DatabaseMessages。
-删除了已弃用的MessageRecv类及其相关逻辑。
-调整了各种插件以适应新的DatabaseMessages结构。
-增强了消息处理功能中的错误处理和日志记录。
2025-10-31 19:24:58 +08:00
Windpicker-owo
50260818a8
refactor(bot): 使用统一方法转换消息为数据库对象,简化代码逻辑
2025-10-31 16:02:14 +08:00
Windpicker-owo
155b6e9d04
移除mai4u:s4u_watching_manager.py, screen_manager.py, super_chat_manager.py, yes_or_no.py, openai_client.py, and s4u_config.py. These changes streamline the codebase by eliminating unused components and improving maintainability.
2025-10-31 15:52:42 +08:00
Windpicker-owo
c045895754
refactor(event): 将日志级别从info调整为debug,以减少日志输出并提高可读性
2025-10-31 15:15:52 +08:00
Windpicker-owo
94537cf57c
feat(proactive-thinking): 利用聚焦能量增强能量计算和调度
...
-重构关系EnergyCalculator,使用聊天流兴趣评分代替用户关系评分
-更新主动思维调度器,使用聊天流中的焦点能量进行间隔计算
-通过更详细的信息改进整个主动思维系统的日志记录
-将chat_stream参数添加到插件工具构造函数中,以更好地处理上下文
-增强调度和事件处理中的错误处理和调试信息
这些变化通过以下方式改善了主动思维系统:
1.使用聊天流中的实时焦点能量,而不是静态用户关系评分
2.根据当前对话参与度提供更准确和动态的日程安排
3.添加全面的日志记录,以便更好地进行调试和监控
4.通过工具中的chat_stream参数确保正确的上下文传播
2025-10-31 15:09:32 +08:00