Commit Graph

3129 Commits

Author SHA1 Message Date
Windpicker-owo
313c7eec17 修复空回复检测,同时修复tool_call 2025-11-19 22:48:29 +08:00
tt-P607
700c8dfa6f fix(chat): 处理截断消息时message为None的情况
在 `truncate_message` 函数中,如果传入的 `message` 参数为 `None`,会导致 `len(message)` 抛出 `TypeError`。本次提交增加了对 `None` 值的检查,确保在处理 `None` 时函数能正常返回空字符串,从而提高代码的健壮性。
2025-11-19 22:48:27 +08:00
Furina-1013-create
1f800be3d1 feat(plugin_system): 增加工具执行日志记录
feat(plugin_system): 增加工具执行日志记录

在工具执行前添加一行日志,用于记录正在调用的工具名称和参数,方便调试和追踪。
2025-11-19 22:48:25 +08:00
雅诺狐
1f5412d3a9 Update instant_memory.py 2025-11-19 22:48:25 +08:00
Windpicker-owo
e068663ef9 Revert "【迁移】工具系统再完善:工具缓存、ttl支持、自动记录、长期保存、自动清理缓存、将记录与执行分离、api记录查询、时间聊天工具筛选查询..."
This reverts commit 80ab0c687c.
2025-11-19 22:48:24 +08:00
Windpicker-owo
adfacd883c 【迁移】工具系统再完善:工具缓存、ttl支持、自动记录、长期保存、自动清理缓存、将记录与执行分离、api记录查询、时间聊天工具筛选查询... 2025-11-19 22:48:23 +08:00
Furina-1013-create
7cc9d37a4e chore(deps): 导入 json 模块 2025-11-19 22:48:19 +08:00
minecraft1024a
5f9c752e81 chore(llm_models): 在 LLMRequest 初始化中定义 model_name 变量,來修复某些神秘的bug 2025-11-19 22:48:18 +08:00
minecraft1024a
d21b403405 refactor(config): 移除主动思考提示词模板以简化配置
主动思考的提示词 (`proactive_thinking_prompt_template`) 已从配置文件中移除。此举旨在简化用户的配置过程,现在该提示词将由内部动态管理,以确保更佳的适应性和效果。

此外,为支持未来的功能扩展,本次更新在日志系统中为多个新模块(如计划生成器、权限管理、网页搜索插件、反注入系统等)添加了颜色和别名配置,提高了日志输出的可读性。

BREAKING CHANGE: 配置项 `proactive_thinking_prompt_template` 已被废弃并移除。请从您的配置文件中删除此项,主动思考功能将自动使用新的内部提示词逻辑。
2025-11-19 22:48:15 +08:00
minecraft1024a
d52c37f683 refactor(llm_models): 移除官方Gemini客户端并改用aiohttp实现
官方的 `google-generativeai` 库存在一些问题且似乎已不再积极维护,导致依赖关系和稳定性方面存在风险。

为提高稳定性和可维护性,现已移除基于该官方库的 `gemini_client.py` 实现。相应地,在配置文件模板中,`client_type` 已从 "gemini" 更新为 "aiohttp_gemini",以引导用户使用新的、基于 `aiohttp` 的异步客户端。
2025-11-19 22:48:14 +08:00
minecraft1024a
36021284da refactor(config): 整合搜索服务配置并移除废弃选项
将原先独立的 Exa 和 Tavily 搜索引擎配置项合并到 `web_search` 配置块中,以实现更统一的管理。同时,移除了已废弃的 `Telemetry` 和部分 `Experimental` 功能配置,简化了整体配置文件结构。

主要变更:
-   `ExaConfig` 和 `TavilyConfig` 被移除,其 API 密钥设置已迁移至 `WebSearchConfig`。
-   删除了 `TelemetryConfig` 及其在主配置中的引用。
-   简化了 `planner` 的自定义提示词逻辑,现在仅通过内容是否为空来判断是否启用。
-   更新了配置文件模板,以反映上述结构调整并移除过时的注释和配置项。
2025-11-19 22:48:12 +08:00
Windpicker-owo
2e79f538f2 修复双引号问题 2025-11-19 22:48:07 +08:00
minecraft1024a
38bfdfd7a0 refactor(config): 将反截断设置移至模型配置 #真的能算refactor吗
反截断(anti-truncation)功能与特定模型的行为和能力更为相关,而不是任务本身的属性。

此更改将该设置从 `TaskConfig` 移动到 `ModelInfo`,以实现更合理的配置分组和更精细的控制。代码逻辑和配置文件模板也已相应更新。

BREAKING CHANGE: `anti_truncation` 配置项已从 `[model_task_config]` 部分移动到 `[[models]]` 下的具体模型配置中。用户需要更新其配置文件以适配新结构。
2025-11-19 22:48:05 +08:00
minecraft1024a
dd9aecea14 feat(maizone): 新增QQ空间互通组功能,根据聊天上下文生成说说
引入了全新的“QQ空间互通组”功能。用户可以配置多个群聊为一个互通组。
在通过指令发布说说时,系统会自动获取这些群聊的近期聊天记录作为上下文,从而生成与当前讨论话题更相关的说说内容。

- 在 `config.toml` 中新增了 `[maizone_intercom]` 配置项用于定义互通组。
- 重构并增强了动态(说说)的拉取逻辑,提高了对不同数据格式的兼容性和解析的稳定性。
- 对项目中的多个文件进行了代码清理,移除了未使用的导入,使代码更加整洁。
2025-11-19 22:48:02 +08:00
minecraft1024a
74c83fdc01 feat(monthly_plan): 增强月度计划系统,引入状态管理和智能抽取
对月度计划系统进行了全面的重构和功能增强,以提供更智能、更可持续的计划管理体验。

主要变更包括:
- **引入状态生命周期**: 废弃了原有的 `is_deleted` 软删除标记,引入了更明确的 `status` 字段 (`active`, `completed`, `archived`),用于管理计划的整个生命周期。
- **增加使用统计与自动完成**: 新增 `usage_count` 和 `last_used_date` 字段来跟踪计划的使用情况。当计划使用次数达到可配置的阈值后,会自动标记为 `completed`。
- **实现智能计划抽取**: 为每日日程生成实现了新的智能抽取算法。该算法会优先选择使用次数较少且近期未被使用的计划,以增加计划的多样性并避免重复。
- **更新配置选项**: 移除了旧的概率删除相关配置,增加了 `completion_threshold`、`avoid_repetition_days` 等新选项以支持新逻辑。
- **数据库模型更新**: 更新了 `MonthlyPlan` 的数据库模型和索引,以支持新功能并优化查询性能。保留 `is_deleted` 字段以兼容旧数据。
2025-11-19 22:47:58 +08:00
tt-P607
0dae3153d2 fix(maizone_refactored): 修复获取cookie时响应为空导致的错误 2025-11-19 22:47:42 +08:00
tt-P607
6532c30d5d fix(chat): 修复关键词非列表形式时导致的解析错误
在处理记忆关键词时,旧代码使用 `ast.literal_eval` 来解析存储为字符串的关键词列表。当关键词字段为空或格式不正确时,这会引发 `ValueError` 或 `SyntaxError`。

本次修改将解析方式更换为 `json.loads`,并增加了 `try-except` 块来处理可能的 `json.JSONDecodeError`。同时,在添加记忆时,使用 `json.dumps` 来确保关键词列表被正确地序列化为 JSON 字符串,从而保证了数据存储和读取的健壮性和一致性。
2025-11-19 22:47:38 +08:00
tt-P607
3835475ba0 fix(llm_models): 修复模型信息不存在时引发的属性错误
在处理模型信息 `model_info` 为 `None` 的情况下,直接访问 `model_info.name` 会导致 `AttributeError`。

此提交通过以下方式修复了该问题:
- 在 `_select_model` 调用后立即将 `model_info.name` 赋值给 `model_name` 变量,确保后续使用时该变量已定义。
- 在 `_handle_error` 方法中,当 `model_info` 可能为 `None` 时,增加了一个条件检查,如果 `model_info` 不存在,则将 `model_name` 设为 "unknown",从而避免了潜在的 `AttributeError`。
2025-11-19 22:47:19 +08:00
雅诺狐
ab3a36bfa7 全面更换orjson 2025-11-19 22:47:10 +08:00
雅诺狐
9f514d8799 更新作者信息 2025-11-19 22:46:40 +08:00
tt-P607
88da5e24ca feat(config): 优化视频分析并引入可配置的提示词
将视频分析的提示词从硬编码字符串修改为从全局配置中读取,提高了灵活性和可维护性。同时,在生成回复时注入了新的引导语,使AI能以第一人称分享观后感,优化了用户体验。
2025-11-19 22:46:39 +08:00
Furina-1013-create
613ef82328 这个不会改视频识别的入来优化了一下视频识别的prompt,狐狐大佬补药鞭挞我呜呜呜~
同步改进bot配置文件模板(这回没有忘记改版本号了)
2025-11-19 22:46:37 +08:00
Furina-1013-create
372226434f 炸飞了一点石山,将主动思考的id配置修改为分群聊/私聊的两个id配置然后增加了区分平台的功能
顺手改了一个注释的位置,它在的位置错了
应该在主动思考上面而不是下面的
2025-11-19 22:46:36 +08:00
tt-P607
3241ab70df 修改了提示词,现在bot不会认为自己看的是视频分析,而是自己看的了 2025-11-19 22:46:35 +08:00
Windpicker-owo
3bf38bb1dc 消息处理的细节 2025-11-19 22:46:33 +08:00
tt-P607
be9a926bcc refactor(chat): 统一事件触发器中的stream_id来源
将`cycle_processor`中事件触发的`stream_id`来源从`self.chat_stream.stream_id`更改为`self.context.stream_id`,以保持代码库中的一致性。

在`default_generator.py`中初始化了`llm_response`变量,以避免潜在的引用前赋值错误。
2025-11-19 22:46:33 +08:00
Windpicker-owo
f65049d1de 修复post_llm,以及event使用说明 2025-11-19 22:46:32 +08:00
Windpicker-owo
dfd8d4ca9e 注册EventHandler组件 2025-11-19 22:46:30 +08:00
雅诺狐
82f7ae5d73 更新版本号 2025-11-19 22:46:29 +08:00
雅诺狐
c92e2a4230 feat(video): 添加按时间间隔的帧提取模式并重构配置读取逻辑
- 新增 time_interval 帧提取模式,支持按指定时间间隔提取视频帧
- 重构 VideoAnalyzer 初始化代码,使用 getattr 统一获取配置参数
- 简化配置读取逻辑,移除冗余的 try-catch 结构
- 优化 _extract_frames_worker 函数参数,支持新的提取模式配置
2025-11-19 22:46:28 +08:00
雅诺狐
56efa7a462 Delete video_worker.py 2025-11-19 22:46:27 +08:00
雅诺狐
8735bfbc88 feat: 添加视频处理多线程优化和消息切片重组功能
- 新增视频帧提取的线程池支持,提升大视频文件处理性能
- 集成消息切片重组器,支持长消息的自动重组处理
- 优化视频帧提取算法,使用numpy进行数值计算优化
- 重构权限管理插件,修复属性访问和方法签名问题
- 清理未使用的导入和代码,提升代码质量
- 默认启用插件管理功能
2025-11-19 22:46:27 +08:00
Windpicker-owo
5d1390d546 event重构暂时完成,待测试 2025-11-19 22:46:26 +08:00
Windpicker-owo
902a031a9d feat: 迁移Windpicker-owo的Event系统重构\n\n- 引入新的BaseEvent和HandlerResult架构\n- 实现灵活的事件订阅与激活机制\n- 添加事件管理器单例模式\n- 支持事件缓存和权重排序\n- 统一事件处理接口 2025-11-19 22:46:25 +08:00
雅诺狐
c137cbfb69 更新 sqlalchemy_models.py 2025-11-19 22:46:23 +08:00
雅诺狐
2094f4916a 损坏测试
通过更改638行,使数据库处于损坏状态
2025-11-19 22:46:23 +08:00
tt-P607
abd2f3c35d feat(log): 优化唤醒和休眠日志的输出频率
对唤醒度和休眠检查的日志记录进行节流,以减少在消息密集时产生的日志数量。

- 在 `WakeUpManager` 中,唤醒度变化的日志现在每30秒最多输出一次 INFO 级别的日志,其余时间的日志降为 DEBUG 级别。
- 在 `ScheduleManager` 中,休眠期间被唤醒的日志也增加了类似的节流逻辑,以避免日志刷屏。
2025-11-19 22:46:21 +08:00
tt-P607
6434708f23 我或许修好了反截断?但我无法验证,用gemini 2.5 pro生成日程截断太严重了,连完整的二十四小时都无法输出,gemini 2.5 Flash截断好很多,我试了5次生成的都是完整的,可能修好了?但有待验证,建议在待办上打个问号 2025-11-19 22:46:20 +08:00
tt-P607
6e28f60bd6 feat(config): 视频分析添加抽帧模式和间隔配置
为视频分析配置增加了 `frame_extraction_mode` 和 `frame_interval_seconds` 两个新选项。这允许用户选择是按固定数量抽帧还是按时间间隔抽帧,提供了更灵活的视频处理方式。
2025-11-19 22:46:20 +08:00
tt-P607
89bee8db90 feat(video): 新增按时间间隔抽帧模式
增加了按时间间隔提取视频帧的新模式,与原有的固定总帧数模式并存。用户现在可以通过配置文件选择最适合其需求的抽帧方式。

- 新增 `frame_extraction_mode` 配置项,可选值为 "fixed_number" (固定总帧数) 或 "time_interval" (按时间间隔)。
- 新增 `frame_interval_seconds` 配置项,用于指定时间间隔模式下的抽帧秒数。
- `max_frames` 配置项现在仅在 "fixed_number" 模式下生效。
- 更新了 `VideoAnalyzer` 类以支持两种抽帧逻辑,并从配置中读取新参数。
- 相应地更新了配置文件模板 `bot_config_template.toml`。
2025-11-19 22:46:19 +08:00
雅诺狐
978af6b2ca Update permission_manager.py 2025-11-19 22:46:18 +08:00
雅诺狐
34252ea4a0 refactor: 清理代码质量和移除未使用文件
- 移除未使用的导入语句和变量
- 修复代码风格问题(空格、格式化等)
- 删除备份文件和测试文件
- 改进异常处理链式调用
- 添加权限系统数据库模型和配置
- 更新版本号至6.4.4
- 优化SQL查询使用正确的布尔表达式
2025-11-19 22:46:18 +08:00
tt-P607
badd0c3364 feat(config): 增加可配置的唤醒愤怒提示词
将唤醒后愤怒状态下的固定提示词修改为可在配置文件中自定义的选项,提高了灵活性。
默认值保持原有的提示词内容。
2025-11-19 22:46:16 +08:00
tt-P607
c3e72de10e refactor(schedule): 移除日程生成的结束标记和相关处理逻辑
由于项目内置的LLM响应处理机制已能有效防止消息截断,原先为保证日程生成完整性而引入的`###SCHEDULE_END###`结束标记及其相关检查、清理逻辑已不再必要。

本次重构删除了以下内容:
- Prompt中关于添加结束标记的指令
- `_check_response_completeness`方法
- `_clean_response`方法
- 生成循环中对结束标记的检查和清理调用

这简化了`ScheduleManager`的代码,使其更专注于核心的日程生成与验证逻辑,提高了代码的可读性和维护性。
2025-11-19 22:46:15 +08:00
tt-P607
58804a7b90 改成异步防止阻塞主程序,还有就是改成无上限重试生成日程,以及结尾加上结束标记,防止虽然时间完整但是日程不完整的截断,tmd傻逼gemini,我去你mlgb,畜生玩意!怎么那么爱空回和截断消息!wcnm!傻逼玩意儿!你别让我逮到你了! 2025-11-19 22:46:15 +08:00
tt-P607
6550c7d71a feat(maizone): 新增日程活动黑名单以防止自动发送
新增了一个配置项 `schedule.activity_blacklist`,允许用户定义一个包含特定关键字的列表。当定时任务检测到的当前日程活动包含这些关键字(如“睡觉”、“睡眠”)时,将跳过本次自动发送说说的流程。

此功能主要解决了在睡眠等不希望被打扰的活动期间,插件仍然会根据日程表自动发送说说的问题。通过引入黑名单机制,可以更智能地过滤掉不适合发布动态的活动,提升了用户体验和插件的实用性。

主要的逻辑变更在 `SchedulerService` 中:
- 在获取到当前活动后,会先检查活动名称是否包含黑名单中的任意关键字。
- 如果匹配成功,则记录日志并跳过本次发送,同时更新 `last_processed_activity` 状态,以避免在黑名单活动结束后立即错误地触发发送。
- 只有当活动不在黑名单中,且与上一次处理的活动不同时,才会触发发送流程。
2025-11-19 22:46:14 +08:00
tt-P607
303d51f437 fix(chat): 修复睡眠模式下无法通过艾特唤醒的问题
在之前的实现中,当机器人处于睡眠模式时,获取消息的逻辑会过滤掉所有命令消息(`filter_command=True`),这其中也包括了艾特(@)机器人的消息。这导致了用户无法通过艾特来唤醒睡眠中的机器人。

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

此外,还对 `schedule_manager` 中的睡眠日志记录逻辑进行了优化,增加了时间间隔来避免在睡眠期间频繁打印日志,减少不必要的日志刷屏。
2025-11-19 22:46:13 +08:00
tt-P607
ff5e8b63a2 feat(chat): 在PROACTIVE模式下允许do_nothing动作
在PROACTIVE模式下,`do_nothing` 是一个有效的规划动作,表示主动聊天轮次中不需要执行额外操作。此更改将其添加到有效动作的判断逻辑中,以避免被错误地记录为无效动作。
2025-11-19 22:46:11 +08:00
雅诺狐
e39c34f366 fix: 修复视频分析并发处理和数据库存储问题
🔧 修复视频分析模块的关键并发和存储问题

**主要修复:**
1. **并发竞争条件修复**
   - 解决相同视频hash同时处理导致重复分析的问题
   - 重构并发控制机制,使用per-video独立锁和事件
   - 消除30秒超时后多个请求同时执行的竞争条件

2. **数据库存储优化**
   - 移除Videos表path字段的复杂唯一性检查逻辑
   - 简化为基于hash的纯唯一标识存储
   - 修复path字段重复导致的IntegrityError

3. **代码简化和清理**
   - 删除重编码视频检测功能(复杂且用处有限)
   - 移除不必要的特征匹配和计数更新逻辑
   - 简化存储路径生成,统一使用hash前缀

Fixes: 视频并发处理竞争条件、数据库存储冲突、聊天循环变量错误
2025-11-19 22:46:11 +08:00
minecraft1024a
824ef0ad02 refactor(core_actions): 移除 AntiInjectorSkipListCommand
精简了核心操作插件,移除了未使用的 `AntiInjectorSkipListCommand` 组件,以简化代码和配置。
2025-11-19 22:46:09 +08:00