Commit Graph
497 Commits
Author SHA1 Message Date
SXP-Simon 02bacd3389 [v4.9.0] - fix(telegram): 增强 telegram 平台的插件可用性 2026-03-16 01:03:21 +08:00
SXP-Simon 2e62c09266 fix(readme): 增加 t2i 链接 2026-03-16 00:51:15 +08:00
SXP-Simon 451dbaa470 fix(telegram): Photo_invalid_dimensions: Telegram 报错提示图片长宽比例或总尺寸不合规时,尝试以文件形式发送 2026-03-16 00:43:41 +08:00
SXP-Simon 4745fbccad [v4.8.9] - fix: 群相册严格模式修复 (#111),尝试解决下载用户头像和重试地狱的问题 (#107) 2026-03-16 00:12:09 +08:00
SXP-Simon 48765d69aa fix(telegram): 尝试解决下载用户头像和重试地狱的问题 ([Bug]TG群聊无法正常获取群聊成员头像
Fixes #107)
2026-03-16 00:09:33 +08:00
Helian Nuits 5876613deb fix: 群相册严格模式修复 (#111)
* fix: respect strict mode for qq group album upload(#100)

* fix: align album strict-mode default and bool parsing

* refactor: simplify strict mode config getter

* fix: enforce album strict mode in main upload path

* fix(pre-commit)
2026-03-15 23:21:54 +08:00
shiitin c2a3289451 docs: 完善了Telegram群聊隐私模式关闭说明 (#105 @shiitin)
补充了Telegram的群聊隐私模式关闭流程,解决部分用户因Telegram设置问题导致的插件无法使用。
2026-03-14 11:23:51 +08:00
SXP-Simon d436ea6b70 feat(README): 增加 TG 群链接 2026-03-13 17:58:57 +08:00
SXP-Simon cd1cd78a75 [v4.8.8] - feat(golden_quote): 重构金句分析匹配机制,尝试解决金句头像偶尔无法显示的问题,锐评中允许解析用户进行头像渲染 2026-03-13 17:47:04 +08:00
SXP-Simon 4813c8e3df feat(金句分析): 明确告知 LLM 在 reason(选择理由/锐评)中提到群成员时,应使用 [用户ID] 格式 2026-03-13 17:34:58 +08:00
SXP-Simon 1ae3e877f2 fix: 重构金句分析匹配机制 (#104)
- [修复] 尝试解决金句头像无法显示的问题。通过将 Prompt 输入改为 [user_id] 标识符,实现 100% 准确的身份回填,彻底消除了由于 LLM 微调内容导致的匹配失败。
- [警告] 强制初始化金句提示词,丢弃原本用户可能自定义的金句提示词模板。重命名配置项为 golden_quote_v2_prompt,避免用户更新后旧版本提示词干扰导致 LLM 金句分析功能失效。
2026-03-13 17:09:42 +08:00
SXP-Simon 2a1b292ed9 fix(ruff) 2026-03-12 18:47:16 +08:00
SXP-Simon 2e5ef3eba3 fix(terminate): 解决插件卸载/重载时因 schedule_jobs(None) 调用导致的 NoneType 报错,完善资源清理流程。 2026-03-12 18:43:47 +08:00
SXP-Simon b3e11a8cf7 [v4.8.7] - feat: 语义化 Trace ID 注入与报告标签 (#103) 2026-03-12 18:26:39 +08:00
SXP-Simon c185f700ae fix(logger): 注入 TraceID 2026-03-12 18:15:23 +08:00
SXP-Simon f2b4c16919 fix(ruff) 2026-03-12 18:05:01 +08:00
SXP-Simon bd991e9c16 feat(trace): 实现语义化 Trace ID 机制并美化报告展现
- [TraceContext] 重构 ID 生成算法,支持包含群名和时间(如 manual_技术交流群_1733),极大提升日志调试效率。
 - [视觉美化] 从用户可见消息(初始提示及图片 Caption)中彻底移除技术性的 [ID: xxx] 字符串。
 - [去重增强] 在报告 Caption 中引入基于秒级时间戳的“隐式指纹”,配合共享正则匹配,确保精准去重。
 - [自动分析] 优化自动调度器逻辑,引入群名缓存,使服务端定时任务日志更具业务可读性。
 - [逻辑精简] 利用插件现有的任务并发锁,移除了 Trace ID 中冗余的 4 位随机后缀,进一步精简长度。
2026-03-12 18:03:23 +08:00
SXP-Simon 16c756259a fix(json_utils): 解决 “fixed_json_text”可能未绑定 的问题 2026-03-12 15:43:35 +08:00
SXP-Simon fddb763a6d [v4.8.6] - feat: 新增群相册上传严格模式,增强图片发送超时处理 2026-03-12 15:24:23 +08:00
SXP-Simon 1e3d3b922c feat: 新增群相册上传严格模式
- 在 _conf_schema.json 中增加 group_album_strict_mode 开关
 - 修改 ReportDispatcher,在严格模式下禁止回退到默认相册
 - 优化 OneBotAdapter 的日志输出,使其符合决策逻辑
2026-03-12 15:16:43 +08:00
SXP-Simon b4abee55d4 fix: 修复 TraceContext 兼容性与服务返回结果缺失导致的崩溃问题
【链路追踪系统】
- 在 TraceContext 中补全 generate()、set() 和 get() 兼容性接口,确保旧代码无缝迁移。
- 重新实现 TraceLogFilter 日志过滤器,恢复日志流中的 TraceID 显示。
- 统一全插件 import 路径至 src/shared/trace_context.py,并删除冗余的旧文件。

【应用服务层】
- 修复 KeyError: 'group_id':在 execute_daily_analysis 和 execute_incremental_final_report 的返回结果中补全 group_id 和 platform_id。
- 完善 execute_incremental_analysis 的返回字段,保持 API 返回格式的一致性。

【基础设施与工具】
- 在 AutoScheduler 中增加对适配器获取失败的防御性检查。
- 修复 uto_scheduler.py 和 dispatcher.py 中的静态类型检查报错。
2026-03-12 14:51:59 +08:00
SXP-Simon efea9d5b5d fix: 修复生成报告时的 KeyError: 'group_id' 崩溃问题
- 在 execute_daily_analysis 返回结果中补全 group_id 和 platform_id
- 在 execute_incremental_final_report 返回结果中补全对应字段
- 确保 main.py 中的报表分发逻辑能正确获取目标群组信息
2026-03-12 14:08:18 +08:00
SXP-Simon 059d6ea68d feat: 全面重构主插件架构,解决并发竞态、资源泄露并优化代码健壮性
【并发与生命周期规范化】
- 引入 asyncio.Lock (_init_lock) 保护初始化流程,确保多入口(Reload/Init/Loaded)触发时维持单例运行,消除重复注册风险。
- 重构初始化任务创建逻辑,增加对当前协程 Loop 的状态检查,预防 Python 3.10+ 环境下常见的运行时异常。
- 引入 _background_tasks 集合统一追踪异步任务生命周期,实现透明的任务注册与自动移除。
【资源清理与加固】
- 增强 terminate() 析构逻辑:在卸载时主动取消所有追踪的后台任务(包括正在进行的分析、渲染或依赖安装),并使用 asyncio.gather 确保安全释放。
- 采用 type: ignore 配合非 Optional 类型声明,在保证 terminate() 能够置空引用的前提下,消除了 Pylance 对全局 50+ 处属性访问的“可能为 None”误报。
【业务流程健壮性】
- 提取超长逻辑:将分析报告的渲染与多格式分发逻辑抽离至 _send_analysis_report 异步生成器,显著降低单一函数圈复杂度。
- 优化图片上传服务:
  * 引入 MAX_PAYLOAD_SIZE (20MB) 机制,拦截超大 Base64/数据,隔离内存风险。
  * 弃用固定路径,改用 tempfile.mkstemp 生成线程安全的唯一临时文件。
  * 完善 finally 块清理逻辑,确保物理文件在上传成功或失败后都能被即时删除。
【指令系统重构】
- 采用子命令模式优化 /分析设置 (analysis_settings),将启用/禁用逻辑下沉至私有处理方法,提升代码可读性。
- 修复 /群分析 异步迭代漏洞,确保分析结果流能正确通过 AsyncGenerator 协议回传。
- 移除所有业务校验中的 assert 断言,替换为更安全的条件分支与错误消息返回。
2026-03-11 23:18:09 +08:00
SXP-Simon f70c37473c fix: 加固 PDFInstaller 组件,支持任务追踪与类型安全检查
- 增加任务注册表支持,使后台安装任务可被插件生命周期管理
- 使用 getattr 安全访问 ConfigManager 属性,消除 Pylance 静态检查报错
- 移除未使用的 ThreadPoolExecutor 引用
- 优化安装过程中的状态日志输出
2026-03-11 23:11:32 +08:00
SXP-Simon 4f747a7a74 refactor: 规范化常量定义,消除冗余并对齐平台支持范围
- 移除冗余的全局字符串常量,统一采用 Enum 类型
- 更新 SUPPORTED_PLATFORMS 以正确包含 Telegram 和 Discord
- 确保常量定义与实际平台适配器能力对齐
2026-03-11 23:11:20 +08:00
SXP-Simon a9c3d2595c fix: 提升系统韧性组件,改用单调时钟并支持动态限流重配置
- 将 CircuitBreaker 计时器改为 time.monotonic(),规避系统时钟回滚风险
- 允许 GlobalRateLimiter 在运行时根据配置动态调整信号量并发数
- 增加限流器配置变更时的日志记录
2026-03-11 23:11:13 +08:00
SXP-Simon b729fde84f refactor: 优化 TraceContext 追踪系统,支持安全嵌套并保留元数据
- 实现 ContextVar Token 机制,确保嵌套 Trace 的正确退栈
- 为 with_trace 装饰器添加 @functools.wraps 以保留函数原始元数据
- 移除初始化错误的 _token_stack 变量
- 增强 get_or_create 语义,支持自动绑定当前上下文
2026-03-11 23:11:04 +08:00
SXP-Simon 0b16e97a3e fix(onebot): 增强图片发送超时处理 2026-03-11 22:19:30 +08:00
SXP-Simon 0ccde6784d fix(typo): readme 2026-03-10 12:52:48 +08:00
SXP-Simon 0bedb02295 [v4.8.5] - fix(OneBot): 表情统计修复和群相册兼容性增强 2026-03-10 12:37:26 +08:00
SXP-Simon 0b90a8b9ac fix(analysis): 修复可选参数 days 以支持自定义分析天数 2026-03-10 12:33:12 +08:00
SXP-Simon 8285100e37 Merge branch 'main' of https://github.com/SXP-Simon/astrbot_plugin_qq_group_daily_analysis 2026-03-10 12:12:36 +08:00
SXP-Simon 0c5b945948 fix(onebot): 增强群相册兼容性
- 增强群相册识别:通过 API 名称列表遍历,支持多种扩展名(如 get_qun_album_list, get_group_album_list 等)。
- 提升响应解析鲁棒性:实现递归式键名探测,智能提取 album_list 或 data 嵌套结构中的相册数据。
- 规范参数类型:强制 group_id 为字符串格式,严格对齐 OpenAPI 文档要求。
2026-03-10 12:12:31 +08:00
nagatoquin33 fd851ccf05 feat(onebot): 正确识别 QQ 表情包 (subType=1) (#99 @nagatoquin33)
* feat(onebot): 正确识别 QQ 表情包 (subType=1)

* refactor(onebot): 安全处理 sub_type 转换,只在有效时包含 sub_type 键
2026-03-10 07:05:22 +08:00
SXP-Simon 70ea0e4fba [v4.8.4] - fix(OneBot): 兼容 napcat 和 llbot 获取历史消息接口 2026-03-07 00:42:22 +08:00
SXP-Simon e10e842700 fix(onebot): 兼容 napcat 和 llbot 获取历史消息接口 2026-03-07 00:36:38 +08:00
SXP-Simon 8e40af7461 fix(auto_scheduler): 优化调度性能,原本交错等待(Stagger)会阻塞其它群聊的启动 2026-03-07 00:18:44 +08:00
SXP-Simon fb6b7934b1 [v4.8.3] - fix(OneBot): 修复 LLBot 用户仅能获取 100 条消息的问题 2026-03-06 22:51:58 +08:00
SXP-Simon d9881afbcc fix(Onebot): 多字段智能探测序列号:优化了提取逻辑,不仅检查 message_seq,还支持 LLBot 示例中出现的 real_id 以及常见的 seq 字段 2026-03-06 22:34:58 +08:00
SXP-Simon d6dd94e43b fix(onebot): 测试性修复,尝试修复部分用户仅能获取100条消息的问题 2026-03-06 21:31:54 +08:00
SXP-Simon 7c75e271b7 [v4.8.1] - fix(_init_task): 引入任务生命周期管理,强制退出保护 2026-03-06 17:53:25 +08:00
SXP-Simon 4cfd61c423 fix: typo 2026-03-06 17:49:49 +08:00
SXP-Simon a05959b60e fix(pre-commit) 2026-03-06 17:49:20 +08:00
SXP-Simon f627a2d8e1 fix: 引入任务生命周期管理,强制退出保护 2026-03-06 17:45:08 +08:00
SXP-Simon f47af8cb99 [v4.8.1] - feat(traceability): 实现全链路 TraceID 追踪,增强初始化韧性与去重拦截 2026-03-06 17:37:54 +08:00
SXP-Simon aa92a7087a feat(TraceID): 主要通过引入全链路追踪,增强了日志的可观测性,并加固了去重拦截逻辑 2026-03-06 16:39:51 +08:00
SXP-Simon 87d5cccdd4 [v4.8.0] - perf(concurrency): 实现群聊分析任务锁及全局资源并发限流控制,增强重试管理器 2026-03-03 21:24:43 +08:00
SXP-Simon 2e5071a55d fix(concurrency): 优化群组任务锁的获取逻辑,确保锁的创建 2026-03-03 21:07:51 +08:00
SXP-Simon 9b26a3e5c9 fix(perf): 引入原子化任务注册表,消除异步锁状态检查的竞态盲区
- 【深度优化】将原有的 'if lock.locked()' 探测逻辑重构为基于同步集合的「任务注册表」模式。
- 【原理解修】规避了 asyncio 环境下异步锁获取的非原子性问题:
    - 痛点:虽然 asyncio 是单线程,但 `async with lock` 内部的 `acquire()` 是一个 `await` 点;
    - 风险:在高并发瞬间,多个协程可能在执行 `await lock.acquire()` 时让出控制权,导致它们都通过了之前的 `locked()` 检查,最终在锁上排队而非直接跳过。
- 【原子性方案】利用 asyncio 事件循环中“同步代码块不可被中断”的特性,将任务的「检查」与「占位」合并为连续的同步操作。
- 【确定性控制】确保重复请求在触达任何 `await` 点之前即被同步拦截,从而 100% 保证并发冲突时触发“直接跳过”的语义,彻底杜绝意外排队现象。
2026-03-03 21:07:51 +08:00
SXP-Simon 7850697f1a refactor(perf): 建立三级资源防线并优化并发限流配置
- 【异常处理优化】引入自定义任务重复异常,精准区分“因重复运行而跳过”与“实际分析取消”两种不同语义,提升调度健壮性。
- 【三级并发控制架构】针对不同层级的资源消耗,建立了完整的限流保护体系:
    - 入口层:控制同时处于活跃状态的任务总数,防止瞬时加载大量消息导致服务器内存溢出 (OOM);
    - 接口层:全局限制 LLM API 并发请求数,确保严格遵守服务商的频率限制 (RPM);
    - 渲染层:全局限制浏览器图片生成进程,保护物理 CPU 与内存不被高能耗渲染任务耗尽。
- 【配置体验升级】新增「并发限流设置」配置组,统一收纳核心性能参数,并提供面向普通用户的防坑说明与更稳健的默认值。
- 【代码清理】移除陈旧的兼容逻辑与冗余参数,统一配置命名规范。
- 【功能精化】重排增量分析逻辑,确保在任务入口与分段处理流程中均有可靠的信号量保护。
- 【细节完善】优化群文件及群相册上传设置的文案描述,明确功能支持范围与权限要求。
2026-03-03 21:07:51 +08:00