Windpicker-owo
|
0fe052dd37
|
Merge branch 'afc' of https://github.com/MoFox-Studio/MoFox_Bot into afc
|
2025-09-27 16:31:44 +08:00 |
|
Windpicker-owo
|
9a70c7a93d
|
refactor(chat): 优化上下文管理器,添加启动与停止功能,改进消息用户ID获取逻辑
|
2025-09-27 16:31:23 +08:00 |
|
Windpicker-owo
|
c49b3f3ac4
|
refactor(chat): 重构消息管理器以使用集中式上下文管理和能量系统
- 将流上下文管理从MessageManager迁移到专门的ContextManager
- 使用统一的能量系统计算focus_energy和分发间隔
- 重构ChatStream的消息数据转换逻辑,支持更完整的数据字段
- 更新数据库模型,移除interest_degree字段,统一使用interest_value
- 集成新的兴趣度管理系统替代原有的评分系统
- 添加消息存储的interest_value修复功能
|
2025-09-27 14:23:48 +08:00 |
|
tt-P607
|
7f39f6f649
|
feat(sleep): 细化唤醒机制,实现分聊天的起床气
先前的唤醒与起床气机制是全局性的,一个聊天中的频繁消息会导致Bot对所有聊天都表现出“起床气”状态,这在多聊天场景下体验不佳。
本次更新将唤醒机制与具体的 `chat_id` 进行绑定,实现了更精细化的交互逻辑:
- Bot被吵醒后,其“起床气”状态将只针对吵醒它的聊天生效。
- 在此期间,Bot会忽略其他所有聊天的消息,专注于处理来自触发唤醒的聊天的消息。
- Prompt现在会优先注入起床气相关的描述,确保响应符合当前状态。
此外,为了更准确地捕捉唤醒意图,在群聊中,即使没有@提及,只要消息包含Bot的昵称或别名,也会被视为一次有效“提及”,从而累加唤醒值。
|
2025-09-27 00:58:41 +08:00 |
|
tt-P607
|
28a2a4b0c8
|
refactor(config): 移除全局表达开关以支持分聊天配置
移除全局的 `enable_expression` 配置项,转而使用 `get_expression_config_for_chat` 方法在生成提示词时动态判断。
原有的全局开关不够灵活,无法满足分聊天、分群组控制表达功能的需求。此次重构通过在运行时检查每个聊天的具体配置,实现了更精细化的功能启用控制。
BREAKING CHANGE: 全局配置项 `expression.enable_expression` 已被移除。现在需要通过表达规则来为不同的聊天单独控制功能的启用状态。
|
2025-09-26 23:11:55 +08:00 |
|
tt-P607
|
568de3b473
|
Merge branch 'afc' of https://github.com/MoFox-Studio/MoFox_Bot into afc
|
2025-09-26 22:57:43 +08:00 |
|
tt-P607
|
9cb6ae1b4c
|
feat(config): 为表达配置添加启用开关
|
2025-09-26 22:57:35 +08:00 |
|
minecraft1024a
|
b73c47c6c7
|
Merge branch 'afc' of https://github.com/MoFox-Studio/MoFox_Bot into afc
|
2025-09-26 22:08:57 +08:00 |
|
minecraft1024a
|
9dca30284a
|
试图maizone解决问题但不保证成功
|
2025-09-26 22:08:54 +08:00 |
|
tt-P607
|
9608a040a6
|
refactor(llm_models): 将用量记录函数改为异步以支持数据库写入
将 `LLMUsageRecorder` 中的 `record_usage_to_database` 和 `LLMRequest` 中的 `_record_usage` 方法从同步转换为异步。
此项重构是为了支持异步数据库操作,避免在记录模型用量时阻塞事件循环,从而提升应用的整体性能和响应能力。
|
2025-09-26 21:59:38 +08:00 |
|
minecraft1024a
|
50835498f0
|
refactor(llm_models): 将 LLMRequest 重构为模块化的策略驱动架构
此次重构旨在分解原有的单体 `LLMRequest` 类,以提高代码的可维护性、可扩展性和健壮性。通过引入多个遵循单一职责原则的内部辅助类,请求生命周期的各个阶段被清晰地分离开来。
主要变更包括:
- **引入 `_ModelSelector`**: 专门负责模型的动态选择、负载均衡和失败惩罚策略。该策略现在能对网络错误和服务器错误等严重问题施加更高的惩罚。
- **引入 `_PromptProcessor`**: 封装所有与提示词相关的处理逻辑,包括内容混淆、反截断指令注入以及响应内容的后处理(如提取思考过程)。
- **引入 `_RequestExecutor`**: 负责执行底层的API请求,包含自动重试、异常分类和消息体压缩等功能。
- **引入 `_RequestStrategy`**: 实现高阶请求策略,如模型间的故障转移(Failover),确保单个模型的失败不会导致整个请求失败。
`LLMRequest` 类现在作为外观(Facade),协调这些内部组件,为上层调用提供了更简洁、稳定的接口。
|
2025-09-26 21:17:34 +08:00 |
|
Windpicker-owo
|
0478be7d2a
|
refactor(chat): 优化消息管理与打断系统,添加打断计数与历史消息加载功能
|
2025-09-26 19:17:24 +08:00 |
|
Windpicker-owo
|
7718a9b956
|
refactor(chat): 从StreamContext获取消息兴趣度和连续无回复次数的计算逻辑
|
2025-09-26 14:02:43 +08:00 |
|
Windpicker-owo
|
bbbf543078
|
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-09-26 13:56:43 +08:00 |
|
Windpicker-owo
|
bcea1a93c1
|
Merge branch 'afc' of https://github.com/MoFox-Studio/MoFox_Bot into afc
|
2025-09-26 11:45:55 +08:00 |
|
Windpicker-owo
|
ad36a6c48f
|
refactor(chat): 重构消息管理器以使用集中式聊天流API
移除对context.chat_stream的直接依赖,改为通过get_chat_manager().get_stream()统一获取聊天流实例。这提高了模块独立性,符合"高内聚、低耦合"原则。
- 在MessageManager中统一使用chat_api获取stream实例
- 移除mood_manager中直接更新chat_stream的逻辑
- 在affinity_flow_chatter中统一处理兴趣度更新
- 消除直接属性访问带来的强耦合依赖
|
2025-09-26 11:45:20 +08:00 |
|
tt-P607
|
ef8d080228
|
refactor(chat): 移除会话数据中的 relationship_score
|
2025-09-26 02:14:48 +08:00 |
|
tt-P607
|
99595f239d
|
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-09-26 02:10:43 +08:00 |
|
tt-P607
|
8d725911da
|
Revert: 回退并发消息处理系统的相关提交
由于并发消息处理的实现在测试中暴露出消息重复和目标ID丢失的问题,暂时回退至该功能合并前的稳定状态,以便进一步排查问题。
|
2025-09-26 01:54:07 +08:00 |
|
tt-P607
|
c5a55df5ec
|
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-09-26 00:24:34 +08:00 |
|
Windpicker-owo
|
a2baec088e
|
feat(chat): 实现动态消息分发系统和消息打断机制
添加基于focus_energy的动态消息分发周期调整功能,根据聊天流兴趣度智能调整检查间隔
实现消息打断系统,允许高优先级消息打断正在处理的任务
重构ChatStream类,引入动态兴趣度计算系统,包括消息兴趣度统计和用户关系评分
扩展数据库模型和配置系统以支持新功能,增加相关配置项
更新版本号至0.11.0-alpha-1以反映重大功能更新
|
2025-09-25 17:14:01 +08:00 |
|
minecraft1024a
|
4cbd86aa96
|
Revert "refactor(llm): 重构 LLM 请求处理,引入通用故障转移执行器"
This reverts commit a6f2fb78e1.
|
2025-09-24 21:27:39 +08:00 |
|
minecraft1024a
|
1e82d42ea0
|
Revert "refactor(llm): 精简故障转移执行器的调用逻辑"
This reverts commit 7dfc005a3e.
|
2025-09-24 21:14:39 +08:00 |
|
minecraft1024a
|
aff395b791
|
Revert "fix(llm): 增强并发执行和异常处理的健壮性"
This reverts commit 0146eb7e9f.
|
2025-09-24 21:14:32 +08:00 |
|
minecraft1024a
|
0146eb7e9f
|
fix(llm): 增强并发执行和异常处理的健壮性
- 为 `execute_concurrently` 添加协程函数检查,防止传入非异步函数导致运行时错误。
- 统一将日志中的异常对象显式转换为字符串,以获得更清晰的错误输出。
- 移除了针对特定模型供应商的 403 错误降级处理逻辑,该逻辑已过时。
|
2025-09-24 21:11:48 +08:00 |
|
minecraft1024a
|
7dfc005a3e
|
refactor(llm): 精简故障转移执行器的调用逻辑
`_execute_with_failover` 方法在 `raise_on_failure=True` 时,保证了要么返回有效结果,要么抛出异常。
因此,先前在调用该方法后的 `if result:` 判断和 `raise RuntimeError` 语句是冗余且不可达的。本次重构移除了这些不必要的代码,直接返回该方法的调用结果,使代码更加简洁和清晰。
|
2025-09-24 21:06:20 +08:00 |
|
minecraft1024a
|
0ea8d16ff4
|
feat(chat): 在亲和流对话中触发表达学习
每次亲和流对话器处理消息时,都会异步触发一次表达学习任务。这有助于模型根据最近的对话内容,持续优化其表达方式。
|
2025-09-24 20:57:12 +08:00 |
|
minecraft1024a
|
a6f2fb78e1
|
refactor(llm): 重构 LLM 请求处理,引入通用故障转移执行器
之前的代码里,处理文本、图片、语音的请求方法都各自为战,写了一大堆重复的故障转移逻辑,简直乱糟糟的,看得我头疼。
为了解决这个问题,我进行了一次大扫除:
- 引入了一个通用的 `_execute_with_failover` 执行器,把所有“模型失败就换下一个”的脏活累活都统一管理起来了。
- 重构了所有相关的请求方法(文本、图片、语音、嵌入),让它们变得更清爽,只专注于自己的核心任务。
- 升级了 `_model_scheduler`,现在它会智能地根据实时负载给模型排队,谁最闲谁先上。那个笨笨的 `_select_model` 就被我光荣地裁掉了。
这次重构之后,代码的可维护性和健壮性都好多了,再加新功能也方便啦。哼哼,快夸我!
|
2025-09-24 20:33:10 +08:00 |
|
minecraft1024a
|
064784d6b8
|
feat(chat): 在聊天消息中显示用户 QQ 号
|
2025-09-24 20:21:59 +08:00 |
|
minecraft1024a
|
bcf3d6c4af
|
Merge branch 'afc' of https://github.com/MoFox-Studio/MoFox_Bot into afc
|
2025-09-24 18:58:49 +08:00 |
|
minecraft1024a
|
e3b08b2982
|
refactor(set_emoji_like): 使用 send_command 方法发送表情回应
将原先直接调用底层 `adapter_command_to_stream` 的方式重构为使用封装好的 `self.send_command` 辅助方法。
此次重构简化了动作实现代码,提高了可读性,并更好地封装了命令发送的逻辑。
|
2025-09-24 18:58:46 +08:00 |
|
Windpicker-owo
|
96d072336b
|
Merge branch 'afc' of https://github.com/MoFox-Studio/MoFox_Bot into afc
|
2025-09-24 18:15:15 +08:00 |
|
Windpicker-owo
|
cd2f4f0531
|
删除无用日志
|
2025-09-24 18:14:34 +08:00 |
|
minecraft1024a
|
7607b08cc2
|
杀掉一部分日志
|
2025-09-24 18:13:46 +08:00 |
|
minecraft1024a
|
159a7f7e9d
|
fix(napcat_adapter): 确保回复消息的目标 ID 始终为字符串
|
2025-09-24 18:06:13 +08:00 |
|
minecraft1024a
|
693392add9
|
chore(napcat_adapter): 增加回复消息段数据日志
|
2025-09-24 18:01:14 +08:00 |
|
minecraft1024a
|
efd8414985
|
chore(napcat_adapter): 增加待处理消息段的日志
|
2025-09-24 17:34:16 +08:00 |
|
minecraft1024a
|
e7dd4f2c31
|
chore(napcat_adapter): 增加回复消息的目标 ID 日志
|
2025-09-24 17:32:46 +08:00 |
|
minecraft1024a
|
51a6094072
|
删除几个日志
|
2025-09-24 17:14:48 +08:00 |
|
minecraft1024a
|
62817a1a51
|
fix(plugin_system): 兼容从 'id' 字段获取消息 ID
|
2025-09-24 17:05:30 +08:00 |
|
minecraft1024a
|
62ba8c3bfb
|
我是打日志先人
|
2025-09-24 16:53:44 +08:00 |
|
minecraft1024a
|
c7f8760b2d
|
chore(napcat_adapter): 增加消息发送与回复处理的详细日志
为了方便排查消息发送失败或引用回复行为不符合预期的问题,在消息发送和回复处理的关键路径上增加了详细的日志输出。
- 在调用 NapCat 发送接口前,记录准备发送的完整消息体。
- 在 `handle_reply_message` 方法中,记录获取被引用消息详情、判断是否 @ 用户以及最终返回的消息段等步骤。
|
2025-09-24 16:24:16 +08:00 |
|
minecraft1024a
|
5b8cc51dad
|
revert 1a24233b86deb0c4d8446ff31c072ea4b18572aa中的plugin.py
|
2025-09-24 15:51:28 +08:00 |
|
tt-P607
|
ac9347ebae
|
perf(core): 将异步任务日志降级为 debug 级别
将消息处理的异步任务创建和完成日志级别从 INFO 调整为 DEBUG。
这些日志在高并发场景下会产生大量输出,影响关键信息的查看,并且会带来不必要的 I/O 开销。将其降级到 DEBUG 级别可以使默认日志更清晰,同时保留在需要时进行详细调试的能力。
|
2025-09-24 15:45:51 +08:00 |
|
tt-P607
|
1a24233b86
|
feat(core): 实现消息异步处理并引入LLM驱动的智能表情回应
本次更新对系统核心处理流程和插件功能进行了重要升级,主要包含以下两方面:
1. **消息处理异步化**:
- 在 `main.py` 中引入了 `asyncio.create_task` 机制,将每条消息的处理过程包装成一个独立的后台任务。
- 这解决了长时间运行的AI或插件操作可能阻塞主事件循环的问题,显著提升了机器人的响应速度和系统稳定性。
- 为后台任务添加了完成回调,现在可以详细地记录每个消息处理任务的成功、失败或取消状态及其耗时,便于监控和调试。
2. **`set_emoji_like` 插件智能化**:
- 为 `set_emoji_like` 插件增加了LLM驱动的表情选择功能。当动作指令未指定具体表情时,插件会自动构建包含聊天上下文、情绪和人设的提示,请求LLM选择一个最合适的表情进行回应。
- 为支持此功能,对AFC规划器的提示词进行了优化,为LLM提供了更清晰的参数示例和规则,提高了动作生成的准确性。
此外,为了统一日志规范,将 `[所见]` 消息接收日志集中到 `bot.py` 中,确保在任何过滤逻辑执行前记录所有收到的消息,并移除了插件中重复的日志。
|
2025-09-24 15:43:12 +08:00 |
|
Windpicker-owo
|
37f9b46bcf
|
feat(affinity_flow_chatter): 增强动作思考过程在回复生成中的集成
添加了将动作思考过程集成到回复生成流程的功能:
- 在 generator_api 中新增逻辑,将 action_data 中的 thinking 字段内容添加到 extra_info
- 优化 plan_filter 中对 thinking 字段的处理逻辑,避免添加无意义的默认值
- 更新默认生成器提示词,移除冗余的关系信息块重复
- 在 planner 提示词中添加不对表情包消息回应的限制
|
2025-09-24 13:53:54 +08:00 |
|
Windpicker-owo
|
9ca8d5d1c0
|
perf(logging): 将信息级别日志降级为调试级别以优化性能
减少日志输出量,将两个模块中的非关键信息日志从INFO级别调整为DEBUG级别,提升运行效率并减少日志噪音。
|
2025-09-24 12:48:37 +08:00 |
|
minecraft1024a
|
f7131e65dd
|
refactor(sleep_manager): 引入上下文对象重构睡眠与唤醒状态管理
创建了 `SleepContext` 与 `WakeUpContext` 类,用于统一封装和管理各自模块的状态数据及其持久化逻辑。
- `SleepManager` 和 `WakeUpManager` 不再直接管理零散的状态属性(如 `_current_state`, `wakeup_value`),而是通过持有一个 Context 实例来进行状态的读写和保存。
- 移除了原有的 `SleepStateSerializer` 静态类和管理器中的 `_save_state` / `_load_state` 方法,将逻辑集中到新的 Context 类中。
此次重构旨在提升代码的内聚性,实现状态管理与业务逻辑的分离,使代码结构更清晰,更易于维护和扩展。
|
2025-09-24 11:39:13 +08:00 |
|
tt-P607
|
d666773f1f
|
feat(affinity_flow_chatter): 优化动作提示词,为 LLM 提供完整 JSON 范例
为了提升语言模型在选择和执行动作时的稳定性和格式准确性,对动作提示词的生成方式进行了重构。
旧的实现仅提供动作和参数的文本描述,这使得模型在生成动作 JSON 时容易出错。
新的实现为每个可用动作动态构建一个完整的 JSON 使用范例,包含 `action_type`、附带示例值的参数和 `reason` 字段。这种更明确的格式指导旨在显著降低模型输出格式错误的风险。
|
2025-09-24 03:17:11 +08:00 |
|
tt-P607
|
ce7d0dead4
|
feat(affinity_flow_chatter): 优化戳一戳动作以更精准地回应原始消息
当LLM在执行 poke_user 动作时未指定 target_message_id,系统现在会主动在消息历史中寻找触发该动作的“戳一戳”通知,以实现更具上下文的回应。如果未找到对应的通知消息,则会回退到使用最新的消息作为目标。
此外,本次更新包含以下修复:
- 修复了在计划过滤器中错误地引用 `self.available_actions` 的问题,现已更正为 `plan.available_actions`。
- 修复了 `ActionModifier` 中动作列表在多阶段过滤时未及时更新的问题,确保了动作筛选的准确性。
|
2025-09-24 01:59:28 +08:00 |
|