Commit Graph

1445 Commits

Author SHA1 Message Date
tt-P607
2e45a251d6 refactor(chat): 重构消息打断逻辑以从 ChatterManager 获取任务
将正在处理的任务跟踪从 ContextManager 转移到 ChatterManager。

此举旨在集中管理聊天任务,降低 MessageManager 与 ContextManager 之间的耦合。现在,中断处理逻辑直接查询 ChatterManager 以获取并取消当前活动任务,使任务状态管理更加清晰和可靠。
2025-11-19 23:20:06 +08:00
minecraft1024a
3a56c61574 fix(chat): 修复typo_generator中词典文件的路径问题
词典文件的路径从依赖`rjieba`包的位置改为相对于当前文件的相对路径,以确保在不同环境下都能正确找到文件。
2025-11-19 23:19:58 +08:00
Windpicker-owo
6a9cc2af61 feat(memory): 增强记忆检索日志,打印有效记忆的详细信息和元数据 2025-11-19 23:19:54 +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
雅诺狐
240ac9bdbb 咳咳咳,忘更新依赖了 2025-11-19 23:18:46 +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
雅诺狐
a9c592b203 Refactor memory metadata index to use Rust backend
Replaces the Python implementation of MemoryMetadataIndex with a Rust-accelerated version, removing legacy code and fallback logic. Updates search, add, and stats methods to delegate to the Rust backend. Also adds missing imports in llm_data_model.py and base_event.py for improved type support and event handling.
2025-11-19 23:18:42 +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
Windpicker-owo
399a7398a5 refactor(chat): 使获取聊天流支持异步调用 2025-11-19 23:18:33 +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
dccf1cffc9 feat(chat): 实现批量动作存储并优化消息处理流程
新增批量动作记录存储功能,提升数据库写入性能。重构消息预处理逻辑,改进兴趣度计算和同步机制,优化用户信息和群组信息处理。添加配置选项控制批量存储开关,更新相关模板配置。
2025-11-19 23:18:27 +08:00
Windpicker-owo
a7bc1b4f20 refactor(chat): 优化异步任务处理和消息管理逻辑
- 使用asyncio.create_task替代await调用,提升并发性能
- 简化流管理器的槽位获取逻辑,移除回退方案
- 重构上下文管理器的消息添加和更新机制
- 移除StreamContext中的冗余方法,保持数据模型的简洁性
- 优化兴趣度评分系统的更新流程,减少阻塞操作

这些改动主要关注性能优化和代码结构简化,不涉及功能变更。
2025-11-19 23:18:24 +08:00
minecraft1024a
2e1332604e style(memory): 优化代码风格并移除冗余代码
- 在 `memory_fusion.py` 中,为集合推导式添加 `# noqa: C401` 以抑制 linter 警告,明确代码意图。
- 在 `memory_manager.py` 中,移除未使用的全局变量 `global_memory_manager`。
- 使用 `|` 运算符进行类型检查,以符合现代 Python 语法。
2025-11-19 23:18:19 +08:00
minecraft1024a
71bcb7bc11 refactor(memory): 优化类型注解并增强代码健壮性
- 为 `MemorySystem` 类中的核心组件属性添加 `| None` 类型注解,使其更精确地反映其可能为 `None` 的初始状态。
- 在 `_collect_candidates_by_fingerprint` 方法中,为异常捕获添加 `noqa: PERF203` 以忽略特定的性能警告。
- 在 `rebuild_all_memory_vectors` 方法中,增加对 `self.unified_storage` 是否存在的检查,防止在未初始化时出现 `AttributeError`。
2025-11-19 23:18:18 +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
minecraft1024a
1fb2ab6450 fix(memory): 修复向量重建后保存和统计逻辑
在向量存储重建过程中,移除了冗余的 `save_storage` 调用,因为向量数据在 `store_memories` 步骤中已经被持久化。

同时,改进了重建完成后的日志记录。现在会检查 `unified_storage` 是否存在,以避免在存储未初始化时尝试获取统计数据而引发潜在错误,并提供了更清晰的警告信息。
2025-11-19 23:18:11 +08:00
minecraft1024a
599289c245 refactor(memory): 简化模型任务配置的获取方式
移除不必要的 `getattr` 调用,直接访问 `model_task_config` 的 `utils_small` 属性。这使得代码更简洁、更易读,并假设该属性总是存在。
2025-11-19 23:18:10 +08:00
minecraft1024a
d3e349893e chore(log): 移除记忆系统日志中的表情符号
清理 `memory_manager` 和 `memory_system` 模块中的日志输出,移除了表情符号,使日志信息更加简洁和专业。
2025-11-19 23:18:09 +08:00
雅诺狐
1c9c4884c6 refactor(deps): 将jieba分词库替换为rjieba 2025-11-19 23:18:07 +08:00
Windpicker-owo
fee04c0d25 perf(interest): 增加兴趣值计算超时时间并优化日志记录
将兴趣值计算的默认超时时间从0.5秒增加到2.0秒,以减少因计算时间较长导致的超时情况。同时优化了超时日志记录,使用warning级别并显示具体的超时时间,使问题排查更加清晰。
2025-11-19 23:17:59 +08:00
Windpicker-owo
db54d7b8b1 refactor(interest): 为兴趣值计算添加超时机制并清理重复代码
为兴趣值计算方法添加超时参数,防止计算过程阻塞系统。
当计算超时时返回默认值,同时让计算在后台继续执行。
删除了重复的 MessageInterestManager 类,统一使用 InterestManager。
2025-11-19 23:17:58 +08:00
minecraft1024a
99ba96ce7b chore(memory): 移除记忆系统初始化过程中的冗余日志记录 2025-11-19 23:17:54 +08:00
minecraft1024a
7c89dcd625 fix(api): 修复机器人消息统计计数器逻辑
chore(logging): 移除 message_manager 各模块多余的启动日志

- 修复了 `get_bot_message_stats_by_chat` 接口中错误地将计数器重置为1而不是递增的问题。
- 清理了 `message_manager` 及其子模块中重复或不必要的启动日志,以减少日志冗余。
2025-11-19 23:17:52 +08:00
minecraft1024a
1a314ac610 feat(memory): 增强记忆类型解析,支持中英文映射
新增了一个 `_resolve_memory_type` 方法,以更健壮地处理从 LLM 返回的记忆类型字符串。此方法现在可以正确解析中文、英文(大小写不敏感)以及下划线格式的记忆类型。

- 增加了从中文到 `MemoryType` 枚举的直接映射。
- 实现了对多种英文格式(如 "personal_fact", "PERSONAL_FACT", "Personal Fact")的兼容解析。
- 当无法识别任何有效类型时,会记录警告并安全地回退到默认的 `CONTEXTUAL` 类型,提高了系统的容错性。
2025-11-19 23:17:50 +08:00
minecraft1024a
a273be76d3 refactor(core): 统一和改进程序优雅关闭逻辑
将分散的关闭逻辑集中到`MainSystem`中,并由`bot.py`中的顶层异常处理块统一调用。这简化了关闭流程,提高了系统的健壮性和可维护性。

- 将信号处理逻辑从`MainSystem`移除,改由`bot.py`中的`try...finally`块处理,以捕获更广泛的退出场景(如`KeyboardInterrupt`)。
- `graceful_shutdown`函数现在接收`main_system`实例,直接调用其`shutdown`方法,实现了责任的单一化。
- 为`EmojiManager`和`VectorMemoryStorage`添加了`shutdown`/`cleanup`方法,确保其后台任务和资源能被正确清理。
- 调整了`MemorySystem`中对`unified_storage.cleanup()`的调用,使其与接口保持一致。
2025-11-19 23:17:49 +08:00
Windpicker-owo
481252d660 refactor(chat): 异步化聊天系统并重构兴趣值计算机制
将同步调用改为异步调用以提升性能,重构兴趣值计算流程以支持更灵活的组件化架构。主要改进包括:

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

这些改进提升了系统的响应性能和可扩展性,同时保持了API的向后兼容性。
2025-11-19 23:15:31 +08:00
minecraft1024a
87ce36b62b fix(express): 修复异步会话中错误的删除操作
在 `ExpressionLearner` 的 `decay` 方法中,`session.delete(expr)` 操作是同步的,但在异步会话(`AsyncSession`)上下文中应该使用 `await`。此更改修复了该问题,确保表达式能被正确地异步删除。
2025-11-19 23:15:15 +08:00
Windpicker-owo
8822bcd3ef fix(memory): 修复定时清理任务的异步执行问题 2025-11-19 23:15:13 +08:00
minecraft1024a
1ee7fd2ffd refactor(express): 优化目录创建的异常处理逻辑
将 `try-except` 块移至循环外部,以减少重复的异常处理代码。这样可以更清晰地处理在创建多个目录过程中可能发生的任何错误,同时保持代码的简洁性。
2025-11-19 23:15:08 +08:00
Windpicker-owo
a5a16971e9 refactor(memory): 移除废弃的记忆系统备份文件,优化消息管理器架构
移除了deprecated_backup目录下的所有废弃记忆系统文件,包括增强记忆适配器、钩子、集成层、重排序器、元数据索引、多阶段检索和向量存储等模块。同时优化了消息管理器,集成了批量数据库写入器、流缓存管理器和自适应流管理器,提升了系统性能和可维护性。
2025-11-19 23:14:42 +08:00
Windpicker-owo
80fc37fd02 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-11-19 23:14:39 +08:00
Windpicker-owo
3de18dbf3e refactor(logging): 将信息日志级别更改为调试级别以减少输出噪声 2025-11-19 23:14:34 +08:00
Windpicker-owo
74d022c489 feat(chat): 增强任务管理和取消机制
添加新的任务管理方法来更好地处理异步任务的生命周期:
- 新增 cancel_processing_task、remove_processing_task 等方法
- 在流循环清理时自动取消关联的 chatter 处理任务
- 添加活跃任务统计信息到管理器统计中
- 改进 prompt 构建时的任务类型检查和错误处理
2025-11-19 23:14:31 +08:00
minecraft1024a
e02af208c4 ruff 2025-11-19 23:14:28 +08:00
tt-P607
83517b7178 fix(chat): 修复能量调整计算中的负数幂错误
当能量值非常接近高能量阈值(0.7)时,由于浮点数精度问题,`energy - 0.7` 的结果可能为一个极小的负数,这会导致 `ValueError` (negative number cannot be raised to a fractional power)。

通过使用 `max(0, ...)` 来确保幂运算的基数始终为非负数,从而解决了这个潜在的运行时错误,增强了系统的健壮性。
2025-11-19 23:14:24 +08:00
tt-P607
781fa2fce7 fix(chat): 确保在流取消时正确取消chatter处理任务
先前,当一个流循环(stream loop)被取消时,为其创建的 chatter 处理任务(`process_stream_context`)不会被一并取消。

这可能导致任务泄露,即“孤儿”任务在后台继续运行,消耗资源并可能引发意外行为。

本次修改引入了一个任务跟踪机制:
- `ChatterManager`现在会记录每个流正在运行的处理任务。
- 当流循环捕获到 `CancelledError` 时,它会主动取消关联的 chatter 任务。

这确保了在流停止时,相关的计算资源能够被正确、及时地释放,提高了系统的健壮性。
2025-11-19 23:14:20 +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
Windpicker-owo
a853722212 perf(chat): 使用asyncio.create_task优化异步任务处理 2025-11-19 23:14:05 +08:00
Windpicker-owo
06484245e1 refactor(chat): 优化流循环管理器的并发性能和健壮性
改进StreamLoopManager的锁机制和任务管理,添加超时控制避免死锁,使用并发操作提升性能,增强异常处理和日志记录确保系统稳定性。
2025-11-19 23:14:03 +08:00
tt-P607
40b6348d3e fix(chat): 增强回复生成的健壮性,增加超时和类型检查
在 `DefaultReplyer` 的提示词构建流程中,为并行的子任务(如记忆、工具、关系等)增加了15秒的超时机制。这可以防止因某个子任务耗时过长或卡死而导致整个回复生成过程停滞。

同时,在能量系统中增加了对计算器分数和兴趣值的类型检查,确保它们是数值类型,避免了潜在的 `TypeError` 异常,提高了系统的稳定性。
2025-11-19 23:14:01 +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
6c7e0c986f feat(memory): 禁止使用模糊代称构建记忆
增强记忆构建系统的准确性,禁止使用"用户"等模糊代称
- 新增模糊代称检查机制,确保记忆使用明确的名字或称呼
- 更新记忆构建原则文档,明确要求使用具体姓名
- 修改display字段格式要求,提供正确的示例
- 删除memory_manager中未使用的consolidate_memory方法
- 优化memory_system配置和日志格式
2025-11-19 23:11:42 +08:00
Windpicker-owo
727f9550f5 feat(memory): 实现灵活搜索模式并重构记忆格式化系统
- 新增灵活匹配模式(flexible_mode),支持2/4项匹配即可的记忆检索策略
- 删除冗余的memory_formatter模块,简化记忆系统架构
- 增强枚举值解析机制,支持字符串、整数和枚举实例的自动转换
- 优化元数据索引搜索逻辑,分离严格模式和灵活模式的实现路径
- 改进向量存储的搜索回退机制,当元数据筛选无结果时自动回退到全量搜索
- 统一记忆类型映射管理,避免重复的格式化函数定义

这些变更提升了记忆检索的准确性和灵活性,同时简化了代码结构,提高了系统可维护性。
2025-11-19 23:11:40 +08:00
Windpicker-owo
96fbfc492e feat(memory): 增强查询规划以支持未读消息上下文分析
新增未读消息上下文集成功能,提升记忆检索的精准度和相关性。
通过分析当前对话流中的未读消息内容、关键词和参与者信息,
生成更贴合实际对话场景的记忆检索策略。

主要改进:
- 查询规划器现在能够结合未读消息生成语义查询
- 新增未读消息上下文收集和摘要构建机制
- 优化向量存储的兜底逻辑以兼容新的记忆结构
- 改进记忆转换过程中的调试和空内容处理

这些功能使记忆系统能够更好地理解当前对话的上下文,
提供更相关的历史记忆来支持生成更准确的回复。
2025-11-19 23:11:40 +08:00
Windpicker-owo
06c0609d4a feat(memory): 实现三阶段记忆检索系统并简化提取策略
- 移除规则和混合提取策略,统一使用LLM提取
- 实现三阶段检索:元数据粗筛→向量精筛→综合重排
- 新增JSON元数据索引支持,提升检索效率
- 优化Vector DB配置管理和批处理机制
- 统一记忆作用域为全局,实现完全共享
- 增强查询规划和综合评分算法
2025-11-19 23:11:39 +08:00