Commit Graph

1994 Commits

Author SHA1 Message Date
tt-P607
ca99488729 feat(chatter): 引入性别判断并细化表情包处理规则
- 关系追踪器(Relationship Tracker)的提示词现在要求在生成用户印象时,根据已知信息自然地融入用户性别判断,使描述更加个性化和生动。
- 规划器(Planner)的提示词被调整,将原先处理“纯表情/符号”的规则,细化为专门处理“无上下文的纯表情包”,避免AI忽略对话中有意义的简单表情符号,从而提升交互的自然度。
2025-11-19 23:25:31 +08:00
tt-P607
d349f3bfcc feat(voice): 实现自身语音缓存以跳过ASR识别
当机器人通过TTS插件发送语音时,会自动将语音数据和对应的原始文本进行缓存。

当机器人接收到自己发送的语音消息时,会优先从缓存中直接读取文本,从而跳过调用ASR(自动语音识别)服务的步骤。

此项优化可以:
- 节省不必要的ASR资源开销和费用。
- 保证对机器人自身语音100%的识别准确性。
- 提升对自身消息的响应处理速度。
2025-11-19 23:25:31 +08:00
minecraft1024a
92aae850c0 refactor(plugin_system): 将依赖检查逻辑从插件基类移至插件管理器
将插件的Python包依赖和插件间依赖的检查逻辑,从各个插件实例的初始化阶段 (`PluginBase`),统一前置到插件模块加载阶段 (`PluginManager`)。

这一重构有以下好处:
- **提前失败 (Fail-fast)**:在加载插件模块时立即检查依赖,如果依赖不满足,则直接跳过该插件的加载和实例化,避免了不必要的资源消耗和后续的运行时错误。
- **职责单一**: `PluginManager` 负责插件的发现、加载和依赖管理,而 `PluginBase` 更专注于插件自身的业务逻辑和生命周期,使得代码结构更清晰。
- **配置中心化**: 依赖关系现在统一在 `__plugin_meta__` 中声明,而不是分散在插件类的属性中,提高了可维护性。
- **简化插件实现**: 插件开发者不再需要在插件类中定义 `dependencies` 和 `python_dependencies` 属性,只需在 `__init__.py` 中声明元数据即可。
2025-11-19 23:25:30 +08:00
tt-P607
fe7ba2c8d8 feat(voice): 新增本地语音识别(ASR)提供商选项
新增 `voice.asr_provider` 配置项,允许用户在 "api" 和 "local" 之间选择语音识别服务。

当设置为 "local" 时,系统将通过 `local_asr` 工具(由 `stt_whisper_plugin` 插件提供)调用本地 Whisper 模型进行语音转文字。这为用户提供了一个不依赖外部 API、注重隐私的备选方案。

- 默认值仍为 "api",保持现有行为不变。
- 添加 `openai-whisper` 作为新的依赖项以支持此功能。
2025-11-19 23:25:28 +08:00
Windpicker-owo
e208cbbc0e refactor(affinity): 统一提及分计算逻辑
简化提及分计算逻辑,不再区分@提及、文本提及和私聊消息,统一使用配置的提及分值。移除对is_at属性的依赖,统一通过is_mentioned、文本匹配和私聊状态来判断是否提及机器人。
2025-11-19 23:25:10 +08:00
minecraft1024a
a234e0b8aa chore: 统一代码风格并进行现代化改造
本次提交主要包含以下内容:
- **代码风格统一**:对多个文件进行了格式化,包括移除多余的空行、调整导入顺序、统一字符串引号等,以提高代码一致性和可读性。
- **类型提示现代化**:在多个文件中将旧的 `typing` 模块类型提示(如 `Optional[T]`、`List[T]`、`Union[T, U]`)更新为现代 Python 语法(`T | None`、`list[T]`、`T | U`)。
- **f-string 格式化**:在 `scripts/convert_manifest.py` 中,将 `.format()` 调用更新为更现代和易读的 f-string `!r` 表示法。
- **文件末尾换行符**:为多个文件添加或修正了文件末尾的换行符,遵循 POSIX 标准。
2025-11-19 23:25:09 +08:00
tt-P607
d13554954f feat(tts): 重构TTS Action,实现LLM对语音风格和语言的精确控制
本次更新对TTS插件进行了重大重构,旨在赋予规划模型(LLM)对语音合成过程更直接、更精确的控制能力,从而显著提升语音输出的质量、灵活性和响应速度。

主要变更包括:

1.  **LLM直控模式**:
    -   移除了原有的“主模型重写文本”步骤,TTS Action现在直接使用规划器在 `text` 参数中提供的最终文本进行合成。
    -   **原因**: 减少了不必要的API调用和处理延迟,同时确保LLM的意图能够被无损地传达到语音生成环节。

2.  **增强的参数化**:
    -   Action新增了 `voice_style` 和 `text_language` 参数,允许LLM根据对话上下文动态选择最合适的语音风格和语言模式。
    -   **原因**: 使语音能够更好地匹配情感和场景,并解决了以往自动语言检测在多语言混合场景下(如中日、中粤)可能出错的问题。

3.  **动态风格加载**:
    -   可用的语音风格列表不再硬编码,而是从插件的 `config.toml` 配置文件中动态读取。
    -   **原因**: 极大地增强了插件的可配置性和可维护性,用户可以轻松地通过修改配置文件来添加或调整语音风格。

4.  **优化的语言决策**:
    -   在 `TTSService` 中实现了更智能的语言选择逻辑,其优先级为:LLM直接指定 > 风格配置默认 > 内容自动检测。
    -   **原因**: 提供了多层次的控制,确保在各种情况下都能选择最优的语言模式进行合成。

5.  **提示词强化**:
    -   更新了Action的描述和规则,特别是增加了对标点符号使用的“铁则”,以引导LLM生成更规范、更适合语音合成的文本。
    -   **原因**: 从源头上提升输入文本的质量,以确保语音停顿自然,避免合成失败。
2025-11-19 23:24:54 +08:00
minecraft1024a
ceed709da4 refactor(proactive_thinker): 将提示词构建逻辑迁移至独立的prompt模块
将 `ProactiveThinkerExecutor` 中用于构建决策(decision)和计划(plan)的提示词字符串的逻辑,提取并重构到新的 `prompts.py` 模块中。

这一重构旨在:
- **提升可维护性**:将复杂的提示词模板与核心业务逻辑分离,使代码结构更清晰。
- **简化代码**:`proactive_thinker_executor.py` 的代码量大幅减少,职责更加单一,专注于执行流程。
- **便于管理**:集中管理所有相关的提示词模板,方便未来进行统一的调整和优化。
2025-11-19 23:24:51 +08:00
minecraft1024a
7a797a1de6 refactor(core): 移除睡眠系统
由于睡眠系统存在设计缺陷、实现复杂且维护成本高,并且实际使用效果不佳,常常导致非预期的行为(如错过重要消息或在不应睡眠时睡眠),现决定将其从核心代码中完全移除。

移除内容包括:
- 删除了整个 `sleep_system` 模块及其所有相关逻辑、状态管理和定时任务。
- 清理了配置文件 `config.py` 和 `official_configs.py` 中的 `SleepSystemConfig`。
- 移除了 `main.py` 中关于睡眠系统的初始化调用。
- 清理了 `message_manager` 和 `proactive_thinker` 中对睡眠状态的检查。
- 更新了 `bot_config_template.toml` 模板文件,移除了所有睡眠系统相关的配置项。

此举旨在简化项目架构,提高系统的稳定性和可预测性。未来的相关功能可能会以更健壮、更模块化的插件形式重新实现。
2025-11-19 23:24:50 +08:00
minecraft1024a
e7f431392a refactor(sleep_system): 重构睡眠系统为单例模式并优化启动逻辑
将睡眠系统的核心组件 `SleepStateManager` 从全局变量实例化改为通过 `get_sleep_state_manager()` 函数获取的单例模式。这一改变解决了模块间的循环导入问题,并提升了代码的组织性和可维护性。

主要变更:
- 引入 `get_sleep_state_manager` 函数以惰性加载方式创建和返回 `SleepStateManager` 单例。
- 将 `sleep_logic.py` 中重复的作息时间计算逻辑提取到新的 `utils.py` 模块中,以实现代码复用。
- 在 `SleepStateManager` 初始化时增加 `_refresh_sleep_state` 方法,用于在程序启动时校准睡眠状态,确保状态与当前时间一致,防止因程序重启导致的状态错乱。
- 更新所有调用点,使用新的 `get_sleep_state_manager()` 函数来访问状态管理器。
2025-11-19 23:24:48 +08:00
minecraft1024a
6b3c4d50c6 refactor(napcat_adapter): 移除消息处理中多余的日志记录 2025-11-19 23:24:47 +08:00
minecraft1024a
92f5f9bbd9 feat(plugin_system): 引入高级Prompt注入规则系统以取代旧注入点机制
引入了一套全新的、基于规则的Prompt注入系统,以取代原有的 `injection_point` 机制。这套新系统提供了更强大、更灵活的Prompt内容注入能力。

主要变更包括:
- **引入 `InjectionRule` 和 `InjectionType`**:定义了注入规则的数据结构和注入类型(如 `PREPEND`, `APPEND`, `REPLACE`, `REMOVE`, `INSERT_AFTER`),允许插件开发者精确控制注入行为。
- **重构 `PromptComponentManager`**:核心逻辑从简单地拼接字符串 (`execute_components_for`) 重构为按优先级应用注入规则 (`apply_injections`),支持正则表达式匹配和更复杂的注入操作。
- **向后兼容**:`PromptInfo` 中增加了兼容逻辑,能自动将旧的 `injection_point` 定义转换为新的 `injection_rules`,确保现有插件无需立即修改即可正常工作。
- **更新 `BasePrompt`**:废弃了 `injection_point` 属性,并推荐使用新的 `injection_rules` 属性。
- **更新示例插件**:`hello_world_plugin` 已更新,展示了新注入规则的使用方法。

BREAKING CHANGE: `BasePrompt` 中的 `injection_point` 属性已被废弃。虽然目前存在向后兼容逻辑,但未来版本将移除该属性。所有Prompt组件都应迁移至使用 `injection_rules` 以获得更强的控制力和未来的兼容性。
2025-11-19 23:24:45 +08:00
minecraft1024a
c96434299f chore(log): 调整日志级别以减少不必要的输出
将部分用于调试回复消息功能的 `info` 级别日志调整为 `debug` 级别,避免在生产环境中输出过多冗余信息,让日志更清爽一些。
2025-11-19 23:24:43 +08:00
minecraft1024a
f1dfe64f88 chore: 代码格式化与类型注解优化
对项目中的多个文件进行了代码风格调整和类型注解更新。

- 使用 ruff 工具对代码进行自动格式化,主要包括:
    - 统一 import 语句的顺序和风格。
    - 移除未使用的 import。
    - 调整代码间距和空行。
- 将部分 `Optional[str]` 和 `List[T]` 等旧式类型注解更新为现代的 `str | None` 和 `list[T]` 语法。
- 修复了一些小的代码风格问题,例如将 `f'...'` 更改为 `f"..."`。
2025-11-19 23:24:42 +08:00
minecraft1024a
9380231019 refactor(plugin_system): 将依赖检查逻辑从插件基类移至插件管理器
将插件的Python包依赖和插件间依赖的检查逻辑,从各个插件实例的初始化阶段 (`PluginBase`),统一前置到插件模块加载阶段 (`PluginManager`)。

这一重构有以下好处:
- **提前失败 (Fail-fast)**:在加载插件模块时立即检查依赖,如果依赖不满足,则直接跳过该插件的加载和实例化,避免了不必要的资源消耗和后续的运行时错误。
- **职责单一**: `PluginManager` 负责插件的发现、加载和依赖管理,而 `PluginBase` 更专注于插件自身的业务逻辑和生命周期,使得代码结构更清晰。
- **配置中心化**: 依赖关系现在统一在 `__plugin_meta__` 中声明,而不是分散在插件类的属性中,提高了可维护性。
- **简化插件实现**: 插件开发者不再需要在插件类中定义 `dependencies` 和 `python_dependencies` 属性,只需在 `__init__.py` 中声明元数据即可。
2025-11-19 23:24:38 +08:00
tt-P607
fcb11e464d fix(chat): 修复戳一戳等notice事件无法触发聊天流程的问题
该修复解决了机器人对“戳一戳”等 notice 事件没有响应的 bug。

问题根源在于 MessageManager 在处理 notice 消息时,仅将其添加到全局通知管理器后便直接返回,导致消息无法进入后续的聊天处理流程,即使相关配置已开启。

主要变更:

修改 Elysia/Bot/src/chat/message_manager/message_manager.py,在处理 notice 消息时,增加对 bot_config.toml 中 enable_notice_trigger_chat 配置的判断。只有在该配置为 false 时才中断流程,否则将消息继续送入聊天上下文。
修复了 _get_notice_ttl 函数中因 notice_type 可能为 None 而引发的潜在 TypeError。
将 Bot/src/config/official_configs.py 中 enable_notice_trigger_chat 的默认值从 False 修改为 True,以提供更合理的开箱即用体验。
2025-11-19 23:24:36 +08:00
tt-P607
ebf283a891 feat(emoji): 优化表情识别提示词以提升描述质量
重构了表情包识别和描述生成的提示词,以获得更详尽、准确且符合网络文化的描述。同时调整了TTS插件的错误处理机制。

主要变更:
- **表情识别提示词(Prompt)优化**:
  - 为静态和动态表情包设计了更结构化的描述要求,引导模型识别主题、核心元素、角色出处、网络梗以及图片内文字。
  - 强调了对特殊网络文化符号(如“滑稽”表情)的准确识别,避免泛化描述。
  - 优化了“点睛之笔”精炼描述的提示词,使其能更好地结合上下文信息,生成更自然的描述。

- **TTS插件错误处理重构**:
  - 移除了`TTSVoiceAction`中合成失败时向用户发送动态错误消息的逻辑。
  - 改为静默失败,仅在后台记录详细的错误日志,避免在语音服务暂时不可用时对用户造成干扰。
2025-11-19 23:24:34 +08:00
tt-P607
63af866e3d feat(plan): 为月度计划添加软删除并优化状态提示词
为 `MonthlyPlan` 数据库模型增加 `is_deleted` 字段,以支持软删除功能,避免数据直接丢失。

同时,统一并优化了注入到AI上下文中的当前日程活动提示词,指导模型仅在被直接询问时才提及自身状态,使对话更加自然流畅。
2025-11-19 23:24:32 +08:00
tt-P607
86ce6beaba chore(log): 调整LLM相关日志级别为DEBUG
将LLM原始提示词和响应的日志级别从`INFO`调整为`DEBUG`。

此举旨在减少非调试模式下的日志输出,避免过长的模型交互内容刷屏,从而保持日志的整洁性,仅在需要时提供详细的调试信息。
2025-11-19 23:24:22 +08:00
tt-P607
4f277c1eed fix(chat): 防止回复媒体内容处理失败的消息
机器人此前会将 "[图片(描述生成失败)]" 等系统提示误解为用户消息并进行回复,导致异常的对话行为。

本次修复通过两个层面解决此问题:
1. 在 `ChatBot` 中添加硬编码过滤器,作为第一道防线,直接静默处理包含失败关键词的消息。
2. 更新 Planner Prompt,明确禁止 AI 回复此类消息,作为第二道保险,确保系统行为的健壮性。
2025-11-19 23:24:13 +08:00
tt-P607
5786b84ad4 feat(chat): 新增群组静默列表以忽略非@消息
引入了 `mute_group_list` 配置项。对于被添加到此列表的群组,机器人将只在被明确@或回复时才处理消息,从而避免在活跃群组中造成不必要的打扰。

- 在 `MessageReceiveConfig` 中添加 `mute_group_list` 选项。
- 在消息接收逻辑中实现检查,如果消息来自静默群组且不是@或回复,则跳过消息管理器处理。
- 调整了 `is_mentioned` 的计算时机,移至消息内容处理之后,以确保静默判断的准确性。
- 附带修复了处理适配器响应时因数据非字典类型导致的潜在错误。
2025-11-19 23:24:08 +08:00
tt-P607
d4100ca3e2 feat(tts): 为 TTS 插件引入混合激活机制
重构了 TTSVoiceAction 的激活逻辑,以提升语音交互的自然度和趣味性。
此前的纯关键词触发方式较为僵硬,新的机制结合了多种判断方式,使语音回复更加智能和生动。

新的混合激活机制包含三种并行的判断方式:
1.  **随机激活**: 以 55% 的概率随机触发,为对话增添惊喜感和自发性。
2.  **关键词激活**: 响应用户的明确语音请求,如“发语音”、“用语音说”等。
3.  **LLM 判断**: 利用大模型分析上下文,在讲故事、情感表达等适宜场景下智能激活。

任意一种方式满足条件即可触发语音回复,使机器人的回应更加人性化。
2025-11-19 23:24:04 +08:00
tt-P607
3accbabd3a feat(emoji): 重构表情包识别、描述与缓存系统
本次更新全面重构了表情包处理逻辑,引入了包含“精炼描述”、“关键词”和“详细分析”的三层描述系统,以提升识别的深度与广度。同时,统一并修复了缓存机制,解决了旧缓存数据格式不兼容及新内容无法被缓存的问题,并通过增加校验逻辑增强了系统的健壮性。

注意:更新后,用户必须手动清空 emojis、images、image_descriptions 三个数据库表,并将 data/emoji_registed/ 目录下的所有文件移至 data/emoji/ 目录,然后重启程序,以确保所有表情包能被新系统正确地重新识别
2025-11-19 23:24:01 +08:00
Windpicker-owo
1eda54cb8f feat(notice): 实现全局notice消息管理系统
添加全局notice管理器,将notice消息与普通消息分离处理。主要功能包括:

- 创建 GlobalNoticeManager 单例类,支持公共和特定聊天流作用域
- 在 message_manager 中集成notice检测和处理逻辑
- 扩展数据库模型和消息类,添加notice相关字段
- 在提示词生成器中添加notice信息块展示
- 配置系统支持notice相关参数设置
- 适配器插件增强notice类型识别和配置

notice消息特点:
- 默认不触发聊天流程,只记录到全局管理器
- 可在提示词中展示最近的系统通知
- 支持按类型设置不同的生存时间
- 支持公共notice(所有聊天可见)和流特定notice

BREAKING CHANGE: 数据库消息表结构变更,需要添加 is_public_notice 和 notice_type 字段
2025-11-19 23:23:55 +08:00
minecraft1024a
016099a997 fix(chatter): 修复计划生成和后台任务处理中的多项问题
此次更新包含对 `affinity_flow_chatter` 插件的多项修复和健壮性改进:

1.  **计划生成器 (`plan_generator.py`)**:
    *   修复了 `target_info` 未能正确实例化为 `TargetPersonInfo` 对象的问题,现在可以确保类型安全。
    *   增加了对未知聊天类型的处理,将其默认为私聊,增强了鲁棒性。
    *   将获取聊天记录的上限从 `short_memory_length` 调整为更通用的 `max_context_size`。

2.  **规划器 (`planner.py`)**:
    *   引入了后台任务管理机制,确保由 `_commit_interest_updates` 创建的异步任务能够被追踪。
    *   增加了 `_handle_task_result` 回调函数,用于捕获和记录后台任务中可能出现的异常,防止任务静默失败并提高系统的可维护性。
2025-11-19 23:23:40 +08:00
minecraft1024a
b633175e54 fix(chatter): 修复私聊时获取用户昵称的属性错误
在私聊场景下,`plan.target_info` 是一个 `UserInfo` 对象,而不是字典。此前的代码使用字典方式 `get("person_name")` 访问属性,会导致 `AttributeError`。

本次修改将属性访问方式从 `plan.target_info.get("person_name")` 调整为 `plan.target_info.person_name`,以正确获取用户信息。同时,更新了相关注释,阐明了情绪模块的依赖关系,防止因配置关闭而引发错误。
2025-11-19 23:23:38 +08:00
minecraft1024a
dc98e75487 refactor(prompt): 优化Prompt组件注入逻辑并简化代码
将Prompt组件的注入逻辑从`Prompt.format`方法前置到`PromptManager.get_prompt_async`和`create_prompt_async`中。这使得注入时机更早,逻辑更清晰,并允许在获取Prompt时就能动态传入参数以影响注入内容。

主要变更:
- `PromptManager`: `get_prompt_async`现在负责处理组件注入,并接收可选的`parameters`参数。`format_prompt`相应地传递参数。
- `create_prompt_async`: 现在也支持在创建时进行动态注入。
- `Prompt.format`: 移除了原有的组件注入逻辑,简化了方法实现。
- `PromptComponentManager`: 重构为直接从全局`component_registry`获取组件,移除了自身的注册和存储逻辑,减少了状态管理的复杂性。
- `plan_filter.py`: 删除了大量冗余和重复的代码块,包括主动聊天模式的独立逻辑和旧的历史消息构建方式。
2025-11-19 23:23:35 +08:00
minecraft1024a
2e1ca1ac78 ruff ci 2025-11-19 23:23:02 +08:00
tt-P607
b86f92a457 feat(web_search): 新增 Metaso 搜索引擎支持
为联网搜索工具集成了新的搜索引擎 Metaso,为用户提供更多搜索选择。

- 在搜索引擎基类 `BaseSearchEngine` 中添加了可选的 `read_url` 方法,为未来支持直接读取网页内容奠定基础。
- 更新了插件加载、工具执行逻辑和配置文件模板,以完整支持 Metaso 引擎。
- 将默认回复生成器的任务超时时间从 15 秒延长至 45 秒,以适应联网搜索等耗时较长的操作,提高稳定性。
2025-11-19 23:22:55 +08:00
minecraft1024a
3e31755cd0 现在不是空盒子了 2025-11-19 23:22:48 +08:00
Windpicker-owo
963bcd19e1 feat(action): 重构 Action 激活机制并添加 go_activate() 方法
引入新的 Action 激活机制,允许通过重写 go_activate() 方法来自定义激活逻辑。提供了三个工具函数:
- _random_activation(): 随机概率激活
- _keyword_match(): 关键词匹配激活
- _llm_judge_activation(): LLM 智能判断激活

主要变更:
- 在 BaseAction 中添加 go_activate() 抽象方法和相关工具函数
- 更新 ActionModifier 使用新的激活判断逻辑
- 在 hello_world_plugin 中添加新的激活方式示例
- 更新文档说明新的激活机制
- 保持向后兼容,旧的激活类型配置仍然可用

BREAKING CHANGE: Action 激活判断现在通过 go_activate() 方法进行,旧的激活类型字段已标记为废弃但仍然兼容
2025-11-19 23:22:46 +08:00
minecraft1024a
73a40ad830 feat(chat): 引入睡眠系统,在睡眠状态下拦截消息
在消息处理的最前端 (`MessageManager`) 增加了对睡眠状态的检查。当系统处于 `SLEEPING` 状态时,将直接拦截所有新消息,不再进行后续处理。

同时,为了配合睡眠系统的正常运作:
- 将睡眠系统的定时任务初始化移至 `main.py`,确保其在应用启动时正确加载。
- 在主动思维插件 (`proactive_thinker`) 的定时任务(冷启动和日常唤醒)中增加了睡眠状态检查,避免在睡眠期间触发主动行为。
2025-11-19 23:22:38 +08:00
minecraft1024a
0510ce9d55 Revert "实现了新的睡眠系统喵~",我看了不如我回去自己写一个()
This reverts commit e1dde64fc6.
2025-11-19 23:22:33 +08:00
tt-P607
dc3c6a235c refactor(core): make chat utils async and decouple plugin dependencies
- Convert `get_recent_group_speaker` and `count_messages_between` in `chat/utils` to async functions to align with underlying asynchronous database calls, preventing potential blocking issues.

- Implement optional import for `sleep_system` within the `affinity_flow_chatter` plugin using a try-except block. This decouples the hard dependency between the two plugins, enhancing modularity and ensuring the chatter plugin remains operational even if the sleep system is unavailable.
2025-11-19 23:22:31 +08:00
ikun-11451
6d6436c31f 修复了导入错误喵...... 2025-11-19 23:22:29 +08:00
ikun-11451
6827b740b5 实现了新的睡眠系统喵~ 2025-11-19 23:22:29 +08:00
tt-P607
34701e34f1 feat(chat): 实现延迟重处理并修复并发问题
本次提交为聊天处理逻辑带来了两项关键改进:

1.  **中断后的延迟重处理:**
    当机器人被新消息打断时,系统现在会等待一个短暂的延迟(例如0.5秒)再重新处理。这允许多条快速连续发送的消息被合并到同一次处理中,避免了因消息轰炸导致的多次、零碎的处理流程,提高了效率和响应的连贯性。

2.  **为聊天器添加并发锁:**
    在 `AffinityChatter` 中引入了 `asyncio.Lock`,以确保每个实例一次只处理一个流上下文。这可以防止在并发场景下可能出现的竞争条件,保证了数据处理的原子性和状态的一致性。
2025-11-19 23:22:18 +08:00
ikun-11451
c88b259c0e 将获取方式改成get喵~ 2025-11-19 23:22:15 +08:00
minecraft1024a
e7bde5d77d chore(chatter): 添加关于迁移逻辑的 TODO 注释 2025-11-19 23:22:12 +08:00
minecraft1024a
2ed9e44242 **我撞到dict了 2025-11-19 23:22:11 +08:00
minecraft1024a
159ff11524 Revert "refactor(chatter): 简化 action_message 的数据类型处理"
This reverts commit 540b162c04.
2025-11-19 23:22:10 +08:00
minecraft1024a
62dac40c6a refactor(chatter): 简化 action_message 的数据类型处理
在 `ActionPlannerInfo` 中,将 `action_message` 的类型直接设为 `target_message_obj` (dict),移除了之前将其转换为 `DatabaseMessages` 对象的逻辑。

这一改动简化了代码,并与最近 `reply_message` 模型重构的目的一致,即在流程中优先使用更通用的字典类型,仅在需要时进行模型转换。
2025-11-19 23:22:10 +08:00
minecraft1024a
804af4d8be fix(chatter): 修复私聊场景下目标信息类型不匹配问题
在 affinity_flow_chatter 插件中,处理私聊上下文时,`plan.target_info` 可能是一个字典(dict)类型,而不是预期的对象类型。这会导致在访问 `plan.target_info.person_name` 等属性时引发 `AttributeError`。

本次提交通过增加类型检查来处理这种情况,确保无论是对象还是字典类型的 `target_info` 都能被正确解析,从而增强了代码的健壮性并修复了潜在的运行时错误。
2025-11-19 23:22:04 +08:00
minecraft1024a
74e6d1ec39 refactor(maizone): 移除生成文案时对跨群聊上下文的依赖
此更改删除了在生成内容时获取和注入跨群聊上下文(`maizone_context_group`)的逻辑。

该功能已被新的、更通用的 S4U 上下文检索机制所取代,因此旧的硬编码实现不再需要,移除它可以简化代码并消除冗余。
2025-11-19 23:22:01 +08:00
minecraft1024a
28b56fc0b4 feat(schedule): 优化日程提示并增加时间感知能力
日程系统现在可以更详细地描述当前活动,包括计划的起止时间、已进行时间和剩余时间,为AI角色提供更强的时间感知和情境感。

主要变更:
- `schedule_manager`的`get_current_activity`现在返回包含活动和时间范围的字典,而不仅仅是活动名称。
- 在`default_generator`中,重构了日程提示的生成逻辑,使其能够计算并展示活动的详细时间信息。
- 修复了多处可能因变量为空(如`msg_content`、`user_nickname`)或事件处理结果为`None`而引发的潜在错误。
- 统一了各处对日程信息的调用方式。
2025-11-19 23:22:01 +08:00
tt-P607
b7392ffea3 refactor(napcat): 将 MoFox-Bot 重命名为 MaiBot
在 NapCat 适配器插件中,将 `mofox_bot` 相关的变量和函数名重命名为 `maibot`,以保持项目内部命名的一致性。这是在之前从 MaiBot 重命名为 MoFox-Bot 后的修正操作。
2025-11-19 23:21:58 +08:00
tt-P607
6f1ed7f0ec Revert "fix(napcat): 修复消息处理和事件注册逻辑"
This reverts commit 3737c6d458.
2025-11-19 23:21:56 +08:00
tt-P607
3d532b2945 fix(napcat): 修复消息处理和事件注册逻辑
- 增加对字节类型消息的解码处理,增强了与不同 WebSocket 实现的兼容性。
- 修复了在 `register_events` 中使用 `Enum` 成员而非其 `value` 进行注册的错误。
- 将 `_start_maibot_connection` 重命名为 `_start_mofox_bot_connection` 以匹配项目重命名。
- 使用 `setattr` 动态设置 `mofox_bot_router`,提高代码的灵活性。
2025-11-19 23:21:56 +08:00
minecraft1024a
6ce331cf0c chore: 代码清理和格式化
对项目代码进行了一系列小幅度的清理和改进,包括:
- 移除未使用的导入语句
- 统一代码格式,如调整空行和导入顺序
- 优化日志输出的可读性
- 更新类型注解以符合现代 Python 语法
- 修复代码风格检查器(linter)报告的问题
2025-11-19 23:21:54 +08:00
minecraft1024a
892e106015 refactor(cross_context): 重构互通组上下文获取逻辑
重构并简化了互通组上下文的获取函数 `get_intercom_group_context`。旧的 `get_chat_history_by_group_name` 和 `get_intercom_group_context_by_name` 函数被合并和优化。

主要变更:
- 移除了冗余的 `get_chat_history_by_group_name` 函数。
- 将 `get_intercom_group_context_by_name` 重命名为 `get_intercom_group_context`,并简化了其参数。
- 增加了对黑名单模式的支持,现在可以正确地从所有聊天中排除指定会话。
- 优化了消息获取和格式化流程,现在按聊天会话分块返回消息,而不是将所有消息混合在一起排序,提高了上下文的可读性。
- 清理了代码格式和移除了未使用的导入。
2025-11-19 23:21:47 +08:00