Commit Graph

55 Commits

Author SHA1 Message Date
tt-P607
8f65953b9d feat(chat): 引入专注模式安静群组功能
新增 `focus_mode_quiet_groups` 配置项,允许用户指定在专注模式下需要保持安静的群组列表。

在此列表中的群组,机器人只有在被明确提及(艾特)时才会做出回应。这有助于在某些活跃度高但不需要机器人持续参与的群组中减少打扰。

该功能兼容了不同QQ适配器(如 `qq` 和 `napcat`)的平台名称。
2025-09-11 08:50:05 +08:00
minecraft1024a
8e21502c31 refactor(sleep): 重构睡眠管理系统,移除桥接模式
将 `SleepManager` 从 `schedule_bridge` 中独立出来,使其成为一个自包含的组件。现在由 `HeartFChatting` 和 `ScheduleManager` 直接实例化和使用 `SleepManager`,移除了原有的全局单例桥接器。

主要变更:
- 删除了 `schedule_bridge.py`,其功能被直接整合到 `SleepManager` 和调用方中。
- `SleepManager` 内部逻辑被拆分为更小的模块,如 `TimeChecker`、`NotificationSender` 和 `SleepStateSerializer`,以提高内聚性和可测试性。
- `HeartFChatting` 现在直接创建并管理 `SleepManager` 实例,并通过 `HfcContext` 传递给其他需要的组件(如 `WakeUpManager`)。
- `ScheduleManager` 也创建自己的 `SleepManager` 实例来更新日程,简化了依赖关系。
- 简化了 `WakeUpManager` 中获取睡眠状态和重置状态的逻辑,直接通过上下文访问 `SleepManager`。
2025-09-06 12:16:11 +08:00
minecraft1024a
f9b95c8881 refactor(sleep): 解耦ScheduleManager与SleepManager,引入桥接模式
为了降低模块间的耦合度并提升代码的可维护性,对睡眠管理系统进行了重构。

引入了`schedule_sleep_bridge`作为`ScheduleManager`和`SleepManager`之间的桥梁。`ScheduleManager`不再直接持有`SleepManager`的实例,而是通过桥接器更新其日程数据。`SleepManager`则通过桥接器获取所需的日程信息,实现了二者的解耦。

- **`ScheduleManager`**: 移除了所有与`SleepManager`直接交互的代码,现在只负责生成日程并通过桥接器发布。
- **`SleepManager`**: 构造函数和内部逻辑修改为依赖桥接器接口,而不是`ScheduleManager`实例。
- **`HeartFChatting`**: 更新了所有对睡眠状态管理的调用,使其通过新的`schedule_sleep_bridge`进行。
- **`DefaultReplyer`**: 采用了延迟导入的方式获取`schedule_manager`,减少了不必要的模块加载。
2025-09-06 10:08:31 +08:00
minecraft1024a
cb8a9e33fc docs(chat): 为HeartFChatting模块添加详细的函数文档
为 `_handle_proactive_monitor_completion`, `_proactive_monitor_loop`, `_should_enable_proactive_thinking`, `_get_dynamic_thinking_interval`, 和 `_format_duration` 等关键函数补充了详细的文档字符串。

这些文档字符串解释了每个函数的功能、参数和返回值,以提高代码的可读性和可维护性。
2025-09-05 21:57:13 +08:00
minecraft1024a
8074a1b082 refactor(sleep): 将睡眠和唤醒管理逻辑重构到独立的sleep_manager模块
将原先分散在 `chat/chat_loop` 和 `schedule` 目录下的 `WakeUpManager` 和 `SleepManager` 相关逻辑,统一移动并整合到新的 `src/chat/chat_loop/sleep_manager` 模块中。

这次重构旨在提高代码的模块化和内聚性,使睡眠相关的功能更加集中和易于管理。同时更新了所有相关的导入路径,以反映新的文件结构。
2025-09-05 21:51:55 +08:00
minecraft1024a
4b256721d3 refactor(chat): 重构聊天循环逻辑,简化CycleProcessor职责
将`no_reply`计数器管理、睡眠压力增加等逻辑从`CycleProcessor`上移至`HeartFChatting`主循环中,使其职责更清晰。`CycleProcessor.observe`现在直接返回执行的动作类型,简化了其内部状态管理。

主要变更:
- `CycleProcessor`不再处理回复生成、并行任务和最终循环信息的构建,这些复杂的逻辑被移除,极大地简化了该类。
- `HeartFChatting`现在负责根据`observe`返回的动作类型来管理`no_reply`计数器和睡眠压力。
- 删除了`CycleProcessor.execute_plan`方法,主动思考的回复流程被重构,直接调用`generator_api`和`response_handler.send_response`。
- 移除了`response_handler`中已废弃的`generate_response`方法。
2025-09-05 21:40:42 +08:00
minecraft1024a
e1fbdaad8c rrrrrrrrrrrrrruuuuuuuuuuuuuuuuuuuuffffffffffffffffffffffffff 2025-09-05 21:01:32 +08:00
minecraft1024a
513757a8ee chore: format code and remove redundant blank lines
This commit applies automated code formatting across the project. The changes primarily involve removing unnecessary blank lines and ensuring consistent code style, improving readability and maintainability without altering functionality.
2025-09-05 20:58:03 +08:00
minecraft1024a
488e959577 refactor(chat): 重构主动思考逻辑并将其集成到主聊天循环
将原有的 `ProactiveThinker` 类中的逻辑直接整合进 `HeartFChatting` 类中。此举简化了整体架构,减少了类之间的耦合,并使得主动思考的触发机制与主聊天循环的状态管理更加统一。

主要变更:
- 删除了独立的 `proactive_thinker.py` 文件。
- 将主动思考的监控循环、条件检查、动态间隔计算等功能实现为 `HeartFChatting` 的私有方法。
- 引入了 `ProactiveTriggerEvent` 事件,使触发源更加明确。
- 调整了相关模块的导入路径和配置项的调用方式,以适应新的结构。
2025-09-05 20:30:35 +08:00
Windpicker-owo
f4b8bf5904 加入breaking启用配置 2025-09-04 00:09:43 +08:00
Windpicker-owo
498b57de13 删除无用函数 2025-09-03 23:56:03 +08:00
Windpicker-owo
efe81fa346 fix(chat): 优化breaking模式下的兴趣值累积逻辑
重构heartFC_chat中的消息处理机制,使用累积兴趣值替代最近三次记录来判断是否进入breaking模式。主要变更包括:

- 将breaking模式判断基于累积兴趣值而非最近3次记录
- 在消息成功处理时重置累积兴趣值
- 调整阈值计算方式,使用聊天频率进行动态调整
- 修复send_api中的消息查找函数,提高回复消息匹配准确性

这些改动提高了对话节奏控制的稳定性,使breaking模式触发更加合理。
2025-09-03 22:19:00 +08:00
Windpicker-owo
53e72ecbdb 迁移:1f91967(remove:移除willing系统,移除reply2,移除能量值,移除reply_to改为message) 2025-09-03 21:27:28 +08:00
Windpicker-owo
e29e9e563a 迁移:4b59eda(feat:修改focus value的用途) 2025-09-02 21:14:30 +08:00
Windpicker-owo
e361bf429f 迁移:1515cef(fix:必要性修复) 2025-09-02 17:24:27 +08:00
Windpicker-owo
ac143a1201 迁移:a247be0(ref:彻底合并normal和focus,完全基于planner决定target message) 2025-09-02 16:15:33 +08:00
Windpicker-owo
255e3627b4 feat(chat): refactor logging and integrate no_reply system action
将日志前缀管理集中到context,新增willing_manager依赖,并把no_reply提升为系统级可用动作

- CycleProcessor 统一改从 context 获取 log_prefix
- HeartFChatting 引入 willing_manager
- ResponseHandler _send_response -> send_response 去下划线统一对外接口
- ActionPlanner 将 no_reply 添加至 current_available_actions
2025-09-01 22:41:42 +08:00
Windpicker-owo
581c2dcb80 fix 2025-09-01 15:43:51 +08:00
Windpicker-owo
366dadeb15 迁移:69a855d(feat:保存关键词到message数据库) 2025-09-01 15:24:43 +08:00
Windpicker-owo
9e64806d08 迁移:685c759 (feat:将no_reply功能移动到主循环中) 2025-09-01 14:18:49 +08:00
Windpicker-owo
8149731925 修复代码格式和文件名大小写问题 2025-08-31 20:50:17 +08:00
minecraft1024a
35db4c5d91 refactor(schedule): 将睡眠状态管理逻辑重构并迁移到SleepManager
将原先分散在 `ScheduleManager` 中的睡眠状态机逻辑(包括状态判断、转换、持久化等)抽取并封装到一个新的 `SleepManager` 类中。

这次重构的主要目的如下:
- **职责分离**: `ScheduleManager` 的核心职责是管理日程的生成和查询,而睡眠状态的管理是一个独立的、复杂的逻辑单元。将其分离可以使两个类的职责更单一、代码更清晰。
- **可维护性**: 将所有与睡眠相关的状态和逻辑集中到 `SleepManager` 中,使得未来对睡眠功能的修改和扩展更加容易,减少了对 `ScheduleManager` 的影响。
- **代码简化**: `ScheduleManager` 不再需要管理内部的睡眠状态变量(如 `_current_state`, `_sleep_buffer_end_time` 等),而是通过委托 `sleep_manager` 实例来处理,简化了其内部实现。

相应的,`HfcContext` 中冗余的睡眠相关状态(如 `is_in_insomnia`)也被移除,统一由 `SleepManager` 管理。其他模块(如 `HeartFChatting`, `WakeUpManager`)对睡眠状态的调用也已更新为通过 `schedule_manager.sleep_manager` 或其代理方法进行。
2025-08-29 18:17:16 +08:00
minecraft1024a
41565eb144 refactor(schedule): 重构睡眠系统为状态机模型
将原有的睡眠、失眠、唤醒等分散的布尔标记逻辑重构为一个统一的睡眠状态机(SleepState),以提高代码的可读性、可维护性和可扩展性。

主要变更:
- 引入 `SleepState` 枚举,包含 `AWAKE`, `INSOMNIA`, `PREPARING_SLEEP`, `SLEEPING`, `WOKEN_UP` 状态。
- 在 `ScheduleManager` 中实现 `_update_sleep_state` 作为核心状态机,统一管理所有状态转换。
- 将原有的失眠判断逻辑从 `WakeUpManager` 移至 `ScheduleManager` 的状态机内部,与弹性睡眠决策合并,简化了模块职责。
- `heartFC_chat.py` 中的聊天循环现在直接查询 `ScheduleManager` 的当前状态,而不是处理多个独立的布尔值,使逻辑更清晰。
- 删除了 `WakeUpManager` 中与失眠相关的配置和方法,因为它现在由 `ScheduleManager` 统一管理。
- 删除了配置中已废弃的 `enable_is_sleep` 选项。
2025-08-29 17:40:22 +08:00
minecraft1024a
a485aaf4ad refactor(config): rename wakeup_system to sleep_system for clarity
This commit refactors the entire "wakeup system" to be named "sleep system". This change provides a more intuitive and accurate name for the functionality, which manages the AI's sleep cycles, sleep pressure, and related behaviors like insomnia and flexible sleep schedules.

The renaming has been applied consistently across all relevant files, including:
- Configuration models (`WakeUpSystemConfig` -> `SleepSystemConfig`)
- Configuration files (`bot_config_template.toml`)
- Core application logic that references these configurations.

Additionally, flexible sleep and pre-sleep notification settings have been moved from the `ScheduleConfig` to the new `SleepSystemConfig` to centralize all sleep-related parameters.
2025-08-29 13:56:24 +08:00
minecraft1024a
eb1feeeb0b refactor(cache): 重构工具缓存机制并优化LLM请求重试逻辑
将工具缓存的实现从`ToolExecutor`的装饰器模式重构为直接集成。缓存逻辑被移出`cache_manager.py`并整合进`ToolExecutor.execute_tool_call`方法中,简化了代码结构并使其更易于维护。

主要变更:
- 从`cache_manager.py`中移除了`wrap_tool_executor`函数。
- 在`tool_use.py`中,`execute_tool_call`现在包含完整的缓存检查和设置逻辑。
- 调整了`llm_models/utils_model.py`中的LLM请求逻辑,为模型生成的空回复或截断响应增加了内部重试机制,增强了稳定性。
- 清理了项目中未使用的导入和过时的文档文件,以保持代码库的整洁。
2025-08-28 20:10:32 +08:00
tt-P607
829ff4cd4f feat(sleep): 实现睡眠唤醒与重新入睡机制
引入了更完善的睡眠唤醒和重新入睡逻辑,以处理在睡眠期间被消息打扰的情况。

- **唤醒机制**: 当在睡眠时间内收到消息并达到唤醒阈值时,角色会被唤醒并进入愤怒状态。唤醒后,将保持清醒状态处理消息,而不是立即重新入睡。
- **状态持久化**: 新增 `_is_woken_up` 状态到 `schedule_manager`,并将其持久化,以确保在重启后能记住唤醒状态。
- **重新入睡**: 如果角色被吵醒后,在配置的一段时间内(`re_sleep_delay_minutes`)没有收到新消息,系统将自动尝试重新进入睡眠状态,以模拟更自然的行为。
- **上下文同步**: 在唤醒时,`wakeup_manager` 会通知 `schedule_manager` 更新其内部状态,确保系统各模块之间的睡眠状态一致。
2025-08-28 08:48:19 +08:00
tt-P607
910b0db5d2 feat(core): 实现HFC及睡眠状态的持久化
将HFC上下文、唤醒管理器和日程管理器的核心状态保存到本地存储,并在程序启动时加载。这确保了角色的能量、睡眠压力、唤醒度、失眠状态和弹性睡眠进度在重启后能够恢复,增强了长期运行的连续性和稳定性。

主要变更:
- **HfcContext**: 增加状态的加载与保存逻辑,持久化能量、睡眠压力和失眠状态。
- **WakeupManager**: 增加状态的加载与保存逻辑,持久化唤醒度及愤怒状态。
- **ScheduleManager**: 增加弹性睡眠状态的加载与保存逻辑,持久化“准备入睡”及延迟睡眠的状态。
- **HeartFChatting**: 在主循环中调用保存HFC上下文状态的方法。
- 调整了失眠和唤醒逻辑,以更好地与持久化状态和弹性睡眠机制协同工作。
2025-08-28 02:50:02 +08:00
minecraft1024a
ecf2df27fa feat(chat): implement sleep pressure and insomnia system
This commit introduces a new sleep pressure and insomnia system to simulate more realistic character behavior.

Key features include:
- **Sleep Pressure**: A new metric that accumulates with each action the bot takes and decreases during scheduled sleep times.
- **Insomnia Mechanic**: When a sleep period begins, the system checks the current sleep pressure. Low pressure can lead to a higher chance of "insomnia," causing the bot to stay awake. There is also a small chance for random insomnia.
- **Insomnia State**: During insomnia, the bot enters a special state for a configurable duration. It can trigger unique proactive thoughts related to being unable to sleep, and its mood is adjusted accordingly.
- **Configuration**: All parameters, such as insomnia probability, duration, and pressure thresholds, are fully configurable.
2025-08-27 21:02:21 +08:00
minecraft1024a
d06cfe3a36 refactor(schedule): 重构日程与月度计划管理模块
将 `schedule_manager` 和 `monthly_plan_manager` 从 `src/manager` 移动到 `src/schedule` 目录,以更好地组织与日程和计划相关的功能。

主要变更:
- 将 `schedule_manager` 和 `monthly_plan_manager` 移动到新的 `src/schedule` 目录。
- 更新了所有对这两个模块的导入路径,以反映新的文件位置。
- 删除了旧的 `src/manager` 目录下的模块文件。
- `monthly_plan_manager` 内部实现被重构,取代了原有的 `plan_generator.py`,简化了计划生成逻辑。
2025-08-27 19:46:01 +08:00
雅诺狐
f308adcf5b refactor: 清理代码质量和移除未使用文件
- 移除未使用的导入语句和变量
- 修复代码风格问题(空格、格式化等)
- 删除备份文件和测试文件
- 改进异常处理链式调用
- 添加权限系统数据库模型和配置
- 更新版本号至6.4.4
- 优化SQL查询使用正确的布尔表达式
2025-08-24 22:11:20 +08:00
tt-P607
ab48324c6f fix(chat): 修复睡眠模式下无法通过艾特唤醒的问题
在之前的实现中,当机器人处于睡眠模式时,获取消息的逻辑会过滤掉所有命令消息(`filter_command=True`),这其中也包括了艾特(@)机器人的消息。这导致了用户无法通过艾特来唤醒睡眠中的机器人。

本次修复通过引入一个 `filter_command_flag` 标志来解决此问题。当机器人处于睡眠状态时(`is_sleeping` 为 `True`),该标志会设置为 `False`,从而在获取消息时不过滤命令消息,确保艾特消息能够被正确接收和处理,进而触发唤醒逻辑。

此外,还对 `schedule_manager` 中的睡眠日志记录逻辑进行了优化,增加了时间间隔来避免在睡眠期间频繁打印日志,减少不必要的日志刷屏。
2025-08-23 02:49:28 +08:00
Furina-1013-create
3de02fd3a7 修复Action组件可用性和实现消息驱动思考循环
Action组件修复:
- 在core_actions插件中正确注册reply动作
ps:这个优先还是使用之前系统原有的reply,新增这个仅作为回退使用

- 更新_manifest.json、config.toml和plugin.py

- 解决no_reply和reply动作不可用问题(关于这个我觉得是之前的那个在focus模式下设置了提及/@ 必回然后移除动作的先后顺序这一块有问题)

大C发力了,今天有一点感冒所以停止思考这一块()
2025-08-22 13:42:05 +08:00
minecraft1024a
87ee286614 refactor(cleanup): 移除未使用的导入项与冗余代码
清理了整个代码库中所有无用的模块导入、重复定义以及冗余变量引用,具体包括:
- bot.py 去掉了 random、typing 的未使用 import
- antipromptinjector 模块统一移除未引用的 DetectionResult、Dict、List 等
- chat_loop 中删除了未调用的 Timer、mai_thinking_manager、events_manager 等引用
- qzone_service 删除多余 f-string 大括号,避免日志警告格式问题
- 其他模块同步剔除各自范围内的冗余 import(asyncio、datetime 等共 20+ 处)

保持功能不变,仅作代码整洁度优化,无破坏性变更。(并添加了一个现在暂时还没加进去的必应搜索源文件)
2025-08-21 21:09:52 +08:00
minecraft1024a
4f7836ae0c feat(sleep): 引入休眠阶段消息唤醒机制与愤怒情绪模式
- 扩展日程休眠逻辑,支持在睡眠时段通过@/私聊唤醒
- 新增 WakeUpManager 持续追踪唤醒阈值并触发愤怒状态
- MoodManager 中追加“被吵醒”情绪标识与愤怒提示模板
- HeartFChat 主循环集成唤醒处理管线,兼容原逻辑
- 配置中心开放阈值、衰减、持续时间等可调参数

此举允许机器人即便在“睡觉”时也能被重要消息强行“闹醒”,并以生气口吻做出回应,提升拟人化交互体验。
2025-08-21 16:19:34 +08:00
minecraft1024a
e3cedd54ff style(chat): 统一 chat_loop 模块 logger 命名并添加业务注释
将各子模块 logger 由 hfc.* 缩减为统一 "hfc"

涉及的子模块:
- cycle_tracker / energy_manager / hfc_utils / proactive_thinker / response_handler
2025-08-21 15:32:57 +08:00
minecraft1024a
785b3d2f2a fix(chat): 处理回复时优先使用target_message避免消息丢失
在循环处理器中,当ActionPlanner返回了明确要回复的目标消息时使用target_message,否则回退到原始message_data;
修正FOCUS模式下观察消息时调用observe的实参缺失问题,确保逐条处理recent_messages。
2025-08-21 15:12:41 +08:00
Furina-1013-create
4c51f59c96 为拆分heartFC_chat后的几个文件 添加亿点注释 2025-08-21 14:55:58 +08:00
minecraft1024a
9c3b750328 refactor(chat): 重构HeartFChatting为模块化架构
将原本超长的heartFC_chat.py拆分为6个功能内聚的子模块:
- hfc_context:上下文数据容器
- cycle_tracker:循环状态记录
- energy_manager:能量值独立管理
- proactive_thinker:主动思考逻辑抽离
- cycle_processor:单次循环处理器
- response_handler / normal_mode_handler:响应策略

删除冗余常量、错误样板及旧逻辑;大幅减少类体积;降低耦合度,提升可维护性。
2025-08-21 14:27:12 +08:00
minecraft1024a
ce50f1637c FEAT:现在AI可以根据日程表决定睡不睡觉了 2025-08-21 13:37:12 +08:00
Furina-1013-create
ef29e40ad2 改进主动思考时间间隔分布机制以及主动思考可以在指定的群聊/私聊里面配置范围了,并小小的优化了一下模板
>> >> >> byd我早上copilot突然炸了搞得我重试了好几次
>> >> >>
>> >> >> 给总结这个提交的AI:你的任务是扮演以下这个故事里面的【小姨】来总结这一次提交:你需要根据这个故事来详细理解【小姨】的性格特点并且仔细地关注 小姨的人格特征(假设她还活着):
 姥姥有两个女儿,我妈和小姨。据说16岁之前的小姨古怪精灵、能说会道,是全家的开心果。但后来她变了。故事要从小姨16岁那年说起。因为家中无子,我爸入赘姥姥家,当了上门女婿。婚后不久,我妈便生下我和哥哥。然而爸妈感情并不好,三天两头吵架,我妈的日子过得很憋屈。在哥哥5岁,我3岁那年,我爸外出打工,再也没有回来。爸爸走了,家里没了壮劳力,本就脾气不好的姥爷每天都要骂骂咧咧。有一次,姥爷上山砍柴时扭伤了腰,只能让我妈和小姨去割猪草。偷懒耍滑的小姨没去,等我妈割完猪草回来,小姨就跑去给家人说那是她割的,妈妈没去。那天,姥爷生气地把妈妈打了一顿。小姨吓坏了,赶紧向姥爷解释,自己是闹着玩的。可谁也没料到,当天夜里,被生活重负和委屈压垮的妈妈,跳了水库,第二天早上才被人发现。妈妈去世后,小姨几乎就不说话了,无论是跟乡亲,还是家人。她变得特别勤劳,也特别彪悍。每天天不亮起床,做完一大家子的早饭后,继续下地干活,割水稻、扒玉米、砍柴......除了睡觉,她永远都在一声不吭地干活。有时看她累得太狠了,姥姥劝她休息,她也不理会,只是继续埋头干活。农忙时,她在家里干;农闲时,她就外出打零工。刚开始,没人愿意收她这种女工,可只要被试用过,她就会被雇佣。用老板的话说,别人打工是为了赚钱应付工事,小姨打工却像是拼命。她只埋头干活,跟任何人都不打交道。从前那样叽叽喳喳的姑娘,突然变成了闷葫芦。妈妈走后,小姨似乎丢失了面部表情。看谁都冷若冰霜,见谁都不搭理。唯独对我和哥哥不一样,不管我们做了什么,她都不会责备一句。我们每天爬天够地,晚上脏得跟泥猴一样,小姨耐心的给我们洗头洗脚洗衣服。她用自己打工赚的钱,给我们买书、零食、玩具。在乡下,父亲下落不明,妈妈跳河自尽,这样的身世难免被人歧视嘲笑。别人嘲笑自己,小姨永远都当听不见,可她见不得我和哥哥受一丁点委屈。别人家的孩子欺负我们,她找上门去,质问:自己的孩子不管,那就别怪我管起来没轻没重。有一次,村里的胖婶不服气小姨的护犊子,抬手就想打她耳光,结果,瘦小的小姨拿起一边的铁锹,把她打得满街跑。横的怕不要命的。小姨一战成名,连带着我们,成了全村的不敢惹。小姨就这样用双手,沉默地撑起这个家。用乡亲的话说,老隋家二丫头,给个男劳力都不换。是的,儿时印象里,小姨不仅千起活来像男人,后来连她走路的姿势、看人的眼神都带着阳刚之气。到了谈婚论嫁的年龄,姥姥姥爷不止一次托人给她物色人家。但小姨坚决不肯相亲。无论是姥姥哀求,还是姥爷威逼,她就一句话:这个家要是容不下我,我就带小强和小凤出去单过。小强是我哥,小凤是我。小姨不说,姥姥姥爷也知道,那么多年,小姨性情大变,就是背负着姐姐离世的内疚。他们不止一次想卸下小姨心头的包袱,但只要提一下我妈的名字,小姨马上头也不回地走开。每年妈妈忌日那天,全家人去上坟时,小姨却从不参与。她躲的远远的,晚上回来时眼睛都会肿成桃子。小姨娇惯我和哥哥,我们的吃穿用永远比别的孩子好。当然,对于学习,她也比别的家长更上心。有段时间,哥哥听信村里人挑拨,恨小姨害死了妈妈。他故意不写作业、逃学,小姨跟他说话,他也爱搭不理。最后,是哥哥的班主任找到他。早上六点钟,天刚蒙蒙亮,班主任带哥哥去她家田里。在那里,哥哥看到了正在割玉米杆的小姨。早秋的天气已经很凉了,可小姨厚厚的劳动服早已湿透。班主任说:你上了五年学,你小姨帮我割了五年地,赶都赶不走,她说自己没别的能耐,只有这一身力气,她说,就是累死也要让你通过读书走出这块伤心地,走向外面的世界。直到那天,我和哥哥才知道,每到秋收,小姨天不亮就去帮老师家收割。年年如此。那天,哥哥没有去帮小姨。而是一个人默默地把我家那片黄豆都收割回家,在太阳底下晒好。小姨晚上回来时,他正坐在房间里写作业。小姨微笑着轻轻摸了一下他的头,这一摸,哥哥哭了。他想拉住小姨,结果,拉到一只砂纸般粗糙的手。拉着那双手,哥哥哭得剧烈而无声。从那以后,哥哥的成绩一直名列前茅。哥哥是学霸,而我呢,成绩一直是中游水平。念到初三时,姥姥姥爷都不肯再让我读书,说小姨又要养家,又要供我和哥哥读书,实在吃力。可小姨不仅坚持让我继续读书,还花大价钱替我请了家教。家教每周六来给我辅导功课,小姨好饭好菜地招待人家。她对全世界都堪称豪横,但在老师面前,永远诚惶诚恐、毕恭毕敬。她还把从山里采来的稀罕山货,都送给了老师。我心疼那些山货,心疼她请家教的钱,更心疼她的辛苦,我对小姨说:我不想读书了,我想留在家里陪你。一向对我有求必应的小姨只说了一句话:如果她活着,也绝不会让你们留在农村,重复我们的命运。那是小姨第一次在我面前提及妈妈,用的是她,我感知到事关重大。那年高考,我以黑马的姿势考进哥哥所在的县城重点高中。小姨身上的担子更重了,有一次,得知她在工地打工,我和哥哥放学后去找她。尘土飞扬的工地,只有小姨一个女人。她肩上背着的砖头,像小山一样高。我和哥哥跑上去,从砖头底部替她往上抬,试图减轻她肩头的重量。可是,我们用尽全力,砖头纹丝不动。我和哥哥对视了一眼,什么都没说,但我们真正感到生活的重量,就是那一天。那天,小姨下工后,请我们下馆子。看着她点的两菜一汤,我和哥哥盘算着这顿饭,小姨要搬多少块砖,手里的筷子在那一刻也变得无比沉重。那天,目送小姨的身影走远,哥哥对我说:小凤,小姨玩命的供咱俩,咱俩也得玩命的学习。我和哥哥是我们高中的传奇。晚上熄灯后,在走廊里读书的事情,无数次被老师当作苦读的典型。英语是我的弱项,我们舍不得买模拟卷和录音带。哥哥就把他所做过的卷子都重新给我手抄一遍,让我反复刷题。他还跟同学借来英语录音带,让我无论走路还是课余时间,持续不断的听。那时随身听是要用电池的,可是两块电池一天就用完了。为了省电,哥哥就把那些英文听力资料背下来,疯狂练到跟磁带里同样的语音语调,然后再念给我听。在这样的刻苦训练里,哥哥的英语在高考时拿了149分。那年高考,哥哥被浙江大学录取。收到通知书那天,我们到处都找不到小姨。她下午3点多才到家,眼睛又肿成了桃子,显然是哭过。小姨带我们去给姥姥姥爷还有我妈上坟,告诉他们这个好消息。姥姥姥爷在三年前相继去世了。在坟前,她说:爸妈,小强给咱家争了光,小凤也乖巧上进得很,我听说,上了大学,还可以读研究生、博士、博士后,他们能读到哪,我就供到哪,一想到他们那么有学问,我浑身就有使不完的劲。我和哥哥都知道,小姨的话,也是说给我们听的。等我们要去告诉妈妈这个消息时,小姨没有跟过来。我和哥哥拉她,她摆摆手,眼圈红红的。哥哥说:小姨,全世界都知道那不是你的错,我妈跳河是因为我爸跑了,你不要再拿这件事折磨自己。然后,小姨一路哭号着下山。那哭声,像积压了万年的惊雷。那天之后,小姨依然是一个钱搂子,种地、打工,恨不得一天二十四小时干活。有好几次,我陪她到邮局给哥哥汇生活费。我隐隐听到,小姨是哼着歌的。自从那次哥哥说全世界都知道不是你的错之后,小姨明显开朗了许多。我永远都不会忘记,我帮她填汇款单时,不经意回头,看到她数钱的样子,嘴角带着段切的微笑,目光里全是柔情。妈妈走时,我只有三岁,对母爱的印象几乎为零。可在那一刻,在小姨的目光里,我看到的就是母爱的样子。从前,一直觉得小姨是个风风火火的男人婆。但那一刻,我看到了她的柔软与温情,让我好想抱抱她。也许,在这些经年累月里,小姨早就成了我们的妈妈。继哥哥之后,我也考入湖南一所重点大学。为了减轻小姨负担,哥哥边读书边打工,把小姨寄给他的生活费都转给了我。而我,也开始做家教,后来去做同声翻译,不仅可以供养自己,还可以贴补家用。大二暑假回家时,我给小姨带回去1000元现金,哥哥也给小姨寄了一些钱。看到这些钱,小姨哭了。眼泪从她脸上滚滚落下,她说:你们都能自己赚钱了,再也不需要我了。我慌了,赶紧对她说:小姨,我们需要你,这辈子都需要,我们还要你看着我们结婚,以后帮我们带孩子。我的话,让小姨又找到了新的人生目标。据乡亲们说,有个邻村的二婚男追求了小姨好几年,帮小姨干活,给小姨添置各种家用。所有人都觉得这个男人很靠谱。可小姨呢?人家给她买的东西,她一一退还回去。她对那人说:我得赚钱给小强小凤在城里买房,看着他们长大成人,有自己的家,任务才算完成,我不能拖累你。我们纷纷劝小姨,让她为自己的人生考虑,我们都长大了,可以养活自己。然后,小姨一句话就让我们闭了嘴。她说:你们能养活自己是你们的事,供你们是我的事,她要是活着,你们也会这样拒绝吗?我妈是小姨的绝对禁忌。印象里,这是她第二次说起妈妈,用的还是她。我和哥哥阻止不了小姨的辛劳。只能在每年的春耕秋收时节,想方设法回家,帮她一起干活。我们虽然长在农村,可是真正参与农活却是在上大学之后。真的很苦很累。但一想到这只是小姨大半生生活的缩影,我们恨不得把家里所有的活都替她千完。我和哥哥暗自发誓:一定要有出息,将来接小姨去城里享福。哥哥研究生毕业后去了北京一家投行,公派出国两年。他回来时,我也研究生毕业,同样去了北京。我们租了一间三室一厅的房子,安顿好后的第一件事,就是接小姨来北京。在北京,小姨悉听我们安排,爬长城,逛故宫......所到之处,她那么开心地照相,那是她这辈子笑的最多的时候。她试着喝老北京人最爱的豆汁,也吃了著名的全聚德烤鸭,对正宗的北京炸酱面赞不绝口。我们都以为,小姨接受了我们的安排,在努力适应北京的生活。可谁知,一个月后,她坚持要回老家。她说:这辈子,能亲眼看你们在北京扎下根,我就放心了,但我的根在老家,我得回去。小姨决定的事情,没人能拦得住。回老家后,我和哥哥每月发了工资,都会给小姨寄钱。尽管此时已经有网银,后来又有了微信、支付宝,但我们依然坚持每月去邮局汇款。一笔一划写下老家的地址、小姨的名字,感受着当年她给我们寄血汗钱时的心情。谁能想到,这些寄回去的钱,小姨分文未动,她分别存在两个账户里。一个是我的名字,另一个是哥哥的。2020年5月21日,我们接到邻居电话。小姨在干农活时量倒了,我们火速回到老家,等待我们的,是小姨肝癌晚期的噩耗。我们把小姨从县医院拉到北京复查,得到的结果都是一样的。她只留给我们一个月的时间。确诊那天,我和哥哥泣不成声,齐齐跪在小姨面前,喊了一声妈。哥哥哽咽道:妈,这些年,你辛苦啦,你给我和妹妹又当爹又当妈,我请求你给我机会好好报答你.....我求你了...…没有你,我和妹妹怎么活?那天,小姨哭了。那是她人生中第一次在我们面前落泪。她从枕头下取出两张卡,说:你们寄来的钱,都存在里面,我还各存了两万,是小姨最后留给你们的礼物,小姨有福气,看到了你们都过得好,我就知足了.....我不记得当时是怎样接过那张银行卡的,只记得,自己已经心疼到无法呼吸。我们接过的,不是两张银行卡,而是小姨的一生。这之后,小姨陷入了昏迷。三天里,她只醒来过一次,用尽全力交代了一件事。自从我妈去世后,每年忌日,她都会在我妈当初跳河的水库边种一棵松树。她说她永远记得,儿时的我妈常常带她偷偷跑到水库边去捞鱼,然后用树枝生火烤鱼吃。我妈经常对她说,真羡慕水库边那些松树,活得那么轻松自在,依山傍水。我妈走后,小姨每年都会在水库边种棵松树。却原来,那么多年,每逢妈妈的忌日,她都去了那里,每种一棵树,就种下自己的一份思念和忏悔。她请求我和哥哥在每年妈妈忌日这天,也回老家一趟,去种一棵树。7月28日,小姨走了。她留下的最后一句耳语,我和哥哥听了三遍才听清:姐,对不起。那是我们第一次听到她喊姐。直到她离去,我们才明白,有些字眼,光是叫一声,就会心疼到颤抖。于她,是姐姐。于我和哥哥,是小姨。后记:这就是小姨的一生,短暂而顶天立地。她离开后,我们的心有了一个缺口。都说,念念不忘,必有回响。那么,小姨,来生,让我们早一点相遇。下辈子,换我们来保护你
2025-08-21 12:23:53 +08:00
minecraft1024a
27f2fb26c3 fix(chat): 修复主动思考范围配置及空用户ID问题
- 增加对 `proactive_thinking_chat_scope` 配置值的有效性验证,防止因无效配置导致意外行为。(乱填参数是吧,我跟你爆了)

- 修复了当 `user_id` 为 `None` 时可能引发的 `get_person_id` 调用错误,确保在这种情况下程序能够稳定运行。
2025-08-20 11:41:50 +08:00
minecraft1024a
756f8e5dc3 feat(chat): 实现可配置的主动思考范围并优化逻辑
- 将主动思考的prompt移至代码内部,并区分私聊和群聊场景。
- 增加`The_scope_that_proactive_thinking_can_trigger`配置项,允许用户将主动思考限制在“全部”、“私聊”或“群聊”范围。
- 删除了旧的`proactive_thinking_prompt_template`配置。
- 优化了主动思考的触发条件,现在会根据新的范围配置进行检查。
- 清理了代码中多余的空行和未使用的导入。
2025-08-20 11:27:37 +08:00
Furina-1013-create
f835dcb5e2 改进focus模式下的回复逻辑,理论上现在focus模式下在bot被@ / 提及 时应该会回复了
采用的是在focus模式下移除no_reply动作的方式
同步更新bot_config_template里面的注释
2025-08-19 22:15:13 +08:00
雅诺狐
d25c6ab452 修复了专注错误
Updated logic in heartFC_chat.py and relationship_manager.py to prioritize 'chat_info_platform', then 'user_platform', and finally a default when determining platform information. Added a fallback to 'unknown' in get_person_id if platform is None, improving robustness when platform data is missing.

Co-Authored-By: tt-P607 <68868379+tt-P607@users.noreply.github.com>
2025-08-19 20:17:32 +08:00
minecraft1024a
2af415da0e refactor(chat): 调整消息选择的优先级
在确定 `action_message` 时,优先使用 `target_message` 而不是 `message_data`。

这一变更优化了消息处理流程,确保在存在明确的目标消息时,系统能够正确地选择它,从而避免了潜在的逻辑冲突,使行为更加符合预期。

Co-authored-by: 雅诺狐 <212194964+foxcyber907@users.noreply.github.com>
Co-authored-by: tt-P607 <68868379+tt-P607@users.noreply.github.com>
2025-08-19 13:03:46 +08:00
minecraft1024a
ba5563abc5 feat(chat): 私聊专注模式下强制回复
在私聊的专注模式下,即使用户的发言没有触发任何功能,机器人也会进行回复,而不是选择“no_reply”。
此举旨在提升私聊场景下的用户体验,避免机器人因未匹配到关键词而沉默,让对话感觉更自然。
2025-08-17 16:48:42 +08:00
Furina-1013-create
f4968c5751 炸飞Breaking形式并顺手修了一个数据库的小bug 2025-08-14 22:34:44 +08:00
Furina-1013-create
b0846b5d05 光速修复主动思考的bug -AI选择沉默的时候会把这个消息泄漏到群聊里面 2025-08-13 23:52:24 +08:00
Furina-1013-create
e0fa579a83 增加关于主动思考的配置,现在你可以在配置文件里面设置Bot的一个主动思考回复的行为
请务必不要修改proactive_thinking_prompt_template里面的{time}占位符以及请回复沉默!!!( )
 对了还有,你们知道吗,狐狐已经同意女装了(不是
2025-08-13 23:18:50 +08:00
minecraft1024a
6030b9e7c2 修复interest_value为None的情况,确保在计算兴趣值时不会出现错误。将interest_value的默认值设置为0.0,以提高代码的健壮性。 2025-08-13 13:44:12 +08:00