Commit Graph

169 Commits

Author SHA1 Message Date
minecraft1024a
0e1e9935b2 style: 统一代码风格并采用现代化类型注解
对整个代码库进行了一次全面的代码风格清理和现代化改造,主要包括:

- 移除了所有文件中多余的行尾空格。
- 将类型提示更新为 PEP 585 和 PEP 604 引入的现代语法(例如,使用 `list` 代替 `List`,使用 `|` 代替 `Optional`)。
- 清理了多个模块中未被使用的导入语句。
- 移除了不含插值变量的冗余 f-string。
- 调整了部分 `__init__.py` 文件中的 `__all__` 导出顺序,以保持一致性。

这些改动旨在提升代码的可读性和可维护性,使其与现代 Python 最佳实践保持一致,但未修改任何核心逻辑。
2025-11-12 12:49:40 +08:00
Windpicker-owo
13fb86394b feat(replyer): 使用全局配置替换默认记忆检索参数,提升灵活性和可配置性
feat(memory_tools): 优化记忆过滤逻辑,增强日志记录和过滤统计
feat(plan_filter): 调整AFC场景的记忆检索数量,减少干扰
2025-11-11 21:34:11 +08:00
Windpicker-owo
aab3f19f10 feat(chatter_manager): 清理 processing_message_id 以防止重复回复检测失效
feat(distribution_manager): 添加子任务跟踪和取消逻辑,优化流处理
feat(default_generator): 优化 respond 和 reply 模式下的消息处理逻辑
feat(affinity_chatter): 处理取消异常时清理 processing_message_id
feat(planner): 确保在规划流程取消时清理 processing_message_id
2025-11-10 17:12:20 +08:00
Windpicker-owo
861cc18e7d feat(reply): 优化respond动作逻辑,移除不必要的目标消息参数 2025-11-10 16:07:23 +08:00
Windpicker-owo
b427960441 feat(reply): 引入统一格式过滤器,优化回复内容清理逻辑 2025-11-10 14:12:11 +08:00
Windpicker-owo
882f93c886 feat(reply): 引入增强的格式过滤器,优化回复内容清理逻辑 2025-11-10 13:36:17 +08:00
Windpicker-owo
8c4a54c75d feat(reply): 引入 reply 和 respond 动作,优化消息回复机制
- 增加 reply 动作,针对单条消息进行深度回复,使用 s4u 模板。
- 增加 respond 动作,统一回应未读消息,使用 normal 模板。
- 更新核心动作插件以支持新动作,确保配置选项可用。
- 优化动作执行逻辑,提升对话流畅性和响应准确性。
2025-11-10 13:24:45 +08:00
tt-P607
24f1faf468 Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev 2025-11-09 12:47:31 +08:00
tt-P607
43ac8afe60 fix(replyer): 彻底重构回复过滤器以处理深度嵌套格式
问题描述:

此前,模型在生成回复时,会偶发性地模仿并输出Prompt中用于示例的 [回复<...>] 格式。尽管经过多次迭代,原有的正则表达式过滤器仍无法有效处理包含多层嵌套括号的复杂情况,导致清理不彻底,最终发送的消息中仍残留部分不规范文本。

解决方案:

本次提交对 default_generator.py 中的 llm_generate_content 方法进行了彻底的重构,用一套更健壮、更简单的逻辑替换了原有的正则表达式方案:

采用“整体清除”策略: 放弃了复杂的模式匹配,转而实现了一个更直接的清除逻辑。现在,如果一条生成的消息以 [回复 开头,程序会寻找到该消息中 最后一个 ] 字符的位置。
精准切片: 将从消息开头到最后一个 ] 字符(包含该字符)之间的所有内容全部切除,只保留之后的部分作为最终回复。
日志记录: 保留了清晰的 logger.warning,在过滤器生效时,会详细记录原始内容与清理后的内容,便于持续监控模型行为。
优势:

鲁棒性: 这种新方法与括号的嵌套层数完全无关,无论模型生成多么复杂的嵌套结构,都能一举将其完全清除,从根本上解决了问题。
简洁性: 代码逻辑比复杂的正则表达式更清晰、更易于理解和维护。
验证:

创建了专门的测试脚本 Elysia/Bot/scripts/test/test_ultimate_filter.py。
脚本覆盖了多种复杂的、包含深度嵌套的失败案例以及正常的边界情况。
测试结果表明,新的过滤逻辑完美通过了所有测试,达到了预期的效果。
2025-11-09 12:47:19 +08:00
明天好像没什么
6a5648ba07 创建了新的反注入 2025-11-09 12:31:38 +08:00
tt-P607
402644900f feat(chat): 优化回复内容过滤器,杜绝格式模仿
核心问题:
修复了模型在生成回复时,偶尔会模仿并输出Prompt中用于示例的 [回复<...>] 格式的问题。此问题会导致最终发送的消息包含不应出现的多余文本。

实现方案:

精准定位过滤时机:
将过滤逻辑从原先的 send_api 前置到 default_generator 的 llm_generate_content 方法中。这确保了在LLM生成内容后、任何后续处理(如回复分割)前,第一时间对不规范内容进行清理,从根源上解决了问题。

强化正则表达式:
采用了一个更严格的正则表达式 r'\[\s*回复\s*<.+?>.*?\]',并设置了 re.DOTALL 标志。此举旨在“宁可错杀,不可放过”,能够更有效地匹配并清除各种复杂的、甚至包含换行的模仿格式。

处理嵌套残留:
在正则替换后,增加了一步额外的检查。如果清理后的字符串以 ] 开头(通常由嵌套括号引起),则会移除这个残留的字符,确保最终内容的绝对纯净。

增加日志监控:
为过滤器增加了 logger.warning 日志。当过滤器成功触发并清理内容时,会详细记录原始内容与清理后的内容,便于后续追踪和分析模型行为。

代码结构优化:

移除了 llm_generate_content 方法中原有的、效果较差的旧清理逻辑,避免了代码冗余。
修正了 build_memory_block 方法中一处错误的属性访问,将 stream.chat_history_manager 更正为 stream.context_manager,解决了潜在的 AttributeError。
最终效果:
通过以上修改,我们构建了一套健壮、精准且可观测的回复内容过滤机制,彻底解决了模型模仿系统消息格式的问题,显著提升了回复内容的质量与规范性
2025-11-09 01:07:27 +08:00
tt-P607
130a0fdb31 refactor(core): 简化回复清理并加强 API 调用此次提交彻底重构了回复清理逻辑,以提升可维护性,并在发送 API 中引入了多项防御性检查,以防止常见的运行时错误。通过将复杂的迭代清理算法替换为单一且更高效的正则表达式,回复生成过程得到了简化。这不仅提高了去除模型生成的头信息的可靠性,还显著降低了代码复杂性。在发送 API 中,实现了多个安全措施:- 修正了异步处理错误,通过移除同步字典操作上无效的 await,防止出现 TypeError。- 添加了预检验证,以确保文件上传有定义的目标,并且临时流指定了平台。- 现在一致将机器人用户 ID 转换为字符串,以消除潜在的类型相关不一致。最后,为了清晰起见,机器人的行为原则术语也进行了调整。 2025-11-09 00:50:23 +08:00
明天好像没什么
c8d7c09625 ruff 2025-11-07 21:01:45 +08:00
Windpicker-owo
d75476d41c feat: 增强聊天回复生成器,添加参与者信息和聊天历史处理逻辑 2025-11-06 15:15:53 +08:00
Windpicker-owo
ffdd4c6b9c feat(tool_history): 实现流工具历史管理器,以增强工具调用跟踪和缓存- 添加了 StreamToolHistoryManager,用于管理聊天流级别的工具调用历史。- 引入了 ToolCallRecord,用于详细记录工具调用,包括执行时间和缓存命中情况。- 集成了内存缓存和全局缓存系统,以高效检索结果。- 更新了 ToolExecutor,以使用新的历史管理器记录和获取工具调用。- 增强了 ExaSearchEngine,以限制返回结果数量并提升答案质量。- 重构了 CacheManager 中的缓存管理,以包括工具调用统计和性能指标。 2025-11-06 14:22:59 +08:00
Windpicker-owo
f87e8627e5 feat(memory): 移除传统内存系统并优化内存图谱
- 移除整个传统内存系统,包括内存系统模块及所有相关组件
- 删除弃用的内存组件:增强型内存激活器、海马体采样器、内存构建器、内存块、内存遗忘引擎、内存格式器、内存融合器、内存管理器、内存元数据索引、内存查询规划器、内存系统、消息集合处理器、消息集合存储、向量内存存储_v2
- 更新内存图配置,采用增强型检索设置
- 优化内存管理器查询功能,以分析完整对话上下文
- 更新机器人配置模板版本至7.6.1,新增内存图表检索参数

重大变更:旧版内存系统已被完全移除。所有内存功能现依赖于内存图系统。请更新配置以包含新的内存图检索参数。
2025-11-06 09:18:59 +08:00
Windpicker-owo
faca0d3d1b feat: 重构聊天系统的内存处理与格式化功能
- 更新了DefaultReplyer,采用新的内存格式化工具以提供更优质的内存描述。
- 已移除 Config 类中已弃用的内存配置。
- 在主系统中增强内存系统初始化检查,确保配置正确。
- 优化了MemoryManager,使其可直接使用全局配置进行内存设置。
- 新增了一个内存格式化工具,用于将内存对象转换为自然语言描述。
- 更新了内存工具,提供了更清晰的内存创建与管理指南。
- 精炼插件工具与使用提示,提升用户交互体验与记忆准确性。
- 根据内存系统结构的变化调整了机器人配置模板。
2025-11-06 08:47:18 +08:00
Windpicker-owo
c3ca811e46 feat(memory): 添加智能查询优化,移除瞬时记忆处理
重大改进:
- 在 MemoryManager 中添加 optimize_search_query 方法
- 使用小模型优化搜索查询,提高检索精确度
- search_memories 新增 optimize_query 和 context 参数
- 移除瞬时记忆处理(由其他系统负责)

技术实现:
- 使用 utils_small 模型优化查询语句
- 自动提取查询核心意图和关键信息
- 支持上下文感知(聊天历史、发言人)
- 失败时自动降级到原始查询

查询优化流程:
1. 提取聊天历史和发言人信息
2. 构建查询上下文
3. 调用小模型生成优化查询
4. 使用优化查询进行语义搜索
5. 返回相关记忆

default_generator.py 调整:
- 移除瞬时记忆处理逻辑
- 调用 manager.search_memories 时传入 context
- 启用 optimize_query 参数
2025-11-05 19:31:07 +08:00
Windpicker-owo
cd15c51e6b refactor(memory): 完全移除旧记忆系统,全面切换到新记忆图系统
重大变更:
- 移除 default_generator.py 中对旧增强记忆系统的所有调用
- 移除 prompt.py 中的记忆构建函数
- 记忆检索全面使用新记忆图系统
- 禁用旧记忆系统的自动存储逻辑

记忆构建流程:
- 记忆创建: LLM 通过 create_memory 工具主动创建
- 记忆检索: default_generator.py 自动检索
- 记忆传递: 通过 pre_built_params 传入 prompt

工具可用性:
- CreateMemoryTool: available_for_llm = True
- LinkMemoriesTool: available_for_llm = False
- SearchMemoriesTool: available_for_llm = False

技术细节:
- 提高记忆检索数量 top_k=10
- 降低重要性阈值 min_importance=0.3
- 修复类型错误和警告
2025-11-05 19:22:34 +08:00
Windpicker-owo
edd74bed9f feat(memory-graph): Step 2 - 集成记忆检索到提示词生成
- 修改 build_memory_block 方法,添加记忆图系统检索
- 在提示词构建时自动从记忆图系统中检索相关记忆
- 合并增强记忆系统和记忆图系统的检索结果
- 更新记忆格式化代码以使用合并后的记忆列表

技术细节:
- 使用 manager_singleton 获取全局记忆管理器
- 调用 search_memories 检索相关记忆 (top_k=5, min_importance=0.5)
- 将记忆格式化为兼容的数据结构并合并到 all_memories
- 保持与现有增强记忆系统的兼容性

测试验证:
- 成功创建测试记忆并检索
- 不同查询能找到相应的相关记忆
- 记忆图系统可正常被提示词生成器调用
2025-11-05 18:53:32 +08:00
tt-P607
d0aa090cc1 Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev 2025-11-04 08:20:48 +08:00
tt-P607
445b90560a fix(replyer): 移除历史记录的硬编码上限
修复了在构建聊天记录上下文时,已读历史消息被硬编码截断为50条的问题。

现在,`build_s4u_chat_history_prompts` 及其回退方法将完全遵循 `max_context_size` 配置,确保模型能获取到完整的上下文信息。
2025-11-04 08:20:41 +08:00
Windpicker-owo
b97470cf60 refactor(chat): 将用户引用处理从同步改为异步,优化性能 2025-11-03 23:11:49 +08:00
tt-P607
be7fe56372 refactor(replyer): tmd回复模型你再犯个蠢事试试?😡😡😡老子都这样子严防死守了,你要是还犯蠢我当场********************👿👿👿 2025-11-02 09:48:58 +08:00
tt-P607
f981cd2051 fix(replyer): 优化回复器提示词以修复戳一戳处理逻辑
- **问题现象:**
  回复模型(Replyer)在接收到“戳一戳”事件时,会错误地生成如“[戳了戳]”之类的文本回复,而不是交由动作执行器(Planner)处理`poke_user`动作。

- **根本原因:**
  1.  回复提示词模板中没有明确禁止输出此类文本,导致模型将其视为普通消息进行模仿。
  2.  模板中关于“可用动作”的描述不够明确,可能让回复模型误以为自己需要处理或决定这些动作。

- **解决方案:**
  1.  **增强指令:** 在所有核心回复模板 (`default_expressor_prompt`, `s4u_style_prompt`, `normal_style_prompt`) 中,明确增加了“‘戳一戳’不是文本消息,而是由`poke_user`动作处理的特殊互动,因此绝对禁止在回复中输出相关文字”的规则。
  2.  **明确职责:** 修改了 `build_prompt_reply_context` 方法中生成`action_descriptions`的逻辑,向回复模型强调其职责仅是生成回复文本,而动作的决策与执行由独立的模型负责,严禁其在回复中模仿或调用动作。

- **影响:**
  - 修复了“戳一戳”互动被错误处理为文本回复的BUG。
  - 增强了提示词的鲁棒性,明确了回复模型与决策模型之间的职责边界,降低了未来类似问题的发生概率。
2025-11-02 09:33:19 +08:00
minecraft1024a
5f384da489 refactor(chat): 简化日程状态提示逻辑
删除了在日程活动时间范围之外的冗余状态判断。现在,无论当前时间是否在活动时间段内,都会统一计算并展示活动的开始、结束、已进行和剩余时间,简化了代码逻辑并确保了信息展示的一致性。反正LLM自己会判断的,不需要咱操心那么多啦。
2025-11-01 19:31:34 +08:00
minecraft1024a
af5d75b463 回复器你不许传dict 2025-11-01 16:56:44 +08:00
minecraft1024a
5e7f17ebf9 refactor(api): 合并兴趣度API和关系API,以及扩展关系API 2025-11-01 11:38:12 +08:00
Windpicker-owo
33f434aafa fix(plugin): 禁用hello_world_plugin以防止意外启用
fix(replyer): 修改提示信息中的“这句话”为“这条消息”以提高表达准确性
2025-10-31 23:14:41 +08:00
Windpicker-owo
9ccf27d642 refactor(replyer): 更新init_prompt函数,添加格式化标记输出限制 2025-10-31 22:49:01 +08:00
minecraft1024a
bee9406c8d refactor(replyer): 统一消息与用户信息模型
将 `_generate_prompt` 方法中的 `reply_message` 参数统一为 `DatabaseMessages` 类型,并确保从 `anchor_message` 获取的 `sender_info` 被正确转换为 `UserInfo` 模型。同时,简化了情绪提示词的构建逻辑。

此外,在 `_get_master_prompt` 中增加了对 `user_info` 的空值检查,以避免潜在的属性访问错误。
2025-10-31 21:23:06 +08:00
minecraft1024a
0ffcae4d44 refactor(mood): 移除与唤醒愤怒和失眠相关的状态管理
删除了 `ChatMood` 类中的 `is_angry_from_wakeup` 属性,并移除了 `MoodManager` 中所有与之相关的方法,包括:
- `reset_mood_by_chat_id`
- `set_angry_from_wakeup`
- `clear_angry_from_wakeup`
- `start_insomnia`
- `stop_insomnia`
- `get_angry_prompt_addition`

这些逻辑现在由更通用的状态机和动作系统处理,简化了情绪模块的职责,使其更专注于核心情绪值的管理。
2025-10-31 21:13:54 +08:00
minecraft1024a
a29be48091 refactor(core): 优化类型提示与代码风格
本次提交对项目代码进行了广泛的重构,主要集中在以下几个方面:

1.  **类型提示现代化**:
    -   将 `typing` 模块中的 `Optional[T]`、`List[T]`、`Dict[K, V]` 等旧式类型提示更新为现代的 `T | None`、`list[T]`、`dict[K, V]` 语法。
    -   这提高了代码的可读性,并与较新 Python 版本的风格保持一致。

2.  **代码风格统一**:
    -   移除了多余的空行和不必要的空格,使代码更加紧凑和规范。
    -   统一了部分日志输出的格式,增强了日志的可读性。

3.  **导入语句优化**:
    -   调整了部分模块的 `import` 语句顺序,使其符合 PEP 8 规范。

这些更改不涉及任何功能性变动,旨在提升代码库的整体质量、可维护性和开发体验。
2025-10-31 20:56:17 +08:00
Windpicker-owo
655b4f20c6 refactor(message-manager): 删除自适应流管理器并优化上下文加载
-从distribution_manager和message_manager中删除adaptive_stream_manager.py及其集成
-删除过时的message_recv_backup.py,因为MessageRecv已被DatabaseMessages完全替换
-在context_manager中添加异步历史初始化,以便在启动时从数据库加载消息
-优化default_generator以使用内存中的消息,而不是重复的数据库查询
-修复message.py中的回复消息段处理,以处理DatabaseMessages格式
-从chat_stream.py中删除deepcopy并改进context_manager初始化
-清理bot.py和适配器响应方法中未使用的通知处理

突破性变化:自适应流管理系统已被完全删除。所有消息处理现在都依赖于DatabaseMessages格式。上下文管理器现在在创建时从数据库异步初始化历史记录。
2025-10-31 20:45:25 +08:00
Windpicker-owo
371041c9db 重构消息处理并用DatabaseMessages替换MessageRecv
-更新PlusCommand以使用DatabaseMessages而不是MessageRecv。
-将消息处理逻辑重构到一个新模块message_processor.py中,以处理消息段并从消息字典中创建DatabaseMessages。
-删除了已弃用的MessageRecv类及其相关逻辑。
-调整了各种插件以适应新的DatabaseMessages结构。
-增强了消息处理功能中的错误处理和日志记录。
2025-10-31 19:24:58 +08:00
Windpicker-owo
50260818a8 refactor(bot): 使用统一方法转换消息为数据库对象,简化代码逻辑 2025-10-31 16:02:14 +08:00
tt-P607
cd3bdf17c8 Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev 2025-10-30 18:28:31 +08:00
tt-P607
9152a06f5b fix(chat): 增强回复内容清理逻辑以处理嵌套回复头
先前的回复头清理逻辑无法有效处理模型生成的复杂或嵌套的回复结构,例如 `[回复<A>:[回复<B>:内容]],说:`,导致清理不彻底。

本次更新通过以下方式提升了清理的健壮性:
- 使用循环和更健壮的正则表达式,以递归方式剥离多层嵌套的回复头。
- 增加了一个基于 `],说:` 的 rsplit 作为最终防线,处理日志中观察到的其他特殊格式。
- 移除了可能存在的 `[SPLIT]` 标记,避免意外的消息分割。

此外,本次提交还更新了 QQ 表情列表,增加了新的表情并修正了一个格式错误。
2025-10-30 18:28:00 +08:00
Windpicker-owo
2c3895ef97 Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev 2025-10-30 17:35:29 +08:00
Windpicker-owo
ea7c1f22f9 feat(relationship): 重构关系信息提取系统并集成聊天流印象
- 在 RelationshipFetcher 中添加 build_chat_stream_impression 方法,支持聊天流印象信息构建
- 扩展数据库模型,为 ChatStreams 表添加聊天流印象相关字段(stream_impression_text、stream_chat_style、stream_topic_keywords、stream_interest_score)
- 为 UserRelationships 表添加用户别名和偏好关键词字段(user_aliases、preference_keywords)
- 在 DefaultReplyer、Prompt 和 S4U PromptBuilder 中集成用户关系信息和聊天流印象的组合输出
- 重构工具系统,为 BaseTool 添加 chat_stream 参数支持上下文感知
- 移除旧的 ChatterRelationshipTracker 及相关关系追踪逻辑,统一使用评分API
- 在 AffinityChatterPlugin 中添加 UserProfileTool 和 ChatStreamImpressionTool 支持
- 优化计划执行器,移除关系追踪相关代码并改进错误处理

BREAKING CHANGE: 移除了 ChatterRelationshipTracker 类及相关的关系追踪功能,现在统一使用 scoring_api 进行关系管理。BaseTool 构造函数现在需要 chat_stream 参数。
2025-10-30 16:58:26 +08:00
Windpicker-owo
f6349f278d feat(expression): 添加表达方式选择模式支持与DatabaseMessages兼容性改进
- 新增统一的表达方式选择入口,支持classic和exp_model两种模式
- 添加StyleLearner模型预测模式,可基于机器学习模型选择表达风格
- 改进多个模块对DatabaseMessages数据模型的兼容性处理
- 优化消息处理逻辑,统一处理字典和DatabaseMessages对象
- 在配置中添加expression.mode字段控制表达选择模式
2025-10-29 22:52:32 +08:00
tt-P607
76f33134df fix(chat): 清理模型意外生成的回复头
部分语言模型在生成回复时,会自行在内容开头添加如 `[回复<用户>的消息:]` 格式的回复头,这会导致最终消息中出现重复或格式错误的头部。

此提交通过正则表达式循环移除这些多余的回复头,确保输出内容整洁。
2025-10-29 17:33:02 +08:00
tt-P607
6649c4ce00 fix(chat): 修复上下文构建逻辑,确保总是合并数据库与会话历史
之前,仅在会话历史 (`read_messages`) 为空时,才会从数据库加载历史消息作为备用上下文。这可能导致在服务重启后或长时间对话中,上下文信息不完整,影响对话质量。

本次修改将流程调整为:始终先从数据库加载最近的历史消息,然后将其与当前会话中的消息进行合并与去重(以后者为准)。

这样可以确保无论在何种情况下,传递给模型的上下文都是最完整和准确的,从而显著提高对话的连贯性。
2025-10-29 15:20:38 +08:00
Windpicker-owo
919bcd4e2e feat(chat): 优化消息处理提示词与兴趣度显示逻辑
- 在默认回复器中移除未读消息的兴趣度显示,简化回复逻辑
- 在亲和流聊天器的计划过滤器中保留兴趣度显示,供planner决策使用
- 更新planner提示词,明确兴趣度优先原则但禁止在思考流中使用技术术语
- 统一历史消息区块的标题描述,提高可读性
2025-10-29 10:05:15 +08:00
minecraft1024a
ccbac891b6 refactor(reaction): 重构关键词反应系统为通用反应规则系统
将原有的 `keyword_reaction` 系统重构为一个更通用、更强大的 `reaction` 系统。新系统统一了关键词和正则表达式规则,并增加了按聊天流ID(`chat_stream_id`)进行规则作用域限定的功能。

主要变更包括:
- **统一配置模型**:将 `KeywordReactionConfig` 和 `KeywordRuleConfig` 合并重构为 `ReactionConfig` 和 `ReactionRuleConfig`,提供了更清晰、统一的规则定义方式。
- **增加作用域控制**:新的 `ReactionRuleConfig` 增加了 `chat_stream_id` 字段,允许规则被限定在全局范围或特定的聊天会话中。
- **简化逻辑实现**:`DefaultReplyer` 中的实现被重构,以适应新的配置模型,能够筛选并应用适用范围内的规则。
- **更新配置文件模板**:`bot_config_template.toml` 已更新,以反映新的 `[[reaction.rules]]` 配置结构,并提供了详细的注释说明。
- **新增辅助方法**:在 `ChatStream` 中添加了 `get_raw_id()` 方法,用于获取未哈希的原始聊天流ID,以支持新系统的作用域匹配。

BREAKING CHANGE: 关键词反应功能的配置结构已完全改变。旧的 `[keyword_reaction]` 配置不再兼容。用户需要将原有的 `keyword_rules` 和 `regex_rules` 迁移到新的 `[[reaction.rules]]` 格式。
2025-10-26 12:16:37 +08:00
minecraft1024a
a2eb7521d5 fix(chat): 修复当用户ID为空时主人认证失败的问题
在某些情况下(例如,某些平台或匿名使用场景),用户信息中可能不包含`user_id`。之前的代码没有处理这种情况,导致在调用`permission_api.is_master`时会因`user_id`为空而引发异常。

本次修改增加了对`user_id`的空值检查。如果`user_id`不存在,将直接返回空字符串,避免不必要的权限验证和潜在的错误,从而增强了代码的健壮性。
2025-10-25 17:15:20 +08:00
Eric-Terminal
e15573e9d6 feat(prompt): 添加主人认证提示词功能 (#47) 2025-10-25 15:55:12 +08:00
minecraft1024a
3c4a3b0428 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-10-25 13:31:22 +08:00
minecraft1024a
54993aa546 refactor(chat): 简化并硬编码prompt模板为s4u模式
移除了动态选择prompt模板的逻辑,直接使用`s4u_style_prompt`。这与最近移除`normal`模式并强制使用`s4u`模式的更改保持一致,简化了代码逻辑。
2025-10-25 10:03:28 +08:00
minecraft1024a
079a9a3fa0 refactor(prompt): 移除 normal 模式并强制使用 s4u 模式
删除了旧的 "normal" prompt 模式及其相关逻辑,包括 prompt 模板、上下文构建函数和配置选项。现在系统将统一并强制使用 "s4u" 模式进行回复生成。

主要变更:
- 从 `default_generator.py` 中移除了 `normal_style_prompt` 模板和模式选择逻辑。
- 从 `prompt.py` 中删除了 `_build_normal_chat_context` 和 `_prepare_normal_params` 等相关函数。
- 从 `official_configs.py` 中移除了 `prompt_mode` 配置项。
- 更新了 `bot_config_template.toml` 配置文件,移除了 `prompt_mode` 选项和相关的 normal 模式上下文共享组示例。

此重构简化了 prompt 生成流程,统一了上下文处理方式,减少了代码的复杂性和维护成本。
2025-10-25 09:56:14 +08:00