Commit Graph

155 Commits

Author SHA1 Message Date
Windpicker-owo
ffdd4c6b9c feat(tool_history): 实现流工具历史管理器,以增强工具调用跟踪和缓存- 添加了 StreamToolHistoryManager,用于管理聊天流级别的工具调用历史。- 引入了 ToolCallRecord,用于详细记录工具调用,包括执行时间和缓存命中情况。- 集成了内存缓存和全局缓存系统,以高效检索结果。- 更新了 ToolExecutor,以使用新的历史管理器记录和获取工具调用。- 增强了 ExaSearchEngine,以限制返回结果数量并提升答案质量。- 重构了 CacheManager 中的缓存管理,以包括工具调用统计和性能指标。 2025-11-06 14:22:59 +08:00
Windpicker-owo
f87e8627e5 feat(memory): 移除传统内存系统并优化内存图谱
- 移除整个传统内存系统,包括内存系统模块及所有相关组件
- 删除弃用的内存组件:增强型内存激活器、海马体采样器、内存构建器、内存块、内存遗忘引擎、内存格式器、内存融合器、内存管理器、内存元数据索引、内存查询规划器、内存系统、消息集合处理器、消息集合存储、向量内存存储_v2
- 更新内存图配置,采用增强型检索设置
- 优化内存管理器查询功能,以分析完整对话上下文
- 更新机器人配置模板版本至7.6.1,新增内存图表检索参数

重大变更:旧版内存系统已被完全移除。所有内存功能现依赖于内存图系统。请更新配置以包含新的内存图检索参数。
2025-11-06 09:18:59 +08:00
Windpicker-owo
faca0d3d1b feat: 重构聊天系统的内存处理与格式化功能
- 更新了DefaultReplyer,采用新的内存格式化工具以提供更优质的内存描述。
- 已移除 Config 类中已弃用的内存配置。
- 在主系统中增强内存系统初始化检查,确保配置正确。
- 优化了MemoryManager,使其可直接使用全局配置进行内存设置。
- 新增了一个内存格式化工具,用于将内存对象转换为自然语言描述。
- 更新了内存工具,提供了更清晰的内存创建与管理指南。
- 精炼插件工具与使用提示,提升用户交互体验与记忆准确性。
- 根据内存系统结构的变化调整了机器人配置模板。
2025-11-06 08:47:18 +08:00
Windpicker-owo
c3ca811e46 feat(memory): 添加智能查询优化,移除瞬时记忆处理
重大改进:
- 在 MemoryManager 中添加 optimize_search_query 方法
- 使用小模型优化搜索查询,提高检索精确度
- search_memories 新增 optimize_query 和 context 参数
- 移除瞬时记忆处理(由其他系统负责)

技术实现:
- 使用 utils_small 模型优化查询语句
- 自动提取查询核心意图和关键信息
- 支持上下文感知(聊天历史、发言人)
- 失败时自动降级到原始查询

查询优化流程:
1. 提取聊天历史和发言人信息
2. 构建查询上下文
3. 调用小模型生成优化查询
4. 使用优化查询进行语义搜索
5. 返回相关记忆

default_generator.py 调整:
- 移除瞬时记忆处理逻辑
- 调用 manager.search_memories 时传入 context
- 启用 optimize_query 参数
2025-11-05 19:31:07 +08:00
Windpicker-owo
cd15c51e6b refactor(memory): 完全移除旧记忆系统,全面切换到新记忆图系统
重大变更:
- 移除 default_generator.py 中对旧增强记忆系统的所有调用
- 移除 prompt.py 中的记忆构建函数
- 记忆检索全面使用新记忆图系统
- 禁用旧记忆系统的自动存储逻辑

记忆构建流程:
- 记忆创建: LLM 通过 create_memory 工具主动创建
- 记忆检索: default_generator.py 自动检索
- 记忆传递: 通过 pre_built_params 传入 prompt

工具可用性:
- CreateMemoryTool: available_for_llm = True
- LinkMemoriesTool: available_for_llm = False
- SearchMemoriesTool: available_for_llm = False

技术细节:
- 提高记忆检索数量 top_k=10
- 降低重要性阈值 min_importance=0.3
- 修复类型错误和警告
2025-11-05 19:22:34 +08:00
Windpicker-owo
edd74bed9f feat(memory-graph): Step 2 - 集成记忆检索到提示词生成
- 修改 build_memory_block 方法,添加记忆图系统检索
- 在提示词构建时自动从记忆图系统中检索相关记忆
- 合并增强记忆系统和记忆图系统的检索结果
- 更新记忆格式化代码以使用合并后的记忆列表

技术细节:
- 使用 manager_singleton 获取全局记忆管理器
- 调用 search_memories 检索相关记忆 (top_k=5, min_importance=0.5)
- 将记忆格式化为兼容的数据结构并合并到 all_memories
- 保持与现有增强记忆系统的兼容性

测试验证:
- 成功创建测试记忆并检索
- 不同查询能找到相应的相关记忆
- 记忆图系统可正常被提示词生成器调用
2025-11-05 18:53:32 +08:00
tt-P607
d0aa090cc1 Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev 2025-11-04 08:20:48 +08:00
tt-P607
445b90560a fix(replyer): 移除历史记录的硬编码上限
修复了在构建聊天记录上下文时,已读历史消息被硬编码截断为50条的问题。

现在,`build_s4u_chat_history_prompts` 及其回退方法将完全遵循 `max_context_size` 配置,确保模型能获取到完整的上下文信息。
2025-11-04 08:20:41 +08:00
Windpicker-owo
b97470cf60 refactor(chat): 将用户引用处理从同步改为异步,优化性能 2025-11-03 23:11:49 +08:00
tt-P607
be7fe56372 refactor(replyer): tmd回复模型你再犯个蠢事试试?😡😡😡老子都这样子严防死守了,你要是还犯蠢我当场********************👿👿👿 2025-11-02 09:48:58 +08:00
tt-P607
f981cd2051 fix(replyer): 优化回复器提示词以修复戳一戳处理逻辑
- **问题现象:**
  回复模型(Replyer)在接收到“戳一戳”事件时,会错误地生成如“[戳了戳]”之类的文本回复,而不是交由动作执行器(Planner)处理`poke_user`动作。

- **根本原因:**
  1.  回复提示词模板中没有明确禁止输出此类文本,导致模型将其视为普通消息进行模仿。
  2.  模板中关于“可用动作”的描述不够明确,可能让回复模型误以为自己需要处理或决定这些动作。

- **解决方案:**
  1.  **增强指令:** 在所有核心回复模板 (`default_expressor_prompt`, `s4u_style_prompt`, `normal_style_prompt`) 中,明确增加了“‘戳一戳’不是文本消息,而是由`poke_user`动作处理的特殊互动,因此绝对禁止在回复中输出相关文字”的规则。
  2.  **明确职责:** 修改了 `build_prompt_reply_context` 方法中生成`action_descriptions`的逻辑,向回复模型强调其职责仅是生成回复文本,而动作的决策与执行由独立的模型负责,严禁其在回复中模仿或调用动作。

- **影响:**
  - 修复了“戳一戳”互动被错误处理为文本回复的BUG。
  - 增强了提示词的鲁棒性,明确了回复模型与决策模型之间的职责边界,降低了未来类似问题的发生概率。
2025-11-02 09:33:19 +08:00
minecraft1024a
5f384da489 refactor(chat): 简化日程状态提示逻辑
删除了在日程活动时间范围之外的冗余状态判断。现在,无论当前时间是否在活动时间段内,都会统一计算并展示活动的开始、结束、已进行和剩余时间,简化了代码逻辑并确保了信息展示的一致性。反正LLM自己会判断的,不需要咱操心那么多啦。
2025-11-01 19:31:34 +08:00
minecraft1024a
af5d75b463 回复器你不许传dict 2025-11-01 16:56:44 +08:00
minecraft1024a
5e7f17ebf9 refactor(api): 合并兴趣度API和关系API,以及扩展关系API 2025-11-01 11:38:12 +08:00
Windpicker-owo
33f434aafa fix(plugin): 禁用hello_world_plugin以防止意外启用
fix(replyer): 修改提示信息中的“这句话”为“这条消息”以提高表达准确性
2025-10-31 23:14:41 +08:00
Windpicker-owo
9ccf27d642 refactor(replyer): 更新init_prompt函数,添加格式化标记输出限制 2025-10-31 22:49:01 +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
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
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
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
tt-P607
cd3bdf17c8 Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev 2025-10-30 18:28:31 +08:00
tt-P607
9152a06f5b fix(chat): 增强回复内容清理逻辑以处理嵌套回复头
先前的回复头清理逻辑无法有效处理模型生成的复杂或嵌套的回复结构,例如 `[回复<A>:[回复<B>:内容]],说:`,导致清理不彻底。

本次更新通过以下方式提升了清理的健壮性:
- 使用循环和更健壮的正则表达式,以递归方式剥离多层嵌套的回复头。
- 增加了一个基于 `],说:` 的 rsplit 作为最终防线,处理日志中观察到的其他特殊格式。
- 移除了可能存在的 `[SPLIT]` 标记,避免意外的消息分割。

此外,本次提交还更新了 QQ 表情列表,增加了新的表情并修正了一个格式错误。
2025-10-30 18:28:00 +08:00
Windpicker-owo
2c3895ef97 Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev 2025-10-30 17:35:29 +08:00
Windpicker-owo
ea7c1f22f9 feat(relationship): 重构关系信息提取系统并集成聊天流印象
- 在 RelationshipFetcher 中添加 build_chat_stream_impression 方法,支持聊天流印象信息构建
- 扩展数据库模型,为 ChatStreams 表添加聊天流印象相关字段(stream_impression_text、stream_chat_style、stream_topic_keywords、stream_interest_score)
- 为 UserRelationships 表添加用户别名和偏好关键词字段(user_aliases、preference_keywords)
- 在 DefaultReplyer、Prompt 和 S4U PromptBuilder 中集成用户关系信息和聊天流印象的组合输出
- 重构工具系统,为 BaseTool 添加 chat_stream 参数支持上下文感知
- 移除旧的 ChatterRelationshipTracker 及相关关系追踪逻辑,统一使用评分API
- 在 AffinityChatterPlugin 中添加 UserProfileTool 和 ChatStreamImpressionTool 支持
- 优化计划执行器,移除关系追踪相关代码并改进错误处理

BREAKING CHANGE: 移除了 ChatterRelationshipTracker 类及相关的关系追踪功能,现在统一使用 scoring_api 进行关系管理。BaseTool 构造函数现在需要 chat_stream 参数。
2025-10-30 16:58:26 +08:00
Windpicker-owo
f6349f278d feat(expression): 添加表达方式选择模式支持与DatabaseMessages兼容性改进
- 新增统一的表达方式选择入口,支持classic和exp_model两种模式
- 添加StyleLearner模型预测模式,可基于机器学习模型选择表达风格
- 改进多个模块对DatabaseMessages数据模型的兼容性处理
- 优化消息处理逻辑,统一处理字典和DatabaseMessages对象
- 在配置中添加expression.mode字段控制表达选择模式
2025-10-29 22:52:32 +08:00
tt-P607
76f33134df fix(chat): 清理模型意外生成的回复头
部分语言模型在生成回复时,会自行在内容开头添加如 `[回复<用户>的消息:]` 格式的回复头,这会导致最终消息中出现重复或格式错误的头部。

此提交通过正则表达式循环移除这些多余的回复头,确保输出内容整洁。
2025-10-29 17:33:02 +08:00
tt-P607
6649c4ce00 fix(chat): 修复上下文构建逻辑,确保总是合并数据库与会话历史
之前,仅在会话历史 (`read_messages`) 为空时,才会从数据库加载历史消息作为备用上下文。这可能导致在服务重启后或长时间对话中,上下文信息不完整,影响对话质量。

本次修改将流程调整为:始终先从数据库加载最近的历史消息,然后将其与当前会话中的消息进行合并与去重(以后者为准)。

这样可以确保无论在何种情况下,传递给模型的上下文都是最完整和准确的,从而显著提高对话的连贯性。
2025-10-29 15:20:38 +08:00
Windpicker-owo
919bcd4e2e feat(chat): 优化消息处理提示词与兴趣度显示逻辑
- 在默认回复器中移除未读消息的兴趣度显示,简化回复逻辑
- 在亲和流聊天器的计划过滤器中保留兴趣度显示,供planner决策使用
- 更新planner提示词,明确兴趣度优先原则但禁止在思考流中使用技术术语
- 统一历史消息区块的标题描述,提高可读性
2025-10-29 10:05:15 +08:00
minecraft1024a
ccbac891b6 refactor(reaction): 重构关键词反应系统为通用反应规则系统
将原有的 `keyword_reaction` 系统重构为一个更通用、更强大的 `reaction` 系统。新系统统一了关键词和正则表达式规则,并增加了按聊天流ID(`chat_stream_id`)进行规则作用域限定的功能。

主要变更包括:
- **统一配置模型**:将 `KeywordReactionConfig` 和 `KeywordRuleConfig` 合并重构为 `ReactionConfig` 和 `ReactionRuleConfig`,提供了更清晰、统一的规则定义方式。
- **增加作用域控制**:新的 `ReactionRuleConfig` 增加了 `chat_stream_id` 字段,允许规则被限定在全局范围或特定的聊天会话中。
- **简化逻辑实现**:`DefaultReplyer` 中的实现被重构,以适应新的配置模型,能够筛选并应用适用范围内的规则。
- **更新配置文件模板**:`bot_config_template.toml` 已更新,以反映新的 `[[reaction.rules]]` 配置结构,并提供了详细的注释说明。
- **新增辅助方法**:在 `ChatStream` 中添加了 `get_raw_id()` 方法,用于获取未哈希的原始聊天流ID,以支持新系统的作用域匹配。

BREAKING CHANGE: 关键词反应功能的配置结构已完全改变。旧的 `[keyword_reaction]` 配置不再兼容。用户需要将原有的 `keyword_rules` 和 `regex_rules` 迁移到新的 `[[reaction.rules]]` 格式。
2025-10-26 12:16:37 +08:00
minecraft1024a
a2eb7521d5 fix(chat): 修复当用户ID为空时主人认证失败的问题
在某些情况下(例如,某些平台或匿名使用场景),用户信息中可能不包含`user_id`。之前的代码没有处理这种情况,导致在调用`permission_api.is_master`时会因`user_id`为空而引发异常。

本次修改增加了对`user_id`的空值检查。如果`user_id`不存在,将直接返回空字符串,避免不必要的权限验证和潜在的错误,从而增强了代码的健壮性。
2025-10-25 17:15:20 +08:00
Eric-Terminal
e15573e9d6 feat(prompt): 添加主人认证提示词功能 (#47) 2025-10-25 15:55:12 +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
minecraft1024a
54993aa546 refactor(chat): 简化并硬编码prompt模板为s4u模式
移除了动态选择prompt模板的逻辑,直接使用`s4u_style_prompt`。这与最近移除`normal`模式并强制使用`s4u`模式的更改保持一致,简化了代码逻辑。
2025-10-25 10:03:28 +08:00
minecraft1024a
079a9a3fa0 refactor(prompt): 移除 normal 模式并强制使用 s4u 模式
删除了旧的 "normal" prompt 模式及其相关逻辑,包括 prompt 模板、上下文构建函数和配置选项。现在系统将统一并强制使用 "s4u" 模式进行回复生成。

主要变更:
- 从 `default_generator.py` 中移除了 `normal_style_prompt` 模板和模式选择逻辑。
- 从 `prompt.py` 中删除了 `_build_normal_chat_context` 和 `_prepare_normal_params` 等相关函数。
- 从 `official_configs.py` 中移除了 `prompt_mode` 配置项。
- 更新了 `bot_config_template.toml` 配置文件,移除了 `prompt_mode` 选项和相关的 normal 模式上下文共享组示例。

此重构简化了 prompt 生成流程,统一了上下文处理方式,减少了代码的复杂性和维护成本。
2025-10-25 09:56:14 +08:00
tt-P607
50050dd985 feat(plan): 为月度计划添加软删除并优化状态提示词
为 `MonthlyPlan` 数据库模型增加 `is_deleted` 字段,以支持软删除功能,避免数据直接丢失。

同时,统一并优化了注入到AI上下文中的当前日程活动提示词,指导模型仅在被直接询问时才提及自身状态,使对话更加自然流畅。
2025-10-23 21:48:29 +08:00
Windpicker-owo
ca69b8affe feat(chat): 改进异步任务管理和取消处理
- 在 StreamLoopManager、MessageManager 和 DefaultReplyer 中增加子任务跟踪机制
- 统一处理 asyncio.CancelledError 异常,确保任务取消时能正确清理子任务
- 使用 child_tasks 集合管理子任务生命周期,防止任务泄漏
- 优化记忆存储等后台任务的创建方式,支持优雅取消
- 改进错误处理逻辑,确保异常情况下也能清理子任务资源
2025-10-23 19:31:23 +08:00
tt-P607
5b29399d94 fix(chat): 防止在生成回复时触发消息打断
通过在聊天流上下文中引入 `is_replying` 状态标志,解决了在LLM生成回复期间可能被新消息错误打断的问题。

- 在调用LLM生成内容前将 `is_replying` 设置为 `True`。
- 在消息打断检查逻辑中,如果 `is_replying` 为 `True` 则跳过检查。
- 使用 `finally` 块确保无论生成成功或失败,`is_replying` 状态都会被重置为 `False`。

这确保了回复生成的原子性,防止了因用户快速连续发送消息而导致的自我打断。
2025-10-23 14:41:46 +08:00
Windpicker-owo
73cddf1121 Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev 2025-10-19 22:49:14 +08:00
Windpicker-owo
2ec3be7c84 feat(notice): 实现全局notice消息管理系统
添加全局notice管理器,将notice消息与普通消息分离处理。主要功能包括:

- 创建 GlobalNoticeManager 单例类,支持公共和特定聊天流作用域
- 在 message_manager 中集成notice检测和处理逻辑
- 扩展数据库模型和消息类,添加notice相关字段
- 在提示词生成器中添加notice信息块展示
- 配置系统支持notice相关参数设置
- 适配器插件增强notice类型识别和配置

notice消息特点:
- 默认不触发聊天流程,只记录到全局管理器
- 可在提示词中展示最近的系统通知
- 支持按类型设置不同的生存时间
- 支持公共notice(所有聊天可见)和流特定notice

BREAKING CHANGE: 数据库消息表结构变更,需要添加 is_public_notice 和 notice_type 字段
2025-10-19 22:45:19 +08:00
minecraft1024a
50a6c2de58 feat(plugin): 引入Prompt组件系统以实现动态Prompt注入
引入了一个新的插件组件类型 `BasePrompt`,允许插件动态地向核心Prompt模板中注入额外的上下文信息。该系统旨在提高Prompt的可扩展性和可定制性,使得开发者可以在不修改核心代码的情况下,通过插件来丰富和调整模型的行为。

主要变更包括:
- **`BasePrompt` 基类**: 定义了Prompt组件的标准接口,包括 `execute` 方法用于生成注入内容,以及 `injection_point` 属性用于指定目标Prompt。
- **`PromptComponentManager`**: 一个新的管理器,负责注册、分类和执行所有 `BasePrompt` 组件。它会在构建核心Prompt时,自动查找并执行相关组件,将其输出拼接到主Prompt内容之前。
- **核心Prompt逻辑更新**: `src.chat.utils.prompt.Prompt` 类现在会调用 `PromptComponentManager` 来获取并注入组件内容。
- **插件系统集成**: `ComponentRegistry` 和 `PluginManager` 已更新,以支持 `BasePrompt` 组件的注册、管理和统计。
- **示例插件更新**: `hello_world_plugin` 中增加了一个 `WeatherPrompt` 示例,演示了如何创建和注册一个新的Prompt组件。
- **代码重构**: 将 `PromptParameters` 类从 `prompt.py` 移动到独立的 `prompt_params.py` 文件中,以改善模块化和解决循环依赖问题。
2025-10-19 13:00:23 +08:00
tt-P607
72ea362e29 feat(web_search): 新增 Metaso 搜索引擎支持
为联网搜索工具集成了新的搜索引擎 Metaso,为用户提供更多搜索选择。

- 在搜索引擎基类 `BaseSearchEngine` 中添加了可选的 `read_url` 方法,为未来支持直接读取网页内容奠定基础。
- 更新了插件加载、工具执行逻辑和配置文件模板,以完整支持 Metaso 引擎。
- 将默认回复生成器的任务超时时间从 15 秒延长至 45 秒,以适应联网搜索等耗时较长的操作,提高稳定性。
2025-10-18 00:46:17 +08:00
tt-P607
1f26238368 refactor(chat): overhaul response processing for robustness and integrity
This commit redesigns the LLM response handling pipeline to gracefully manage complex, long, and structured outputs, shifting from a restrictive filtering model to a more resilient and content-aware approach.

The previous implementation suffered from brittleness, often discarding valid responses or corrupting formatted content. This refactor introduces two core changes to ensure response integrity:

1.  **Adaptive Message Merging:** Replaces the rigid message count and length limits, which caused the silent dropping of valid long-form answers. The new logic dynamically merges the shortest adjacent sentences if a response is overly fragmented, ensuring the full thought is preserved while adhering to display limits.

2.  **Content-Aware Pre-processing:** Implements a protection mechanism for special text formats. It now identifies and isolates Markdown code blocks, LaTeX-style math equations, and other code-like segments using placeholders before splitting or typo generation. This prevents formatting corruption and ensures technical content is rendered correctly.

Additionally, the LLM prompt for splitting has been refined to emphasize logical coherence over simple fragmentation.

Finally, this commit also hardens the `LLMRequest` class against race conditions by adding an `asyncio.Lock` to serialize generation requests, improving the system's stability under concurrent workloads.
2025-10-17 02:34:39 +08:00
tt-P607
59e94ea7aa 嗯,llm分割提示词优化一下 2025-10-17 01:09:08 +08:00
minecraft1024a
adfe15a10f **我撞到dict了 2025-10-12 14:25:02 +08:00
minecraft1024a
9fdae38b6a refactor(replyer): 迁移 reply_messageDatabaseMessages 数据模型
将 `default_generator` 中使用的 `reply_message` 参数及其相关逻辑从旧的 SQLAlchemy `Messages` 模型迁移到新的 Pydantic `DatabaseMessages` 数据模型。

此更改统一了内部数据处理模型,提高了类型安全性和代码清晰度。同时,更新了所有对 `reply_message` 属性的访问方式,以适应新的嵌套数据结构(例如 `chat_info.platform` 和 `user_info.user_id`)。
2025-10-12 14:10:27 +08:00
minecraft1024a
e851dfbc62 refactor(replyer): 将 reply_message 类型从 dict 更改为 Messages 模型
将 `DefaultReplyer` 中多个方法的 `reply_message` 参数类型从通用的 `dict` 更改为更具体的 SQLAlchemy 模型 `Messages`。

这一更改提高了代码的类型安全性和可读性,使得数据结构更加明确。同时,更新了相关代码以直接访问模型属性,而不是使用字典的 `get()` 方法。
2025-10-12 14:03:20 +08:00
minecraft1024a
86ab01996d feat(schedule): 优化日程提示并增加时间感知能力
日程系统现在可以更详细地描述当前活动,包括计划的起止时间、已进行时间和剩余时间,为AI角色提供更强的时间感知和情境感。

主要变更:
- `schedule_manager`的`get_current_activity`现在返回包含活动和时间范围的字典,而不仅仅是活动名称。
- 在`default_generator`中,重构了日程提示的生成逻辑,使其能够计算并展示活动的详细时间信息。
- 修复了多处可能因变量为空(如`msg_content`、`user_nickname`)或事件处理结果为`None`而引发的潜在错误。
- 统一了各处对日程信息的调用方式。
2025-10-12 12:57:48 +08:00
tt-P607
3fcc53226f Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev 2025-10-11 19:04:36 +08:00