Commit Graph

142 Commits

Author SHA1 Message Date
minecraft1024a
34521b868d feat(search): 添加SearXNG搜索引擎支持
在Web搜索工具中集成了SearXNG作为新的搜索引擎选项。

- 在 `WebSearchConfig` 中添加了 `searxng_instances` 和 `searxng_api_keys` 配置项。
- 更新了配置文件模板以包含新的SearXNG设置。
- 修复了 `main.py` 中管理器异步初始化调用方式的错误。
2025-10-05 20:50:11 +08:00
subiz
43fe6046b4 没想到吧,我还是没测试()
feat(mcp): 集成MCP SSE协议支持并扩展工具调用能力

新增MCP客户端类型(mcp_ssd),支持通过Model Context Protocol连接外部工具服务器。
更新文档和配置模板,提供完整的MCP接入指南;主程序启动时自动初始化MCP工具提供器,
tool_api 与 tool_use 核心链路新增对MCP工具的检测与调用,实现与既有插件工具的无缝兼容。
同步更新配置模型、模板与帮助文档。
2025-10-05 19:24:57 +08:00
Windpicker-owo
c808d6a0ef feat(chat): 实现批量动作存储并优化消息处理流程
新增批量动作记录存储功能,提升数据库写入性能。重构消息预处理逻辑,改进兴趣度计算和同步机制,优化用户信息和群组信息处理。添加配置选项控制批量存储开关,更新相关模板配置。
2025-10-05 17:45:44 +08:00
雅诺狐
413973979c refactor(deps): 将jieba分词库替换为rjieba 2025-10-05 12:08:18 +08:00
tt-P607
3220984e78 refactor(memory): 重构记忆采样模式以提升配置清晰度
为了使记忆采样模式的命名更直观、易于理解,对相关配置项进行了重构。旧的 "adaptive" 和 "precision" 模式被更清晰的 "immediate"(即时采样)模式取代,并新增了 "all" 模式以支持双策略并行。

BREAKING CHANGE: 移除了旧的记忆采样模式 'adaptive' 和 'precision'。
用户需要将配置文件中的 `memory_sampling_mode` 更新为 'immediate', 'hippocampus' 或 'all'。
2025-10-04 22:19:28 +08:00
雅诺狐
10bb3a45b9 feat(logger): 增强日志系统,支持动态配置和文件压缩
- 添加动态logger元数据注册表,支持颜色和别名的运行时配置
- 实现日志文件自动压缩为tar.gz格式,节省存储空间
- 增强文件保留策略,支持配置保留天数(0=禁用,-1=永不删除,N>0=保留N天)
- 优化日志清理任务调度,改为每天午夜执行
- 改进TimestampedFileHandler的轮转逻辑和错误处理
- 更新配置模板,版本升级至7.1.7
2025-10-04 19:01:07 +08:00
Windpicker-owo
1eb41f8372 refactor(memory): 重构记忆系统架构,引入可配置的采样策略
将记忆系统从单一构建模式重构为多策略可配置架构,支持灵活的采样行为控制:

核心架构改进:
- 重构记忆构建流程,分离采样策略与核心逻辑
- 引入MemorySamplingMode枚举,标准化采样模式定义
- 设计插件化采样器接口,支持海马体后台定时采样
- 优化记忆处理管道,添加bypass_interval机制支持后台采样

配置系统增强:
- 新增memory_sampling_mode配置项,支持hippocampus/immediate/all三种模式
- 添加海马体双峰采样参数配置,支持自定义采样间隔和分布
- 引入自适应采样阈值控制,动态调整记忆构建频率
- 完善精准记忆配置,支持基于价值评分的触发机制

兼容性与性能优化:
- 修复Python 3.9兼容性问题,替换strict=False参数
- 优化记忆检索逻辑,统一使用filters参数替代scope_id
- 改进错误处理机制,增强系统稳定性

BREAKING CHANGE: 新增memory_sampling_mode配置项,默认值从adaptive改为immediate
2025-10-03 22:00:53 +08:00
minecraft1024a
56a75afadf fix(adapter): 修复表情回应命令并移除废弃的emoji映射
- 修复了`napcat_adapter`中表情回应命令名称不一致的问题,将`set_emoji_like`统一为`set_msg_emoji_like`。
- 修正了`SendHandler`中`set_like`参数的类型转换,从`str`改为`bool`,以符合API要求。
- 移除了`social_toolkit_plugin`中已废弃且不准确的Unicode emoji到QQ表情文本的映射。
- 更新了配置文件模板的版本号至`7.1.5`。
2025-10-02 21:58:07 +08:00
minecraft1024a
8f7151a131 Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev 2025-10-02 11:04:48 +08:00
minecraft1024a
6b7c9b5572 feat(proactive_thinking): 实现一半并重构主动思考功能
重构了主动思考插件的底层逻辑,将其拆分为两个独立的后台任务,以实现更精细和人性化的主动交互策略。

- **`ColdStartTask` (破冰任务)**:
  - 专门处理在私聊白名单中但从未有过交互的用户。
  - 任务启动时,会扫描白名单,为新用户主动创建聊天流并发起初次问候,实现“破冰”效果。
  - 解决了之前版本无法主动与全新用户建立联系的问题。

- **`ProactiveThinkingTask` (日常唤醒任务)**:
  - 负责维护现有聊天流的活跃度。
  - 采用动态间隔机制,结合基础间隔、随机扰动和每日不同时段的活跃度因子,模拟更自然的聊天发起时机。
  - 持续监控已建立的聊天,在对话冷却后适时地重新发起话题。

- **配置结构优化**:
  - 在 `bot_config_template.toml` 中新增了 `[proactive_thinking]` 配置节,统一管理所有相关配置。
  - 提供了更清晰的选项,如总开关、冷启动开关、白名单设置等,提升了易用性和可配置性。
  - 修正了 `config.py` 中错误的字段名 (`ProactiveThinking` -> `proactive_thinking`),确保与配置文件一致。
2025-10-02 11:04:45 +08:00
Windpicker-owo
59bda71f29 feat(memory): 实现三阶段记忆检索系统并简化提取策略
- 移除规则和混合提取策略,统一使用LLM提取
- 实现三阶段检索:元数据粗筛→向量精筛→综合重排
- 新增JSON元数据索引支持,提升检索效率
- 优化Vector DB配置管理和批处理机制
- 统一记忆作用域为全局,实现完全共享
- 增强查询规划和综合评分算法
2025-10-02 10:13:38 +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
3d59024c3c Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev 2025-10-01 04:56:41 +08:00
Windpicker-owo
dc39fd26c7 feat(memory): 重构记忆系统并移除插件热重载
重构记忆系统核心模块,引入全局记忆作用域、记忆指纹去重机制和查询规划器,优化多阶段检索性能。移除插件热重载系统及其相关依赖。

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

BREAKING CHANGE: 移除插件热重载系统,相关API和命令不再可用。记忆系统接口有较大调整,使用该系统的模块需要适配新接口。
2025-10-01 04:56:32 +08:00
xiaoCZX
971f0e76a4 refactor(models): 更新模型标识符和名称以匹配新版本deepseek-ai/DeepSeek-V3.1-Terminus 2025-09-30 22:16:36 +08:00
tt-P607
136496c883 feat(config): 新增最大并发分发数配置项
在 `ChatConfig` 中引入了 `max_concurrent_distributions` 配置,允许用户自定义最大并发处理的消息流数量。

此举旨在提供更灵活的性能调优选项,帮助用户根据服务器负载和API速率限制来控制资源消耗,防止系统过载。该配置的默认值为10。
2025-09-30 20:04:04 +08:00
Windpicker-owo
33be072f04 修改一下默认afc参数 2025-09-29 12:57:52 +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
a2baec088e feat(chat): 实现动态消息分发系统和消息打断机制
添加基于focus_energy的动态消息分发周期调整功能,根据聊天流兴趣度智能调整检查间隔
实现消息打断系统,允许高优先级消息打断正在处理的任务
重构ChatStream类,引入动态兴趣度计算系统,包括消息兴趣度统计和用户关系评分
扩展数据库模型和配置系统以支持新功能,增加相关配置项
更新版本号至0.11.0-alpha-1以反映重大功能更新
2025-09-25 17:14:01 +08:00
minecraft1024a
63837c3ace fix(config): 移除 SiliconFlow 模型标识符中的 'Pro/' 前缀 2025-09-24 15:02:30 +08:00
minecraft1024a
033752dc22 refactor(config): 移除 breaking 模式配置项
随着 breaking 模式相关逻辑被移除,其配置项已不再需要。
本次提交从配置文件模板中删除了 `enable_breaking_mode` 选项,并更新了内部版本号。
2025-09-23 14:35:16 +08:00
Furina-1013-create
de48d2ae02 将回复规则部分的提示词让用户可以自定义,详细请看配置文件 2025-09-22 22:44:15 +08:00
Windpicker-owo
96e4dc2946 feat(affinity-flow): 重构亲和流配置系统
将硬编码的兴趣度评分参数迁移到集中式配置管理,新增AffinityFlowConfig配置类
- 从全局配置加载评分权重、阈值和计算参数
- 统一管理匹配奖励、关系分数和提及bot相关配置
- 更新配置文件模板包含完整的亲和流参数
- 确保各模块使用一致的配置值而非硬编码常量
2025-09-19 13:16:45 +08:00
Windpicker-owo
812e4d76f8 feat(affinity-flow): 实现回复后关系追踪系统集成
- 在relationship_tracker.py中添加数据库支持的回复后关系追踪功能
- 新增UserRelationships数据库模型存储用户关系数据
- 集成全局关系追踪器到planner和interest_scoring系统
- 优化兴趣度评分系统的关系分获取逻辑,优先使用数据库存储的关系分
- 在plan_executor中执行回复后关系追踪,分析用户反应并更新关系
- 添加LLM响应清理功能确保JSON解析稳定性
- 更新模型配置模板添加relationship_tracker模型配置
2025-09-19 11:28:37 +08:00
雅诺狐
fc78ec88d5 refactor(config): 简化EULA验证并统一环境变量配置管理
- 重构EULA验证机制,从复杂的文件哈希验证改为简单的环境变量验证
- 统一host和port配置,优先从环境变量读取而非配置文件
- 移除ServerConfig配置类,简化配置结构
- 添加.env文件自动创建和管理功能
- 更新相关模板和文档注释
2025-09-14 10:35:14 +08:00
minecraft1024a
9b5eab9024 如果我不更新配置版本号,那我就会被其他开发草飞 2025-09-12 21:42:39 +08:00
minecraft1024a
46b3e795bc feat(emoji): 新增表情选择模式并重构选择逻辑
引入了两种表情选择模式,允许用户通过配置决定表情选择的行为:
- **emotion**: 基于情感标签进行选择,利用LLM根据对话上下文挑选最合适的情感。
- **description**: 基于表情的详细描述进行选择,让LLM从描述列表中挑选最匹配的表情。

此项重构将原有的单一选择逻辑拆分为两种独立的模式,并为每种模式优化了相应的提示词(Prompt)和处理流程,提高了表情选择的灵活性和准确性。同时,在配置文件中添加了`emoji_selection_mode`选项以支持此新功能。
2025-09-12 21:41:38 +08:00
minecraft1024a
cd19e89528 refactor(config): 移除睡前消息群组配置
移除了 `pre_sleep_notification_groups` 配置项,因为该功能已通过新的插件事件和动作机制实现,不再需要硬编码的群组列表。现在可以通过插件来灵活地处理睡前通知的发送逻辑。
2025-09-12 20:47:52 +08:00
minecraft1024a
51643eb53a feat(config): 更改默认服务器端口为8000
将默认的服务器端口从8080更改为8000,以避免与其他常用应用程序的潜在端口冲突。
2025-09-12 20:43:51 +08:00
tt-P607
c996bd28df Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev 2025-09-12 20:36:20 +08:00
tt-P607
5f4fea8358 feat(prompt): 添加背景故事与安全准则
本次提交在人设配置中引入了“背景故事”和“安全准则”两个新字段,旨在增强 Bot 的角色深度和互动安全性。

- **背景故事 (`background_story`)**: 允许用户定义详细的世界观或角色背景。这部分内容将作为背景知识注入 Prompt,指导模型在不直接复述的情况下理解和运用,从而塑造更丰富的角色。

- **安全准则 (`safety_guidelines`)**: 用户可以明确定义 Bot 必须遵守的行为红线。这些准则会被整合进系统指令,为模型处理不当或敏感请求提供清晰的、可配置的指导方针,提升了交互的安全性。
2025-09-12 20:34:39 +08:00
minecraft1024a
ebb575ec53 refactor(config): 移除.env依赖并引入服务器配置模型
将项目配置系统从依赖.env文件和环境变量迁移到使用Pydantic模型进行集中管理。此举通过移除`python-dotenv`库简化了环境设置,并提高了配置的类型安全性和可维护性。

主要变更包括:
- 移除`bot.py`中的.env加载逻辑。
- 新增`ServerConfig`模型来管理服务器的主机和端口。
- 更新`src/common/server.py`和`src/common/message/api.py`以从全局配置对象获取服务器设置,取代了`os.environ`。
- 从配置中移除了已废弃的`MaizoneIntercomConfig`。
- 在`bot_config_template.toml`中添加了新的`[server]`配置部分。
2025-09-12 19:04:27 +08:00
tt-P607
de90d452cc feat(emoji): 优化表情选择逻辑并引入上下文数量限制
重构了内置插件中的表情发送逻辑,以提高选择的准确性和效率。

旧的机制依赖于预设的情感标签,这可能不准确或缺失。新的实现改为让 LLM 直接从一部分随机抽样的表情包描述中进行选择,这使得决策更贴近上下文。

主要变更:
- 将基于情感标签的选择改为基于表情包描述的选择,使表情推荐更精准。
- 新增 `max_context_emojis` 配置项,用于控制每次传递给 LLM 的表情包候选项数量,从而减少 token 消耗并提高响应速度。
2025-09-11 17:29:42 +08:00
tt-P607
0cb2fa3373 feat(chat): 为回复分割器添加 llmpunctuation 模式
本次更新重构了回复分割功能,引入了 `split_mode` 配置项,允许用户在两种分割模式之间进行选择,提供了更大的灵活性。

- **`llm` 模式**: 延续了由大语言模型通过 `[SPLIT]` 标记决定断句的功能。此模式下的提示词(Prompt)已进一步优化,以引导模型做出更自然的分割。
- **`punctuation` 模式**: 恢复了传统的基于标点符号的分割逻辑。这已设为新的默认模式,确保用户更新后行为与旧版本保持一致。

此外,`at_user` 插件也进行了适配,以正确处理由 `llm` 模式可能产生的多段消息。
2025-09-11 17:12:01 +08:00
BuildTools
bb1563afab fix(chat): 防止机器人回复自身消息
添加配置选项 `allow_reply_self` 控制是否允许机器人回复自己发送的消息
当此选项为 false 时,在回复动作执行前检查目标用户 ID,如果是机器人自身则跳过回复

同时删除无用的测试文件 `test_planner_personality.py
2025-09-11 13:24:53 +08:00
tt-P607
8f65953b9d feat(chat): 引入专注模式安静群组功能
新增 `focus_mode_quiet_groups` 配置项,允许用户指定在专注模式下需要保持安静的群组列表。

在此列表中的群组,机器人只有在被明确提及(艾特)时才会做出回应。这有助于在某些活跃度高但不需要机器人持续参与的群组中减少打扰。

该功能兼容了不同QQ适配器(如 `qq` 和 `napcat`)的平台名称。
2025-09-11 08:50:05 +08:00
tt-P607
2a82dfb703 refactor(planner): 采用统一的多动作决策模型取代大脑/小脑架构
本次更新彻底重构了动作规划器(Planner)的核心架构,废弃了原有的“大脑/小脑”并行决策模型,转而采用一个更简洁、高效的统一决策模型。

主要变更:
- **统一决策**: 单个LLM调用现在可以一次性决策出所有需要执行的动作,并以JSON列表的形式返回。
- **架构简化**: 完全移除了 `sub_plan`(小脑)逻辑、`planner_small` 模型以及相关的并行处理和结果合并代码,大幅降低了复杂性。
- **配置精简**: 从配置文件中删除了与小脑相关的 `planner_size` 和 `include_personality` 选项,简化了用户配置。
- **提示词更新**: 更新了规划器的Prompt,明确指示LLM返回一个动作列表,即使只有一个动作或没有动作。

带来的好处:
- **性能提升**: 减少了LLM API的调用次数,显著降低了单次规划的延迟和成本。
- **可维护性**: 代码逻辑更清晰、线性,易于理解和后续维护。
- **稳定性**: 减少了多路并发带来的不确定性和潜在的竞态问题。

BREAKING CHANGE: 移除了大脑/小脑规划器架构。
用户需要从 `model_config.toml` 中移除 `[model_task_config.planner_small]` 配置节,并从 `bot_config.toml` 中移除 `planner_size` 和 `include_personality` 配置项。
2025-09-09 09:25:25 +08:00
Furina-1013-create
cb41a98fc2 为小脑决策加上角色人设提示词以避免决策时出现的人设ooc的情况
可以在配置文件里面关闭
2025-09-08 13:19:40 +08:00
Furina-1013-create
12b64955f6 是谁改模板配置文件不改版本号我不说() 2025-09-07 16:35:47 +08:00
雅诺狐
2f290bd272 更新配置文件 2025-09-07 08:46:27 +08:00
tt-P607
d826bc2391 feat(config): 为睡眠系统添加计划任务支持及相关配置
在模板配置中增加定时睡觉/起床参数,新增根据日程表自动睡眠开关、固定作息
时间设置以及唤醒后重新入睡延迟,以便更灵活地控制机器人的睡眠行为。
2025-09-07 00:21:33 +08:00
minecraft1024a
db3c3ebd63 feat(chat): 新增私聊强制回复功能
当在私聊场景下,如果大脑决策为“no_reply”,此功能会将其强制修改为“reply”,以确保机器人总能响应私聊消息。

该功能通过新的配置项 `force_reply_private` 控制,默认为关闭状态。同时,原配置项 `force_focus_private` 已被重命名为 `force_reply_private` 以更准确地反映其功能。
2025-09-06 21:44:37 +08:00
minecraft1024a
c097b5d00b feat(config): 支持API密钥列表轮询
- 将`api_key`类型从`str`扩展为`Union[str, List[str]]`,允许用户配置多个API密钥。
- 新增`get_api_key`方法,通过线程安全的方式实现API密钥的轮询使用,提高API请求的稳定性和可用性。
- 更新了`api_key`的验证逻辑,以同时支持字符串和字符串列表两种格式。
- 相应地更新了配置文件模板,以示例新的密钥列表配置方式。
2025-09-06 20:23:24 +08:00
minecraft1024a
657b12015b 忘更新配置文件版本号了() 2025-09-06 17:18:36 +08:00
minecraft1024a
e5247eba96 feat(config): 为小脑(sub-planner)新增独立模型和尺寸配置
为“小脑”(sub-planner)引入了独立的模型配置`planner_small`,使其可以与主planner(大脑)使用不同的、更轻量的模型,以提升并行处理性能。

同时,新增了`planner_size`配置项,用于控制每个小脑处理的action数量,允许用户根据需求调整并行度和单个小脑的上下文窗口。

- 在`model_config.toml`中添加`planner_small`任务配置
- 在`bot_config.toml`中添加`planner_size`参数
- 更新代码以使用新的配置项,并移除了相关的硬编码和TODO注释
2025-09-06 17:14:32 +08:00
minecraft1024a
614f8064ba feat(sleep): 引入多样化的失眠触发机制
重构了失眠系统,引入了两种新的失眠触发机制:
1.  **低睡眠压力失眠**:当睡后检查时睡眠压力低于设定阈值,将触发失眠。
2.  **随机失眠**:在睡眠压力正常的情况下,仍有一定概率随机触发失眠。

同时,移除了原有的 `post_sleep_insomnia` 特定情绪,并调整了相关配置项,使失眠原因的传递和处理更加灵活。
2025-09-06 13:55:57 +08:00
minecraft1024a
0b1d365fce docs(core): 完善睡眠与主动思考模块的文档注释
为 `ProactiveThinker`, `SleepManager`, 和 `SleepState` 核心类及其方法添加了详尽的中文文档字符串和内联注释。

本次更新旨在提高代码的可读性和可维护性,详细解释了以下关键组件的职责和工作流程:
- **ProactiveThinker**: 阐明了其作为主动事件处理中心的角色,以及如何与规划器和生成器协作。
- **SleepManager**: 详细描述了其作为睡眠状态机的核心逻辑,包括状态转换的条件和处理流程。
- **SleepState**: 解释了各个睡眠状态的含义以及序列化器的作用,确保状态持久化。

此外,对配置文件 `bot_config_template.toml` 中的相关配置项也补充了更清晰的注释。
2025-09-06 13:44:38 +08:00
minecraft1024a
9bbf801bd9 feat(规划): 引入统一的规划系统并重构组件
本次提交引入了一个全新的统一规划系统,取代了独立的日程和月度计划模块。这一变更集中了配置并解耦了职责,以提高可维护性和清晰度。

核心逻辑现在被分解为专门的组件:

- PlanManager: 处理日常日程和月度目标的所有数据库交互,取代了已-删除的 monthly_plan_db.py。
- ScheduleLLMGenerator: 封装了与 LLM 交互以生成日程的逻辑,将此职责从 ScheduleManager 中移除。
- MonthlyPlanManager: 现在作为核心 PlanManager 的简化接口。
这次架构性的大修通过将数据持久化和 LLM 生成逻辑从主调度逻辑中抽象出来,简化了整体设计。

重大变更: bot_config.toml 中的配置已被迁移。移除了 [schedule] 和 [monthly_plan_system] 部分。所有相关设置现在必须在新的 [planning_system] 部分下进行配置。
2025-09-06 11:41:42 +08:00
minecraft1024a
fc68958c8f feat(cross_context): 实现按互通组名称获取聊天记录
新增 `get_chat_history_by_group_name` API,允许插件按名称获取指定互通组的聊天记录。此功能增强了插件的上下文感知能力,使其能够利用跨群聊的对话历史。

主要变更:
- 在 `cross_context_api.py` 中添加了 `get_chat_history_by_group_name` 函数。
- Maizone 插件现在利用此 API 来获取跨群聊的上下文,以生成更相关的说说内容。
- 调整了配置文件模板,以反映新的互通组配置方式。
2025-09-05 19:51:33 +08:00