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
|
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
|
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
|
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
|
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
|
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
|
a05959b60e
|
fix(pre-commit)
|
2026-03-06 17:49:20 +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
|
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 |
|
SXP-Simon
|
ee0bf037b8
|
feat: 实现群聊分析任务锁及全局资源并发限流控制
1. 任务锁定机制 (Group Task Locking):
- 在应用服务层实现基于群组和任务类型的异步锁,使用 asynccontextmanager 生成器函数确保同一群聊在同一时间只能执行一个分析任务。
- 使用弱引用字典 (WeakValueDictionary) 管理锁实例,防止长期的内存占用。
- 在指令入口增加对 CancelledError 的捕获,当任务冲突时向用户反馈“任务正在执行中”的友好提示。
2. 全局并发限流重构 (Resource-level Throttling):
- 资源层限流下沉:将并发控制中心从调度层迁移至具体的资源处理层(T2I/LLM)。
- T2I 渲染保护:在报告生成器中引入全局信号量,严格控制 T2I 引擎的瞬时负载。
- LLM API 保护:在应用服务层引入全局信号量,平滑所有分析请求对 LLM 提供商接口的请求频率。
- 调度逻辑简化:移除调度器内部冗余的信号量,使其仅专注于分发逻辑与 Stagger(交错启动)平滑。
3. 调度与反馈优化:
- 自动分析调度器增加对“跳过”任务的独立统计,并在执行报告中清晰展示“成功、跳过、失败”的具体数量。
- 优化了管理测试指令和增量分析指令的异常处理逻辑。
4. 消息重复发送防护:
- 在重试组件中增加基于消息历史记录的探活逻辑。在重试发送前先核实记录,确认是否已因网络抖动导致“假失败”但已实达,有效拦截重复消息。
|
2026-03-03 21:07:51 +08:00 |
|
SXP-Simon
|
83f91fdeda
|
fix(dispatcher): 修复自动定时分析报告无法上传群相册的问题 (补全缺失的 album_name 参数)
|
2026-02-26 11:52:57 +08:00 |
|
SXP-Simon
|
05722bfd2f
|
fix(config_manager): logger 使用插件内置日志
|
2026-02-24 00:41:01 +08:00 |
|
SXP-Simon
|
417b88ffe9
|
fix(retry): 尝试增强重试管理器,采用 get_login_info 兜底增强获取 Bot user_id ,避免重试地狱和重复发送
|
2026-02-24 00:17:09 +08:00 |
|
SXP-Simon
|
c242bd3887
|
fix(analysis_application_service): 解决增量分析传参错误导致用户称号失效的问题
|
2026-02-23 01:07:46 +08:00 |
|
SXP-Simon
|
544458aadd
|
fix(retry): 增强重试管理器,尝试避免重试地狱和重复发送
|
2026-02-23 00:34:55 +08:00 |
|
SXP-Simon
|
a6e539b9f6
|
fix(report): 增强图片数据校验,确保生成有效图片
|
2026-02-22 16:08:48 +08:00 |
|
SXP-Simon
|
e4819c866d
|
fix(image): 处理绝对路径和相对路径的文件路径转换
|
2026-02-22 15:33:01 +08:00 |
|
RichardLiu
|
ba30818212
|
feat(onebot): 新增可选 Base64 图片传输开关 (#89)
* feat(onebot): add optional base64 image transport toggle
* fix(onebot): logger 信息增强
* fix(base64): 默认开启
|
2026-02-22 15:08:37 +08:00 |
|
SXP-Simon
|
d8f28ecf84
|
fix(pre-commit)
|
2026-02-21 23:36:46 +08:00 |
|
SXP-Simon
|
bceb27d00e
|
fix(image): 优化图片发送
|
2026-02-21 23:34:22 +08:00 |
|
SXP-Simon
|
2b8cc2b5aa
|
fix(群文件上传): 跨环境路径处理
|
2026-02-21 19:30:51 +08:00 |
|
SXP-Simon
|
750470d677
|
fix(onebot): 解决了跨容器路径访问难题: 由于您的 AstrBot 和 NapCat 可能运行在不同的容器或环境中,NapCat 无法直接访问 AstrBot 生成的本地临时文件(如 //AstrBot/data/temp/...),导致报错 ENOENT: no such file or directory。 现在,插件在调用 OneBot 发送图片或上传文件前,会自动将本地文件转为 Base64 编码数据。这样,图片数据将直接通过协议传输,彻底摆脱了对物理磁盘路径共享的依赖。
|
2026-02-21 19:30:51 +08:00 |
|
SXP-Simon
|
7f46a6d797
|
debug: 更详细的 log
|
2026-02-21 19:30:51 +08:00 |
|
SXP-Simon
|
8787861a31
|
fix(onebot): 修复 NapCat 群相册上传时报错 must have required property 'album_id' 的问题;修复 NapCat 群相册上传时报错 must have required property 'album_id' 的问题
|
2026-02-21 19:30:51 +08:00 |
|
SXP-Simon
|
0750ce5121
|
fix: 优化消息拉取负载并修复群相册上传兼容性
- 修复: 重构 OneBot 消息拉取逻辑,采用分页回溯策略并废除错误的页长度限制,尝试解决拉取 24h 消息不足及 NapCat 瞬时 CPU 过高问题。
- 功能: 参考 qun_album 插件,重构群相册上传逻辑,新增对 `upload_image_to_qun_album` 等多种扩展 API 的自动探测与多级回退机制。
- 优化: 为 [upload_group_album] 接口补充 [album_name] 参数透传,提升在不同 OneBot 增强版环境下的兼容性。
- 重构: 完成核心分析器类的参数命名对齐,消除 Pylance `reportIncompatibleMethodOverride` 相关的全部静态类型报错。
- 稳健性: 在分页拉取中引入锚点变化校验,防止在请求异常时进入死循环。
|
2026-02-21 19:30:51 +08:00 |
|
SXP-Simon
|
5c2d7dfb0b
|
fix: 分页拉取增强
废除错误的终止条件: 原先逻辑中如果 API 返回的消息数量(93条)小于请求数量(100条),会判定为“已到达历史尽头”并退出循环。这在 NapCat 等后端中并不可靠,因为后端可能会由于内部缓存页限制或消息过滤返回略少于请求数的结果。 现在:只要 API 返回了至少 1 条消息,且时间戳未超出限制,逻辑就会根据当前最旧消息的 message_id 作为锚点,继续发起下一页请求。
强化无限循环防护: 增加了锚点变化一致性检查 (new_anchor_id == current_anchor_id),确保只有在真正无法获取到更旧消息时才停止,防止在极端情况下出现死循环。
对齐 portrayal 插件逻辑: 确认并统一了 reverseOrder=True 和 message_seq 的使用方式,这在 NapCat 中是触发“从当前位置向回溯扫描”的正确方式。
增强调试日志: 添加了详细的
debug
日志,您现在可以在日志中清晰地看到分页拉取的每一轮进度(处理条数和当前锚点 ID),方便在云端环境中进一步排查。
|
2026-02-21 19:30:51 +08:00 |
|
SXP-Simon
|
867b78a11c
|
fix: 尝试分页拉取
|
2026-02-21 19:30:51 +08:00 |
|
SXP-Simon
|
de3c189d4f
|
feat: 增强图片上传能力并完成核心架构类型重构
- 重构: 优化主类命名逻辑,提升多平台架构的可读性与通用性。
- 功能: 新增分析报告同步上传至群文件和群相册的功能,支持自动化文件管理与清理。
- 类型: 全面修正静态类型错误,确保各分析器模块与基类接口签名严格对齐。
- 优化: 改进内部类成员标注,解决可选参数与类型推断在透传过程中的不匹配问题。
- 稳健性: 完善网络请求超时处理、临时资源管理以及可选依赖项的动态加载逻辑。
- 配置: 扩展配置管理项,支持自定义上传开关、目标目录以及 PDF 渲染参数。
|
2026-02-21 19:30:51 +08:00 |
|
SXP-Simon
|
dd69a68b0f
|
fix(code-review): 参考建议修改
|
2026-02-20 23:40:20 +08:00 |
|
Helian Nuits
|
e023127e37
|
Feat(spring-festival): 春节皮肤 (#84)
* chore: 更新 demo 图资源
* feat(spring_festival): 新模板
* fix(spring_festival)
* fix(pre-commit)
|
2026-02-12 21:32:10 +08:00 |
|
SXP-Simon
|
3c6df5b3c7
|
feat(template): 调整 hack 模板
|
2026-02-12 20:19:37 +08:00 |
|
SXP-Simon
|
8c58a7b3d3
|
feat(template): retro_futurism 调整和 hack 模板
|
2026-02-12 19:55:24 +08:00 |
|
 clown145andSXP-Simon
|
00863ff979
|
feat: 模板预览路由化并增强 Telegram 按钮交互稳定性 (#83)
* feat: 路由化模板预览并完善Telegram交互回退
* fix: 忽略模板预览文档回退的重复编辑异常
* fix: 在回调阶段主动清理并校验模板预览会话过期
* fix: 处理Telegram回调注册在平台热替换场景的重绑与清理
* fix(set_report_template): 删除冗余的检查
---------
Co-authored-by: SXP-Simon <sxp20061207@163.com>
|
2026-02-12 19:02:46 +08:00 |
|