Commit Graph

404 Commits

Author SHA1 Message Date
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
minecraft1024a
b8aa9fd7ee Revert "refactor(plugin_system): 重构 send_command 以对接适配器专用命令接口"
This reverts commit ba5e0b0eaf.
2025-11-19 23:11:50 +08:00
tt-P607
96093306e1 refactor(plugin_system): 重构 send_command 以对接适配器专用命令接口
BaseAction 中的 send_command 方法已重构,从使用通用的 `command_to_stream` API 切换到新的 `adapter_command_to_stream` API。

这一变更带来了以下改进:
- **接口统一**: 所有与平台适配器直接交互的命令现在都通过专用的接口,使得逻辑更清晰。
- **参数结构化**: 调用参数从旧的 `{"name": ..., "args": ...}` 格式更新为更明确的 `action`, `params` 和 `platform`。
- **健壮的响应处理**: 现在会解析 API 返回的结构化 JSON 响应(包含 status 和 message),以实现更精确的成功/失败判断和错误日志记录。

BREAKING CHANGE: `send_command` 调用的 `command_name` 现在需要与目标平台适配器定义的 `action` 名称完全匹配。例如,在 `social_toolkit_plugin` 中,`set_emoji_like` 已更新为 `set_msg_emoji_like`。所有使用此方法的插件可能需要更新其命令名称。
2025-11-19 23:11:31 +08:00
minecraft1024a
088b5bb43e 试图解决了call_action的类型报错 2025-11-19 23:11:18 +08:00
minecraft1024a
184cc7ffa2 加入了二走逻辑 2025-11-19 23:11:17 +08:00
雅诺狐
85c9ea6491 二步工具与action 2025-11-19 23:11:14 +08:00
Windpicker-owo
3fcf8e9add feat(memory): 重构记忆系统并移除插件热重载
重构记忆系统核心模块,引入全局记忆作用域、记忆指纹去重机制和查询规划器,优化多阶段检索性能。移除插件热重载系统及其相关依赖。

主要变更:
- 引入全局记忆作用域,简化记忆管理
- 实现记忆指纹去重,避免重复记忆存储
- 新增查询规划器,支持语义查询规划和记忆类型过滤
- 优化多阶段检索,增加语义重排和权重配置
- 改进向量存储,支持嵌入维度自动解析和查询向量生成
- 增强元数据索引,支持主体索引和更新操作
- 记忆构建器支持多主体和自然语言展示
- 移除watchdog依赖和插件热重载模块
- 更新配置模板,简化记忆配置项

BREAKING CHANGE: 移除插件热重载系统,相关API和命令不再可用。记忆系统接口有较大调整,使用该系统的模块需要适配新接口。
2025-11-19 23:11:14 +08:00
Windpicker-owo
a2217bd377 feat(memory): 实现增强记忆系统并完全替换原有架构
引入全新的增强记忆系统,彻底取代海马体记忆架构
删除旧版记忆系统相关模块,包括Hippocampus、异步包装器和优化器
重构消息处理流程,集成增强记忆系统的存储和检索功能
更新配置结构以支持增强记忆的各项参数设置
禁用原有定时任务,采用内置维护机制保证系统性能
2025-11-19 23:10:15 +08:00
Windpicker-owo
fc429228b5 fix(chat): 增强消息查找功能并添加未读消息自动清理机制
- 重构 `_find_message_by_id` 方法,支持多种消息ID格式和模糊匹配
- 在动作执行后自动清理未读消息,防止消息堆积
- 为 `reply` 动作添加目标消息查找失败时的降级处理
- 将消息计数和关系查询方法改为异步调用以保持一致性
2025-11-19 23:09:53 +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
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
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
Windpicker-owo
2b04d548b6 refactor(affinity_flow): 重构规划器架构并简化日志输出
- 移除ChatterManager中不必要的ActionPlanner实例化
- 在MessageManager中设置默认聊天模式为FOCUS
- 重构BaseChatter构造函数,移除planner依赖
- 统一ChatMode枚举定义,移除GROUP/PRIVATE模式
- 重构AffinityChatter内部planner初始化逻辑
- 大幅简化兴趣评分系统的日志输出
- 修复plan_filter中的动作解析逻辑,支持新格式
- 更新planner_prompts提示词模板,移除私聊限制
- 优化关系追踪器的错误处理和日志输出
2025-11-19 23:08:40 +08:00
Windpicker-owo
502d0b7c59 refactor(plugins): 将亲和力流模块重构为插件架构并移除旧代码
本次重构将亲和力流(Affinity Flow)模块从核心聊天系统迁移到插件架构中,主要变更包括:

- 删除 src/chat/planner_actions/ 目录下的 plan_executor.py、plan_filter.py 和 planner.py
- 更新插件系统组件类型,将 FOCUS 聊天模式改为 GROUP 和 PRIVATE 模式
- 调整亲和力流插件中的模式引用,确保与新的聊天模式枚举保持一致
- 统一亲和力流模块的导入路径,使其完全作为插件运行

BREAKING CHANGE: 移除原有的 FOCUS 聊天模式,改为 GROUP 和 PRIVATE 模式,需要更新相关配置和代码引用
2025-11-19 23:08:38 +08:00
Windpicker-owo
f9339b8ad7 refactor(plugins): 重构亲和力流模块的导入路径
将 chatter 模块重命名为 affinity_flow_chatter 以明确功能区分,
更新 main.py、base_chatter.py、affinity_chatter.py 和 planner.py
中的相关导入语句,确保模块引用正确性。
2025-11-19 23:08:35 +08:00
minecraft1024a
b98417dec6 先修一下命令无法正常检查聊天类型限制 2025-11-19 23:08:34 +08:00
Windpicker-owo
c9b20aa61a refactor(chat): 移除亲和力流模块并将其重构为插件架构
BREAKING CHANGE: 原有的亲和力流相关模块(src/chat/affinity_flow/)已被完全移除,相关功能已重构为插件形式。需要更新配置文件和相关依赖。

- 删除 src/chat/affinity_flow/ 目录下的所有文件
- 将 AFC 管理器功能移至 chatter 插件中实现
- 更新相关导入路径和引用
- 重构关系追踪器和兴趣评分系统的初始化逻辑
- 调整聊天管理器和消息管理器以适应新的插件架构
2025-11-19 23:08:27 +08:00
Windpicker-owo
bdf43c2455 fix 2025-11-19 23:08:03 +08:00
Windpicker-owo
dce48d38cf feat: 在插件系统中添加 Chatter 组件
- 在 component_types.py 中新增了用于 CHATTER 的 ComponentType。
- 实现了 ChatterInfo 类,用于存储 Chatter 组件的相关信息。
- 增强了 ComponentRegistry,以支持 Chatter 组件的注册与管理。
- 创建了 ChatterManager,用于管理 Chatter 实例并处理聊天流。
- 开发了 BaseChatter 抽象类,用于定义 Chatter 的行为规范。
- 实现了 AffinityChatter,作为具备兴趣评分与关系构建功能的具体 Chatter 组件。
- 添加了一个内置的 Chatter 插件,并附带完整文档与使用示例。
- 更新了 PluginManager,在插件概览中加入 Chatter 组件的统计信息。
2025-11-19 23:08:03 +08:00
tt-P607
8621dcdf75 fix(chat): 修复并优化消息回复与ID处理逻辑
先前的消息回复机制存在多个问题:回复行为随机且不可靠,临时消息ID生成逻辑过于复杂,且在规划和执行过程中ID转换容易出错,导致回复失败。

本次提交通过以下几点进行了全面的修复与优化:
- **简化ID生成**:将临时的上下文消息ID生成逻辑从“索引+随机数”简化为纯索引(如 `m1`, `m2`),使其更可预测且易于调试。
- **修正ID替换**:在 `plan_filter` 中增加了关键逻辑,确保在执行 `reply` 动作前,将计划中使用的临时 `target_message_id` 替换为真实的数据库消息ID。
- **稳定回复行为**:移除了 `action_manager` 中的随机回复判断,现在只要存在上下文消息,就会触发引用回复。同时将各 `send_api` 的 `set_reply` 参数默认值改为 `True`,使回复成为默认行为。
- **增强ID兼容性**:修复了 `napcat_adapter` 中将消息ID强制转换为整数的问题,并为 `send_api` 增加了ID回退查找,提高了对不同平台消息ID格式的兼容性。
2025-11-19 23:07:38 +08:00
Windpicker-owo
df3c616d09 ruff,私聊视为提及了bot 2025-11-19 23:07:30 +08:00
minecraft1024a
80283fe77d fix(plugin): 移除插件配置同步调用并增强错误日志
在插件管理器中,移除了加载插件时对已废弃的配置同步方法的调用。

同时,为了更好地排查 `maizone` 插件发送动态失败的问题,增强了其命令的异常日志,现在会额外记录异常类型。
2025-11-19 23:05:50 +08:00
minecraft1024a
9a40e86894 删除插件配置文件的双向迁移逻辑 2025-11-19 23:05:49 +08:00
minecraft1024a
f842c43ab0 ruff 2025-11-19 23:05:47 +08:00
tt-P607
f3b3e60c1c feat(chat): 增加已读标记以聚焦未读消息
为聊天上下文生成逻辑引入了“已读标记” (read_mark) 机制。

当生成回复时,可以在历史消息中插入一个明确的分隔符,以告知模型哪些消息是它已经看过的旧消息,哪些是需要关注的新消息。

这有助于模型更好地聚焦于未读内容,提升上下文感知能力和回复的相关性。

同时,将 Prompt 模板中的“群聊”等硬编码文本参数化,以更好地适配私聊等不同聊天场景。
2025-11-19 23:05:36 +08:00
minecraft1024a
6bf05fd660 fix(permission): 将权限管理器初始化改为异步
`PermissionManager` 的 `__init__` 方法中包含了同步的数据库初始化操作,这会在异步环境中阻塞事件循环。

本次提交将数据库连接的逻辑移至一个新的异步方法 `initialize()` 中,并在应用启动时显式调用和等待它。这确保了数据库的初始化过程是异步执行的,避免了潜在的性能问题。

BREAKING CHANGE: `PermissionManager` 实例化后需要手动调用并等待 `initialize()` 方法来完成数据库初始化。
2025-11-19 23:05:35 +08:00
minecraft1024a
83eb5c80c5 fix(plugin_system): 修复无配置插件加载时产生不必要警告
对于未定义 `config_schema` 的插件,现在会将其视作一种正常情况,并为其分配一个空的配置。

此举修复了先前版本中,这类插件在加载时会错误地触发“配置文件不存在”警告的问题。同时将生成默认配置文件的日志等级从 debug 调整为 info,使其在默认情况下可见。
2025-11-19 23:05:34 +08:00
雅诺狐
4091a4eadf 更改权限 2025-11-19 23:05:29 +08:00
minecraft1024a
28be81583e feat(plugin_system): 导出 schedule_api
将 schedule_api 添加到插件系统的 API 导出列表中,使其对插件可用。
2025-11-19 23:05:26 +08:00
雅诺狐
679195d792 refactor(db): 修正SQLAlchemy异步操作调用方式
移除session.add()方法的不必要await调用,修正异步数据库操作模式。主要变更包括:

- 将 `await session.add()` 统一改为 `session.add()`
- 修正部分函数调用为异步版本(如消息查询函数)
- 重构SQLAlchemyTransaction为完全异步实现
- 重写napcat_adapter_plugin数据库层以符合异步规范
- 添加aiomysql和aiosqlite依赖支持
2025-11-19 23:05:17 +08:00
雅诺狐
0cffc0aa95 refactor(db): 将数据库操作异步化
- 将所有 session.add() 改为 await session.add()
- 将所有 session.commit() 改为 await session.commit()
- 将 session.refresh() 改为 await session.refresh()
2025-11-19 23:05:14 +08:00
雅诺狐
883bf3a7ea Update base_action.py 2025-11-19 23:05:11 +08:00
tt-P607
5892ed1452 refactor(db): 重构数据库交互为异步模式
为了提升性能并与项目整体的异步架构保持一致,对核心数据库交互模块进行了异步化重构。

主要修改内容包括:
- 将 `PermissionManager` 中的所有数据库操作从同步改为异步,以避免阻塞事件循环。
- 使用 `async_sessionmaker` 和 `async with session` 替代原有的同步会话管理。
- 将 SQLAlchemy 查询语法更新为异步兼容的 `await session.execute(select(...))` 模式。
- 相应地,调用链中依赖数据库操作的多个方法也已更新为 `async` 函数。
2025-11-19 23:05:09 +08:00
tt-P607
610688f641 6 2025-11-19 23:05:05 +08:00
雅诺狐
93542cadef perf(methods): 通过移除不必要的 self 参数优化方法签名
在包括 chat、plugin_system、schedule 和 mais4u 在内的多个模块中,消除冗余的实例引用。此次改动将无需访问实例状态的实用函数转换为静态方法,从而提升了内存效率,并使方法依赖关系更加清晰。
2025-11-19 23:05:00 +08:00
tt-P607
aba4f1a947 三次修改 2025-11-19 23:02:01 +08:00
tt-P607
65087b8c98 回退“feat: 实现KEYWORD_OR_LLM_JUDGE激活类型” 2025-11-19 23:01:17 +08:00
tt-P607
4890771a87 feat(planner): 引入双模动作激活机制与混合触发类型
为了更精细地控制动作在不同聊天模式下的行为,并提升决策效率,本次更新引入了全新的动作激活机制。

- **双模激活**: 为 Action 新增 `normal_activation_type` 和 `focus_activation_type` 属性,允许插件在 `NORMAL` 和 `FOCUS` 模式下拥有不同的激活策略,使行为更符合上下文。

- **混合触发**: 新增 `KEYWORD_OR_LLM_JUDGE` 激活类型。该类型会先进行快速的关键词匹配,若未匹配成功,则回退至 LLM 进行判断,兼顾了响应速度和智能化。

- **流程优化**: 重构了 `PlanGenerator` 的动作筛选逻辑,使其在生成计划前,就根据当前聊天模式和简单的激活规则进行预筛选,为后续的 LLM 决策提供更精准、更高效的候选动作列表。
2025-11-19 23:01:16 +08:00
BuildTools
ca82c1c2f2 优化s4u提示词 2025-11-19 23:00:25 +08:00
tt-P607
b97d03da2a fix(plugin_system): 解决 base_action 中的循环导入问题
将 `component_registry` 的导入移至 `run` 方法内部,以避免在模块加载时产生循环依赖。
2025-11-19 23:00:19 +08:00
minecraft1024a
e607dcb36b refactor(core): 延迟初始化知识库并优化导入结构
将LPMM知识库的初始化逻辑封装到`initialize_lpmm_knowledge`函数中,并将其调用移至`main.py`,以实现延迟加载并改善启动流程。

为了解决循环导入问题,将`component_registry`的导入移至`BaseAction.call`方法内部。
2025-11-19 23:00:18 +08:00
minecraft1024a
fac83665da feat(plugin): 允许在Action内部调用其他Action
在`BaseAction`中新增`call_action`方法,使得一个Action可以方便地调用并执行另一个已注册的Action。

该方法会:
- 从组件注册中心查找并获取目标Action类。
- 复用当前Action的上下文信息(如`chat_stream`, `cycle_timers`等)来实例化目标Action。
- 执行目标Action并返回其执行结果。

这为创建更复杂、可组合的插件逻辑提供了基础,提高了代码的复用性和模块化程度。
2025-11-19 23:00:10 +08:00
Windpicker-owo
97df1011d1 1 2025-11-19 22:59:35 +08:00
Windpicker-owo
f297eed9bb ada现在支持接收贴表情消息 2025-11-19 22:59:14 +08:00
Windpicker-owo
ea7d3b364f plugin_name改为permission_group 2025-11-19 22:59:12 +08:00