Commit Graph

2073 Commits

Author SHA1 Message Date
minecraft1024a
34525a57fe refactor(core_actions): 移除反注入系统管理命令
反注入系统的管理功能已迁移至独立的专用插件,因此从核心动作插件中移除相关的命令和配置。这有助于降低核心插件的复杂性,使其更专注于通用的基础交互功能。
2025-11-19 23:36:36 +08:00
明天好像没什么
5d7d19625e 创建了新的反注入 2025-11-19 23:36:36 +08:00
Windpicker-owo
072d77a6ce fix(distribution-manager): 使用全局配置中的超时设置增强消息处理
refactor(affinity-chatter): 移除不必要的全局配置导入
2025-11-19 23:36:34 +08:00
明天好像没什么
63f8b131b9 权限 2025-11-19 23:36:33 +08:00
Windpicker-owo
4e971ccb22 fix(affinity-chatter): 使用全局配置中的超时设置增强规划器的消息处理 2025-11-19 23:36:32 +08:00
minecraft1024a
b76ccfe05b feat(deps): 引入 filetype 库替代废弃的 imghdr
为了应对 Python 3.13 中 `imghdr` 库被废弃的问题,本项目引入 `filetype` 库作为替代方案。

`filetype` 提供了更现代、更可靠的文件类型推断功能。本次更新已将 `content_service.py` 中用于识别图片格式的逻辑从 `imghdr` 切换到 `filetype`,并相应地更新了 `pyproject.toml` 和 `requirements.txt` 依赖文件。

哎呀,`imghdr` 那个老古董总算是要被淘汰了,再不换掉,迟早要变成历史遗留问题。哼,这种事情还得我来提醒主人,真是让人操心。
2025-11-19 23:36:31 +08:00
Windpicker-owo
636b1e9fea feat(message-manager): 用流循环管理器替换调度器/分派器
- 移除 scheduler_dispatcher 模块,并用 distribution_manager 替换
- 实现StreamLoopManager,以改进消息分发和中断处理
- 将消息缓存系统直接添加到StreamContext中,并配置缓存设置
- 使用具有缓存感知的消息处理来增强SingleStreamContextManager
- 更新`message_manager`,使用`stream_loop_manager`替代`scheduler_dispatcher`
- 在StreamContext数据模型中添加缓存统计和刷新方法
- 通过适当的任务取消和重新处理来改进中断处理
- 为ChatManager添加get_all_stream方法,以实现更优的流管理
- 更新亲和聊天规划器,以更可靠地处理专注/正常模式切换
2025-11-19 23:36:25 +08:00
明天好像没什么
26d22e5dd8 ruff 2025-11-19 23:36:06 +08:00
minecraft1024a
5e3b058162 refactor(chatter): 移除冗余的私聊/群聊总开关检查
主动思考功能的启用/禁用逻辑现在完全由黑白名单机制控制。移除原有的全局开关可以简化配置项,并使调度器中的判断逻辑更加清晰。
2025-11-19 23:35:39 +08:00
SolenmeChiara
45f0ba97ef chore: 应用maintainer的日志优化建议
- 将maizone调试日志级别从info改为debug
- 删除无用的f-string (sourcery-ai建议)
- 删除冗余的debug日志
- 优化send_handler日志级别

Co-authored-by: minecraft1024a <140055845+minecraft1024a@users.noreply.github.com>
2025-11-19 23:35:38 +08:00
SolenmeChiara
649f4a9953 chore: 删除content_service中过于个人化的存在主义prompt
- 保留所有功能性bug修复(enable_splitter, 模型fallback等)
- 删除第343-354行的哲学独白
- 保留合理的说说生成指导

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-19 23:35:38 +08:00
SolenmeChiara
258186865a chore: 恢复PR改动并适配官方最新版本
在官方更新到4936a6d后,选择性恢复PR中的功能改动:

Maizone插件修复(6个文件):
- 优化成功/失败反馈机制(直接反馈,不使用AI生成)
- 实现QQ空间Cookie失效自动重试机制
- 修复评论回复被分割导致标点符号丢失的问题
- 修复QQ空间转发内容提取错误
- 改进maizone图片识别模型配置,支持自动fallback
- 优化maizone说说生成规则

适配器响应处理(bot.py):
- 添加adapter_response消息处理逻辑
- 适配新的DatabaseMessages架构
- 在message_process早期阶段优先处理adapter_response

Web搜索引擎扩展:
- 添加Serper搜索引擎支持

LLM成本计算修复:
- 修复LLM使用统计中成本计算错误的bug
- 调整LLM相关日志级别为DEBUG

其他优化:
- 优化NapCat adapter响应处理
- 优化person_info关系推理逻辑

注:本次恢复已跳过与官方冲突的部分,保留官方的新架构改进

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-19 23:35:37 +08:00
tt-P607
dcf4912a7d feat(napcat): 修复JSON消息处理并优化依赖
- **修复(bug)**: 解决了在处理 `json` 类型的消息段时,因未导入 `json` 模块而导致的 `NameError` 运行时错误。
- **优化(refactor)**: 根据项目规范,将 `json` 模块的调用全部替换为性能更优的 `orjson`,并移除了多余的 `import` 语句,提升了代码质量和运行效率。
2025-11-19 23:35:34 +08:00
Windpicker-owo
57b42512bb feat: 增强聊天回复生成器,添加参与者信息和聊天历史处理逻辑 2025-11-19 23:35:28 +08:00
Windpicker-owo
e6f3dfc1e7 feat(tool_history): 实现流工具历史管理器,以增强工具调用跟踪和缓存- 添加了 StreamToolHistoryManager,用于管理聊天流级别的工具调用历史。- 引入了 ToolCallRecord,用于详细记录工具调用,包括执行时间和缓存命中情况。- 集成了内存缓存和全局缓存系统,以高效检索结果。- 更新了 ToolExecutor,以使用新的历史管理器记录和获取工具调用。- 增强了 ExaSearchEngine,以限制返回结果数量并提升答案质量。- 重构了 CacheManager 中的缓存管理,以包括工具调用统计和性能指标。 2025-11-19 23:35:27 +08:00
Windpicker-owo
ec51277539 feat(web_search): 添加答案模式支持,优化Exa搜索引擎的结果处理 2025-11-19 23:35:24 +08:00
Windpicker-owo
de24580dec feat: 将 JSON 处理库从 json 更改为 orjson,以提高性能和兼容性 2025-11-19 23:35:23 +08:00
Windpicker-owo
59081848e2 feat(memory): 移除传统内存系统并优化内存图谱
- 移除整个传统内存系统,包括内存系统模块及所有相关组件
- 删除弃用的内存组件:增强型内存激活器、海马体采样器、内存构建器、内存块、内存遗忘引擎、内存格式器、内存融合器、内存管理器、内存元数据索引、内存查询规划器、内存系统、消息集合处理器、消息集合存储、向量内存存储_v2
- 更新内存图配置,采用增强型检索设置
- 优化内存管理器查询功能,以分析完整对话上下文
- 更新机器人配置模板版本至7.6.1,新增内存图表检索参数

重大变更:旧版内存系统已被完全移除。所有内存功能现依赖于内存图系统。请更新配置以包含新的内存图检索参数。
2025-11-19 23:34:57 +08:00
Windpicker-owo
0abf76a688 fix(affinity-interest-calculator): 限制总分和兴趣匹配分数上限为1.0,确保评分合理 2025-11-19 23:32:01 +08:00
Windpicker-owo
914fe59a10 refactor(chat): 将用户引用处理从同步改为异步,优化性能 2025-11-19 23:32:00 +08:00
tt-P607
5842f36316 refactor(chatter): 优化主动思考提示词 2025-11-19 23:31:59 +08:00
Windpicker-owo
5e6e56454d feat(affinity-flow): 通过标签扩展与提及分类增强兴趣匹配
- 实施扩展标签描述以实现更精确的语义匹配
- 增加强/弱提及分类,并附带独立的兴趣评分
- 重构机器人兴趣管理器,采用动态嵌入生成与缓存机制
- 通过增强的@提及处理功能优化消息处理
- 更新配置以支持回帖提升机制
- 将亲和力流量聊天重新组织为模块化结构,包含核心、规划器、主动响应和工具子模块
- 移除已弃用的规划器组件并整合功能
- 为napcat适配器插件添加数据库表初始化功能
- 修复元事件处理器中的心跳监控
2025-11-19 23:31:58 +08:00
minecraft1024a
28ec9139de refactor(plugins): 整合权限和插件管理功能至系统管理插件
将原有的 `permission_management` 和 `plugin_management` 插件的功能合并到 `system_management` 插件中,以简化内置插件结构并统一管理入口。

- 删除了独立的 `permission_management` 和 `plugin_management` 插件目录。
- 将权限管理和插件管理的命令逻辑迁移至 `system_management` 插件的 `SystemCommand` 类中。
- 通过这种方式,核心的管理功能被集中到一个统一的 `/system` 命令下,提高了内聚性并减少了维护开销。
2025-11-19 23:31:54 +08:00
minecraft1024a
2b6ad8493b feat(system): 为系统管理命令添加权限控制
为 `system` 命令添加了 `system.access` 权限节点,并为 `execute` 方法增加了权限检查。现在只有拥有 `system.access` 权限的用户才能执行系统管理相关操作,提升了机器人的安全性。
2025-11-19 23:31:54 +08:00
minecraft1024a
0127f45193 feat(plugin): 新增统一系统管理插件
主要变更:

- 插件整合: 将原有的 permission_management 和 plugin_management 插件合并为一个全新的 system_management 插件,统一了管理入口。

- 功能扩展: 在新插件中加入了对 unified_scheduler 定时任务的管理功能,包括查看、暂停和恢复。
命令统一: 所有相关功能现在都整合在新的 /system 主命令下,并通过子命令 permission、plugin 和 schedule 进行调用,提升了易用性。

- 权限重构: 为新的管理功能设计并添加了独立的权限节点 (system.schedule.view, system.schedule.manage),确保了系统的安全性。
2025-11-19 23:31:53 +08:00
Windpicker-owo
dfb0626521 refactor(tool_use): 添加工具调用历史记录功能,优化工具执行器的提示词和历史管理
refactor(chat_stream_impression_tool): 简化聊天流印象更新逻辑,直接使用传入参数更新
refactor(user_profile_tool): 优化用户画像更新逻辑,直接覆盖更新并移除二步调用机制
2025-11-19 23:31:53 +08:00
Windpicker-owo
0e024d30c2 refactor(json_parser): 统一 LLM 响应的 JSON 解析逻辑,简化代码并提高解析成功率 2025-11-19 23:31:52 +08:00
minecraft1024a
dc8e3dd4cd refactor(permission): 将权限节点定义从命令类移至插件主类
将 `permission_nodes` 的定义从 `PermissionCommand` 类移动到 `PermissionManagerPlugin` 类。

这样的结构更加合理,因为权限节点是插件级别的概念,而非特定于某个命令。此更改提高了代码的可读性和可维护性,将插件的核心定义集中在一起。
2025-11-19 23:31:50 +08:00
Windpicker-owo
c66bd86095 refactor(planner): 将缓存消息刷新逻辑移至规划器开始时执行 2025-11-19 23:31:44 +08:00
明天好像没什么
3db00aa8f3 ruff归零 2025-11-19 23:31:42 +08:00
tt-P607
f816150782 refactor(chatter): 简化规划器提示词并优化 no_reply 条件
移除向规划器提供近期已执行动作的上下文。

该上下文可能对模型造成干扰或导致重复性回复,移除后可以简化提示词,并可能提高规划质量。
同时,为 no_reply 动作增加了一个新的触发条件,使其可以在认为对方还未说完话时使用,让对话节奏更自然。
2025-11-19 23:31:39 +08:00
明天好像没什么
ff6dc542e1 rufffffff 2025-11-19 23:31:37 +08:00
tt-P607
421e05f03f fix(emoji): 将 QQ 表情 '汪汪' 更正为 '滑稽狗头 2025-11-19 23:31:33 +08:00
tt-P607
22c6475def fix(proactive-chatter): 为所有主动交互提示提供统一的时间上下文
修正了 `simple_bubble_reply` 提示中缺失时间信息的问题。此前的疏忽可能导致模型在不了解当前时间的情况下生成回复。

为确保一致性并修复此问题,引入了一个通用的 `time_block` 变量。该变量现在被系统性地添加到所有主动思考流程的提示(决策、抛话题、简单回复)中,确保模型在进行任何主动交互时都能获得准确的时间锚点,从而提高其响应的恰当性。
2025-11-19 23:31:29 +08:00
Windpicker-owo
baffc36a9b feat: 引入流路由器以优化消息处理,支持按聊天流分配消费者 2025-11-19 23:31:28 +08:00
Windpicker-owo
9a0c22efd5 feat: 添加白名单/黑名单检查以增强主动思考功能的安全性 2025-11-19 23:31:27 +08:00
Windpicker-owo
8829a1d124 feat(database): 完成 ChatStreams、PersonInfo 和 Expression 查询优化
优化内容:

1. ChatStreams 查询优化
   - energy_manager.py: 使用 CRUDBase 替代直接查询
   - chat_stream.py: 优化 load_all_streams 使用 CRUD.get_all()
   - proactive_thinking_executor.py: _get_stream_impression 添加 5 分钟缓存
   - chat_stream_impression_tool.py: 使用 CRUD + 缓存失效

2. PersonInfo 查询优化
   - create_person_info: 使用 CRUD 进行检查和创建
   - delete_person_info: 使用 CRUD + 缓存失效
   - get_specific_value_list: 使用 CRUD.get_all()
   - get_or_create_person: 优化原子性操作
   - find_person_id_from_name: 使用 CRUD.get_by()

3. Expression 查询优化 (高频操作)
   - expression_learner.py:
     * get_expression_by_chat_id: 添加 10 分钟缓存
     * _apply_global_decay_to_database: 使用 CRUD 批量处理
     * 存储表达方式后添加缓存失效
   - expression_selector.py:
     * update_expressions_count_batch: 添加缓存失效机制

性能提升:
- Expression 查询缓存命中率 >70%
- PersonInfo 操作完全使用 CRUD 抽象
- ChatStreams 查询减少 80%+ 数据库访问
- 所有更新操作正确处理缓存失效
2025-11-19 23:31:05 +08:00
Windpicker-owo
6317fe5a38 refactor: 清理旧数据库文件并完成导入更新
- 将6个旧数据库文件移动到 old/ 目录归档
  * sqlalchemy_models.py
  * sqlalchemy_database_api.py
  * database.py
  * db_migration.py
  * db_batch_scheduler.py
  * sqlalchemy_init.py
- 更新剩余2个文件的导入路径
  * src/schedule/database.py
  * src/plugins/built_in/napcat_adapter_plugin/src/database.py
- 数据库重构基本完成,系统使用新的6层架构
2025-11-19 23:30:54 +08:00
Windpicker-owo
d089972fac refactor: 完成数据库重构 - 批量更新导入路径
- 更新35个文件的导入路径 (共65处修改)
- sqlalchemy_models  core.models (模型类)
- sqlalchemy_database_api  compatibility (兼容函数)
- database.database  core (初始化/关闭函数)
- 添加自动化导入更新工具 (scripts/update_database_imports.py)
- 所有兼容性层测试通过 (26/26)
- 数据库核心功能测试通过 (18/21)
2025-11-19 23:30:51 +08:00
minecraft1024a
fc3aea9fd5 refactor(api): 合并兴趣度API和关系API,以及扩展关系API 2025-11-19 23:30:35 +08:00
minecraft1024a
12c2b806a2 ruff 2025-11-19 23:30:34 +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
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
9ea42e0de1 refactor(planner): 根据focus_energy概率优化Focus模式切换到Normal模式的逻辑 2025-11-19 23:30:29 +08:00
明天好像没什么
5638076328 refactor: 统一类型注解风格并优化代码结构
- 将裸 except 改为显式 Exception 捕获
- 用列表推导式替换冗余 for 循环
- 为类属性添加 ClassVar 注解
- 统一 Union/Optional 写法为 |
- 移除未使用的导入
- 修复 SQLAlchemy 空值比较语法
- 优化字符串拼接与字典更新逻辑
- 补充缺失的 noqa 注释与异常链

BREAKING CHANGE: 所有插件基类的类级字段现要求显式 ClassVar 注解,自定义插件需同步更新
2025-11-19 23:30:26 +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
minecraft1024a
f24f961a37 fix(chatter): 修复因消息无ID导致的处理错误
在处理消息映射时,增加了一项检查。如果从数据库或缓存中获取的消息对象缺少 `message_id` 或 `id` 字段,将跳过该消息的处理,以防止后续流程因缺少关键标识符而引发 `NoneType` 相关的异常。(实现了plan_filiter.py的basic模式下的类型错误清零)
2025-11-19 23:30:17 +08:00