Commit Graph

5000 Commits

Author SHA1 Message Date
tt-P607
541ebef182 feat(napcat): 新增对音乐分享卡片的解析支持
为 NapCat 适配器增加了对音乐分享卡片的解析能力,能够识别并提取来自 QQ 音乐和网易云音乐的分享内容。

- 支持解析标准的 `view: "music"` 类型卡片,提取歌曲、艺术家、跳转链接和封面图信息。
- 兼容处理部分网易云音乐伪装成 `view: "news"` 类型的分享卡片,确保这类消息也能被正确解析。
- 将解析后的音乐信息格式化为易于阅读的文本消息,提升了用户体验。
2025-11-19 23:11:39 +08:00
tt-P607
22dc9374fd fix(chat): 在聊天流处理后清除未读消息
在之前的逻辑中,当 ChatterManager 处理完一个聊天流后,该流上下文中的 unread_messages 列表并未被清空。这可能导致在后续的处理周期中,相同的消息被重复获取和处理,引发非预期的行为并浪费计算资源。

此更改通过在 MessageManager 中新增 `clear_stream_unread_messages` 方法,并在每次成功处理流之后立即调用它,确保消息只被处理一次,解决了潜在的重复处理问题。
2025-11-19 23:11:37 +08:00
tt-P607
b6b4e3745b refactor(social_toolkit): 优化贴表情动作逻辑与提示词结构
- 精简冗余注释与空行,提升可读性
- 重构提示词,明确选择规则与格式要求
- 增加多层级错误处理,日志更详细
- 统一失败提示信息,用户体验更友好
2025-11-19 23:11:36 +08:00
tt-P607
2bf5d21b06 fix(social_toolkit): 修复并重构戳一戳功能以适配群聊和新接口
- 将戳一戳命令从 "SEND_POKE" 更新为 "send_poke",以对齐新的适配器命令接口。
- 在群聊中执行戳一戳时,现在会正确传递 `group_id` 参数,确保其在群聊上下文中生效。
- 将戳一戳之间的延迟从 0.5 秒增加到 1.5 秒,以提高连续操作的成功率,避免因发送过快而导致后续请求失败。
2025-11-19 23:11:35 +08:00
Windpicker-owo
4e4aa9fbcf refactor(storage): 优化向量记忆存储的批处理和错误处理机制
- 改进_memory_to_vector_format方法,增强元数据序列化和错误处理
- 重构store_memories方法,实现真正的批处理存储
- 添加详细的日志记录,提升系统可观测性
- 修复memory_id获取和缓存问题
- 增强向量数据库操作的容错能力
- 调整日志级别,优化调试信息输出
2025-11-19 23:11:34 +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
111d23f608 加入了尚未完成或者说根本就没做de主动思考 2025-11-19 23:11:30 +08:00
tt-P607
82ec73bf07 perf(napcat): 为 API 调用添加缓存并优化异步任务
- 为 NapCat 适配器中的 `get_group_info`, `get_member_info` 和 `get_self_info` 函数实现了一个简单的内存缓存(5分钟过期)。此举旨在减少对后端服务的重复 API 请求,从而提升性能并降低被限速的风险。

- 将 `ContextManager` 中对 `start_stream_loop` 的调用修改为 `asyncio.create_task`,使其成为一个非阻塞操作,避免在添加消息时因等待循环启动而造成延迟。
2025-11-19 23:11:29 +08:00
Windpicker-owo
6fecfa8857 refactor(storage): 迁移记忆系统架构至现代化Vector DB方案
重构记忆存储层,采用ChromaDB作为核心向量数据库引擎,提升系统可扩展性和查询性能。通过引入VectorMemoryStorage替代原有的UnifiedMemoryStorage实现,实现了更高效的向量索引和检索机制。

主要变更包括:
- 架构层面:完全重构记忆存储抽象层,移除577行旧存储实现代码
- 配置系统:新增41项Vector DB专用配置参数,支持细粒度性能调优
- 查询优化:增强ChromaDB查询条件处理器,添加智能回退机制
- 系统集成:更新记忆系统初始化流程,适配新的存储接口
- 类型安全:修复异步调用类型不匹配问题

BREAKING CHANGE: 记忆存储API接口发生重大变更,UnifiedMemoryStorage相关类已废弃
2025-11-19 23:11:29 +08:00
Windpicker-owo
5eac7e8ad5 feat: 添加兼容性别名以支持增强记忆激活器,优化向量生成逻辑并调整日志级别 2025-11-19 23:11:28 +08:00
minecraft1024a
7cd9819fa6 refactor(context): 统一兴趣度计算的同步与异步调用
重构了 `_calculate_message_interest` 方法,使其能够同时兼容同步和异步调用场景。

通过内部嵌套一个异步函数 `_get_score` 来封装核心的兴趣度计算逻辑,并根据是否存在正在运行的 asyncio 事件循环来决定是直接 `await` 还是使用 `asyncio.run()` 执行。这消除了对独立同步和异步方法的需要,简化了代码结构,并提高了在不同执行上下文中的健壮性。

同时,优化了异常处理和日志记录,对插件加载失败和计算失败提供了更清晰的调试信息。
2025-11-19 23:11:28 +08:00
minecraft1024a
c3829c2350 修改了激活类型 2025-11-19 23:11:27 +08:00
minecraft1024a
45d0b3b50c feat(social): 限制戳一戳动作的次数并优化提示
为防止滥用和骚扰,将单次"戳一戳"动作的最大次数限制为3次。
同时,更新了动作的使用指南,强调其为强打扰、高消耗行为,并禁止在模糊情境下使用,以引导模型更审慎地调用该功能。
2025-11-19 23:11:27 +08:00
minecraft1024a
54fdfa3c96 feat(napcat): 增强发送处理程序的日志记录和错误处理
为 Napcat 适配器中的 `send_handler` 增加了更详细的日志记录,以便更好地跟踪命令的发送和响应过程。同时,改进了表情回应命令的错误处理,以捕获并记录参数缺失或类型错误,提高了调试效率和系统的健壮性。
2025-11-19 23:11:25 +08:00
Windpicker-owo
afb1a75ebf feat:实现具有向量和元数据索引的统一内存存储系统
- 添加了 UnifiedMemoryStorage 类,用于管理带向量嵌入的内存块。
- 集成了 FAISS,以实现高效的向量存储和搜索。
- 实现了内存缓存、关键字、类型和用户索引。
- 增加了内存遗忘和自动保存存储数据的支持。
- 包含用于存储、搜索和遗忘记忆的方法。
- 引入了存储行为和性能的配置选项。
- 实现了从磁盘加载和保存内存及向量数据。
2025-11-19 23:11:25 +08:00
tt-P607
d46475ca8c fix(maizone): 增强解析空间动态数据的健壮性以防止崩溃
QQ空间API在某些情况下可能返回非预期的数据格式,例如 `pictotal` 或 `commentlist` 字段为 `None` 而不是空列表。

之前的代码直接对这些字段进行迭代,当遇到非列表类型时会导致 `TypeError` 异常,从而中断动态的获取流程。

本次修改通过在处理图片和评论列表前添加 `isinstance` 类型检查,确保了只在数据结构符合预期时才进行操作,从而避免了因API返回数据格式异常而导致的程序崩溃。
2025-11-19 23:11:23 +08:00
tt-P607
be3834641f fix(chatter): 修复聊天计划执行器可能对同一消息重复回复的问题
在复杂的对话场景中,行动规划器可能会针对同一条用户消息生成多个回复动作。这会导致机器人对用户的同一句话进行多次回复,影响用户体验。

本次提交通过在执行回复动作前检查 `message_id`,对回复列表进行去重,确保每条消息在单次计划中只被回复一次。同时增加了相应的日志记录,方便追踪过滤行为。
2025-11-19 23:11:23 +08:00
tt-P607
a109d31497 fix(db): 增强数据库会话管理的容错性
调整了 `get_db_session` 的行为,当数据库未能成功初始化时,它现在会返回 `None` 并记录错误,而不是抛出异常。这提高了应用在数据库连接不可用时的健壮性,避免了程序因无法获取会话而崩溃。

- `VideoAnalyzer` 已更新,增加了对会话为 `None` 的检查,以安全地跳过数据库读写操作。
- 附带对 `VideoAnalyzer` 和 `LegacyVideoAnalyzer` 进行了重构,将模型选择和API请求执行的逻辑抽象到独立的 `_model_selector` 和 `_executor` 组件中,提升了代码的清晰度和可维护性。
2025-11-19 23:11:22 +08:00
Windpicker-owo
8fa18a74e2 feat(memory): 重构记忆系统检索机制并优化召回率
- 实现五阶段检索流程:元数据过滤→向量搜索→语义重排序→上下文过滤→增强重排序
- 添加回退机制保障检索健壮性,当主检索失败时自动降级到文本匹配
- 优化向量相似度阈值配置,提升记忆召回率
- 新增记忆融合候选收集机制,避免重复记忆存储
- 改进记忆格式化器,支持多种展示格式
- 增强向量存储加载和重建逻辑,确保数据持久化
- 优化记忆存储时机,移至回复生成完成后异步执行
- 添加详细的检索调试日志,便于问题排查
- 简化查询规划器提示模板,提升生成效率
2025-11-19 23:11:22 +08:00
tt-P607
7aaffe9e0f feat(social): 细化戳一戳动作的判定提示
原有的戳一戳动作判定提示过于宽泛,可能导致模型在不恰当的时机频繁使用该功能,对用户造成打扰。

本次更新通过增加更严格和具体的判定条件,旨在优化模型的使用策略,使其行为更符合用户预期。

主要变更包括:
- 明确指出这是一个高消耗动作,需谨慎使用。
- 增加了频率限制和对用户情绪的考量。
- 强调互动应作为对话的自然延伸,避免无故打扰。
2025-11-19 23:11:21 +08:00
tt-P607
d1c7757787 refactor(schedule): 使计划管理器适配异步数据库操作
底层的计划数据访问函数已更改为异步实现。为确保正确的异步执行流程,本次提交对 PlanManager 中的所有相关调用进行了更新,添加了 await 关键字,并将 get_plans_for_schedule 方法声明为 async。
2025-11-19 23:11:21 +08:00
雅诺狐
f3697d56a8 Reapply "feat(maizone): 建立多级回退机制以保障空间Cookie获取的健壮性"
This reverts commit ebff1f17a3.
2025-11-19 23:11:19 +08:00
雅诺狐
609676c4d6 Revert "feat(maizone): 建立多级回退机制以保障空间Cookie获取的健壮性"
This reverts commit 9dbc108298.
2025-11-19 23:11:19 +08:00
tt-P607
f35e8e5671 feat(maizone): 建立多级回退机制以保障空间Cookie获取的健壮性
该提交旨在从根本上解决MaiZone插件因单一Cookie来源不稳定而导致功能中断的问题。通过引入一个具有优先级的多级回退策略,显著提高了服务的可用性和容错能力。

核心变更如下:

- **引入健壮的获取策略**:重构了Cookie的获取逻辑,建立了一条清晰的降级路径。现在系统会优先通过最可靠的Napcat HTTP服务获取,若失败则尝试读取本地文件缓存,最后才调用可能超时的Adapter API。这确保了即使部分服务不可用,插件仍有很大概率正常工作。

- **优化插件生命周期**:修正了插件加载时的初始化流程,将服务注册和后台任务启动合并到单一的`on_plugin_loaded`方法中,消除了潜在的竞态条件,确保了监控和定时任务总能被正确启动。

- **提升操作容忍度**:将Napcat适配器中`get_cookies`动作的超时阈值放宽至40秒,为网络延迟或不稳定的情况提供了更充足的缓冲时间,减少了因过早超时而造成的失败。

- **细化过程日志**:在整个Cookie获取和QZone服务调用链中增加了详细的上下文日志,使得在出现问题时能够快速定位失败环节和具体原因,极大地简化了未来的故障排查工作。
2025-11-19 23:11:19 +08:00
minecraft1024a
50cdfb4f93 refactor(social): 简化设置表情回应的动作逻辑
移除了 `emoji_input` 参数,现在直接通过二级LLM根据对话上下文选择合适的表情。这简化了动作的调用方式,并减少了不必要的参数传递和错误处理。同时,更新了日志和动作提示信息以反映这一变化。
2025-11-19 23:11:18 +08:00
minecraft1024a
088b5bb43e 试图解决了call_action的类型报错 2025-11-19 23:11:18 +08:00
xiaoCZX
4d5d360205 refactor(models): 更新模型标识符和名称以匹配新版本deepseek-ai/DeepSeek-V3.1-Terminus 2025-11-19 23:11:17 +08:00
minecraft1024a
184cc7ffa2 加入了二走逻辑 2025-11-19 23:11:17 +08:00
minecraft1024a
3ff65bce5c 没人问你老记忆系统的定时任务是不是被删除了 2025-11-19 23:11:17 +08:00
minecraft1024a
cc5bdae46c refactor(plugins): 移除独立的 reminder 和 social_toolkit 插件
将原有的 `reminder_plugin` 和 `social_toolkit_plugin` 的功能整合到其他现有插件中,并移除这两个独立的插件目录。

- `reminder_plugin` 的功能已被并入 `social_toolkit_plugin` 的 `RemindAction`,并在后续的重构中被进一步整合。
- `social_toolkit_plugin` 中的 `set_emoji_like`, `poke_user` 等社交互动功能已被整合到 `affinity_flow_chatter` 等插件中。
- 相关的 `qq_emoji_list` 也被移动到新的内置插件目录中,并更新了引用路径。

此举旨在简化插件结构,减少冗余代码,并提高功能内聚性。
2025-11-19 23:11:16 +08:00
minecraft1024a
749a6d315a refactor(social_toolkit): 适配新的上下文管理器接口
将 `chat_stream.context` 的调用更新为 `chat_stream.context_manager.context`,以适应最近对上下文管理方式的重构。

此更改确保了提醒插件与核心上下文处理逻辑保持一致,并修复了因此重构而引入的潜在错误。同时,增加了对 `last_message` 可能为空的检查,提高了代码的健壮性。
2025-11-19 23:11:16 +08:00
minecraft1024a
245d34f565 refactor(social_toolkit): 简化提醒动作的参数提取逻辑
将 `RemindAction` 中的参数提取逻辑从内部LLM调用改为依赖外部的 `action_data`。这使得动作的职责更单一,专注于执行提醒任务,而将参数解析的责任交给了上游的动作调度器或LLM规划器。

同时,进行了以下代码风格和依赖项的清理:
- 统一使用 `datetime.datetime.now()`
- 移除了不再需要的本地LLM调用和相关提示词
- 调整了 `activation_type` 的定义以符合规范
- 修正了 `llm_api` 调用,使用更合适的 `utils_small` 模型进行时间解析
- 整理了代码格式和导入语句,提高了可读性
2025-11-19 23:11:15 +08:00
minecraft1024a
418f92d636 refactor(plugins): 将多个社交互动插件整合到 social_toolkit_plugin
将 `set_emoji_like`, `at_user`, `poke`, `reminder`, 和 `set_typing_status` 等多个独立的内置插件的功能进行重构和整合,统一归入一个新的 `social_toolkit_plugin` 插件中。

这次重构旨在:
- 减少插件数量,简化插件管理和维护。
- 整合相似的功能(如用户互动、提醒等),提高代码复用性。
- 为未来添加更多社交互动功能提供一个统一的框架。
2025-11-19 23:11:15 +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
tt-P607
ac73994847 feat(config): 新增最大并发分发数配置项
在 `ChatConfig` 中引入了 `max_concurrent_distributions` 配置,允许用户自定义最大并发处理的消息流数量。

此举旨在提供更灵活的性能调优选项,帮助用户根据服务器负载和API速率限制来控制资源消耗,防止系统过载。该配置的默认值为10。
2025-11-19 23:11:12 +08:00
tt-P607
797432147c feat(chat): 实现多重回复功能,允许单轮处理多条消息
本次更新引入了核心的多重回复功能,使得 Bot 能够在单次规划中响应多条不同的未读消息。这显著提升了其在活跃群聊中的交互效率和上下文处理能力。

主要变更包括:

- **Planner Prompts 更新**:
  - 增加了明确的指令和示例,引导 LLM 在检测到多个需要回应的消息时,生成一个包含多个 `reply` 动作的 `actions` 列表。

- **PlanExecutor 逻辑增强**:
  - `_execute_reply_actions` 方法被重构,以串行方式执行计划中的所有回复动作。
  - 引入了新的控制逻辑,确保只有在执行完最后一个 `reply` 动作后,才会清除未读消息队列。

- **ActionManager 功能扩展**:
  - `execute_action` 方法新增 `clear_unread_messages` 参数(默认为 `True`),允许调用方控制是否在动作执行后清空未读消息。
  - `PlanExecutor` 在调用非 `reply` 动作或非最后一个 `reply` 动作时,会显式将此参数设为 `False`,防止过早清除消息。
2025-11-19 23:11:12 +08:00
Windpicker-owo
8844bcf17a fix(message_manager): 修复全局消息管理器实例创建时的拼写错误 2025-11-19 23:11:12 +08:00
Windpicker-owo
37c8253f54 feat(memory): 增强记忆构建系统并优化检索性能
- 添加记忆提取异常处理机制,提升系统稳定性
- 实现记忆内容格式化功能,增强可读性和结构化输出
- 优化LLM响应解析逻辑,避免系统标识误写入记忆
- 改进向量存储批量嵌入生成,提升处理效率
- 为记忆系统添加机器人身份上下文注入,避免自身信息记录
- 增强记忆检索接口,支持额外上下文参数传递
- 添加控制台记忆预览功能,便于人工检查
- 优化记忆融合算法,正确处理单记忆组情况
- 改进流循环管理器,支持未读消息积压强制分发机制
2025-11-19 23:11:11 +08:00
Windpicker-owo
0a3c908654 feat(memory): 增强记忆构建上下文处理能力并优化兴趣度批量更新机制
- 在记忆构建过程中允许检索历史记忆作为上下文补充
- 改进LLM响应解析逻辑,增强JSON提取兼容性
- 优化消息兴趣度计算和批量更新机制,减少数据库写入频率
- 添加构建状态管理,支持在BUILDING状态下进行记忆检索
- 修复stream_id拼写错误处理和历史消息获取逻辑
2025-11-19 23:11:10 +08:00
tt-P607
1ccf50f3c7 fix(chat): 修复因消息ID非字符串类型导致的模糊匹配错误
在ChatterPlanFilter的模糊匹配逻辑中,从消息对象获取的ID(orig_mid)可能为整数或None,而非预期的字符串。

当re.sub接收到非字符串类型的参数时会引发TypeError。此更改通过在处理前显式地将ID转换为字符串,并处理其为None的情况,确保了代码的健壮性,避免了潜在的运行时崩溃。
2025-11-19 23:11:08 +08:00
tt-P607
310027009e fix(chat): 修复在海马体未初始化时调用主题遗忘的潜在错误
在调用 `operation_forget_topic` 方法前增加空值检查,以防止当海马体或其相关组件尚未完全初始化时,调用该方法导致程序崩溃。此更改增强了记忆遗忘操作的健壮性。
2025-11-19 23:11:00 +08:00
Windpicker-owo
e61975f0af fix(memory): 将日志级别从debug更改为info,以提高构建间隔提示的可见性 2025-11-19 23:10:26 +08:00
Windpicker-owo
b7bcb0b8e6 feat(chat): 优化记忆检索逻辑,异步调用增强记忆系统 2025-11-19 23:10:26 +08:00
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