Commit Graph

7643 Commits

Author SHA1 Message Date
Windpicker-owo
fb112ada2f feat: 批量生成文本embedding,优化兴趣匹配计算逻辑,支持消息兴趣值的批量更新 2025-11-19 23:58:50 +08:00
Windpicker-owo
ea164ca74e feat: 添加三级记忆系统提示词格式化器,优化记忆块和短期记忆的格式化逻辑 2025-11-19 23:58:49 +08:00
Windpicker-owo
f685ea9fa8 feat: 添加历史消息长度限制,优化上下文管理和消息处理逻辑 2025-11-19 23:58:49 +08:00
Windpicker-owo
4c7bc1928e feat: 优化长期记忆检索和合并操作,支持图结构扩展和智能合并 2025-11-19 23:58:49 +08:00
Windpicker-owo
f3ea6a692e feat: 添加工具调用状态缓存和标准化工具历史记录管理器 2025-11-19 23:58:49 +08:00
Windpicker-owo
8c6242026d feat: 优化事件管理,添加事件处理超时和并发限制功能 2025-11-19 23:58:49 +08:00
Windpicker-owo
22d43ede8c feat: 添加不区分大小写/别名查找功能到图操作类型枚举 2025-11-19 23:58:49 +08:00
Windpicker-owo
ab4fcfb6b6 feat: 重构统一记忆管理器,整合聊天历史上下文并优化记忆块转移逻辑 2025-11-19 23:58:49 +08:00
Windpicker-owo
5798d11066 feat: 采用三层内存系统实现统一内存管理器
- 添加了UnifiedMemoryManager,以整合感知层、短期记忆层和长期记忆层。
- 实现了初始化、消息添加和内存搜索功能。
- 引入了记忆从短期存储到长期存储的自动转移机制。
- 开发了用于结构化内存表示的内存格式化工具。
- 增强日志记录功能,以便在内存操作过程中更好地进行追踪。
2025-11-19 23:58:49 +08:00
Windpicker-owo
e44f238e53 feat:实现短期内存管理器和统一内存管理器
- 添加了ShortTermMemoryManager来管理短期记忆,包括提取、决策和记忆操作。
- 集成大型语言模型(LLM),用于结构化记忆提取和决策过程。
- 基于重要性阈值,实现了从短期到长期的内存转移逻辑。
- 创建了UnifiedMemoryManager,通过统一接口整合感知记忆、短期记忆和长期记忆的管理。
- 通过法官模型评估来增强记忆提取过程的充分性。
- 增加了自动和手动内存传输功能。
- 包含内存管理操作和决策的全面日志记录。
2025-11-19 23:58:48 +08:00
minecraft1024a
7490064238 build(deps): 添加 slowapi 依赖 2025-11-19 23:58:48 +08:00
minecraft1024a
17b1ae0f26 refactor(config): 移除配置文件模板中的 [security] 部分
在最近的安全相关重构之后,独立的 [security] 配置部分已不再需要。
此提交将其从模板文件中移除以简化配置结构,并相应地更新了版本号。
2025-11-19 23:58:48 +08:00
minecraft1024a
334df4d87f refactor(plugin_system): 移除路由级认证,引入端点级安全依赖
之前的插件路由认证机制通过在 `RouterInfo` 中设置 `auth_required` 标志,对整个路由组件统一应用API密钥验证。这种方式缺乏灵活性,无法对单个端点进行细粒度的安全控制。

本次重构移除了 `auth_required` 机制,转而引入一个可重用的 FastAPI 依赖项 `VerifiedDep`。插件开发者现在可以按需将其应用到需要保护的特定端点上,从而实现更灵活、更精确的访问控制。

`hello_world_plugin` 已更新,以演示新的认证方式。

BREAKING CHANGE: 移除了 `RouterInfo` 中的 `auth_required` 属性。所有依赖此属性进行认证的插件路由都需要更新,改为在需要保护的端点上使用 `VerifiedDep` 依赖项。
2025-11-19 23:58:48 +08:00
minecraft1024a
c2e05a8257 refactor(api): 移除内存可视化路由的 API 密钥依赖
该路由旨在用于本地调试和可视化,不再需要进行 API 密钥认证。

BREAKING CHANGE: 内存可视化路由现在是公开访问的,不再需要 API 密钥。
2025-11-19 23:58:48 +08:00
minecraft1024a
717d4ba555 feat(plugin_system): 引入插件HTTP端点系统
引入了全新的 `BaseRouterComponent` 组件类型,允许插件开发者通过继承并实现 `register_endpoints` 方法来创建 FastAPI 路由。

- 插件系统现在可以自动发现并注册这些路由组件,并将它们挂载到主 FastAPI 应用的 `/plugins/<plugin_name>` 前缀下。
- 新增了全局配置 `[plugin_http_system]`,提供了总开关、API 速率限制和 API 密钥认证 (`X-API-Key`) 等功能,以确保端点的安全性和稳定性。
- 更新了 `hello_world_plugin` 插件,增加了一个简单的 `/greet` 端点作为实现示例。
2025-11-19 23:58:48 +08:00
tt-P607
fea007b429 refactor(maizone): 重构数据迁移以尽早关闭文件句柄
数据迁移逻辑已更新为先将整个文件读入内存,然后立即关闭文件句柄。

这可以防止旧数据文件在随后的 JSON 解析、验证和写入新存储的过程中保持打开状态,从而提高迁移过程的稳健性。
2025-11-19 23:58:48 +08:00
minecraft1024a
07a70e1dd5 fix(prompt): 修复抗审查指令被无条件添加的问题
在之前的提交中,抗审查指令被错误地设置为无条件添加。本次提交修正了此逻辑,将其与 `enable_prompt_perturbation` 开关关联,确保只有在启用提示词扰动时才会添加该指令,恢复了预期的行为。

此外,还简化了反截断指令的条件判断,直接访问 `model_info.anti_truncation` 属性以提高代码的可读性。
2025-11-19 23:58:47 +08:00
minecraft1024a
fb3f42640d feat(prompt): 默认启用抗审查指令并简化配置
为了简化用户配置并默认提高模型的抗审查能力,本次更新移除了 `prepend_noise_instruction` 配置选项。

现在,抗审查指令将作为默认行为,在处理所有提示词时自动添加,不再需要用户手动开启。同时,更新了模板文件中的注释,使其更清晰易懂。
2025-11-19 23:58:47 +08:00
Windpicker-owo
43bd9ca497 feat(napcat_adapter): 添加服务器地址和端口配置选项,优先使用插件配置
feat(tts_plugin): 优化TTS处理逻辑,支持生成回复并处理文本格式
2025-11-19 23:58:47 +08:00
tt-P607
efa5464ca9 feat(chatter): 支持按聊天类型和模式灵活过滤操作
`ChatterPlanGenerator` 中的操作过滤逻辑得到了增强,以支持更灵活的操作配置。现在,操作可以通过提供列表来启用多个聊天类型或模式,或者使用 `ChatType.ALL` 和 `ChatMode.ALL` 来启用所有类型/模式。

为此,`ChatterPlanGenerator` 被重构为通过依赖注入接受 `ActionManager` 实例,从而提高了解耦性并使组件更易于测试。
2025-11-19 23:58:47 +08:00
minecraft1024a
0c1edb40bf feat(prompt): 为提示词注入添加占位符保护机制
为防止注入规则(特别是使用宽泛正则表达式的 REMOVE 或 REPLACE 类型)意外修改或删除核心的 "{...}" 占位符,引入了一套新的占位符保护机制。

该机制通过以下步骤确保注入过程的安全性:
1.  **保护**:在应用任何规则之前,模板中的所有占位符都会被替换为唯一的临时标记。
2.  **预检与警告**:系统会检查所有危险规则(REMOVE/REPLACE),如果其目标内容可能匹配到被保护的占位符,则会记录一条警告日志。
3.  **安全应用**:所有注入规则在已保护的模板上按优先级顺序执行。
4.  **恢复**:完成所有注入后,临时标记被恢复为原始的占位符。

此项更改显著提升了提示词系统的鲁棒性,确保了核心模板的完整性不会被插件或动态规则无意中破坏。
2025-11-19 23:58:47 +08:00
minecraft1024a
67b3643e29 chore(hello_world): 默认禁用 hello_world 插件 2025-11-19 23:58:47 +08:00
minecraft1024a
d12e384cc2 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-19 23:58:47 +08:00
minecraft1024a
7475f87826 docs(maizone): 为回复跟踪服务添加详细文档和注释
为 ReplyTrackerService 类及其所有方法添加了全面的文档字符串(docstrings)和内联注释。

此次更新旨在提高代码的可读性和可维护性,详细阐明了以下方面:
- 服务的核心职责和初始化流程。
- 从旧文件系统到新存储API的一次性数据迁移逻辑。
- 各个公共和私有方法的具体功能、参数及作用。
2025-11-19 23:58:47 +08:00
minecraft1024a
64ba38312e refactor(maizone): 迁移回复跟踪服务以使用插件存储API
该重构将 ReplyTrackerService 从手动管理本地JSON文件的方式迁移到使用新的插件本地存储API。

此举旨在统一数据持久化方式,提高代码的可维护性和健壮性。

主要变更包括:
- 引入 `get_local_storage` API,将数据存储逻辑委托给通用的存储服务。
- 新增一次性自动数据迁移功能,可将旧 `replied_comments.json` 文件中的数据无缝迁移至新存储。
- 简化了服务内部的数据加载、保存和错误处理逻辑,代码更清晰。
- 迁移成功后,旧数据文件将被备份,以确保数据安全。
2025-11-19 23:58:47 +08:00
minecraft1024a
7ebc8453b8 fix(maizone): 修复说说处理循环意外结束的潜在错误
为 `process_feeds_from_file` 方法添加了在循环意外结束后返回错误信息的逻辑,以防止函数在某些边缘情况下不返回值。

此外,移除了 `_process_comments` 方法中一个未使用的列表推导式。
2025-11-19 23:58:46 +08:00
minecraft1024a
2f3922054a chore(maizone): 调整默认随机发送间隔
将默认的随机发送间隔从 5-15 分钟调整为 120-135 分钟。

原有的默认间隔过短,可能会导致发送过于频繁,新的默认值更加合理。
2025-11-19 23:58:46 +08:00
minecraft1024a
e37a27cab7 feat(maizone): 新增无日程时随机生成主题并发送说说
当没有预设日程活动时,定时发送服务现在能够利用小型LLM动态生成一个随机主题,并自动发布说说。

为避免过于频繁地发布,该功能被限制为每小时最多执行一次。此项更新旨在提高账号在日程空闲期间的活跃度,使自动发布的动态看起来更加自然和多样化。
2025-11-19 23:58:46 +08:00
minecraft1024a
5872198427 refactor(prompt): 将注意力优化与内容混淆统一为扰动流程
将原有的 `_AttentionOptimizer` 类重构并入 `_PromptProcessor` 类,以集中管理所有与提示词相关的预处理逻辑。

本次重构的主要变更包括:
- 引入 "提示词扰动" (Prompt Perturbation) 的统一概念,取代了之前分散的 "注意力优化" 和 "内容混淆" 术语。
- 创建新的核心方法 `_apply_prompt_perturbation`,它将语义变体、空白噪声和随机字符串注入整合为一个有序的处理流水线。
- 简化了 `prepare_prompt` 中的调用逻辑,使其更清晰、更易于维护。

此次重构显著提高了代码的可读性和模块化程度,使未来的扩展和调整更加方便。
2025-11-19 23:58:46 +08:00
minecraft1024a
1a953a2a8b refactor(tts): 重命名动作参数 text 为 tts_voice_text
BREAKING CHANGE: TTS 语音动作的 `text` 参数已重命名为 `tts_voice_text`,以避免与其他工具或参数潜在的命名冲突。所有调用此动作的提示词或代码都需要更新为新的参数名称。
2025-11-19 23:58:46 +08:00
minecraft1024a
198976b68f refactor(prompt): 将注意力和内容混淆统一为提示词扰动
本次提交重构了提示词修改逻辑,将之前独立的“注意力优化”和“内容混淆”功能合并为一个统一的概念:“提示词扰动”(Prompt Perturbation)。

主要变更包括:
- 在模型配置中引入新的统一选项:`enable_prompt_perturbation`, `perturbation_strength` 和 `enable_semantic_variants`。
- 将原 `AttentionOptimizer` 中的噪声注入和语义变体逻辑迁移到 `llm_models` 模块中,作为扰动策略的一部分。
- 简化 `attention_optimizer.py`,使其专注于提示词块重排 (`BlockShuffler`)。
- 更新 `_PromptProcessor` 以根据新的统一配置来协调不同的扰动技术。

此项更改为用户简化了配置,并通过集中化相关逻辑,提供了一个更清晰、更易于维护的实现。

BREAKING CHANGE: 内容混淆的相关配置已被替换。`enable_content_obfuscation` 和 `obfuscation_intensity` 配置项已移除。用户需更新配置以使用新的 `enable_prompt_perturbation` 和 `perturbation_strength`。
2025-11-19 23:58:46 +08:00
minecraft1024a
45b6d7d06c feat(config): 将内容混淆设置移至模型级别
内容混淆功能的相关配置项(`enable_content_obfuscation` 和 `obfuscation_intensity`)已从 API Provider 级别迁移到单个模型级别。

这一调整提供了更精细的控制能力,允许用户为特定模型独立启用或配置内容混淆,而不是统一应用于同一API下的所有模型。这对于处理来自同一提供商但审查策略不同的模型非常有用。

BREAKING CHANGE: `enable_content_obfuscation` 和 `obfuscation_intensity` 配置项已从 `[[api_providers]]` 部分移除。请将这些配置项迁移到需要此功能的 `[[models]]` 部分下。
2025-11-19 23:58:46 +08:00
minecraft1024a
80b5c3c6f8 refactor(prompt): 移除注意力优化功能
注意力优化功能(通过添加随机空白字符或语义变体)被证明效果不佳且可能引入不稳定性。

为了简化代码库、减少用户配置的复杂性并提高系统的稳定性,决定移除此实验性功能。这使得提示词构建过程更加直接和可预测。

BREAKING CHANGE: 移除了注意力优化功能及其所有相关配置。用户需要从配置文件中移除 `[attention_optimization]` 部分。
2025-11-19 23:58:46 +08:00
minecraft1024a
a9346d46d3 feat(prompt): 为提示词管理添加调试与预览功能
增强了 `/system prompt` 命令,引入了多个用于调试和检查提示词注入系统的新子命令。

新增功能包括:
- `preview <目标名> [JSON参数]`: 预览指定核心提示词在注入参数后的最终效果,便于调试复杂的注入逻辑。
- `raw <目标名>`: 查看核心提示词的原始内容,有助于了解注入前的基础模板。
- `component_info <组件名>`: 显示特定组件的详细信息,包括其来源、描述和所有注入规则。

这些工具旨在提高提示词系统的透明度,并简化开发和故障排查过程。
2025-11-19 23:58:46 +08:00
minecraft1024a
3f251bbc7b feat(prompt): 支持为组件添加新的注入规则
新增 `add_rule_for_component` 方法,允许为一个已存在的提示词组件添加一条新的注入规则。

该方法会自动查找并复用该组件已有的内容提供者 (content_provider) 和来源 (source),从而简化了为同一组件动态添加多个注入目标的操作。
2025-11-19 23:58:46 +08:00
minecraft1024a
d915bf52d5 feat(prompt): 支持按组件名称批量移除注入规则
新增 `remove_all_rules_by_component_name` 方法,用于一次性移除指定提示词组件在所有目标上的注入规则。

此功能简化了组件的停用和清理流程,特别是在动态管理和热插拔组件的场景下,无需再手动遍历所有可能的目标提示词来逐一移除规则。
2025-11-19 23:58:46 +08:00
minecraft1024a
b9d9bc81bb feat(prompt): 增强提示词组件信息获取,使其包含动态注入的组件
重构 `get_registered_prompt_component_info` 方法,以准确反映系统完整的提示词组件状态,包括静态注册和动态注入的组件。

此前的实现仅能返回静态注册的组件,无法展示通过动态规则注入的纯动态组件,导致信息不完整。

新的实现:
- 合并静态注册的组件和因动态注入规则而存在的组件。
- 为纯动态组件即时创建 `PromptInfo` 实例。
- 实时重建每个组件的 `injection_rules` 列表,以反映当前的注入配置。

这确保了前端或API调用方能够获取到所有可用提示词的最新、最准确的信息。
2025-11-19 23:58:45 +08:00
minecraft1024a
f1294f8a5f feat(prompt): 增强 get_core_prompt_contents 方法以支持获取单个提示词
为 `get_core_prompt_contents` 方法添加了可选的 `prompt_name` 参数。
当指定 `prompt_name` 时,该方法现在只返回对应提示词模板的内容。如果未指定,则返回所有核心提示词。

BREAKING CHANGE: `get_core_prompt_contents` 方法的返回类型从 `dict[str, str]` 更改为 `list[list[str]]`,以统一处理单个和多个提示词的返回结果,确保接口行为的一致性。
2025-11-19 23:58:45 +08:00
minecraft1024a
f29418e75d feat(api): 整合消息统计接口并增加来源筛选
将 `/messages/bot_stats_by_chat` 的功能合并到 `/messages/stats_by_chat` 接口中,以减少冗余并统一API。

- 为 `/messages/stats_by_chat` 接口新增 `source` 查询参数,允许按 'user' (用户) 或 'bot' (机器人) 筛选消息来源。
- `group_by_user` 参数现在仅在 `source='user'` 时生效。
- 对内部逻辑进行了重构,以支持新的筛选功能并提升代码可读性。

BREAKING CHANGE: 移除了 `/messages/bot_stats_by_chat` 接口。其功能已整合到 `/messages/stats_by_chat` 接口中,可通过设置查询参数 `source='bot'` 来实现。
2025-11-19 23:58:45 +08:00
minecraft1024a
c9f1e07ebb feat(statistic): 为供应商统计增加平均耗时和标准差指标
- 为按供应商分类的统计数据新增了平均请求耗时和耗时标准差的计算与展示。
- 重构了统计数据计算逻辑,统一使用 `defaultdict` 的直接索引访问替代 `.get()` 方法,使代码更简洁并提高了健壮性。
- 标准化了与耗时相关的统计键名,以提高代码的一致性和可读性。
2025-11-19 23:58:45 +08:00
Windpicker-owo
c9f4e42dc6 删除不再使用的清理记忆数据脚本和时间解析器测试文件 2025-11-19 23:58:45 +08:00
Windpicker-owo
c125c89fcd Merge branch 'master' of https://github.com/MoFox-Studio/MoFox_Bot 2025-11-19 23:48:32 +08:00
Windpicker-owo
40709d95de rebase 清理 2025-11-19 23:45:47 +08:00
ikun两年半
829bc9b4bc 更正了python版本喵! 2025-11-19 23:39:00 +08:00
ikun两年半
bbe8e18cae 将依赖名字修正喵!!! 2025-11-19 23:39:00 +08:00
minecraft1024a
7e52b2f546 perf(memory): 优化记忆系统数据库操作并修复并发问题
将消息记忆次数的更新方式从单次写入重构为批量更新,在记忆构建任务结束时统一执行,大幅减少数据库写入次数,显著提升性能。

此外,为 `HippocampusManager` 添加了异步锁,以防止记忆巩固和遗忘操作并发执行时产生竞争条件。同时,增加了节点去重逻辑,在插入数据库前检查重复的概念,确保数据一致性。
2025-11-19 23:38:59 +08:00
Furina-1013-create
58626d00fa Clean up deleted web_search_tool files after merge 2025-11-19 23:38:52 +08:00
Windpicker-owo
ddd22740c6 增强 ModuleColoredConsoleRenderer,支持 Rich 标记语言解析,改进消息内容着色逻辑 2025-11-19 23:37:58 +08:00
Windpicker-owo
e455bbcfb0 优化 build_chat_stream_impression 方法,增加对现有 ChatStream 记录的查询,改进平台信息获取逻辑 2025-11-19 23:37:57 +08:00
Windpicker-owo
55ac2b55f8 调整配置文件,优化消息缓存、打断系统及主动思考功能的参数设置 2025-11-19 23:37:57 +08:00