Windpicker-owo
d850f231ab
feat(database): 实现多级缓存管理器
...
- cache_manager.py: 完整的多级缓存系统
* LRUCache: O(1)的LRU缓存实现
* MultiLevelCache: L1+L2两级缓存架构
* L1缓存: 1000项/60秒,用于热点数据
* L2缓存: 10000项/300秒,用于温数据
* 自动淘汰: LRU策略淘汰最少使用数据
* 统计监控: 命中率、淘汰率等指标
* 智能提升: L2命中自动提升到L1
* 定期清理: 后台任务清理过期数据
- 功能特性:
* 异步锁保证线程安全
* 自动估算数据大小
* 支持自定义loader函数
* 全局单例模式
优化层第一部分完成,命中率预期>80%
2025-11-19 23:30:42 +08:00
Windpicker-owo
42515debf7
refactor(database): 阶段二 - 完成核心层重构
...
- models.py: 迁移25个模型类,使用统一的Mapped类型注解
* 包含: ChatStreams, Messages, PersonInfo, LLMUsage等
* 新增: PermissionNodes, UserPermissions, UserRelationships
* 654行纯模型定义代码,无初始化逻辑
- migration.py: 重构数据库迁移逻辑
* check_and_migrate_database: 自动检查和迁移表结构
* create_all_tables: 快速创建所有表
* drop_all_tables: 测试用删除所有表
* 使用新架构的engine和models
- __init__.py: 完善导出清单
* 导出所有25个模型类
* 导出迁移函数
* 导出Base和工具函数
- 辅助脚本:
* extract_models.py: 自动提取模型定义
* cleanup_models.py: 清理非模型代码
核心层现已完整,下一步进入优化层实现
2025-11-19 23:30:41 +08:00
Windpicker-owo
fcc408e2d9
refactor(database): 阶段一 - 创建新架构基础
...
- 创建分层目录结构 (core/api/optimization/config/utils)
- 实现核心层: engine.py, session.py
- 实现配置层: database_config.py
- 实现工具层: exceptions.py
- 迁移连接池管理器到优化层
- 添加详细的重构计划文档
2025-11-19 23:30:41 +08:00
minecraft1024a
2f22246829
refactor(plugin_system): 移除静态PlusCommandAdapter并优化命令注册逻辑
...
移除了不再需要的静态`PlusCommandAdapter`类,该类最初用于将`PlusCommand`适配到旧的`BaseCommand`系统。
随着插件系统重构,所有命令(包括旧版命令)现在都统一通过动态创建的适配器在`ComponentRegistry`中转换为`PlusCommand`进行注册和处理。此更改简化了`plus_command.py`模块,消除了冗余代码,并使命令注册流程更加清晰和一致。
主要变更:
- 从`plus_command.py`中删除了`PlusCommandAdapter`类。
- 调整了`ComponentRegistry`中的日志记录逻辑,现在所有旧版命令都会被明确标记并适配,无需之前的条件检查。
- 相应地更新了相关模块的导入语句。
2025-11-19 23:30:40 +08:00
minecraft1024a
141ef2d6ab
refactor(chat): 移除旧的聊天频率分析器模块(原来我还有个测试性功能没写啊,那删了吧())
...
整个 `frequency_analyzer` 模块已被移除。此模块的功能(如主动聊天触发)已被弃用或计划在未来通过更通用的机制重新实现,例如基于事件总线和插件系统的交互策略。
移除此模块可以简化代码库,并消除对已移动或重构的旧组件(如 AFC 管理器)的依赖。
2025-11-19 23:30:39 +08:00
minecraft1024a
773fbbbc34
回复器你不许传dict
2025-11-19 23:30:39 +08:00
minecraft1024a
8a0075ee92
refactor(core): 统一消息对象类型并增强代码健壮性
...
本次提交对多个核心模块进行了重构和修复,主要目标是统一内部消息对象的类型为 `DatabaseMessages`,并增加多处空值检查和类型注解,以提升代码的健壮性和可维护性。
- **统一消息类型**: 在 `action_manager` 中,将 `action_message` 和 `target_message` 的类型注解和处理逻辑统一为 `DatabaseMessages`,消除了对 `dict` 类型的兼容代码,使逻辑更清晰。
- **增强健壮性**:
- 在 `permission_api` 中,为所有对外方法增加了对 `_permission_manager` 未初始化时的空值检查,防止在管理器未就绪时调用引发异常。
- 在 `chat_api` 和 `cross_context_api` 中,增加了对 `stream.user_info` 的存在性检查,避免在私聊场景下 `user_info` 为空时导致 `AttributeError`。
- **类型修复**: 修正了 `action_modifier` 和 `plugin_base` 中的类型注解错误,并解决了 `action_modifier` 中因 `chat_stream` 未初始化可能导致的潜在问题。
- **代码简化**: 移除了 `action_manager` 中因兼容 `dict` 类型而产生的冗余代码分支,使逻辑更直接。
2025-11-19 23:30:38 +08:00
minecraft1024a
3e8373e0ec
perf(storage): 降低插件存储的延迟写入时间
...
将插件存储的 `save_delay` 从 5 秒调整为 2 秒,以更快地将数据持久化到磁盘,减少因意外关闭导致数据丢失的风险,同时在可接受的范围内平衡了性能开销。
2025-11-19 23:30:36 +08:00
minecraft1024a
9831e0a457
feat(storage): 引入插件存储延迟写入与退出时强制保存机制
...
对插件本地存储API进行了重要优化,引入了延迟写入(de-bouncing)机制,以减少频繁的磁盘I/O操作,提升性能。现在,对存储的修改会在一个短暂的延迟后批量写入,而不是每次操作都立即写入。
此外,增加了程序退出时的钩子(atexit hook),确保在主程序关闭前,所有插件缓存中未保存的数据都会被强制写入磁盘,防止数据丢失。
同时,此提交包含了一些小的修复:
- 修复了 `cross_context_api` 在私聊场景下 `user_info` 为空时可能出现的逻辑问题。
- 清理了 `plugin_base` 中不必要的 `ClassVar` 类型提示。
2025-11-19 23:30:36 +08:00
minecraft1024a
d7f8a8de26
refactor(plugin): 引入旧版Command兼容层并重构基类
...
为了平滑过渡到新的`PlusCommand`插件架构,本次重构引入了一个兼容层。
`BaseCommand`现在继承自`PlusCommand`,并剥离了大部分重复的功能实现(如消息发送、配置获取等),转而依赖`PlusCommand`的基类实现。这大大简化了`BaseCommand`,使其专注于作为旧版插件的兼容适配器。
在组件注册流程中,增加了对旧版`BaseCommand`的识别。当检测到旧版命令时,会自动使用`create_legacy_command_adapter`工厂函数将其包装成一个标准的`PlusCommand`实例。这使得旧插件无需修改代码即可在新架构下运行,同时会在启动时打印警告,鼓励开发者迁移。
2025-11-19 23:30:36 +08:00
minecraft1024a
fc3aea9fd5
refactor(api): 合并兴趣度API和关系API,以及扩展关系API
2025-11-19 23:30:35 +08:00
minecraft1024a
e03ff2883f
refactor(schedule): centralize schedule and monthly plan prompts
...
Extracts the prompt templates for daily schedule and monthly plan generation from `llm_generator.py` into a new `prompts.py` module. This change centralizes prompt management and improves code readability and maintainability by separating prompt logic from the generation workflow.
The `ScheduleLLMGenerator` and `MonthlyPlanLLMGenerator` classes now use the `global_prompt_manager` to format and retrieve the necessary prompts, simplifying the generator code.
2025-11-19 23:30:34 +08:00
minecraft1024a
455e498263
feat(schedule): 自动删除两月前的月份计划
2025-11-19 23:30:34 +08:00
minecraft1024a
12c2b806a2
ruff
2025-11-19 23:30:34 +08:00
minecraft1024a
4a0bd5845e
docs(schedule): 日程表管理器补上了注释
2025-11-19 23:30:32 +08:00
tt-P607
db054e9537
refactor(permission): 优化权限装饰器逻辑并增强健壮性
...
对权限系统进行了一系列重构和加固,主要包括:
- **增强健壮性**:在 `require_permission` 和 `require_master` 装饰器中增加了对 `user_info` 和 `user_id` 的存在性检查。当无法获取用户信息时,会记录警告日志并安全退出,防止因用户信息缺失导致程序崩溃。
- **兼容性提升**:权限装饰器现在会优先从 `PlusCommand` 实例的 `chat_stream` 属性获取聊天流,同时保留了对旧的 `message.chat_stream` 属性的兼容性支持,使代码更具前瞻性。
- **异步改造**:将 `is_master` 方法从同步改为异步,以统一权限检查的调用方式,并为未来可能引入的异步权限源做好准备。
- **代码简化**:移除了部分冗余注释,使代码更加清晰。
2025-11-19 23:30:32 +08:00
tt-P607
f446e28571
refactor(chatter): 优化规划器逻辑,仅在兴趣度足够时才执行动作修改与规划
...
将动作修改器(ActionModifier)和初始规划(initial_plan)的生成逻辑,移动到兴趣度检查之后。这样可以避免在用户消息兴趣度不足、不会执行任何动作的情况下,进行不必要的规划和动作修改,从而优化了性能并减少了潜在的资源消耗。
同时,为了增强代码的健壮性,对情绪状态的获取增加了`getattr`以提供默认值,防止因缺少特定属性而引发的潜在错误。
2025-11-19 23:30:32 +08:00
Windpicker-owo
0148f1e533
refactor(expression_learner): 优化表达方式查询逻辑,减少数据库查询次数并批量处理更新操作
...
refactor(storage): 添加消息更新批处理器,优化消息ID更新逻辑以减少数据库连接次数
2025-11-19 23:30:31 +08:00
Windpicker-owo
66d0375d45
refactor(affinity_interest_calculator): 优化私聊判断逻辑,改用group_info对象进行判断,并增强日志记录
2025-11-19 23:30:31 +08:00
Windpicker-owo
a5ce23e854
refactor(logging): 将多个info日志级别的记录更改为debug级别,以减少日志输出
2025-11-19 23:30:30 +08:00
Windpicker-owo
076894c3bc
refactor(client): 优化OpenaiClient的全局缓存,支持事件循环检测
2025-11-19 23:30:29 +08:00
Windpicker-owo
9ea42e0de1
refactor(planner): 根据focus_energy概率优化Focus模式切换到Normal模式的逻辑
2025-11-19 23:30:29 +08:00
Windpicker-owo
6a592e221b
fix(plugin): 禁用hello_world_plugin以防止意外启用
...
fix(replyer): 修改提示信息中的“这句话”为“这条消息”以提高表达准确性
2025-11-19 23:30:29 +08:00
tt-P607
ad60e6eea8
呀,柒柒!这次的代码改动虽然不大,但却像给我们的数据库连接池加了一层坚固的“护盾”呢,真是个很棒的优化!♪~
...
我为你准备好了这次的 Commit Message,快来看看吧!
refactor(database): 优化数据库连接池的关闭与验证逻辑
- 使用 `asyncio.shield` 保护连接关闭操作,确保即使在任务被取消(如流式聊天中断)的情况下,数据库会话也能被安全地关闭,防止资源泄漏。
- 在连接验证查询中,使用 `sqlalchemy.text()` 构造SQL语句,这是SQLAlchemy 2.0推荐的最佳实践,可以避免潜在的SQL注入风险并提高代码可读性。
2025-11-19 23:30:27 +08:00
明天好像没什么
5638076328
refactor: 统一类型注解风格并优化代码结构
...
- 将裸 except 改为显式 Exception 捕获
- 用列表推导式替换冗余 for 循环
- 为类属性添加 ClassVar 注解
- 统一 Union/Optional 写法为 |
- 移除未使用的导入
- 修复 SQLAlchemy 空值比较语法
- 优化字符串拼接与字典更新逻辑
- 补充缺失的 noqa 注释与异常链
BREAKING CHANGE: 所有插件基类的类级字段现要求显式 ClassVar 注解,自定义插件需同步更新
2025-11-19 23:30:26 +08:00
tt-P607
a2c53fd54e
chore(bilibli): 默认禁用bilibili插件
2025-11-19 23:30:22 +08:00
Windpicker-owo
2802ba7e07
refactor(replyer): 更新init_prompt函数,添加格式化标记输出限制
2025-11-19 23:30:21 +08:00
Windpicker-owo
d53ee349f4
feat(chatter): 添加should_quote_reply参数以控制引用回复行为
2025-11-19 23:30:21 +08:00
minecraft1024a
c83d1ac1d8
refactor(chatter): 将主动思考的Prompt模板化
...
将 `proactive_thinking_executor.py` 中的硬编码Prompt字符串重构为独立的 `Prompt` 对象。
这次重构主要有以下几个好处:
- **提高可读性**:将大段的文本从业务逻辑中分离,让代码结构更清晰。
- **便于维护**:以后要调整 Prompt 的时候,直接修改模板对象就行,不用在函数里大海捞针了。
- **提升复用性**:虽然现在还没复用,但以后有类似需求时,这种模式也更容易扩展。
2025-11-19 23:30:18 +08:00
Windpicker-owo
7534536e22
refactor(config): 移除普通聊天配置及相关字段,更新配置模板以反映变更
2025-11-19 23:30:18 +08:00
minecraft1024a
f24f961a37
fix(chatter): 修复因消息无ID导致的处理错误
...
在处理消息映射时,增加了一项检查。如果从数据库或缓存中获取的消息对象缺少 `message_id` 或 `id` 字段,将跳过该消息的处理,以防止后续流程因缺少关键标识符而引发 `NoneType` 相关的异常。(实现了plan_filiter.py的basic模式下的类型错误清零)
2025-11-19 23:30:17 +08:00
明天好像没什么
6994958cd1
调整一下目录结构
2025-11-19 23:30:17 +08:00
Windpicker-owo
afaed77467
refactor(nlp): 将jieba替换为rjieba进行中文标记化
2025-11-19 23:30:17 +08:00
minecraft1024a
697d3b734f
refactor(replyer): 统一消息与用户信息模型
...
将 `_generate_prompt` 方法中的 `reply_message` 参数统一为 `DatabaseMessages` 类型,并确保从 `anchor_message` 获取的 `sender_info` 被正确转换为 `UserInfo` 模型。同时,简化了情绪提示词的构建逻辑。
此外,在 `_get_master_prompt` 中增加了对 `user_info` 的空值检查,以避免潜在的属性访问错误。
2025-11-19 23:30:16 +08:00
明天好像没什么
ed7e38e3cc
支持一下stdio
...
顺便说一下猫猫真的很可爱,拾风真的很好rua
,狐狐真的很可爱
2025-11-19 23:30:14 +08:00
minecraft1024a
8a456af4f3
feat(interest_system): 调整兴趣标签生成提示的长度限制
...
将生成Bot兴趣标签的提示中,对单个标签的长度限制从4个字符放宽到10个字符。
这主要是因为4个字符的限制过于严格,导致LLM难以生成准确且有意义的中文兴趣标签,例如“角色扮演”或“科幻电影”这类常见的兴趣点都会超出长度。放宽限制有助于提高生成标签的质量和多样性。
2025-11-19 23:30:14 +08:00
minecraft1024a
0ca5623961
refactor(mood): 移除与唤醒愤怒和失眠相关的状态管理
...
删除了 `ChatMood` 类中的 `is_angry_from_wakeup` 属性,并移除了 `MoodManager` 中所有与之相关的方法,包括:
- `reset_mood_by_chat_id`
- `set_angry_from_wakeup`
- `clear_angry_from_wakeup`
- `start_insomnia`
- `stop_insomnia`
- `get_angry_prompt_addition`
这些逻辑现在由更通用的状态机和动作系统处理,简化了情绪模块的职责,使其更专注于核心情绪值的管理。
2025-11-19 23:30:13 +08:00
minecraft1024a
e5974f7045
refactor(chatter): 统一动作消息对象为DatabaseMessages模型
...
将动作规划与执行流程中的 `action_message` 从原始字典统一为 `DatabaseMessages` Pydantic模型实例。这增强了类型安全性和代码可读性,并简化了后续处理逻辑。
主要变更:
- `plan_filter`: 在解析LLM输出后,将目标消息字典转换为`DatabaseMessages`对象。
- `plan_executor`:
- 移除已废弃的、用于处理字典格式消息的 `user_id` 兼容性代码,现在直接从 `DatabaseMessages` 对象中获取用户信息。
- 删除了针对 `poke_user` 动作的特殊数据处理逻辑,因为相关信息已由 `DatabaseMessages` 模型统一承载。
- 增加了对 `action_message` 中 `user_id` 缺失的健壮性检查。
2025-11-19 23:30:13 +08:00
tt-P607
c5213ea425
feat(proactive-thinking): 优化提示词以生成更具情境感知和人性化的主动互动
...
本次更新重构了主动思维执行器的核心提示词,旨在显著提升AI主动发起互动的质量,使其更自然、更有同理心,并与聊天上下文更紧密地结合。
主要改进包括:
- 将单一的“抛出话题” (`throw_topic`) 行动升级为分层次的“有目的的互动”模型。
- 建立了新的互动优先级:
1. **延续约定或提醒** (最高优先级)
2. **展现真诚的关心**
3. **开启新话题** (最低优先级)
- 增加了获取的聊天记录上下文数量(从20条增至40条),为AI提供更全面的决策依据。
- 全面优化了决策和生成回复的提示词,使指令更清晰,引导AI更好地遵循其人设、心情和当前对话氛围,从而创造更连贯、更有温度的对话体验。
2025-11-19 23:30:12 +08:00
minecraft1024a
b4f83b887a
fix(chatter): 修复impression_llm未初始化时调用问题
...
在调用`impression_llm.generate_response_async`之前增加空值检查,避免在`impression_llm`未被初始化时引发异常,增强了代码的健壮性。
2025-11-19 23:30:12 +08:00
minecraft1024a
2ee6aa3951
refactor(core): 优化类型提示与代码风格
...
本次提交对项目代码进行了广泛的重构,主要集中在以下几个方面:
1. **类型提示现代化**:
- 将 `typing` 模块中的 `Optional[T]`、`List[T]`、`Dict[K, V]` 等旧式类型提示更新为现代的 `T | None`、`list[T]`、`dict[K, V]` 语法。
- 这提高了代码的可读性,并与较新 Python 版本的风格保持一致。
2. **代码风格统一**:
- 移除了多余的空行和不必要的空格,使代码更加紧凑和规范。
- 统一了部分日志输出的格式,增强了日志的可读性。
3. **导入语句优化**:
- 调整了部分模块的 `import` 语句顺序,使其符合 PEP 8 规范。
这些更改不涉及任何功能性变动,旨在提升代码库的整体质量、可维护性和开发体验。
2025-11-19 23:30:12 +08:00
minecraft1024a
6026682a03
feat(interest): 增加机器人兴趣标签长度限制和截断处理
...
在机器人兴趣系统(BotInterestManager)中,为生成的兴趣标签增加了长度校验和处理逻辑。
- 在生成兴趣标签的 Prompt 中,明确要求每个标签的长度不超过4个字符。
- 在解析模型返回的兴趣标签时,增加了一个检查机制。如果标签长度超过10个字符,系统会记录一条警告日志,并自动将标签截断为前10个字符,以确保数据的规范性和后续处理的稳定性。
2025-11-19 23:30:08 +08:00
Windpicker-owo
97006301a3
feat(message-manager): 改进流生命周期管理和消息对象处理
...
-通过适当的任务取消为流循环添加强制重启功能
-通过更安全的删除和适当的任务终止来增强流清理
-改进亲和流聊天插件中的消息对象转换
-用DatabaseMessages对象替换基于字典的消息处理
-为任务取消添加超时处理,以防止死锁
-简化计划执行中的用户ID提取和消息ID处理
2025-11-19 23:30:07 +08:00
Windpicker-owo
2acd0a0830
refactor(message-manager): 删除自适应流管理器并优化上下文加载
...
-从distribution_manager和message_manager中删除adaptive_stream_manager.py及其集成
-删除过时的message_recv_backup.py,因为MessageRecv已被DatabaseMessages完全替换
-在context_manager中添加异步历史初始化,以便在启动时从数据库加载消息
-优化default_generator以使用内存中的消息,而不是重复的数据库查询
-修复message.py中的回复消息段处理,以处理DatabaseMessages格式
-从chat_stream.py中删除deepcopy并改进context_manager初始化
-清理bot.py和适配器响应方法中未使用的通知处理
突破性变化:自适应流管理系统已被完全删除。所有消息处理现在都依赖于DatabaseMessages格式。上下文管理器现在在创建时从数据库异步初始化历史记录。
2025-11-19 23:30:07 +08:00
Windpicker-owo
1b3a2342ce
重构消息处理并用DatabaseMessages替换MessageRecv
...
-更新PlusCommand以使用DatabaseMessages而不是MessageRecv。
-将消息处理逻辑重构到一个新模块message_processor.py中,以处理消息段并从消息字典中创建DatabaseMessages。
-删除了已弃用的MessageRecv类及其相关逻辑。
-调整了各种插件以适应新的DatabaseMessages结构。
-增强了消息处理功能中的错误处理和日志记录。
2025-11-19 23:30:06 +08:00
Windpicker-owo
1937f43038
refactor(bot): 使用统一方法转换消息为数据库对象,简化代码逻辑
2025-11-19 23:30:05 +08:00
Windpicker-owo
d447cbcdf1
移除mai4u:s4u_watching_manager.py, screen_manager.py, super_chat_manager.py, yes_or_no.py, openai_client.py, and s4u_config.py. These changes streamline the codebase by eliminating unused components and improving maintainability.
2025-11-19 23:28:35 +08:00
Windpicker-owo
f73339ee9e
refactor(event): 将日志级别从info调整为debug,以减少日志输出并提高可读性
2025-11-19 23:27:19 +08:00
Windpicker-owo
f34c71966e
feat(proactive-thinking): 利用聚焦能量增强能量计算和调度
...
-重构关系EnergyCalculator,使用聊天流兴趣评分代替用户关系评分
-更新主动思维调度器,使用聊天流中的焦点能量进行间隔计算
-通过更详细的信息改进整个主动思维系统的日志记录
-将chat_stream参数添加到插件工具构造函数中,以更好地处理上下文
-增强调度和事件处理中的错误处理和调试信息
这些变化通过以下方式改善了主动思维系统:
1.使用聊天流中的实时焦点能量,而不是静态用户关系评分
2.根据当前对话参与度提供更准确和动态的日程安排
3.添加全面的日志记录,以便更好地进行调试和监控
4.通过工具中的chat_stream参数确保正确的上下文传播
2025-11-19 23:27:19 +08:00
Windpicker-owo
7b728beec7
feat(proactive-thinking): 将情绪与决策历史融入前瞻性思维
...
- 从情绪管理器中添加当前情绪检索功能,以提供情感背景信息
- 实施最后决策追踪以避免话题重复并优化策略
- 更新决策提示,纳入情绪影响和历史背景因素
- 为所有动作类型(无操作、简单气泡、抛出主题)添加决策记录功能
- 将simple_bubble行为扩展为在执行后暂停主动思考
- 更新配置模板以明确topic_throw_cooldown的用途
- 增强日志记录功能,以便更好地调试情绪与决策整合问题
重大变更:主动思考系统现需依赖mood_manager模块,并调整决策上下文结构,新增情绪和上一次决策字段。
2025-11-19 23:27:18 +08:00