Commit Graph

56 Commits

Author SHA1 Message Date
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
b97470cf60 refactor(chat): 将用户引用处理从同步改为异步,优化性能 2025-11-03 23:11:49 +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
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
明天好像没什么
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
ee7a37ce70 feat(plugin_system): 引入高级Prompt注入规则系统以取代旧注入点机制
引入了一套全新的、基于规则的Prompt注入系统,以取代原有的 `injection_point` 机制。这套新系统提供了更强大、更灵活的Prompt内容注入能力。

主要变更包括:
- **引入 `InjectionRule` 和 `InjectionType`**:定义了注入规则的数据结构和注入类型(如 `PREPEND`, `APPEND`, `REPLACE`, `REMOVE`, `INSERT_AFTER`),允许插件开发者精确控制注入行为。
- **重构 `PromptComponentManager`**:核心逻辑从简单地拼接字符串 (`execute_components_for`) 重构为按优先级应用注入规则 (`apply_injections`),支持正则表达式匹配和更复杂的注入操作。
- **向后兼容**:`PromptInfo` 中增加了兼容逻辑,能自动将旧的 `injection_point` 定义转换为新的 `injection_rules`,确保现有插件无需立即修改即可正常工作。
- **更新 `BasePrompt`**:废弃了 `injection_point` 属性,并推荐使用新的 `injection_rules` 属性。
- **更新示例插件**:`hello_world_plugin` 已更新,展示了新注入规则的使用方法。

BREAKING CHANGE: `BasePrompt` 中的 `injection_point` 属性已被废弃。虽然目前存在向后兼容逻辑,但未来版本将移除该属性。所有Prompt组件都应迁移至使用 `injection_rules` 以获得更强的控制力和未来的兼容性。
2025-10-25 21:24:51 +08:00
minecraft1024a
df4e638e76 ~谁在写代码不加注释我就把它炒了😡😡😡😡😡~
feat(prompt): 补全了prompt类的函数注释和内联注释
2025-10-25 17:48:21 +08:00
Eric-Terminal
e15573e9d6 feat(prompt): 添加主人认证提示词功能 (#47) 2025-10-25 15:55:12 +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
6a7118d331 chore(chat): 移除提示词注入中的冗余日志 2025-10-23 20:25:21 +08:00
tt-P607
2c5dc64e1f feat(chat): 为知识库段落增加相关性阈值过滤
根据 `qa_paragraph_threshold` 配置,跳过相关性得分低于阈值的知识库段落。

这可以防止低相关性的知识污染上下文,从而提高生成回答的质量和准确性。
2025-10-23 02:25:15 +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
73383f8246 refactor(prompt): 优化Prompt组件注入逻辑并简化代码
将Prompt组件的注入逻辑从`Prompt.format`方法前置到`PromptManager.get_prompt_async`和`create_prompt_async`中。这使得注入时机更早,逻辑更清晰,并允许在获取Prompt时就能动态传入参数以影响注入内容。

主要变更:
- `PromptManager`: `get_prompt_async`现在负责处理组件注入,并接收可选的`parameters`参数。`format_prompt`相应地传递参数。
- `create_prompt_async`: 现在也支持在创建时进行动态注入。
- `Prompt.format`: 移除了原有的组件注入逻辑,简化了方法实现。
- `PromptComponentManager`: 重构为直接从全局`component_registry`获取组件,移除了自身的注册和存储逻辑,减少了状态管理的复杂性。
- `plan_filter.py`: 删除了大量冗余和重复的代码块,包括主动聊天模式的独立逻辑和旧的历史消息构建方式。
2025-10-19 13:32:49 +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
minecraft1024a
22ef271c89 fix(chat): 修复知识库相关性得分格式化问题
当知识库返回的相关性得分(relevance)不是有效的浮点数时,格式化字符串 `f"{relevance:.2f}"` 会引发 `TypeError` 或 `ValueError`,导致程序崩溃。

本次修改通过添加 `try-except` 块来捕获潜在的异常。如果 `relevance` 可以成功转换为浮点数,则将其格式化为两位小数;如果转换失败,则直接使用其原始字符串表示形式,从而增强了代码的健壮性,避免了因数据类型不匹配而导致的运行时错误。
2025-10-18 21:57:27 +08:00
minecraft1024a
599dc95a99 refactor(knowledge): 简化知识库问答管理器的使用
将 `QAManager` 类实例化改为直接导入和使用单例 `qa_manager`,以简化代码并提高效率。同时,移除了对 `get_knowledge` 方法中不再需要的参数,使其调用更加清晰。
2025-10-18 21:29:44 +08:00
minecraft1024a
d10f0e81cb refactor(cross_context): 重构S4U上下文检索逻辑并更新配置
将S4U(Search for User)上下文检索模式从依赖于共享组(ContextGroup)的配置中解耦,改为使用独立的全局配置。这使得S4U模式的管理更加清晰和灵活。

主要变更:
- **配置模型更新**: 在`CrossContextConfig`中移除了与S4U相关的字段(如`s4u_ignore_whitelist`),并添加了新的S4U专用配置项,包括`s4u_mode`, `s4u_limit`, `s4u_stream_limit`, `s4u_whitelist_chats`, 和 `s4u_blacklist_chats`。
- **S4U逻辑重构**: `build_cross_context_s4u`函数不再接收`context_group`参数,而是直接读取全局的S4U配置来检索用户在白名单或黑名单聊天中的消息。
- **简化调用**: `Prompt.get_cross_context_prompt`中的调用逻辑被简化,以适应新的函数签名。
- **文档与模板更新**: 更新了`bot_config_template.toml`配置文件模板,以反映新的S4U配置结构,并提供了更清晰的注释说明。

此次重构将Normal模式(群组共享)和S4U模式(用户中心)的配置和实现完全分离,提高了代码的可维护性和配置的直观性。
2025-10-12 12:38:13 +08:00
minecraft1024a
f7ed5211a3 feat(context): 增加跨上下文黑名单模式
为跨上下文共享功能引入了黑名单模式,并增加了相应的配置选项。

- 在 `ContextGroup` 配置中增加了 `mode` 字段,支持 "whitelist"(白名单)和 "blacklist"(黑名单)模式。
- 增加了 `default_limit` 配置项,用于黑名单模式下的默认消息获取数量。
- 重构了 `cross_context_api` 以支持新的黑名单逻辑,现在可以共享除了黑名单中指定聊天外的所有聊天上下文。
- 更新了配置文件模板以包含新模式的说明和示例。
2025-10-11 19:45:32 +08:00
minecraft1024a
419d1a483a feat(context): 增强s4u跨上下文模式并重构API
在跨上下文功能中为s4u模式引入`s4u_ignore_whitelist`配置项。当启用时,除了白名单中配置的聊天记录外,还会自动获取目标用户与Bot的私聊记录,以构建更全面的用户画像。

主要变更:
- 在 `ContextGroup` 配置中添加 `s4u_ignore_whitelist` 字段。
- 重构 `cross_context_api`,将 `get_context_groups` 更改为 `get_context_group`,使其返回完整的 `ContextGroup` 对象而非仅ID列表,以便于访问新配置。
- 调整 `build_cross_context_s4u` 函数以处理新逻辑,包括获取私聊记录和避免重复处理。
- 更新了配置文件模板以包含新选项的说明和示例。
2025-10-11 19:19:52 +08:00
Windpicker-owo
207512c084 Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev 2025-10-08 22:33:14 +08:00
Windpicker-owo
dd1444cc41 refactor(chat): 重构关系系统并优化消息打断处理机制
- 移除独立的RelationshipConfig,将关系追踪参数整合到AffinityFlowConfig
- 实现消息打断后立即重新处理流程,提升交互响应性
- 优化关系追踪系统,添加概率筛选和超时保护机制
- 改进机器人自引用处理,确保消息内容正确显示
- 增强用户信息提取逻辑,兼容多种消息格式
- 添加异步后台任务处理,避免阻塞主回复流程
- 调整兴趣评分阈值和权重参数,优化消息匹配精度
2025-10-08 22:33:10 +08:00
tt-P607
4c46bb6b4b feat(chat): 为提示词模板添加机器人名称和昵称变量
将机器人的名称(bot_name)和昵称(bot_nickname)添加到提示词格式化上下文中,以便在提示词中动态使用,增强个性化。
2025-10-08 22:04:56 +08:00
Windpicker-owo
8142a12acb feat(chat): 添加机器人身份信息到提示词模板
在多个提示词模板中添加机器人名称和昵称信息,让AI能够正确识别自己的身份。同时更新PromptParameters类以支持这些新参数。
2025-10-07 17:50:18 +08:00
Windpicker-owo
3e37b7cef5 refactor(chat): 统一异步调用模式并修复循环依赖
- 将 chat_manager.get_stream() 调用改为异步
- 将 replyer_manager.get_replyer() 方法改为异步
- 在 generator_api 中使用动态导入避免循环依赖
- 在 action_manager 中添加待处理动作队列清理
- 更新所有相关调用点以支持异步模式
2025-10-05 18:30:16 +08:00
Windpicker-owo
23e523c7b9 refactor(chat): 优化异步任务处理和消息管理逻辑
- 使用asyncio.create_task替代await调用,提升并发性能
- 简化流管理器的槽位获取逻辑,移除回退方案
- 重构上下文管理器的消息添加和更新机制
- 移除StreamContext中的冗余方法,保持数据模型的简洁性
- 优化兴趣度评分系统的更新流程,减少阻塞操作

这些改动主要关注性能优化和代码结构简化,不涉及功能变更。
2025-10-05 15:17:30 +08:00
minecraft1024a
2c74b472ab style: 统一代码风格并进行现代化改进
对整个代码库进行了一次全面的风格统一和现代化改进。主要变更包括:

- 将 `hasattr` 等内置函数中的字符串参数从单引号 `'` 统一为双引号 `"`。
- 采用现代类型注解,例如将 `Optional[T]` 替换为 `T | None`,`List[T]` 替换为 `list[T]` 等。
- 移除不再需要的 Python 2 兼容性声明 `# -*- coding: utf-8 -*-`。
- 清理了多余的空行、注释和未使用的导入。
- 统一了文件末尾的换行符。
- 优化了部分日志输出和字符串格式化 (`f"{e!s}"`)。

这些改动旨在提升代码的可读性、一致性和可维护性,使其更符合现代 Python 编码规范。
2025-10-05 13:21:27 +08:00
Windpicker-owo
624298e1b8 refactor(chat): 异步化聊天系统并重构兴趣值计算机制
将同步调用改为异步调用以提升性能,重构兴趣值计算流程以支持更灵活的组件化架构。主要改进包括:

- 异步化ChatManager相关方法,避免阻塞主线程
- 重构兴趣值计算系统,从插件内部计算改为通过兴趣管理器统一处理
- 新增should_act字段支持更细粒度的动作决策
- 优化初始化逻辑,避免构造函数中的异步操作
- 扩展插件系统支持兴趣计算器组件注册
- 更新数据库模型以支持新的兴趣值相关字段

这些改进提升了系统的响应性能和可扩展性,同时保持了API的向后兼容性。
2025-10-05 01:25:52 +08:00
Windpicker-owo
7617f85b92 feat(chat): 增强任务管理和取消机制
添加新的任务管理方法来更好地处理异步任务的生命周期:
- 新增 cancel_processing_task、remove_processing_task 等方法
- 在流循环清理时自动取消关联的 chatter 处理任务
- 添加活跃任务统计信息到管理器统计中
- 改进 prompt 构建时的任务类型检查和错误处理
2025-10-03 14:17:29 +08:00
Windpicker-owo
9e1baa7e61 refactor(chat): 优化流循环管理和数据库性能
移除StreamLoopManager中的锁机制,简化并发流处理逻辑
- 删除loop_lock,减少锁竞争和超时问题
- 优化流启动、停止和清理流程
- 增强错误处理和日志记录

增强数据库操作性能
- 集成数据库批量调度器和连接池管理器
- 优化ChatStream保存机制,支持批量更新
- 改进数据库会话管理,提高并发性能

清理和优化代码结构
- 移除affinity_chatter中的重复方法
- 改进prompt表达习惯格式化
- 完善系统启动和清理流程
2025-10-03 13:56:58 +08:00
Windpicker-owo
fa9f14388a refactor(chat): 优化异步任务处理和参数传递机制
- 重构ExpressionSelector初始化,添加chat_id参数支持
- 优化StreamLoopManager中异步任务的创建和管理方式
- 简化MessageManager中的消息添加流程
- 调整Prompt中表情选择器的参数传递结构
2025-10-03 02:32:02 +08:00
John Richard
7923eafef3 re-style: 格式化代码 2025-10-02 20:26:01 +08:00
John Richard
ecb02cae31 style: 格式化代码 2025-10-02 19:38:39 +08:00
Windpicker-owo
9359e489a9 feat:实现具有向量和元数据索引的统一内存存储系统
- 添加了 UnifiedMemoryStorage 类,用于管理带向量嵌入的内存块。
- 集成了 FAISS,以实现高效的向量存储和搜索。
- 实现了内存缓存、关键字、类型和用户索引。
- 增加了内存遗忘和自动保存存储数据的支持。
- 包含用于存储、搜索和遗忘记忆的方法。
- 引入了存储行为和性能的配置选项。
- 实现了从磁盘加载和保存内存及向量数据。
2025-10-01 18:02:42 +08:00
Windpicker-owo
99f77135c1 feat(memory): 重构记忆系统检索机制并优化召回率
- 实现五阶段检索流程:元数据过滤→向量搜索→语义重排序→上下文过滤→增强重排序
- 添加回退机制保障检索健壮性,当主检索失败时自动降级到文本匹配
- 优化向量相似度阈值配置,提升记忆召回率
- 新增记忆融合候选收集机制,避免重复记忆存储
- 改进记忆格式化器,支持多种展示格式
- 增强向量存储加载和重建逻辑,确保数据持久化
- 优化记忆存储时机,移至回复生成完成后异步执行
- 添加详细的检索调试日志,便于问题排查
- 简化查询规划器提示模板,提升生成效率
2025-10-01 15:02:38 +08:00
Windpicker-owo
dc39fd26c7 feat(memory): 重构记忆系统并移除插件热重载
重构记忆系统核心模块,引入全局记忆作用域、记忆指纹去重机制和查询规划器,优化多阶段检索性能。移除插件热重载系统及其相关依赖。

主要变更:
- 引入全局记忆作用域,简化记忆管理
- 实现记忆指纹去重,避免重复记忆存储
- 新增查询规划器,支持语义查询规划和记忆类型过滤
- 优化多阶段检索,增加语义重排和权重配置
- 改进向量存储,支持嵌入维度自动解析和查询向量生成
- 增强元数据索引,支持主体索引和更新操作
- 记忆构建器支持多主体和自然语言展示
- 移除watchdog依赖和插件热重载模块
- 更新配置模板,简化记忆配置项

BREAKING CHANGE: 移除插件热重载系统,相关API和命令不再可用。记忆系统接口有较大调整,使用该系统的模块需要适配新接口。
2025-10-01 04:56:32 +08:00
Windpicker-owo
ff7294e860 feat(memory): 增强记忆构建系统并优化检索性能
- 添加记忆提取异常处理机制,提升系统稳定性
- 实现记忆内容格式化功能,增强可读性和结构化输出
- 优化LLM响应解析逻辑,避免系统标识误写入记忆
- 改进向量存储批量嵌入生成,提升处理效率
- 为记忆系统添加机器人身份上下文注入,避免自身信息记录
- 增强记忆检索接口,支持额外上下文参数传递
- 添加控制台记忆预览功能,便于人工检查
- 优化记忆融合算法,正确处理单记忆组情况
- 改进流循环管理器,支持未读消息积压强制分发机制
2025-09-30 21:15:40 +08:00
Windpicker-owo
b30db43776 feat(memory): 实现增强记忆系统并完全替换原有架构
引入全新的增强记忆系统,彻底取代海马体记忆架构
删除旧版记忆系统相关模块,包括Hippocampus、异步包装器和优化器
重构消息处理流程,集成增强记忆系统的存储和检索功能
更新配置结构以支持增强记忆的各项参数设置
禁用原有定时任务,采用内置维护机制保证系统性能
2025-09-30 00:09:46 +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
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
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
7112cc46bc feat(chat): 区分群聊和私聊生成不同场景提示
之前的 Prompt 模板硬编码了群聊场景,导致在私聊时机器人的角色认知和回应可能不恰当。

本次更新通过引入动态聊天场景提示来解决此问题:
- 在 Prompt 模板中使用 `{chat_scene}` 占位符代替了硬编码的场景描述。
- Replyer 会根据当前是群聊还是私聊,生成不同的场景提示文本(如“你正在一个QQ群里聊天”或“你正在和XX私下聊天”)。
- 通过 PromptParameters 将动态生成的场景提示传递给 Prompt 系统,使模型能够更好地理解上下文。
2025-09-21 18:41:31 +08:00
Windpicker-owo
444f1ca315 ruff,私聊视为提及了bot 2025-09-20 22:34:22 +08:00
Windpicker-owo
a2225cad3a feat(affinity-flow): 重构消息处理以使用StreamContext对象
重构AFC消息处理系统,将基于字典的消息数据传递改为直接使用StreamContext对象。主要变更包括:

- 修改AFCManager的process_message方法为process_stream_context,直接接收StreamContext对象
- 在chatter中重构消息处理逻辑,直接从StreamContext获取未读和历史消息
- 移除批量消息处理功能,改为单次StreamContext处理
- 在message_manager中简化消息处理流程,直接传递StreamContext对象
- 添加未读消息清理机制,防止异常情况下消息一直未读

同时优化兴趣度评分系统的参数:
- 调整回复阈值从0.55到0.56
- 增加最大不回复次数从15到20
- 提升每次不回复的概率增加从0.01到0.02
- 优化提及奖励从3.0降到1.0
- 调整回复后的不回复计数减少从1到3

BREAKING CHANGE: AFCManager的process_message方法已重命名为process_stream_context,参数从message_data改为context对象
2025-09-18 22:27:29 +08:00
Furina-1013-create
99eb52cd8c 修复reply动作缺少action_message的重大问题 2025-09-14 23:45:50 +08:00
tt-P607
a27639ea68 refactor(chat): 简化记忆激活方法的参数
更新 `activate_memory_with_chat_history` 的调用方式,使用 `target_message` 对象来替代独立的 `target_user` 和 `chat_id` 参数。

此举将相关上下文封装到单个对象中,使得接口更加清晰,提高了代码的可维护性。
2025-09-13 21:40:46 +08:00
tt-P607
fcda224767 Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev 2025-09-12 22:50:55 +08:00
tt-P607
5e3efd3148 根据提供的 git diff 分析,这是一个重构变更,主要是修改了异步内存包装器的导入和使用方式。以下是生成的常规提交消息:
refactor(prompt): 重构异步即时内存包装器的导入和使用方式

- 将 async_memory 导入更改为 get_async_instant_memory 函数
- 简化内存获取逻辑,通过工厂函数创建包装器实例
- 更新参数传递方式,使用 target 替代 sender 参数
- 减少代码行数,提高可读性
2025-09-12 22:50:37 +08:00