Commit Graph

325 Commits

Author SHA1 Message Date
minecraft1024a
1a4d129d2e ~谁在写代码不加注释我就把它炒了😡😡😡😡😡~
feat(prompt): 补全了prompt类的函数注释和内联注释
2025-11-19 23:25:17 +08:00
Eric-Terminal
864ec3304c feat(prompt): 添加主人认证提示词功能 (#47) 2025-11-19 23:25:12 +08:00
minecraft1024a
a234e0b8aa 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-11-19 23:25:09 +08:00
minecraft1024a
4e8825fb7c 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-11-19 23:24:59 +08:00
minecraft1024a
92f5f9bbd9 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-11-19 23:24:45 +08:00
minecraft1024a
f1dfe64f88 chore: 代码格式化与类型注解优化
对项目中的多个文件进行了代码风格调整和类型注解更新。

- 使用 ruff 工具对代码进行自动格式化,主要包括:
    - 统一 import 语句的顺序和风格。
    - 移除未使用的 import。
    - 调整代码间距和空行。
- 将部分 `Optional[str]` 和 `List[T]` 等旧式类型注解更新为现代的 `str | None` 和 `list[T]` 语法。
- 修复了一些小的代码风格问题,例如将 `f'...'` 更改为 `f"..."`。
2025-11-19 23:24:42 +08:00
tt-P607
786e4572bc chore(chat): 移除提示词注入中的冗余日志 2025-11-19 23:24:27 +08:00
tt-P607
3eaa0f739a feat(chat): 为知识库段落增加相关性阈值过滤
根据 `qa_paragraph_threshold` 配置,跳过相关性得分低于阈值的知识库段落。

这可以防止低相关性的知识污染上下文,从而提高生成回答的质量和准确性。
2025-11-19 23:24:14 +08:00
tt-P607
391204f025 refactor(chat): 简化 GIF 抽帧逻辑为均匀采样
旧的基于均方误差(MSE)的 GIF 抽帧逻辑过于复杂,其参数难以调整且结果不可预测。

现在,该逻辑被重构为一个简单的均匀采样算法,固定抽取 4 帧来代表整个动画。这不仅简化了代码、移除了不必要的参数,还确保了对于任何 GIF 都能生成一致且有代表性的预览图,同时提升了处理性能。

BREAKING CHANGE: `transform_gif` 函数签名已更改,移除了 `similarity_threshold` 和 `max_frames` 参数。
2025-11-19 23:24:05 +08:00
tt-P607
cba200520b refactor(chat): 重构图片在聊天记录中的处理与表示方式
为了简化LLM的上下文并提高代码可维护性,对聊天记录中图片的处理方式进行了彻底重构。

旧系统使用 [图片1] 等占位符,并在消息头部附加一个独立的图片描述映射块。这种方式结构复杂,容易造成上下文分离。

新系统将图片描述直接内联到消息文本中,格式为 `[图片:一只猫]`,使聊天记录对LLM更加自然和易于理解。

主要变更:
- **消息构建 (`chat_message_builder`):** 在构建可读消息时,异步将数据库中的 `[picid:...]` 标签直接替换为完整的 `[图片:描述]`。
- **废弃映射:** 移除了独立的图片映射信息块 (`build_pic_mapping_info` 函数),所有信息都在消息内联。
- **图片处理 (`utils_image`):** `process_image` 流程现在同步返回完整的描述字符串,并增强了VLM调用的重试逻辑和缓存机制,提高了健壮性。
- **消息存储 (`storage`):** 在消息存入数据库前,将 `[图片:描述]` 转换为 `[picid:...]`,以保持存储规范化。
- **修复:** 增加了多处空值检查,提高了代码的稳定性。这不得之前稳定好用多了😋😋😋
2025-11-19 23:24:02 +08:00
tt-P607
3accbabd3a feat(emoji): 重构表情包识别、描述与缓存系统
本次更新全面重构了表情包处理逻辑,引入了包含“精炼描述”、“关键词”和“详细分析”的三层描述系统,以提升识别的深度与广度。同时,统一并修复了缓存机制,解决了旧缓存数据格式不兼容及新内容无法被缓存的问题,并通过增加校验逻辑增强了系统的健壮性。

注意:更新后,用户必须手动清空 emojis、images、image_descriptions 三个数据库表,并将 data/emoji_registed/ 目录下的所有文件移至 data/emoji/ 目录,然后重启程序,以确保所有表情包能被新系统正确地重新识别
2025-11-19 23:24:01 +08:00
tt-P607
b2fa9d36b4 之前改的打字有点快了() 2025-11-19 23:24:00 +08:00
Windpicker-owo
2416888d4d feat(chat): 为PromptParameters添加notice_block字段 2025-11-19 23:23:58 +08:00
Windpicker-owo
1eda54cb8f feat(notice): 实现全局notice消息管理系统
添加全局notice管理器,将notice消息与普通消息分离处理。主要功能包括:

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

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

BREAKING CHANGE: 数据库消息表结构变更,需要添加 is_public_notice 和 notice_type 字段
2025-11-19 23:23:55 +08:00
minecraft1024a
dc98e75487 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-11-19 23:23:35 +08:00
minecraft1024a
0917318cbd 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-11-19 23:23:28 +08:00
minecraft1024a
65f1cecbc9 fix(chat): 修复知识库相关性得分格式化问题
当知识库返回的相关性得分(relevance)不是有效的浮点数时,格式化字符串 `f"{relevance:.2f}"` 会引发 `TypeError` 或 `ValueError`,导致程序崩溃。

本次修改通过添加 `try-except` 块来捕获潜在的异常。如果 `relevance` 可以成功转换为浮点数,则将其格式化为两位小数;如果转换失败,则直接使用其原始字符串表示形式,从而增强了代码的健壮性,避免了因数据类型不匹配而导致的运行时错误。
2025-11-19 23:23:13 +08:00
minecraft1024a
823d432152 refactor(knowledge): 简化知识库问答管理器的使用
将 `QAManager` 类实例化改为直接导入和使用单例 `qa_manager`,以简化代码并提高效率。同时,移除了对 `get_knowledge` 方法中不再需要的参数,使其调用更加清晰。
2025-11-19 23:23:06 +08:00
minecraft1024a
2e1ca1ac78 ruff ci 2025-11-19 23:23:02 +08:00
tt-P607
dc3c6a235c refactor(core): make chat utils async and decouple plugin dependencies
- Convert `get_recent_group_speaker` and `count_messages_between` in `chat/utils` to async functions to align with underlying asynchronous database calls, preventing potential blocking issues.

- Implement optional import for `sleep_system` within the `affinity_flow_chatter` plugin using a try-except block. This decouples the hard dependency between the two plugins, enhancing modularity and ensuring the chatter plugin remains operational even if the sleep system is unavailable.
2025-11-19 23:22:31 +08:00
tt-P607
8b88082031 feat(chat): add protection for quoted content in response processing
In the LLM response post-processing flow, a new protection layer for quoted content has been added. This prevents the sentence splitter from incorrectly breaking up complete sentences enclosed in quotation marks, thus ensuring the integrity of the quoted text.

- Adds `protect_quoted_content` and `recover_quoted_content` functions.
- Upgrades the response processing to a three-layer protection system (kaomoji, quotes, special blocks).
- Also adjusts the default values for typing simulation time to improve user experience.
2025-11-19 23:22:28 +08:00
tt-P607
87b1d5aec4 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-11-19 23:22:27 +08:00
minecraft1024a
bfeb04969d 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-11-19 23:21:51 +08:00
minecraft1024a
cca07bd16e refactor: 将项目名称从 MaiBot 重命名为 MoFox-Bot
本次更新在整个代码库范围内将项目名称 "MaiBot" 及其相关变体(如 "maibot")统一重命名为 "MoFox-Bot"。

主要变更包括:
- 修改配置文件、模板和日志输出中的项目名称。
- 更新文档、注释和用户可见的字符串,以反映新的品牌名称。
- 调整插件元数据和描述。
2025-11-19 23:21:44 +08:00
minecraft1024a
ced54562a8 feat(context): 增加跨上下文黑名单模式
为跨上下文共享功能引入了黑名单模式,并增加了相应的配置选项。

- 在 `ContextGroup` 配置中增加了 `mode` 字段,支持 "whitelist"(白名单)和 "blacklist"(黑名单)模式。
- 增加了 `default_limit` 配置项,用于黑名单模式下的默认消息获取数量。
- 重构了 `cross_context_api` 以支持新的黑名单逻辑,现在可以共享除了黑名单中指定聊天外的所有聊天上下文。
- 更新了配置文件模板以包含新模式的说明和示例。
2025-11-19 23:21:33 +08:00
minecraft1024a
07d60d3604 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-11-19 23:21:30 +08:00
tt-P607
6a86d254c8 feat(chat): 为提示词模板添加机器人名称和昵称变量
将机器人的名称(bot_name)和昵称(bot_nickname)添加到提示词格式化上下文中,以便在提示词中动态使用,增强个性化。
2025-11-19 23:20:50 +08:00
Windpicker-owo
bdf0035034 refactor(chat): 重构关系系统并优化消息打断处理机制
- 移除独立的RelationshipConfig,将关系追踪参数整合到AffinityFlowConfig
- 实现消息打断后立即重新处理流程,提升交互响应性
- 优化关系追踪系统,添加概率筛选和超时保护机制
- 改进机器人自引用处理,确保消息内容正确显示
- 增强用户信息提取逻辑,兼容多种消息格式
- 添加异步后台任务处理,避免阻塞主回复流程
- 调整兴趣评分阈值和权重参数,优化消息匹配精度
2025-11-19 23:20:49 +08:00
Windpicker-owo
2f5b8ddc0a feat(chat): 添加机器人身份信息到提示词模板
在多个提示词模板中添加机器人名称和昵称信息,让AI能够正确识别自己的身份。同时更新PromptParameters类以支持这些新参数。
2025-11-19 23:20:36 +08:00
minecraft1024a
3472b5f1cb chore(repo): 优化仓库结构 2025-11-19 23:20:09 +08:00
minecraft1024a
3a56c61574 fix(chat): 修复typo_generator中词典文件的路径问题
词典文件的路径从依赖`rjieba`包的位置改为相对于当前文件的相对路径,以确保在不同环境下都能正确找到文件。
2025-11-19 23:19:58 +08:00
sunbiz1024
950b086063 ruff 2025-11-19 23:19:53 +08:00
minecraft1024a
2a89efe47a ruff fix但指定了--unsafe-fixes 2025-11-19 23:19:42 +08:00
minecraft1024a
f8e62d0253 ruff: 清理代码并规范导入顺序
对整个代码库进行了大规模的清理和重构,主要包括:
- 统一并修复了多个文件中的 `import` 语句顺序,使其符合 PEP 8 规范。
- 移除了大量未使用的导入和变量,减少了代码冗余。
- 修复了多处代码风格问题,例如多余的空行、不一致的引号使用等。
- 简化了异常处理逻辑,移除了不必要的 `noqa` 注释。
- 在多个文件中使用了更现代的类型注解语法(例如 `list[str]` 替代 `List[str]`)。
2025-11-19 23:19:07 +08:00
雅诺狐
97dc145b76 Refactor replyer retrieval to async and add memory formatter
Changed get_replyer and related calls to async across multiple modules for proper coroutine handling. Added format_memories_bracket_style utility for memory formatting. Improved video analysis caching logic and type annotations. Updated error logging for message processing.
2025-11-19 23:18:45 +08:00
Windpicker-owo
a513aeb68e refactor(chat): 统一异步调用模式并修复循环依赖
- 将 chat_manager.get_stream() 调用改为异步
- 将 replyer_manager.get_replyer() 方法改为异步
- 在 generator_api 中使用动态导入避免循环依赖
- 在 action_manager 中添加待处理动作队列清理
- 更新所有相关调用点以支持异步模式
2025-11-19 23:18:40 +08:00
minecraft1024a
7426c7ae55 refactor(video): 视频分析模块重构为纯 inkfox 实现
将视频分析模块 `utils_video.py` 完全重构,移除旧的 rust_video 模块和 Python/OpenCV 降级实现,统一使用 `inkfox.video` 库提供的 Rust 扩展能力。

主要变更:
- **依赖简化**: 移除对 `rust_video` 和 `opencv-python` 的依赖,仅依赖 `inkfox`。
- **代码重构**: 删除大量冗余代码,包括旧的 Rust 模块接口、Python 降级逻辑、复杂的并发控制和多种抽帧模式。
- **性能统一**: 关键帧提取统一使用 `inkfox.video.extract_keyframes_from_video`,确保所有环境下的性能一致性。
- **逻辑简化**: 简化了缓存逻辑、并发控制和配置项,使代码更清晰、更易于维护。
- **API 统一**: `_select_model` 和 `_execute_request` 方法调用更新,以适应 `LLMRequest` 的最新接口。
- **文档更新**: 更新了模块文档字符串,以反映新的实现和功能。
2025-11-19 23:18:28 +08:00
Windpicker-owo
a7bc1b4f20 refactor(chat): 优化异步任务处理和消息管理逻辑
- 使用asyncio.create_task替代await调用,提升并发性能
- 简化流管理器的槽位获取逻辑,移除回退方案
- 重构上下文管理器的消息添加和更新机制
- 移除StreamContext中的冗余方法,保持数据模型的简洁性
- 优化兴趣度评分系统的更新流程,减少阻塞操作

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

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

这些改动旨在提升代码的可读性、一致性和可维护性,使其更符合现代 Python 编码规范。
2025-11-19 23:18:16 +08:00
雅诺狐
1c9c4884c6 refactor(deps): 将jieba分词库替换为rjieba 2025-11-19 23:18:07 +08:00
Windpicker-owo
481252d660 refactor(chat): 异步化聊天系统并重构兴趣值计算机制
将同步调用改为异步调用以提升性能,重构兴趣值计算流程以支持更灵活的组件化架构。主要改进包括:

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

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

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

清理和优化代码结构
- 移除affinity_chatter中的重复方法
- 改进prompt表达习惯格式化
- 完善系统启动和清理流程
2025-11-19 23:14:16 +08:00
Windpicker-owo
2fc8e26d3c refactor(chat): 优化异步任务处理和参数传递机制
- 重构ExpressionSelector初始化,添加chat_id参数支持
- 优化StreamLoopManager中异步任务的创建和管理方式
- 简化MessageManager中的消息添加流程
- 调整Prompt中表情选择器的参数传递结构
2025-11-19 23:14:08 +08:00
John Richard
a79253c714 re-style: 格式化代码 2025-11-19 23:13:20 +08:00
John Richard
00ba07e0e1 style: 格式化代码 2025-11-19 23:12:18 +08:00
minecraft1024a
944876227a refactor(chat): 将消息获取相关函数重构为异步
将 `chat_message_builder` 中的多个同步消息获取函数(如 `get_raw_msg_by_timestamp`)及其调用全部修改为异步函数。这统一了数据库查询的异步模式,提高了代码一致性和可维护性。

主要改动包括:
- 将 `chat_message_builder.py` 中的数据库查询函数标记为 `async` 并使用 `await`。
- 更新了 `message_api.py`、`mood_manager.py` 和 `qzone_service.py` 中对这些函数的调用,以适应异步接口。
- 调整了 `message_api.py` 中的函数签名和返回类型提示,以反映异步特性。
2025-11-19 23:11:51 +08:00
Windpicker-owo
727f9550f5 feat(memory): 实现灵活搜索模式并重构记忆格式化系统
- 新增灵活匹配模式(flexible_mode),支持2/4项匹配即可的记忆检索策略
- 删除冗余的memory_formatter模块,简化记忆系统架构
- 增强枚举值解析机制,支持字符串、整数和枚举实例的自动转换
- 优化元数据索引搜索逻辑,分离严格模式和灵活模式的实现路径
- 改进向量存储的搜索回退机制,当元数据筛选无结果时自动回退到全量搜索
- 统一记忆类型映射管理,避免重复的格式化函数定义

这些变更提升了记忆检索的准确性和灵活性,同时简化了代码结构,提高了系统可维护性。
2025-11-19 23:11:40 +08:00
Windpicker-owo
afb1a75ebf feat:实现具有向量和元数据索引的统一内存存储系统
- 添加了 UnifiedMemoryStorage 类,用于管理带向量嵌入的内存块。
- 集成了 FAISS,以实现高效的向量存储和搜索。
- 实现了内存缓存、关键字、类型和用户索引。
- 增加了内存遗忘和自动保存存储数据的支持。
- 包含用于存储、搜索和遗忘记忆的方法。
- 引入了存储行为和性能的配置选项。
- 实现了从磁盘加载和保存内存及向量数据。
2025-11-19 23:11:25 +08:00
tt-P607
a109d31497 fix(db): 增强数据库会话管理的容错性
调整了 `get_db_session` 的行为,当数据库未能成功初始化时,它现在会返回 `None` 并记录错误,而不是抛出异常。这提高了应用在数据库连接不可用时的健壮性,避免了程序因无法获取会话而崩溃。

- `VideoAnalyzer` 已更新,增加了对会话为 `None` 的检查,以安全地跳过数据库读写操作。
- 附带对 `VideoAnalyzer` 和 `LegacyVideoAnalyzer` 进行了重构,将模型选择和API请求执行的逻辑抽象到独立的 `_model_selector` 和 `_executor` 组件中,提升了代码的清晰度和可维护性。
2025-11-19 23:11:22 +08:00