25a5e72c07
fix: 修复回复分割问题
2025-12-10 12:57:16 +08:00
Windpicker-owo
a2be8685c2
将GPT-SoVITS TTS移出built in,优化kfc提示词
2025-12-08 22:08:31 +08:00
Windpicker-owo
e148cfd16b
feat(memory): 使用异步初始化确保统一记忆管理器已准备就绪
2025-12-08 17:30:11 +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
Windpicker-owo
9f666b580e
feat(waiting): 添加等待策略配置,支持最大、最小等待时间及倍率调整
2025-12-07 16:38:46 +08:00
tt-P607
6081eeafea
fix(prompt): 加强指令以防止伪造 @ 提及
...
大型语言模型(LLM)有时会在回复中生成无法使用的 `@username` 提及,这些提及以纯文本形式出现,造成不佳的用户体验。
此次提交更新了提示模板,更明确、强烈地禁止生成包含 `@` 符号的任何文本。新的指令还解释了模型 *为什么* 不能创建真实的提及,说明这是系统级显示格式,模型无法复制。这应当消除伪造提及的生成。
2025-12-05 02:15:14 +08:00
ikun-11451
72e7492953
依旧修pyright喵~
2025-11-29 21:26:42 +08:00
tt-P607
655e535d96
Revert "feat(chat): 通过动作参数实现专用的 @用户 功能"
...
This reverts commit e5117720c6 .
2025-11-28 08:21:06 +08:00
tt-P607
e5117720c6
feat(chat): 通过动作参数实现专用的 @用户 功能
...
此提交引入了一种在回复中提及(@)用户的稳健机制。此功能不再由 LLM 直接生成“@”文本,而是通过 `reply` 和 `respond` 动作中新增加的 `at_user_id` 参数来处理。
主要变化包括:
- **核心动作:** 在 `ReplyAction` 和 `RespondAction` 中添加可选的 `at_user_id` 参数,用于指定要提及的用户。
- **提示工程:** 更新了 `default_generator` 提示,以指导 LLM 如何使用新的 `at_user_id` 参数,而不是生成“@”文本。
- **动作管理器:** `ChatterActionManager` 现在会检查动作数据中的 `at_user_id`。如果存在,它会使用新的 `SEND_AT_MESSAGE` 命令,确保提及格式正确并发送。
- **发送 API:** 在 `send_api` 中引入新的 `at_user_to_stream` 函数,用于处理发送独立的 `@` 段落。
- **类型安全与重构:** 改进了类型提示跨多个文件(`mofox_wire` 类型、`cast` 等)进行了修改,并增加了对 `global_config` 是否存在的检查,以防止运行时可能出现的 `NoneType` 错误,从而提高了整体代码的稳定性。
2025-11-28 02:54:47 +08:00
tt-P607
fd628bbee0
fix(chat):为 reply_to 提供回退以防止崩溃
...
在处理 `reply_to` 目标时,为 `platform` 和 `user_id` 提供回退值。这解决了当 `user_id` 未明确存在时(例如在涉及 QQ 空间插件的场景中)出现的 `UnboundLocalError`。
2025-11-27 21:55:05 +08:00
拾风
94b889f34e
Merge branch 'dev' into mofox-bus
2025-11-26 22:52:06 +08:00
Windpicker-owo
0908fb50a0
优化日志
2025-11-26 21:16:16 +08:00
Windpicker-owo
46a98fefc4
重构:更新聊天流中打断计数的重置逻辑,简化元事件处理器的实现
2025-11-26 17:58:31 +08:00
Windpicker-owo
d28ba27f26
重构:统一平台字段命名,更新相关数据模型和消息处理逻辑
2025-11-26 17:34:25 +08:00
Windpicker-owo
8a6b141017
重构代码以使用 mofox_wire 替代 mofox_bus,更新相关文档和示例
2025-11-25 22:45:57 +08:00
tt-P607
fd65d8c4eb
feat(person_info): 实施基于稳健 ID 的用户信息同步。本次提交重构了用户识别和信息检索系统,使其基于稳定的平台和用户 ID,不再依赖脆弱的姓名解析机制。同时引入了自动后台进程,以保持用户信息的实时更新。主要变更包括:
...
- 在 `PersonInfoManager` 中新增 `sync_user_info` 方法,根据 `platform` 和 `user_id` 来创建和更新用户记录。
- `ChatManager` 现在会在处理消息时触发该同步作为非阻塞后台任务,确保用户数据(如昵称)保持最新。
- 提示生成逻辑,特别是关系和上下文信息的生成,已重构为使用稳定的 `user_id`,而非从回复消息内容中解析姓名。
- `PromptParameters` 已被扩展,以在整个回复生成流程中传递 `platform` 和 `user_id`。
- 弃用依赖名称到 ID 查找的脆弱方法。
2025-11-25 22:01:41 +08:00
Windpicker-owo
b6de9b5a9c
重构聊天系统中的消息发送与处理
...
- 更新了`uni_message_sender.py`,使用`MessageEnvelope`来发送消息,取代了之前的`MessageSending`结构。
- 引入了`send_envelope`函数,通过改进日志记录和错误处理来简化消息发送流程。
- 修改了`HeartFCSender`以直接处理`MessageEnvelope`,确保与新消息结构的兼容性。
- 重构了`default_generator.py`,以构建`MessageEnvelope`而不是`MessageSending`,从而增强了消息构建逻辑。
- 调整了`utils.py`中的效用函数,以使用`DatabaseUserInfo`来处理用户信息。
- 更新了`send_api.py`以构建和发送`MessageEnvelope`,从而改进了消息分发逻辑。
- 从插件系统中移除了已弃用的`MaiMessages`类,清理了未使用的代码。
- 增强了`napcat_adapter_plugin`以适应新的消息结构,确保消息的正确处理和发送。
- 对代码进行整体清理和整理,以提高可维护性和可读性。
2025-11-25 21:54:27 +08:00
Windpicker-owo
c268ea2fb2
修复ChatStream循环导入问题
2025-11-25 20:29:48 +08:00
Windpicker-owo
1ebdc37b22
重构ChatStream和StreamContext:移除context_manager引用
...
- 在ChatStream及相关类中,将所有context_manager的实例替换为直接上下文访问。
- 更新方法,利用新的上下文结构来管理聊天状态和消息。
- 增强的StreamContext,增加了用于消息处理、统计和历史管理的方法。
- 在重构过程中改进了错误处理和日志记录。
2025-11-25 12:01:26 +08:00
Windpicker-owo
bd4e36b1cf
feat(replyer): 添加最近消息支持以构建记忆块和查询文本
2025-11-20 18:06:23 +08:00
Windpicker-owo
80c1464ba7
Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev
2025-11-19 20:19:10 +08:00
Windpicker-owo
cf48d02ed3
feat: 重构记忆系统配置,移除三层记忆相关配置,优化全局记忆管理逻辑,支持批量生成文本向量
2025-11-19 19:16:27 +08:00
Windpicker-owo
14133410e6
feat: 批量生成文本embedding,优化兴趣匹配计算逻辑,支持消息兴趣值的批量更新
2025-11-19 16:30:44 +08:00
Windpicker-owo
75b806cd41
feat: 添加历史消息长度限制,优化上下文管理和消息处理逻辑
2025-11-19 13:59:40 +08:00
Windpicker-owo
999d7b285f
feat: 重构统一记忆管理器,整合聊天历史上下文并优化记忆块转移逻辑
2025-11-18 20:39:05 +08:00
Windpicker-owo
dc3ad19809
feat: 采用三层内存系统实现统一内存管理器
...
- 添加了UnifiedMemoryManager,以整合感知层、短期记忆层和长期记忆层。
- 实现了初始化、消息添加和内存搜索功能。
- 引入了记忆从短期存储到长期存储的自动转移机制。
- 开发了用于结构化内存表示的内存格式化工具。
- 增强日志记录功能,以便在内存操作过程中更好地进行追踪。
2025-11-18 16:17:25 +08:00
Windpicker-owo
b5cfa41d36
feat:实现短期内存管理器和统一内存管理器
...
- 添加了ShortTermMemoryManager来管理短期记忆,包括提取、决策和记忆操作。
- 集成大型语言模型(LLM),用于结构化记忆提取和决策过程。
- 基于重要性阈值,实现了从短期到长期的内存转移逻辑。
- 创建了UnifiedMemoryManager,通过统一接口整合感知记忆、短期记忆和长期记忆的管理。
- 通过法官模型评估来增强记忆提取过程的充分性。
- 增加了自动和手动内存传输功能。
- 包含内存管理操作和决策的全面日志记录。
2025-11-18 11:12:05 +08:00
tt-P607
8952a7392d
feat(prompt): 指示模型使用更自然的用户昵称
...
在核心聊天提示中添加了一条新规则,以改善对用户的称呼方式。
这条规则指示模型避免直接重复复杂或含有符号的用户名。相反,它鼓励使用更自然的昵称或缩写,使对话感觉更像人与人之间的交流。
2025-11-17 09:38:45 +08:00
minecraft1024a
6f62073630
chore: perform widespread code cleanup and formatting
...
Perform a comprehensive code cleanup across multiple modules to improve code quality, consistency, and maintainability.
Key changes include:
- Removing numerous unused imports.
- Standardizing import order.
- Eliminating trailing whitespace and inconsistent newlines.
- Updating legacy type hints to modern syntax (e.g., `List` -> `list`).
- Making minor improvements for code robustness and style.
2025-11-15 17:12:46 +08:00
tt-P607
5326c69163
feat(prompt): 添加动态群聊提醒并修复内存搜索
...
在系统提示中引入动态群聊提醒,使其具备上下文意识。现在仅在对话发生在群聊环境中时注入该提醒,从而防止在私聊中可能引起模型混淆。
这是通过向`PromptParameters`添加`group_chat_reminder_block`实现的,该模块会根据聊天类型有条件地填充。
此外,本次提交还包括修复在内存搜索过程中可能出现的`AttributeError`,确保在尝试使用内存模块之前先进行配置。
2025-11-13 11:10:16 +08:00
Windpicker-owo
310256e24d
feat(attention): 添加注意力优化器以增强提示词多样性和防止注意力退化
...
refactor(prompt): 使用 asyncio.gather 替代 as_completed 以提升并发性能
refactor(config): 添加注意力优化配置选项
refactor(prompt_params): 增加注意力优化开关
2025-11-12 22:37:35 +08:00
Windpicker-owo
edce9ff496
refactor(replyer): 优化用户ID获取逻辑,简化自我回复判断
2025-11-12 17:36:12 +08:00
Windpicker-owo
09db6c0c88
refactor: 移除对机器人自身用户ID的特殊处理,统一使用QQ号进行比较
2025-11-12 17:33:51 +08:00
Windpicker-owo
62c3732200
refactor(action_manager): 简化回复处理逻辑,移除多余的参与者信息获取
2025-11-12 16:23:39 +08:00
Windpicker-owo
80736a0deb
refactor(distribution_manager): 优化流循环管理逻辑,减少重复代码并改进异常处理
...
refactor(action_manager): 将异步存储操作改为非阻塞任务,提升性能
refactor(default_generator): 简化回复生成器中的消息处理逻辑
refactor(generator_api): 更新类型提示,增强代码可读性
refactor(affinity_chatter): 清理异常处理中的冗余代码,确保处理标记的正确清理
refactor(affinity_interest_calculator): 重命名阈值调整方法,提升代码一致性
refactor(plan_executor): 移除冗余的已读消息处理逻辑
refactor(planner): 优化规划器中的异常处理,确保正常模式的退出检查
2025-11-12 16:08:52 +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
13fb86394b
feat(replyer): 使用全局配置替换默认记忆检索参数,提升灵活性和可配置性
...
feat(memory_tools): 优化记忆过滤逻辑,增强日志记录和过滤统计
feat(plan_filter): 调整AFC场景的记忆检索数量,减少干扰
2025-11-11 21:34:11 +08:00
Windpicker-owo
aab3f19f10
feat(chatter_manager): 清理 processing_message_id 以防止重复回复检测失效
...
feat(distribution_manager): 添加子任务跟踪和取消逻辑,优化流处理
feat(default_generator): 优化 respond 和 reply 模式下的消息处理逻辑
feat(affinity_chatter): 处理取消异常时清理 processing_message_id
feat(planner): 确保在规划流程取消时清理 processing_message_id
2025-11-10 17:12:20 +08:00
Windpicker-owo
861cc18e7d
feat(reply): 优化respond动作逻辑,移除不必要的目标消息参数
2025-11-10 16:07:23 +08:00
Windpicker-owo
b427960441
feat(reply): 引入统一格式过滤器,优化回复内容清理逻辑
2025-11-10 14:12:11 +08:00
Windpicker-owo
882f93c886
feat(reply): 引入增强的格式过滤器,优化回复内容清理逻辑
2025-11-10 13:36:17 +08:00
Windpicker-owo
8c4a54c75d
feat(reply): 引入 reply 和 respond 动作,优化消息回复机制
...
- 增加 reply 动作,针对单条消息进行深度回复,使用 s4u 模板。
- 增加 respond 动作,统一回应未读消息,使用 normal 模板。
- 更新核心动作插件以支持新动作,确保配置选项可用。
- 优化动作执行逻辑,提升对话流畅性和响应准确性。
2025-11-10 13:24:45 +08:00
tt-P607
24f1faf468
Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev
2025-11-09 12:47:31 +08:00
tt-P607
43ac8afe60
fix(replyer): 彻底重构回复过滤器以处理深度嵌套格式
...
问题描述:
此前,模型在生成回复时,会偶发性地模仿并输出Prompt中用于示例的 [回复<...>] 格式。尽管经过多次迭代,原有的正则表达式过滤器仍无法有效处理包含多层嵌套括号的复杂情况,导致清理不彻底,最终发送的消息中仍残留部分不规范文本。
解决方案:
本次提交对 default_generator.py 中的 llm_generate_content 方法进行了彻底的重构,用一套更健壮、更简单的逻辑替换了原有的正则表达式方案:
采用“整体清除”策略: 放弃了复杂的模式匹配,转而实现了一个更直接的清除逻辑。现在,如果一条生成的消息以 [回复 开头,程序会寻找到该消息中 最后一个 ] 字符的位置。
精准切片: 将从消息开头到最后一个 ] 字符(包含该字符)之间的所有内容全部切除,只保留之后的部分作为最终回复。
日志记录: 保留了清晰的 logger.warning,在过滤器生效时,会详细记录原始内容与清理后的内容,便于持续监控模型行为。
优势:
鲁棒性: 这种新方法与括号的嵌套层数完全无关,无论模型生成多么复杂的嵌套结构,都能一举将其完全清除,从根本上解决了问题。
简洁性: 代码逻辑比复杂的正则表达式更清晰、更易于理解和维护。
验证:
创建了专门的测试脚本 Elysia/Bot/scripts/test/test_ultimate_filter.py。
脚本覆盖了多种复杂的、包含深度嵌套的失败案例以及正常的边界情况。
测试结果表明,新的过滤逻辑完美通过了所有测试,达到了预期的效果。
2025-11-09 12:47:19 +08:00
明天好像没什么
6a5648ba07
创建了新的反注入
2025-11-09 12:31:38 +08:00
tt-P607
402644900f
feat(chat): 优化回复内容过滤器,杜绝格式模仿
...
核心问题:
修复了模型在生成回复时,偶尔会模仿并输出Prompt中用于示例的 [回复<...>] 格式的问题。此问题会导致最终发送的消息包含不应出现的多余文本。
实现方案:
精准定位过滤时机:
将过滤逻辑从原先的 send_api 前置到 default_generator 的 llm_generate_content 方法中。这确保了在LLM生成内容后、任何后续处理(如回复分割)前,第一时间对不规范内容进行清理,从根源上解决了问题。
强化正则表达式:
采用了一个更严格的正则表达式 r'\[\s*回复\s*<.+?>.*?\]',并设置了 re.DOTALL 标志。此举旨在“宁可错杀,不可放过”,能够更有效地匹配并清除各种复杂的、甚至包含换行的模仿格式。
处理嵌套残留:
在正则替换后,增加了一步额外的检查。如果清理后的字符串以 ] 开头(通常由嵌套括号引起),则会移除这个残留的字符,确保最终内容的绝对纯净。
增加日志监控:
为过滤器增加了 logger.warning 日志。当过滤器成功触发并清理内容时,会详细记录原始内容与清理后的内容,便于后续追踪和分析模型行为。
代码结构优化:
移除了 llm_generate_content 方法中原有的、效果较差的旧清理逻辑,避免了代码冗余。
修正了 build_memory_block 方法中一处错误的属性访问,将 stream.chat_history_manager 更正为 stream.context_manager,解决了潜在的 AttributeError。
最终效果:
通过以上修改,我们构建了一套健壮、精准且可观测的回复内容过滤机制,彻底解决了模型模仿系统消息格式的问题,显著提升了回复内容的质量与规范性
2025-11-09 01:07:27 +08:00
tt-P607
130a0fdb31
refactor(core): 简化回复清理并加强 API 调用此次提交彻底重构了回复清理逻辑,以提升可维护性,并在发送 API 中引入了多项防御性检查,以防止常见的运行时错误。通过将复杂的迭代清理算法替换为单一且更高效的正则表达式,回复生成过程得到了简化。这不仅提高了去除模型生成的头信息的可靠性,还显著降低了代码复杂性。在发送 API 中,实现了多个安全措施:- 修正了异步处理错误,通过移除同步字典操作上无效的 await,防止出现 TypeError。- 添加了预检验证,以确保文件上传有定义的目标,并且临时流指定了平台。- 现在一致将机器人用户 ID 转换为字符串,以消除潜在的类型相关不一致。最后,为了清晰起见,机器人的行为原则术语也进行了调整。
2025-11-09 00:50:23 +08:00
明天好像没什么
c8d7c09625
ruff
2025-11-07 21:01:45 +08:00