Commit Graph

1866 Commits

Author SHA1 Message Date
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
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
雅诺狐
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
184cc7ffa2 加入了二走逻辑 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
Windpicker-owo
3fcf8e9add feat(memory): 重构记忆系统并移除插件热重载
重构记忆系统核心模块,引入全局记忆作用域、记忆指纹去重机制和查询规划器,优化多阶段检索性能。移除插件热重载系统及其相关依赖。

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

BREAKING CHANGE: 移除插件热重载系统,相关API和命令不再可用。记忆系统接口有较大调整,使用该系统的模块需要适配新接口。
2025-11-19 23:11:14 +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
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
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
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
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
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
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
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
ca7a4c0c2a feat(chat): 在亲和流对话中触发表达学习
每次亲和流对话器处理消息时,都会异步触发一次表达学习任务。这有助于模型根据最近的对话内容,持续优化其表达方式。
2025-11-19 23:09:01 +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
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
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
Windpicker-owo
80ecd553df perf(logging): 将信息级别日志降级为调试级别以优化性能
减少日志输出量,将两个模块中的非关键信息日志从INFO级别调整为DEBUG级别,提升运行效率并减少日志噪音。
2025-11-19 23:08:49 +08:00
tt-P607
e170999404 feat(affinity_flow_chatter): 优化动作提示词,为 LLM 提供完整 JSON 范例
为了提升语言模型在选择和执行动作时的稳定性和格式准确性,对动作提示词的生成方式进行了重构。

旧的实现仅提供动作和参数的文本描述,这使得模型在生成动作 JSON 时容易出错。

新的实现为每个可用动作动态构建一个完整的 JSON 使用范例,包含 `action_type`、附带示例值的参数和 `reason` 字段。这种更明确的格式指导旨在显著降低模型输出格式错误的风险。
2025-11-19 23:08:48 +08:00
tt-P607
6ea3b2af26 feat(affinity_flow_chatter): 优化戳一戳动作以更精准地回应原始消息
当LLM在执行 poke_user 动作时未指定 target_message_id,系统现在会主动在消息历史中寻找触发该动作的“戳一戳”通知,以实现更具上下文的回应。如果未找到对应的通知消息,则会回退到使用最新的消息作为目标。

此外,本次更新包含以下修复:
- 修复了在计划过滤器中错误地引用 `self.available_actions` 的问题,现已更正为 `plan.available_actions`。
- 修复了 `ActionModifier` 中动作列表在多阶段过滤时未及时更新的问题,确保了动作筛选的准确性。
2025-11-19 23:08:47 +08:00
tt-P607
b5342376eb feat(affinity_flow_chatter): 重构计划器以支持多动作并优化思考逻辑
本次提交对亲和流聊天器(AFC)的计划与决策核心进行了重大重构和功能增强,旨在提升其响应的灵活性、鲁棒性和可观测性。

主要变更包括:

1.  **多动作支持与解析重构**:
    -   `PlanFilter` 现在能够正确解析并处理 LLM 返回的动作列表(`"actions": [...]`),而不仅限于单个动作,这使得机器人能够执行更复杂的组合行为。
    -   增强了动作解析的鲁棒性,当找不到 `target_message_id` 时会优雅降级(如 `reply` 变为 `no_action`),并会根据当前实际可用的动作列表对 LLM 的选择进行验证。

2.  **提示词工程与思考模式优化**:
    -   重新设计了核心 Planner 提示词,将 `thinking` 字段定义为“思绪流”,引导 LLM 生成更自然、更符合角色的内心独白,而非简单的决策理由,从而提升决策质量和角色扮演的沉浸感。
    -   强制要求 LLM 为需要目标消息的动作提供 `target_message_id`,提高了动作执行的准确性。

3.  **上下文构建与鲁棒性增强**:
    -   在 `PlanFilter` 中增加了上下文回退机制,当内存中缺少历史消息时(如冷启动),会自动从数据库加载最近的消息记录,确保决策所需上下文的完整性。
    -   简化了提供给 LLM 的未读消息格式,移除了兴趣度分数等内部信息,并加入了用户昵称,使其更易于理解和处理。

4.  **可观测性与日志改进**:
    -   在 AFC 的多个关键节点(消息接收、决策、动作执行)增加了彩色的详细日志,使其决策流程像 HFC 一样清晰可见,极大地方便了调试。
    -   将系统中多个模块(视频分析、兴趣度匹配、情绪管理)的常规日志级别从 `INFO` 调整为 `DEBUG`,以减少在生产环境中的日志噪音。

5.  **动作描述优化**:
    -   优化了 `set_emoji_like` 和 `emoji` 等动作的描述,使其意图更清晰,帮助 LLM 做出更准确的动作选择。
2025-11-19 23:08:45 +08:00
Windpicker-owo
d2c58ad9d9 feat(affinity_flow_chatter): 添加情绪状态获取接口
为 AffinityChatter 和 ChatterActionPlanner 添加情绪状态相关方法:
- get_current_mood_state() 获取当前情绪状态描述
- get_mood_stats() 获取情绪状态统计信息
- 在规划器中集成情绪管理器更新逻辑

这些接口允许外部模块获取聊天过程中的情绪状态数据,增强了情感交互能力。
2025-11-19 23:08:43 +08:00