tt-P607
|
f520a52f1f
|
Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev
|
2025-09-30 16:25:38 +08:00 |
|
tt-P607
|
f6ce69c45b
|
feat(chat): 实现多重回复功能,允许单轮处理多条消息
本次更新引入了核心的多重回复功能,使得 Bot 能够在单次规划中响应多条不同的未读消息。这显著提升了其在活跃群聊中的交互效率和上下文处理能力。
主要变更包括:
- **Planner Prompts 更新**:
- 增加了明确的指令和示例,引导 LLM 在检测到多个需要回应的消息时,生成一个包含多个 `reply` 动作的 `actions` 列表。
- **PlanExecutor 逻辑增强**:
- `_execute_reply_actions` 方法被重构,以串行方式执行计划中的所有回复动作。
- 引入了新的控制逻辑,确保只有在执行完最后一个 `reply` 动作后,才会清除未读消息队列。
- **ActionManager 功能扩展**:
- `execute_action` 方法新增 `clear_unread_messages` 参数(默认为 `True`),允许调用方控制是否在动作执行后清空未读消息。
- `PlanExecutor` 在调用非 `reply` 动作或非最后一个 `reply` 动作时,会显式将此参数设为 `False`,防止过早清除消息。
|
2025-09-30 16:25:24 +08:00 |
|
Windpicker-owo
|
41c45889c5
|
feat(memory): 增强记忆构建上下文处理能力并优化兴趣度批量更新机制
- 在记忆构建过程中允许检索历史记忆作为上下文补充
- 改进LLM响应解析逻辑,增强JSON提取兼容性
- 优化消息兴趣度计算和批量更新机制,减少数据库写入频率
- 添加构建状态管理,支持在BUILDING状态下进行记忆检索
- 修复stream_id拼写错误处理和历史消息获取逻辑
|
2025-09-30 14:22:26 +08:00 |
|
Windpicker-owo
|
a997a538b0
|
Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev
|
2025-09-30 09:32:39 +08:00 |
|
Windpicker-owo
|
dd297e861e
|
fix(memory): 将日志级别从debug更改为info,以提高构建间隔提示的可见性
|
2025-09-30 09:31:17 +08:00 |
|
Windpicker-owo
|
573a4322a7
|
feat(chat): 优化记忆检索逻辑,异步调用增强记忆系统
|
2025-09-30 09:14:44 +08:00 |
|
Windpicker-owo
|
374c9ffc4d
|
feat(memory): 添加时间规范化处理功能
在记忆构建器中增加时间规范化处理逻辑,将相对时间表达式转换为绝对日期格式。添加了相对时间映射规则和正则替换机制,确保记忆内容中的时间信息统一使用YYYY-MM-DD格式。同时更新了系统提示语,明确时间处理原则和要求。
- 新增_normalize_time_in_memory方法处理时间规范化
- 添加相对时间到绝对时间的映射规则
- 更新系统提示语包含时间处理原则
- 支持记忆内容和对象信息中的时间规范化
|
2025-09-30 00:41:32 +08:00 |
|
Windpicker-owo
|
128529d71f
|
feat(memory): 添加记忆构建节流机制
在EnhancedMemorySystem中新增min_build_interval_seconds配置项,实现基于作用域的构建频率控制。通过_get_build_scope_key方法根据stream_id、chat_id或user_id生成节流键,确保同一作用域内的记忆构建操作不会过于频繁。
新增_last_memory_build_times字典记录各作用域的最后构建时间,当间隔不足配置阈值时自动跳过构建操作。同时在构建异常时自动清理对应的节流记录,确保系统稳定性。
|
2025-09-30 00:24:30 +08:00 |
|
Windpicker-owo
|
b30db43776
|
feat(memory): 实现增强记忆系统并完全替换原有架构
引入全新的增强记忆系统,彻底取代海马体记忆架构
删除旧版记忆系统相关模块,包括Hippocampus、异步包装器和优化器
重构消息处理流程,集成增强记忆系统的存储和检索功能
更新配置结构以支持增强记忆的各项参数设置
禁用原有定时任务,采用内置维护机制保证系统性能
|
2025-09-30 00:09:46 +08:00 |
|
tt-P607
|
21b3346bc6
|
fix(chat): 修复因消息ID非字符串类型导致的模糊匹配错误
在ChatterPlanFilter的模糊匹配逻辑中,从消息对象获取的ID(orig_mid)可能为整数或None,而非预期的字符串。
当re.sub接收到非字符串类型的参数时会引发TypeError。此更改通过在处理前显式地将ID转换为字符串,并处理其为None的情况,确保了代码的健壮性,避免了潜在的运行时崩溃。
|
2025-09-29 22:11:45 +08:00 |
|
tt-P607
|
35a4ca3f50
|
fix(chat): 修复在海马体未初始化时调用主题遗忘的潜在错误
在调用 `operation_forget_topic` 方法前增加空值检查,以防止当海马体或其相关组件尚未完全初始化时,调用该方法导致程序崩溃。此更改增强了记忆遗忘操作的健壮性。
|
2025-09-29 15:11:05 +08:00 |
|
tt-P607
|
699d71b1f6
|
fix(chat): 修复在海马体未初始化时整合记忆的潜在错误
在调用 `integrate_memory` 方法时,如果海马体 (`_hippocampus`) 或其海马旁回 (`parahippocampal_gyrus`) 尚未完全初始化,直接调用其方法会引发错误,导致程序崩溃。
此提交增加了对这些对象的存在性检查,确保只有在它们准备就绪时才执行记忆整合操作,从而提高了系统的健壮性,并为未初始化的情况添加了警告日志。
|
2025-09-29 13:36:46 +08:00 |
|
Windpicker-owo
|
33be072f04
|
修改一下默认afc参数
|
2025-09-29 12:57:52 +08:00 |
|
Windpicker-owo
|
b9ddbb60a1
|
fix(chat): 将同步调用改为异步调用以匹配接口变更
修改了多处 person_info_manager.get_value() 方法的调用方式,从同步调用改为异步调用(添加 await 关键字),使其与异步接口保持一致。这确保了在获取用户信息时的正确异步操作,避免了潜在的阻塞问题。
涉及文件:
- src/chat/replyer/default_generator.py (3处修改)
- src/chat/utils/prompt.py (1处修改)
- src/person_info/relationship_builder.py (1处修改)
|
2025-09-29 12:48:45 +08:00 |
|
Windpicker-owo
|
4570fd8b64
|
fix(chat): 增强消息查找功能并添加未读消息自动清理机制
- 重构 `_find_message_by_id` 方法,支持多种消息ID格式和模糊匹配
- 在动作执行后自动清理未读消息,防止消息堆积
- 为 `reply` 动作添加目标消息查找失败时的降级处理
- 将消息计数和关系查询方法改为异步调用以保持一致性
|
2025-09-29 10:47:43 +08:00 |
|
Windpicker-owo
|
2fb1674a4d
|
feat(logging): 将调试日志升级为信息级别以增强监控能力
将多个模块中的调试日志(logger.debug)升级为信息级别(logger.info),包括流循环管理、聊天动作生成和消息兴趣度计算等关键组件。
这些修改使得生产环境中能够更直观地监控系统运行状态,包括流等待间隔、动作生成数量和消息处理决策等重要指标,同时移除了冗余的用户ID计算逻辑。
|
2025-09-29 07:29:20 +08:00 |
|
Windpicker-owo
|
903ab855bf
|
refactor(message_manager): 重构消息分发机制为流循环模式
重构原有的动态消息分发管理器为流循环管理器,每个聊天流拥有独立的无限循环任务主动轮询处理消息。
主要变更:
- 移除 DistributionManager 及相关类(DistributionPriority、DistributionTask、StreamDistributionState、DistributionExecutor)
- 新增 StreamLoopManager 实现基于流的循环处理机制
- 修改 context_manager 和 message_manager 以适配新的流循环模式
- 优化 plan_filter.py 中的消息处理逻辑以适应新的数据格式
BREAKING CHANGE: 原有的分发管理器 API 已被移除,需要更新所有依赖分发功能的代码
|
2025-09-29 00:42:54 +08:00 |
|
Windpicker-owo
|
8b034e21c6
|
feat(database): 为 SQLite 添加 WAL 模式支持和性能优化配置
增加 SQLite 数据库性能优化功能,包括:
- 启用 WAL 模式提高并发性能
- 设置合理的超时时间和同步级别
- 添加数据库定期维护功能
- 在会话初始化时自动应用优化配置
- 增加连接超时时间从30秒到60秒
这些优化显著提升了 SQLite 数据库在高并发场景下的性能和稳定性。
|
2025-09-28 22:04:44 +08:00 |
|
Windpicker-owo
|
28bce19d27
|
refactor(chat): 移除 ChatStream 的历史消息自动加载功能
移除 ChatStream 初始化时的 `_load_history_messages()` 调用,改为按需异步加载历史消息。这解决了启动时阻塞事件循环的问题,并提高了聊天流初始化的性能。
主要变更:
- 删除 `ChatStream._load_history_messages()` 方法及相关代码
- 将多个模块中的同步数据库查询函数改为异步版本
- 修复相关调用处的异步调用方式
- 优化图片描述查询的错误处理
BREAKING CHANGE: `get_raw_msg_before_timestamp_with_chat` 和相关消息查询函数现在改为异步操作,需要调用处使用 await
|
2025-09-28 21:31:49 +08:00 |
|
Windpicker-owo
|
fd76e36320
|
refactor(chat): 迁移数据库操作为异步模式并修复相关调用
将同步数据库操作全面迁移为异步模式,主要涉及:
- 将 `with get_db_session()` 改为 `async with get_db_session()`
- 修复相关异步调用链,确保 await 正确传递
- 优化消息管理器、上下文管理器等核心组件的异步处理
- 移除同步的 person_id 获取方法,避免协程对象传递问题
修复 deepcopy 在 StreamContext 中的序列化问题,跳过不可序列化的 asyncio.Task 对象
删除无用的测试文件和废弃的插件清单文件
|
2025-09-28 20:40:46 +08:00 |
|
Windpicker-owo
|
08ef960947
|
refactor(database): 将同步数据库操作迁移为异步操作
将整个项目的数据库操作从同步模式迁移为异步模式,主要涉及以下修改:
- 将 `with get_db_session()` 改为 `async with get_db_session()`
- 将同步的 SQLAlchemy 查询方法改为异步执行
- 更新相关的方法签名,添加 async/await 关键字
- 修复由于异步化导致的并发问题和性能问题
这些修改提高了数据库操作的并发性能,避免了阻塞主线程,提升了系统的整体响应能力。涉及修改的模块包括表情包管理、反提示注入统计、用户封禁管理、记忆系统、消息存储等多个核心组件。
BREAKING CHANGE: 所有涉及数据库操作的方法现在都需要使用异步调用,同步调用将不再工作
|
2025-09-28 15:42:30 +08:00 |
|
Windpicker-owo
|
ff24bd8148
|
Merge afc branch into dev, prioritizing afc changes and migrating database async modifications from dev
|
2025-09-27 23:37:40 +08:00 |
|
Windpicker-owo
|
80d34f3130
|
refactor(interest-system): 移除旧兴趣度管理系统,迁移到插件内部实现
移除旧的集中式兴趣度管理系统(interest_manager.py),将兴趣度计算功能迁移到affinity_flow_chatter插件内部实现。主要包括:
- 删除interest_manager.py及其相关导入引用
- 修改RelationshipEnergyCalculator使用插件内部的关系分计算
- 重构StreamContextManager使用插件内部的兴趣度评分系统
- 更新ChatStream、PlanFilter、Planner等组件使用新的插件接口
- 简化上下文管理器,移除事件系统和验证器相关代码
此次重构提高了模块独立性,减少了核心代码对插件功能的直接依赖,符合"高内聚低耦合"的设计原则。
|
2025-09-27 19:07:24 +08:00 |
|
Windpicker-owo
|
0fe052dd37
|
Merge branch 'afc' of https://github.com/MoFox-Studio/MoFox_Bot into afc
|
2025-09-27 16:31:44 +08:00 |
|
Windpicker-owo
|
9a70c7a93d
|
refactor(chat): 优化上下文管理器,添加启动与停止功能,改进消息用户ID获取逻辑
|
2025-09-27 16:31:23 +08:00 |
|
minecraft1024a
|
f9fbfe319f
|
1
|
2025-09-27 15:57:00 +08:00 |
|
minecraft1024a
|
fe201c389e
|
1
|
2025-09-27 15:47:30 +08:00 |
|
minecraft1024a
|
86c3c78259
|
style(chat): 为提示词导入添加 noqa 以忽略未使用警告
|
2025-09-27 15:06:44 +08:00 |
|
minecraft1024a
|
b32a934393
|
fix(chat): 确保 planner 提示词模块被初始化
通过显式导入 planner_prompts 模块,确保其中的提示词在 planner 实例化之前被正确注册,避免潜在的引用问题。
|
2025-09-27 15:06:02 +08:00 |
|
minecraft1024a
|
9775b9e731
|
添加了一点日志
|
2025-09-27 14:59:54 +08:00 |
|
minecraft1024a
|
e544173c3f
|
Revert "feat(proactive): 优化主动聊天逻辑,增加搜索前判断与回复前检查"
This reverts commit 34bce03f17.
|
2025-09-27 14:45:58 +08:00 |
|
minecraft1024a
|
3cded7220a
|
fix(chat): 完善LLM分句逻辑,在无分割标记时回退至标点分割
当使用 "llm" 模式进行分句时,如果模型未能按预期生成 `[SPLIT]` 标记,之前的逻辑会直接返回整个未分割的文本。
这可能导致过长的句子被发送到下游模块(如TTS),影响体验。本次修改添加了回退机制,当未检测到 `[SPLIT]` 标记时,会自动切换到基于标点的传统分句方法,以提高分句的鲁棒性。
|
2025-09-27 14:37:06 +08:00 |
|
Windpicker-owo
|
c49b3f3ac4
|
refactor(chat): 重构消息管理器以使用集中式上下文管理和能量系统
- 将流上下文管理从MessageManager迁移到专门的ContextManager
- 使用统一的能量系统计算focus_energy和分发间隔
- 重构ChatStream的消息数据转换逻辑,支持更完整的数据字段
- 更新数据库模型,移除interest_degree字段,统一使用interest_value
- 集成新的兴趣度管理系统替代原有的评分系统
- 添加消息存储的interest_value修复功能
|
2025-09-27 14:23:48 +08:00 |
|
minecraft1024a
|
866d50c6dc
|
加了一个 尝试解析JSON字符串,如果失败则尝试修复并重新解析。
|
2025-09-27 14:19:43 +08:00 |
|
minecraft1024a
|
ddb7ef4d93
|
feat(tool): 为学习工具添加缓存清理功能
为 lpmm_learning_tool.py 脚本添加了清理缓存的选项。
用户现在可以通过菜单选项 '6' 来删除 `temp/lpmm_cache` 目录下的所有临时文件。
此功能有助于释放磁盘空间,并可以在缓存数据陈旧或损坏时进行重置,提高了工具的可维护性。
|
2025-09-27 14:13:09 +08:00 |
|
minecraft1024a
|
93b0a6a862
|
fix(tool): 增强信息提取失败时的错误日志
在信息提取过程中,当大语言模型(LLM)返回的 JSON 格式不正确时,先前的日志只会记录一个通用的解析错误,而不会显示导致失败的原始响应内容,这使得调试变得困难。
此次更新通过在捕获到 JSON 解析异常时,额外记录 LLM 的原始输出内容来解决此问题。这有助于快速诊断并定位是模型输出不稳定还是提示词需要调整,从而提高了脚本的健壮性和可维护性。
此外,还对代码进行了一些格式化调整以提高可读性。
|
2025-09-27 14:06:22 +08:00 |
|
minecraft1024a
|
f968d134c7
|
fix(plugin): 移除插件配置同步调用并增强错误日志
在插件管理器中,移除了加载插件时对已废弃的配置同步方法的调用。
同时,为了更好地排查 `maizone` 插件发送动态失败的问题,增强了其命令的异常日志,现在会额外记录异常类型。
|
2025-09-27 14:05:05 +08:00 |
|
tt-P607
|
7f39f6f649
|
feat(sleep): 细化唤醒机制,实现分聊天的起床气
先前的唤醒与起床气机制是全局性的,一个聊天中的频繁消息会导致Bot对所有聊天都表现出“起床气”状态,这在多聊天场景下体验不佳。
本次更新将唤醒机制与具体的 `chat_id` 进行绑定,实现了更精细化的交互逻辑:
- Bot被吵醒后,其“起床气”状态将只针对吵醒它的聊天生效。
- 在此期间,Bot会忽略其他所有聊天的消息,专注于处理来自触发唤醒的聊天的消息。
- Prompt现在会优先注入起床气相关的描述,确保响应符合当前状态。
此外,为了更准确地捕捉唤醒意图,在群聊中,即使没有@提及,只要消息包含Bot的昵称或别名,也会被视为一次有效“提及”,从而累加唤醒值。
|
2025-09-27 00:58:41 +08:00 |
|
tt-P607
|
28a2a4b0c8
|
refactor(config): 移除全局表达开关以支持分聊天配置
移除全局的 `enable_expression` 配置项,转而使用 `get_expression_config_for_chat` 方法在生成提示词时动态判断。
原有的全局开关不够灵活,无法满足分聊天、分群组控制表达功能的需求。此次重构通过在运行时检查每个聊天的具体配置,实现了更精细化的功能启用控制。
BREAKING CHANGE: 全局配置项 `expression.enable_expression` 已被移除。现在需要通过表达规则来为不同的聊天单独控制功能的启用状态。
|
2025-09-26 23:11:55 +08:00 |
|
tt-P607
|
568de3b473
|
Merge branch 'afc' of https://github.com/MoFox-Studio/MoFox_Bot into afc
|
2025-09-26 22:57:43 +08:00 |
|
tt-P607
|
9cb6ae1b4c
|
feat(config): 为表达配置添加启用开关
|
2025-09-26 22:57:35 +08:00 |
|
minecraft1024a
|
df2e8b1aa8
|
试图maizone解决问题但不保证成功
|
2025-09-26 22:09:21 +08:00 |
|
minecraft1024a
|
b73c47c6c7
|
Merge branch 'afc' of https://github.com/MoFox-Studio/MoFox_Bot into afc
|
2025-09-26 22:08:57 +08:00 |
|
minecraft1024a
|
9dca30284a
|
试图maizone解决问题但不保证成功
|
2025-09-26 22:08:54 +08:00 |
|
minecraft1024a
|
900b9af443
|
删除插件配置文件的双向迁移逻辑
|
2025-09-26 22:00:07 +08:00 |
|
tt-P607
|
9608a040a6
|
refactor(llm_models): 将用量记录函数改为异步以支持数据库写入
将 `LLMUsageRecorder` 中的 `record_usage_to_database` 和 `LLMRequest` 中的 `_record_usage` 方法从同步转换为异步。
此项重构是为了支持异步数据库操作,避免在记录模型用量时阻塞事件循环,从而提升应用的整体性能和响应能力。
|
2025-09-26 21:59:38 +08:00 |
|
minecraft1024a
|
50835498f0
|
refactor(llm_models): 将 LLMRequest 重构为模块化的策略驱动架构
此次重构旨在分解原有的单体 `LLMRequest` 类,以提高代码的可维护性、可扩展性和健壮性。通过引入多个遵循单一职责原则的内部辅助类,请求生命周期的各个阶段被清晰地分离开来。
主要变更包括:
- **引入 `_ModelSelector`**: 专门负责模型的动态选择、负载均衡和失败惩罚策略。该策略现在能对网络错误和服务器错误等严重问题施加更高的惩罚。
- **引入 `_PromptProcessor`**: 封装所有与提示词相关的处理逻辑,包括内容混淆、反截断指令注入以及响应内容的后处理(如提取思考过程)。
- **引入 `_RequestExecutor`**: 负责执行底层的API请求,包含自动重试、异常分类和消息体压缩等功能。
- **引入 `_RequestStrategy`**: 实现高阶请求策略,如模型间的故障转移(Failover),确保单个模型的失败不会导致整个请求失败。
`LLMRequest` 类现在作为外观(Facade),协调这些内部组件,为上层调用提供了更简洁、稳定的接口。
|
2025-09-26 21:17:34 +08:00 |
|
minecraft1024a
|
9eb940ca96
|
docs(llm): 为 utils_model 模块补充详细文档和注释
为 `utils_model.py` 中的关键类和方法添加了全面的文档字符串和内联注释,以提升代码的可读性和可维护性。
主要变更包括:
- 为 `_ModelSelector`, `_PromptProcessor`, `_RequestExecutor`, 和 `LLMRequest` 类中的核心方法扩充了详细的文档,解释其功能、参数和返回值。
- 在复杂的逻辑块(如重试机制、错误处理、内容混淆)中增加了内联注释,以阐明其实现细节。
- 移除了文件中旧的、多余的作者信息头。
|
2025-09-26 21:04:37 +08:00 |
|
minecraft1024a
|
439bbc8163
|
docs(llm): 为 LLM 工具模块添加全面的文档和注释
为 `utils_model.py` 模块及其核心类(`_ModelSelector`、`_PromptProcessor`、`_RequestExecutor`)添加了详细的文档字符串。
同时,增加了大量的行内注释,以阐明复杂的逻辑,例如:
- 模型选择的负载均衡算法
- 针对不同错误的失败惩罚计算
- 对嵌入任务的特殊客户端处理
此举旨在提高 LLM 交互核心逻辑的可读性和可维护性。
|
2025-09-26 20:55:11 +08:00 |
|
雅诺狐
|
fe40b88731
|
这是第900个提交
移除了用户协议
|
2025-09-26 20:43:23 +08:00 |
|