tt-P607
dcc8f6477e
refactor(chat): 简化括号内容过滤
...
将用于过滤 `[表情包:...]` 和 `[图片:...]` 等内容的多个特定正则表达式模式替换为一个更通用的 `[.*?]` 模式。
此更改简化了代码,并通过处理方括号内的任何内容(包括未处理的格式如 `[at=...]`)提高了过滤的稳健性。
2025-11-13 20:38:59 +08:00
tt-P607
08c1d73f77
refactor(chat):简化和改进回复格式过滤
...
之前用于过滤 `[回复...]` 格式的实现依赖于多个正则表达式。这种方法比较复杂,并且无法正确处理深度嵌套的回复字符串。
此提交重构了逻辑,采用更简单、更稳健的基于字符串的方法。通过在以 `[回复` 开头的字符串中找到最后一个闭合括号 `]`,新逻辑可以可靠地去除整个回复前缀,无论嵌套深度如何。这提高了解析的准确性,并简化了代码。
2025-11-13 11:28:25 +08:00
Windpicker-owo
310256e24d
feat(attention): 添加注意力优化器以增强提示词多样性和防止注意力退化
...
refactor(prompt): 使用 asyncio.gather 替代 as_completed 以提升并发性能
refactor(config): 添加注意力优化配置选项
refactor(prompt_params): 增加注意力优化开关
2025-11-12 22:37:35 +08:00
Windpicker-owo
09db6c0c88
refactor: 移除对机器人自身用户ID的特殊处理,统一使用QQ号进行比较
2025-11-12 17:33:51 +08:00
Windpicker-owo
b427960441
feat(reply): 引入统一格式过滤器,优化回复内容清理逻辑
2025-11-10 14:12:11 +08:00
明天好像没什么
c8d7c09625
ruff
2025-11-07 21:01:45 +08:00
Windpicker-owo
a6d2aee781
feat(affinity-flow): 通过标签扩展与提及分类增强兴趣匹配
...
- 实施扩展标签描述以实现更精确的语义匹配
- 增加强/弱提及分类,并附带独立的兴趣评分
- 重构机器人兴趣管理器,采用动态嵌入生成与缓存机制
- 通过增强的@提及处理功能优化消息处理
- 更新配置以支持回帖提升机制
- 将亲和力流量聊天重新组织为模块化结构,包含核心、规划器、主动响应和工具子模块
- 移除已弃用的规划器组件并整合功能
- 为napcat适配器插件添加数据库表初始化功能
- 修复元事件处理器中的心跳监控
2025-11-03 22:24:51 +08:00
明天好像没什么
0e129d385e
refactor: 统一类型注解风格并优化代码结构
...
- 将裸 except 改为显式 Exception 捕获
- 用列表推导式替换冗余 for 循环
- 为类属性添加 ClassVar 注解
- 统一 Union/Optional 写法为 |
- 移除未使用的导入
- 修复 SQLAlchemy 空值比较语法
- 优化字符串拼接与字典更新逻辑
- 补充缺失的 noqa 注释与异常链
BREAKING CHANGE: 所有插件基类的类级字段现要求显式 ClassVar 注解,自定义插件需同步更新
2025-10-31 22:42:39 +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
371041c9db
重构消息处理并用DatabaseMessages替换MessageRecv
...
-更新PlusCommand以使用DatabaseMessages而不是MessageRecv。
-将消息处理逻辑重构到一个新模块message_processor.py中,以处理消息段并从消息字典中创建DatabaseMessages。
-删除了已弃用的MessageRecv类及其相关逻辑。
-调整了各种插件以适应新的DatabaseMessages结构。
-增强了消息处理功能中的错误处理和日志记录。
2025-10-31 19:24:58 +08:00
minecraft1024a
0ed35ff33b
refactor(chat): 简化回复分割逻辑
...
移除了对 `split_mode == "llm"` 的显式检查。现在,只要响应文本中存在 `[SPLIT]` 标记,就会使用该标记进行分割。如果不存在,则统一回退到基于标点的传统分割模式。这简化了代码
2025-10-26 11:52:55 +08:00
tt-P607
82c288db6e
之前改的打字有点快了()
2025-10-21 11:59:26 +08:00
minecraft1024a
8c97774465
ruff ci
2025-10-18 11:11:05 +08:00
tt-P607
ce3fe95b37
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-10-17 14:44:33 +08:00
tt-P607
c51d72b945
feat(chat): add protection for quoted content in response processing
...
In the LLM response post-processing flow, a new protection layer for quoted content has been added. This prevents the sentence splitter from incorrectly breaking up complete sentences enclosed in quotation marks, thus ensuring the integrity of the quoted text.
- Adds `protect_quoted_content` and `recover_quoted_content` functions.
- Upgrades the response processing to a three-layer protection system (kaomoji, quotes, special blocks).
- Also adjusts the default values for typing simulation time to improve user experience.
2025-10-17 14:21:32 +08:00
tt-P607
1f26238368
refactor(chat): overhaul response processing for robustness and integrity
...
This commit redesigns the LLM response handling pipeline to gracefully manage complex, long, and structured outputs, shifting from a restrictive filtering model to a more resilient and content-aware approach.
The previous implementation suffered from brittleness, often discarding valid responses or corrupting formatted content. This refactor introduces two core changes to ensure response integrity:
1. **Adaptive Message Merging:** Replaces the rigid message count and length limits, which caused the silent dropping of valid long-form answers. The new logic dynamically merges the shortest adjacent sentences if a response is overly fragmented, ensuring the full thought is preserved while adhering to display limits.
2. **Content-Aware Pre-processing:** Implements a protection mechanism for special text formats. It now identifies and isolates Markdown code blocks, LaTeX-style math equations, and other code-like segments using placeholders before splitting or typo generation. This prevents formatting corruption and ensures technical content is rendered correctly.
Additionally, the LLM prompt for splitting has been refined to emphasize logical coherence over simple fragmentation.
Finally, this commit also hardens the `LLMRequest` class against race conditions by adding an `asyncio.Lock` to serialize generation requests, improving the system's stability under concurrent workloads.
2025-10-17 02:34:39 +08:00
minecraft1024a
9d705463ce
ruff fix但指定了--unsafe-fixes
2025-10-05 21:48:32 +08:00
minecraft1024a
2c74b472ab
style: 统一代码风格并进行现代化改进
...
对整个代码库进行了一次全面的风格统一和现代化改进。主要变更包括:
- 将 `hasattr` 等内置函数中的字符串参数从单引号 `'` 统一为双引号 `"`。
- 采用现代类型注解,例如将 `Optional[T]` 替换为 `T | None`,`List[T]` 替换为 `list[T]` 等。
- 移除不再需要的 Python 2 兼容性声明 `# -*- coding: utf-8 -*-`。
- 清理了多余的空行、注释和未使用的导入。
- 统一了文件末尾的换行符。
- 优化了部分日志输出和字符串格式化 (`f"{e!s}"`)。
这些改动旨在提升代码的可读性、一致性和可维护性,使其更符合现代 Python 编码规范。
2025-10-05 13:21:27 +08:00
雅诺狐
413973979c
refactor(deps): 将jieba分词库替换为rjieba
2025-10-05 12:08:18 +08:00
Windpicker-owo
624298e1b8
refactor(chat): 异步化聊天系统并重构兴趣值计算机制
...
将同步调用改为异步调用以提升性能,重构兴趣值计算流程以支持更灵活的组件化架构。主要改进包括:
- 异步化ChatManager相关方法,避免阻塞主线程
- 重构兴趣值计算系统,从插件内部计算改为通过兴趣管理器统一处理
- 新增should_act字段支持更细粒度的动作决策
- 优化初始化逻辑,避免构造函数中的异步操作
- 扩展插件系统支持兴趣计算器组件注册
- 更新数据库模型以支持新的兴趣值相关字段
这些改进提升了系统的响应性能和可扩展性,同时保持了API的向后兼容性。
2025-10-05 01:25:52 +08:00
John Richard
7923eafef3
re-style: 格式化代码
2025-10-02 20:26:01 +08:00
John Richard
ecb02cae31
style: 格式化代码
2025-10-02 19:38:39 +08:00
Windpicker-owo
fd76e36320
refactor(chat): 迁移数据库操作为异步模式并修复相关调用
...
将同步数据库操作全面迁移为异步模式,主要涉及:
- 将 `with get_db_session()` 改为 `async with get_db_session()`
- 修复相关异步调用链,确保 await 正确传递
- 优化消息管理器、上下文管理器等核心组件的异步处理
- 移除同步的 person_id 获取方法,避免协程对象传递问题
修复 deepcopy 在 StreamContext 中的序列化问题,跳过不可序列化的 asyncio.Task 对象
删除无用的测试文件和废弃的插件清单文件
2025-09-28 20:40:46 +08:00
Windpicker-owo
425643c53a
Merge branch 'afc' of https://github.com/MoFox-Studio/MoFox_Bot into afc
2025-09-21 18:02:28 +08:00
Windpicker-owo
b5573333f8
feat(affinity-flow): 优化提及检测逻辑和阈值配置
...
- 简化提及检测逻辑,移除冗余的私聊检查变量
- 使用配置项 mention_bot_adjustment_threshold 替换硬编码的50%阈值
- 在消息处理中清除开头可能存在的空行
- 增加首次认识用户的信息存储方法,避免未知用户处理逻辑
- 调整消息管理器检查间隔从2秒到5秒,减少系统负载
- 修复计划执行器中用户ID比较逻辑,防止自我回复死循环
2025-09-21 18:01:38 +08:00
tt-P607
ceb4d2d7bb
fix(chat): 修复并优化消息回复与ID处理逻辑
...
先前的消息回复机制存在多个问题:回复行为随机且不可靠,临时消息ID生成逻辑过于复杂,且在规划和执行过程中ID转换容易出错,导致回复失败。
本次提交通过以下几点进行了全面的修复与优化:
- **简化ID生成**:将临时的上下文消息ID生成逻辑从“索引+随机数”简化为纯索引(如 `m1`, `m2`),使其更可预测且易于调试。
- **修正ID替换**:在 `plan_filter` 中增加了关键逻辑,确保在执行 `reply` 动作前,将计划中使用的临时 `target_message_id` 替换为真实的数据库消息ID。
- **稳定回复行为**:移除了 `action_manager` 中的随机回复判断,现在只要存在上下文消息,就会触发引用回复。同时将各 `send_api` 的 `set_reply` 参数默认值改为 `True`,使回复成为默认行为。
- **增强ID兼容性**:修复了 `napcat_adapter` 中将消息ID强制转换为整数的问题,并为 `send_api` 增加了ID回退查找,提高了对不同平台消息ID格式的兼容性。
2025-09-21 08:46:59 +08:00
Windpicker-owo
444f1ca315
ruff,私聊视为提及了bot
2025-09-20 22:34:22 +08:00
tt-P607
0cb2fa3373
feat(chat): 为回复分割器添加 llm 与 punctuation 模式
...
本次更新重构了回复分割功能,引入了 `split_mode` 配置项,允许用户在两种分割模式之间进行选择,提供了更大的灵活性。
- **`llm` 模式**: 延续了由大语言模型通过 `[SPLIT]` 标记决定断句的功能。此模式下的提示词(Prompt)已进一步优化,以引导模型做出更自然的分割。
- **`punctuation` 模式**: 恢复了传统的基于标点符号的分割逻辑。这已设为新的默认模式,确保用户更新后行为与旧版本保持一致。
此外,`at_user` 插件也进行了适配,以正确处理由 `llm` 模式可能产生的多段消息。
2025-09-11 17:12:01 +08:00
tt-P607
62c548ad2b
feat(chat): 实现由 LLM 控制的自然回复分割
...
之前基于标点符号的自动分割逻辑较为僵硬,有时会破坏回复的连贯性,导致对话体验不佳。
本次更新引入了一种由 LLM 主导的回复分割机制:
1. 在 Prompt 中增加了明确的分割指令,引导 LLM 在需要模拟人类对话停顿或转折时,使用 `[SPLIT]` 标记。
2. 后端回复处理逻辑相应更新,优先根据 `[SPLIT]` 标记分割消息。
3. 若 LLM 未提供 `[SPLIT]` 标记,则将整段回复作为单条消息发送,避免了不必要的拆分。
此项改动旨在让消息的发送节奏更贴近真实人类的聊天习惯,从而提升交互的自然感和流畅度。
2025-09-11 16:09:48 +08:00
minecraft1024a
2241db3ebf
Revert "feat(chat): 实现发送错别字后自动撤回修正的功能"
...
This reverts commit fd5d951501 .
2025-09-06 20:56:13 +08:00
minecraft1024a
59985cb905
fix(chat): 修复 kaomoji 恢复函数的参数类型
...
在之前的重构中,`recover_kaomoji` 函数的调用被简化,但在此处调用时忘记移除数组包裹,导致传递了错误的参数类型。此提交删除了多余的方括号,确保将字符串直接传递给 `recover_kaomoji` 函数。
2025-09-06 16:29:00 +08:00
minecraft1024a
bf29407538
refactor(chat): 简化 kaomoji 恢复函数的参数传递
...
将 `recover_kaomoji` 函数的调用从传递列表 `[s["..."]]` 改为直接传递字符串 `s["..."]`。此更改简化了代码,并与函数预期的输入类型保持一致,提高了代码的可读性和健壮性。
2025-09-06 16:24:31 +08:00
minecraft1024a
4e639249c3
fix(chat): 修复错别字修正功能中的 kaomoji 恢复逻辑
...
在处理类型为 "typo" 的句子时,`recover_kaomoji` 函数的调用方式有误。原先代码将 `s["correction"]` 包装在列表中 (`[s["correction"]]`) 进行传递,这与函数的预期输入不符,可能导致在修正错别字时无法正确恢复 kaomoji 表情。
本次提交移除了不必要的列表包装,确保将 `s["correction"]` 直接传递给 `recover_kaomoji` 函数,从而修正了该问题。
2025-09-06 16:23:07 +08:00
minecraft1024a
fd5d951501
feat(chat): 实现发送错别字后自动撤回修正的功能
...
引入了一个新的聊天交互机制:当机器人发送了包含“错别字”的消息后,会在短暂延迟后自动撤回该消息,并发送正确的版本。此功能旨在模拟更真实的人类打字行为,增加交互的趣味性和拟人化程度。
主要变更:
- **错别字处理流程**:
- `ResponseHandler`现在会识别出带有错别字的消息,并在发送后创建一个异步任务来处理后续的修正。
- 新增`handle_typo_correction`方法,该方法会随机延迟2-4秒,然后调用新的`recall_message` API撤回原消息,并重新发送修正后的内容。
- **API扩展**:
- `send_api`中增加了`recall_message`函数,用于调用适配器执行消息撤回操作。
- `send_response`的返回值从单个字符串`reply_text`变更为元组`(reply_text, sent_messages)`,以便将已发送的消息信息(包括ID和类型)传递给上层调用者。
- **数据结构调整**:
- `process_llm_response`的返回类型从`list[str]`调整为`list[dict[str, str]]`,以支持更复杂的响应类型,如包含原文、错别字和修正建议的`typo`类型。
- **代码优化与重构**:
- 对`ChineseTypoGenerator`进行了大量的代码清理、注释补充和逻辑优化,使其代码更清晰、更易于维护。
- 修复了多处代码中的类型注解和潜在的空指针问题,提高了代码的健壮性。
2025-09-06 15:44:52 +08:00
Windpicker-owo
8149731925
修复代码格式和文件名大小写问题
2025-08-31 20:50:17 +08:00
tt-P607
0a277c656e
fix(chat): 处理截断消息时message为None的情况
...
在 `truncate_message` 函数中,如果传入的 `message` 参数为 `None`,会导致 `len(message)` 抛出 `TypeError`。本次提交增加了对 `None` 值的检查,确保在处理 `None` 时函数能正常返回空字符串,从而提高代码的健壮性。
2025-08-27 18:21:35 +08:00
minecraft1024a
3bef6f4bab
fix(embedding): 彻底解决事件循环冲突导致的嵌入生成异常
...
通过以下改动修复嵌入生成过程中的事件循环相关问题:
- 在 EmbeddingStore._get_embedding 中,改为同步创建-使用-销毁的新事件循环模式,彻底避免嵌套事件循环问题
- 调整批量嵌入 _get_embeddings_batch_threaded,确保每个线程使用独立、短生命周期的事件循环
- 新增 force_new 参数,LLM 请求嵌入任务时强制创建新的客户端实例,减少跨循环对象复用
- 在 OpenAI 客户端的 embedding 调用处补充详细日志,方便排查网络连接异常
- get_embedding() 每次都重建 LLMRequest,降低实例在多个事件循环中穿梭的概率
此次改动虽然以同步风格“硬掰”异步接口,但对现有接口零破坏,确保了向量数据库及相关知识检索功能的稳定性。(还有就是把的脚本文件夹移回来了)
2025-08-19 20:41:00 +08:00
雅诺狐
2d4745cd58
初始化
2025-08-11 19:34:18 +08:00