Windpicker-owo
|
335e5d5c5f
|
feat(memory): 添加时间规范化处理功能
在记忆构建器中增加时间规范化处理逻辑,将相对时间表达式转换为绝对日期格式。添加了相对时间映射规则和正则替换机制,确保记忆内容中的时间信息统一使用YYYY-MM-DD格式。同时更新了系统提示语,明确时间处理原则和要求。
- 新增_normalize_time_in_memory方法处理时间规范化
- 添加相对时间到绝对时间的映射规则
- 更新系统提示语包含时间处理原则
- 支持记忆内容和对象信息中的时间规范化
|
2025-11-19 23:10:25 +08:00 |
|
Windpicker-owo
|
b95784d004
|
feat(memory): 添加记忆构建节流机制
在EnhancedMemorySystem中新增min_build_interval_seconds配置项,实现基于作用域的构建频率控制。通过_get_build_scope_key方法根据stream_id、chat_id或user_id生成节流键,确保同一作用域内的记忆构建操作不会过于频繁。
新增_last_memory_build_times字典记录各作用域的最后构建时间,当间隔不足配置阈值时自动跳过构建操作。同时在构建异常时自动清理对应的节流记录,确保系统稳定性。
|
2025-11-19 23:10:25 +08:00 |
|
Windpicker-owo
|
a2217bd377
|
feat(memory): 实现增强记忆系统并完全替换原有架构
引入全新的增强记忆系统,彻底取代海马体记忆架构
删除旧版记忆系统相关模块,包括Hippocampus、异步包装器和优化器
重构消息处理流程,集成增强记忆系统的存储和检索功能
更新配置结构以支持增强记忆的各项参数设置
禁用原有定时任务,采用内置维护机制保证系统性能
|
2025-11-19 23:10:15 +08:00 |
|
Windpicker-owo
|
6655e4906f
|
修改一下默认afc参数
|
2025-11-19 23:09:56 +08:00 |
|
Windpicker-owo
|
0b4a85de1e
|
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-11-19 23:09:56 +08:00 |
|
Windpicker-owo
|
fc429228b5
|
fix(chat): 增强消息查找功能并添加未读消息自动清理机制
- 重构 `_find_message_by_id` 方法,支持多种消息ID格式和模糊匹配
- 在动作执行后自动清理未读消息,防止消息堆积
- 为 `reply` 动作添加目标消息查找失败时的降级处理
- 将消息计数和关系查询方法改为异步调用以保持一致性
|
2025-11-19 23:09:53 +08:00 |
|
Windpicker-owo
|
02d0490da7
|
feat(logging): 将调试日志升级为信息级别以增强监控能力
将多个模块中的调试日志(logger.debug)升级为信息级别(logger.info),包括流循环管理、聊天动作生成和消息兴趣度计算等关键组件。
这些修改使得生产环境中能够更直观地监控系统运行状态,包括流等待间隔、动作生成数量和消息处理决策等重要指标,同时移除了冗余的用户ID计算逻辑。
|
2025-11-19 23:09:50 +08:00 |
|
Windpicker-owo
|
7b94623ba8
|
refactor(message_manager): 重构消息分发机制为流循环模式
重构原有的动态消息分发管理器为流循环管理器,每个聊天流拥有独立的无限循环任务主动轮询处理消息。
主要变更:
- 移除 DistributionManager 及相关类(DistributionPriority、DistributionTask、StreamDistributionState、DistributionExecutor)
- 新增 StreamLoopManager 实现基于流的循环处理机制
- 修改 context_manager 和 message_manager 以适配新的流循环模式
- 优化 plan_filter.py 中的消息处理逻辑以适应新的数据格式
BREAKING CHANGE: 原有的分发管理器 API 已被移除,需要更新所有依赖分发功能的代码
|
2025-11-19 23:09:46 +08:00 |
|
Windpicker-owo
|
7986afe820
|
feat(database): 为 SQLite 添加 WAL 模式支持和性能优化配置
增加 SQLite 数据库性能优化功能,包括:
- 启用 WAL 模式提高并发性能
- 设置合理的超时时间和同步级别
- 添加数据库定期维护功能
- 在会话初始化时自动应用优化配置
- 增加连接超时时间从30秒到60秒
这些优化显著提升了 SQLite 数据库在高并发场景下的性能和稳定性。
|
2025-11-19 23:09:43 +08:00 |
|
Windpicker-owo
|
ae0c2704d1
|
refactor(chat): 移除 ChatStream 的历史消息自动加载功能
移除 ChatStream 初始化时的 `_load_history_messages()` 调用,改为按需异步加载历史消息。这解决了启动时阻塞事件循环的问题,并提高了聊天流初始化的性能。
主要变更:
- 删除 `ChatStream._load_history_messages()` 方法及相关代码
- 将多个模块中的同步数据库查询函数改为异步版本
- 修复相关调用处的异步调用方式
- 优化图片描述查询的错误处理
BREAKING CHANGE: `get_raw_msg_before_timestamp_with_chat` 和相关消息查询函数现在改为异步操作,需要调用处使用 await
|
2025-11-19 23:09:40 +08:00 |
|
Windpicker-owo
|
c31fd02daf
|
refactor(chat): 迁移数据库操作为异步模式并修复相关调用
将同步数据库操作全面迁移为异步模式,主要涉及:
- 将 `with get_db_session()` 改为 `async with get_db_session()`
- 修复相关异步调用链,确保 await 正确传递
- 优化消息管理器、上下文管理器等核心组件的异步处理
- 移除同步的 person_id 获取方法,避免协程对象传递问题
修复 deepcopy 在 StreamContext 中的序列化问题,跳过不可序列化的 asyncio.Task 对象
删除无用的测试文件和废弃的插件清单文件
|
2025-11-19 23:09:34 +08:00 |
|
Windpicker-owo
|
9836d317b8
|
refactor(database): 将同步数据库操作迁移为异步操作
将整个项目的数据库操作从同步模式迁移为异步模式,主要涉及以下修改:
- 将 `with get_db_session()` 改为 `async with get_db_session()`
- 将同步的 SQLAlchemy 查询方法改为异步执行
- 更新相关的方法签名,添加 async/await 关键字
- 修复由于异步化导致的并发问题和性能问题
这些修改提高了数据库操作的并发性能,避免了阻塞主线程,提升了系统的整体响应能力。涉及修改的模块包括表情包管理、反提示注入统计、用户封禁管理、记忆系统、消息存储等多个核心组件。
BREAKING CHANGE: 所有涉及数据库操作的方法现在都需要使用异步调用,同步调用将不再工作
|
2025-11-19 23:09:31 +08:00 |
|
Windpicker-owo
|
7508d542f2
|
refactor(interest-system): 移除旧兴趣度管理系统,迁移到插件内部实现
移除旧的集中式兴趣度管理系统(interest_manager.py),将兴趣度计算功能迁移到affinity_flow_chatter插件内部实现。主要包括:
- 删除interest_manager.py及其相关导入引用
- 修改RelationshipEnergyCalculator使用插件内部的关系分计算
- 重构StreamContextManager使用插件内部的兴趣度评分系统
- 更新ChatStream、PlanFilter、Planner等组件使用新的插件接口
- 简化上下文管理器,移除事件系统和验证器相关代码
此次重构提高了模块独立性,减少了核心代码对插件功能的直接依赖,符合"高内聚低耦合"的设计原则。
|
2025-11-19 23:09:28 +08:00 |
|
tt-P607
|
e8e3c1bd3f
|
feat(sleep): 细化唤醒机制,实现分聊天的起床气
先前的唤醒与起床气机制是全局性的,一个聊天中的频繁消息会导致Bot对所有聊天都表现出“起床气”状态,这在多聊天场景下体验不佳。
本次更新将唤醒机制与具体的 `chat_id` 进行绑定,实现了更精细化的交互逻辑:
- Bot被吵醒后,其“起床气”状态将只针对吵醒它的聊天生效。
- 在此期间,Bot会忽略其他所有聊天的消息,专注于处理来自触发唤醒的聊天的消息。
- Prompt现在会优先注入起床气相关的描述,确保响应符合当前状态。
此外,为了更准确地捕捉唤醒意图,在群聊中,即使没有@提及,只要消息包含Bot的昵称或别名,也会被视为一次有效“提及”,从而累加唤醒值。
|
2025-11-19 23:09:27 +08:00 |
|
tt-P607
|
2a46618f68
|
refactor(config): 移除全局表达开关以支持分聊天配置
移除全局的 `enable_expression` 配置项,转而使用 `get_expression_config_for_chat` 方法在生成提示词时动态判断。
原有的全局开关不够灵活,无法满足分聊天、分群组控制表达功能的需求。此次重构通过在运行时检查每个聊天的具体配置,实现了更精细化的功能启用控制。
BREAKING CHANGE: 全局配置项 `expression.enable_expression` 已被移除。现在需要通过表达规则来为不同的聊天单独控制功能的启用状态。
|
2025-11-19 23:09:27 +08:00 |
|
tt-P607
|
4bfd1d3af9
|
feat(config): 为表达配置添加启用开关
|
2025-11-19 23:09:26 +08:00 |
|
tt-P607
|
c7c57461ca
|
refactor(llm_models): 将用量记录函数改为异步以支持数据库写入
将 `LLMUsageRecorder` 中的 `record_usage_to_database` 和 `LLMRequest` 中的 `_record_usage` 方法从同步转换为异步。
此项重构是为了支持异步数据库操作,避免在记录模型用量时阻塞事件循环,从而提升应用的整体性能和响应能力。
|
2025-11-19 23:09:26 +08:00 |
|
minecraft1024a
|
ac9321ff80
|
refactor(llm_models): 将 LLMRequest 重构为模块化的策略驱动架构
此次重构旨在分解原有的单体 `LLMRequest` 类,以提高代码的可维护性、可扩展性和健壮性。通过引入多个遵循单一职责原则的内部辅助类,请求生命周期的各个阶段被清晰地分离开来。
主要变更包括:
- **引入 `_ModelSelector`**: 专门负责模型的动态选择、负载均衡和失败惩罚策略。该策略现在能对网络错误和服务器错误等严重问题施加更高的惩罚。
- **引入 `_PromptProcessor`**: 封装所有与提示词相关的处理逻辑,包括内容混淆、反截断指令注入以及响应内容的后处理(如提取思考过程)。
- **引入 `_RequestExecutor`**: 负责执行底层的API请求,包含自动重试、异常分类和消息体压缩等功能。
- **引入 `_RequestStrategy`**: 实现高阶请求策略,如模型间的故障转移(Failover),确保单个模型的失败不会导致整个请求失败。
`LLMRequest` 类现在作为外观(Facade),协调这些内部组件,为上层调用提供了更简洁、稳定的接口。
|
2025-11-19 23:09:25 +08:00 |
|
Windpicker-owo
|
f2d02572fb
|
refactor(chat): 优化上下文管理器,添加启动与停止功能,改进消息用户ID获取逻辑
|
2025-11-19 23:09:25 +08:00 |
|
Windpicker-owo
|
1177b81285
|
refactor(chat): 重构消息管理器以使用集中式上下文管理和能量系统
- 将流上下文管理从MessageManager迁移到专门的ContextManager
- 使用统一的能量系统计算focus_energy和分发间隔
- 重构ChatStream的消息数据转换逻辑,支持更完整的数据字段
- 更新数据库模型,移除interest_degree字段,统一使用interest_value
- 集成新的兴趣度管理系统替代原有的评分系统
- 添加消息存储的interest_value修复功能
|
2025-11-19 23:09:25 +08:00 |
|
Windpicker-owo
|
5962b44294
|
refactor(chat): 优化消息管理与打断系统,添加打断计数与历史消息加载功能
|
2025-11-19 23:09:23 +08:00 |
|
Windpicker-owo
|
701e523823
|
refactor(chat): 从StreamContext获取消息兴趣度和连续无回复次数的计算逻辑
|
2025-11-19 23:09:22 +08:00 |
|
Windpicker-owo
|
ca8a47f246
|
refactor(chat): 重构消息兴趣度计算与动作记录机制
重构聊天系统以使用集中式消息管理API,移除ChatMessageContext类,将兴趣度计算和动作记录功能整合到StreamContext中。
主要变更:
- 移除ChatMessageContext类,使用StreamContext统一管理消息上下文
- 在DatabaseMessages模型中添加interest_degree、actions、should_reply字段
- 实现消息管理器API用于更新消息信息和刷新focus_energy
- 重构ChatStream的focus_energy计算逻辑,基于StreamContext历史消息
- 在动作管理器中添加动作记录功能,确保动作执行后更新消息状态
BREAKING CHANGE: ChatMessageContext类已被移除,相关功能需使用StreamContext API替代
|
2025-11-19 23:09:19 +08:00 |
|
tt-P607
|
9c6fbce81b
|
refactor(chat): 移除会话数据中的 relationship_score
|
2025-11-19 23:09:17 +08:00 |
|
tt-P607
|
3fa26debb9
|
feat(chat): 实现 focus_energy 的实时更新与同步机制
为了解决 `focus_energy` 更新不及时,导致其无法准确反映当前对话兴趣度的问题,本次提交引入了一套新的实时更新与同步机制。
这确保了每当消息的兴趣度发生变化时,代表机器人注意力的 `focus_energy` 也能被立即重新计算和更新,使决策更加精准。
主要变更:
1. **手动更新**: 在 `ChatStream` 中新增 `update_focus_energy` 方法,允许外部逻辑在需要时手动触发 `focus_energy` 的重新计算。
2. **实时计算**: `ChatterActionPlanner` 在评估并更新消息兴趣度后,会立即调用 `update_focus_energy`,确保了兴趣度到注意力的即时传导。
3. **状态同步**: `ChatterManager` 在完成一次执行后,会主动将 `mood_manager` 中可能已更新的 `chat_stream` 同步回当前的 `StreamContext`,保证了整个处理流中数据的一致性。
|
2025-11-19 23:09:16 +08:00 |
|
tt-P607
|
185706f599
|
Revert: 回退并发消息处理系统的相关提交
由于并发消息处理的实现在测试中暴露出消息重复和目标ID丢失的问题,暂时回退至该功能合并前的稳定状态,以便进一步排查问题。
|
2025-11-19 23:09:16 +08:00 |
|
tt-P607
|
0beb62421c
|
feat(chat): 实现并发消息处理系统
引入了一个全新的并发消息处理系统,以显著提升在高活跃度群聊中的响应速度。
在此之前,消息管理器对每个聊天流(如一个群聊)内的所有消息进行串行处理,导致用户需要排队等待机器人响应。新系统引入了可配置的并发模式:
- 通过 `concurrent_message_processing` 开关启用。
- 允许并行处理来自同一群聊中不同用户的消息。
- 通过 `process_by_user_id` 保证对同一用户的消息处理仍然是串行的,以维持上下文的连贯性。
- 使用 `concurrent_per_user_limit` 控制并发处理的用户数量。
为了支持此功能,对 `MessageManager` 进行了大规模重构,用更高效的独立流检查机制取代了旧的全局轮询和优先级排序逻辑。同时,清理和移除了大量已废弃或冗余的配置项,简化了整体配置。
BREAKING CHANGE: 移除了多个已废弃的 `ChatConfig` 配置项,包括 `mentioned_bot_inevitable_reply`, `at_bot_inevitable_reply`, `focus_value`, `group_chat_mode` 等。这些功能已被新的 AFC 逻辑或其它机制取代。请参考最新的配置文件模板进行更新。
|
2025-11-19 23:09:15 +08:00 |
|
Windpicker-owo
|
66f9b9b84f
|
refactor(chat): 重构消息管理器以使用集中式聊天流API
移除对context.chat_stream的直接依赖,改为通过get_chat_manager().get_stream()统一获取聊天流实例。这提高了模块独立性,符合"高内聚、低耦合"原则。
- 在MessageManager中统一使用chat_api获取stream实例
- 移除mood_manager中直接更新chat_stream的逻辑
- 在affinity_flow_chatter中统一处理兴趣度更新
- 消除直接属性访问带来的强耦合依赖
|
2025-11-19 23:09:14 +08:00 |
|
Windpicker-owo
|
a67b78b551
|
feat(chat): 实现动态消息分发系统和消息打断机制
添加基于focus_energy的动态消息分发周期调整功能,根据聊天流兴趣度智能调整检查间隔
实现消息打断系统,允许高优先级消息打断正在处理的任务
重构ChatStream类,引入动态兴趣度计算系统,包括消息兴趣度统计和用户关系评分
扩展数据库模型和配置系统以支持新功能,增加相关配置项
更新版本号至0.11.0-alpha-1以反映重大功能更新
|
2025-11-19 23:09:12 +08:00 |
|
minecraft1024a
|
c4f24244c1
|
Revert "refactor(llm): 重构 LLM 请求处理,引入通用故障转移执行器"
This reverts commit a6f2fb78e1.
|
2025-11-19 23:09:10 +08:00 |
|
minecraft1024a
|
c180d55944
|
Revert "refactor(llm): 精简故障转移执行器的调用逻辑"
This reverts commit 7dfc005a3e.
|
2025-11-19 23:09:08 +08:00 |
|
minecraft1024a
|
59d4434717
|
Revert "fix(llm): 增强并发执行和异常处理的健壮性"
This reverts commit 0146eb7e9f.
|
2025-11-19 23:09:06 +08:00 |
|
minecraft1024a
|
cb38f14e82
|
fix(llm): 增强并发执行和异常处理的健壮性
- 为 `execute_concurrently` 添加协程函数检查,防止传入非异步函数导致运行时错误。
- 统一将日志中的异常对象显式转换为字符串,以获得更清晰的错误输出。
- 移除了针对特定模型供应商的 403 错误降级处理逻辑,该逻辑已过时。
|
2025-11-19 23:09:04 +08:00 |
|
minecraft1024a
|
ef809cd9fa
|
refactor(llm): 精简故障转移执行器的调用逻辑
`_execute_with_failover` 方法在 `raise_on_failure=True` 时,保证了要么返回有效结果,要么抛出异常。
因此,先前在调用该方法后的 `if result:` 判断和 `raise RuntimeError` 语句是冗余且不可达的。本次重构移除了这些不必要的代码,直接返回该方法的调用结果,使代码更加简洁和清晰。
|
2025-11-19 23:09:03 +08:00 |
|
minecraft1024a
|
ca7a4c0c2a
|
feat(chat): 在亲和流对话中触发表达学习
每次亲和流对话器处理消息时,都会异步触发一次表达学习任务。这有助于模型根据最近的对话内容,持续优化其表达方式。
|
2025-11-19 23:09:01 +08:00 |
|
minecraft1024a
|
b91d1e6bf5
|
refactor(llm): 重构 LLM 请求处理,引入通用故障转移执行器
之前的代码里,处理文本、图片、语音的请求方法都各自为战,写了一大堆重复的故障转移逻辑,简直乱糟糟的,看得我头疼。
为了解决这个问题,我进行了一次大扫除:
- 引入了一个通用的 `_execute_with_failover` 执行器,把所有“模型失败就换下一个”的脏活累活都统一管理起来了。
- 重构了所有相关的请求方法(文本、图片、语音、嵌入),让它们变得更清爽,只专注于自己的核心任务。
- 升级了 `_model_scheduler`,现在它会智能地根据实时负载给模型排队,谁最闲谁先上。那个笨笨的 `_select_model` 就被我光荣地裁掉了。
这次重构之后,代码的可维护性和健壮性都好多了,再加新功能也方便啦。哼哼,快夸我!
|
2025-11-19 23:08:59 +08:00 |
|
Windpicker-owo
|
f333611bfa
|
删除无用日志
|
2025-11-19 23:08:57 +08:00 |
|
minecraft1024a
|
acd2cfabaf
|
杀掉一部分日志
|
2025-11-19 23:08:57 +08:00 |
|
minecraft1024a
|
b204ab914d
|
fix(napcat_adapter): 确保回复消息的目标 ID 始终为字符串
|
2025-11-19 23:08:56 +08:00 |
|
minecraft1024a
|
e903386ffb
|
chore(napcat_adapter): 增加回复消息段数据日志
|
2025-11-19 23:08:56 +08:00 |
|
minecraft1024a
|
a456b53920
|
chore(napcat_adapter): 增加待处理消息段的日志
|
2025-11-19 23:08:56 +08:00 |
|
minecraft1024a
|
1b4d1f9adf
|
chore(napcat_adapter): 增加回复消息的目标 ID 日志
|
2025-11-19 23:08:55 +08:00 |
|
minecraft1024a
|
547ebc9b92
|
删除几个日志
|
2025-11-19 23:08:55 +08:00 |
|
minecraft1024a
|
035ddac340
|
fix(plugin_system): 兼容从 'id' 字段获取消息 ID
|
2025-11-19 23:08:54 +08:00 |
|
minecraft1024a
|
669e5d3851
|
我是打日志先人
|
2025-11-19 23:08:54 +08:00 |
|
minecraft1024a
|
6ecfd85617
|
chore(napcat_adapter): 增加消息发送与回复处理的详细日志
为了方便排查消息发送失败或引用回复行为不符合预期的问题,在消息发送和回复处理的关键路径上增加了详细的日志输出。
- 在调用 NapCat 发送接口前,记录准备发送的完整消息体。
- 在 `handle_reply_message` 方法中,记录获取被引用消息详情、判断是否 @ 用户以及最终返回的消息段等步骤。
|
2025-11-19 23:08:53 +08:00 |
|
minecraft1024a
|
9422d1d547
|
revert 1a24233b86deb0c4d8446ff31c072ea4b18572aa中的plugin.py
|
2025-11-19 23:08:53 +08:00 |
|
tt-P607
|
b1f2365539
|
perf(core): 将异步任务日志降级为 debug 级别
将消息处理的异步任务创建和完成日志级别从 INFO 调整为 DEBUG。
这些日志在高并发场景下会产生大量输出,影响关键信息的查看,并且会带来不必要的 I/O 开销。将其降级到 DEBUG 级别可以使默认日志更清晰,同时保留在需要时进行详细调试的能力。
|
2025-11-19 23:08:53 +08:00 |
|
tt-P607
|
42645972e4
|
feat(core): 实现消息异步处理并引入LLM驱动的智能表情回应
本次更新对系统核心处理流程和插件功能进行了重要升级,主要包含以下两方面:
1. **消息处理异步化**:
- 在 `main.py` 中引入了 `asyncio.create_task` 机制,将每条消息的处理过程包装成一个独立的后台任务。
- 这解决了长时间运行的AI或插件操作可能阻塞主事件循环的问题,显著提升了机器人的响应速度和系统稳定性。
- 为后台任务添加了完成回调,现在可以详细地记录每个消息处理任务的成功、失败或取消状态及其耗时,便于监控和调试。
2. **`set_emoji_like` 插件智能化**:
- 为 `set_emoji_like` 插件增加了LLM驱动的表情选择功能。当动作指令未指定具体表情时,插件会自动构建包含聊天上下文、情绪和人设的提示,请求LLM选择一个最合适的表情进行回应。
- 为支持此功能,对AFC规划器的提示词进行了优化,为LLM提供了更清晰的参数示例和规则,提高了动作生成的准确性。
此外,为了统一日志规范,将 `[所见]` 消息接收日志集中到 `bot.py` 中,确保在任何过滤逻辑执行前记录所有收到的消息,并移除了插件中重复的日志。
|
2025-11-19 23:08:52 +08:00 |
|
Windpicker-owo
|
c4162d787a
|
feat(affinity_flow_chatter): 增强动作思考过程在回复生成中的集成
添加了将动作思考过程集成到回复生成流程的功能:
- 在 generator_api 中新增逻辑,将 action_data 中的 thinking 字段内容添加到 extra_info
- 优化 plan_filter 中对 thinking 字段的处理逻辑,避免添加无意义的默认值
- 更新默认生成器提示词,移除冗余的关系信息块重复
- 在 planner 提示词中添加不对表情包消息回应的限制
|
2025-11-19 23:08:50 +08:00 |
|