Commit Graph
100 Commits
Author SHA1 Message Date
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
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
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 3956939837 [v4.7.15] - fix(dispatcher): 修复自动定时分析报告无法上传群相册的问题 2026-02-26 11:55:08 +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 412ac5f870 [v4.7.13] - fix(增量分析)解决增量分析传参错误导致用户称号失效的问题 2026-02-23 01:13:30 +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 4c65b26dab [v4.7.11] - feat(base64): 新增可选 Base64 图片传输开关,默认启用 2026-02-22 15:40:07 +08:00
SXP-Simon e4819c866d fix(image): 处理绝对路径和相对路径的文件路径转换 2026-02-22 15:33:01 +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 2c2ec218ee feat(contributors-graph) 2026-02-21 19:57:02 +08:00
SXP-Simon 8d3c7d49f3 feat(Star-History): Star History 图 2026-02-21 19:52:19 +08:00
SXP-Simon 626a890a58 [v4.7.9] feat(Onebot): 重构 OneBot 消息拉取逻辑,采用分页回溯策略;新增分析报告同步上传至群文件和群相册的功能 2026-02-21 19:40:54 +08:00
Helian Nuitsandsourcery-ai[bot] 45511a2a70 fix(terminate): 回退为原本的逻辑
Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com>
2026-02-21 19:30:51 +08:00
SXP-Simon 66c9e3f611 fix(群文件上传): 构造一个更友好的文件名 2026-02-21 19:30:51 +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
SXP-Simon beac15c14e fix(demo): 尝试在 AstrBot WebUI 插件文档中成功展示 demo 图 2026-02-20 23:34:44 +08:00
SXP-Simon dd344b296d chore(README) 更新 README 2026-02-20 23:23:30 +08:00
SXP-Simon 1322bf330b chore(demo): README spring_festival 模板效果图 2026-02-12 21:54:49 +08:00
SXP-Simon c0213f6b6d [v4.7.7] - feat(template): retro_futurism 调整和 hack, spring_festival 模板 2026-02-12 21:49:29 +08:00
SXP-Simon 37b82d4694 Merge branch 'main' of https://github.com/SXP-Simon/astrbot_plugin_qq_group_daily_analysis 2026-02-12 21:33:34 +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 36a4819282 chore: 更新 demo 图资源 2026-02-12 21:00:08 +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
SXP-Simon b0ee9ff82f [v4.7.6] - feat: Telegram 按钮交互选择模板 (#83) 2026-02-12 19:07:53 +08:00
SXP-Simon 5a9d39235d chore(assets): 更新模板 demo 图 2026-02-12 16:15:50 +08:00
SXP-Simon 1fe6426138 [v4.7.5] - feat(Telegram): Telegram 平台支持 (#82 @clown145) 2026-02-12 15:56:58 +08:00
SXP-Simon c2df2f906c feat(template): 将模板选择改为 options,方便配置 2026-02-12 15:52:30 +08:00
SXP-Simon 1576012851 fix: 回退 umo 处理 2026-02-12 15:41:07 +08:00
SXP-Simon 8eb5cf643c fix: 增强 UMO 处理,带用户 ID 也可以处理 2026-02-12 15:41:07 +08:00
SXP-Simon b4eec978fe refactor(Telegram): 重构 Telegram 逻辑并提取消息处理与注册表服务
- 提取消息处理服务及 Telegram 注册表,显著精简主插件逻辑。
- Telegram 群组获取回退逻辑下沉至适配器,移除调度中心硬编码。
- 优化依赖注入机制,使适配器层级可访问插件 KV 存储。
- 修正消息内容定义兼容性并清理冗余代码。
2026-02-12 15:41:07 +08:00
SXP-Simon 8cc8960cb1 fix(MessageContent): 兼容,增加 target_id property 给 MessageContent 拥有 aliases at_user_id 2026-02-12 15:41:07 +08:00
SXP-Simon f4039ea776 fix(_resolve_template_preview_path): 删除多余的路径 2026-02-12 15:41:07 +08:00
SXP-Simon b460a41cf8 fix: 更新脚本 2026-02-11 14:21:49 +08:00
SXP-Simon 5bf391594c fix: 更新脚本 2026-02-11 14:09:17 +08:00
SXP-Simon c817bb2e2c chore: 触发 release workflow 2026-02-11 13:43:19 +08:00
SXP-Simon 786ac48d11 chore: 通过 pre-commit 2026-02-11 13:41:50 +08:00
SXP-Simon b204aff424 style(pre-commit) 2026-02-11 13:39:03 +08:00
SXP-Simon 8401283314 style(pre-commit) 2026-02-11 13:33:43 +08:00
SXP-Simon ec3f6b0b45 chore(gitignore) 2026-02-11 13:32:21 +08:00
SXP-Simon d8fc94ad09 [v4.7.3] feat(auto_scheduler): 增量分析问题修复 2026-02-11 13:30:41 +08:00
SXP-Simon 5969f9bad0 fix(_run_initialization): 确保无论是在“Bot 启动”还是“插件热重载”时任务都能准时挂载 2026-02-11 13:21:48 +08:00
SXP-Simon 448aaebdb4 fix: 增量分析话题解析名称 2026-02-11 13:09:51 +08:00
SXP-Simon ced38e6a9e fix: 修复了导致增量分析报告发送失败的几个核心问题:
修复报告分发器初始化错误:
在 AutoScheduler 中,初始化 ReportDispatcher 时漏传了 report_generator,导致在尝试生成报告(图片或文本)时出现 'NoneType' object has no attribute 'generate_image_report' 错误。
已更新 AutoScheduler 的构造函数并正确传递 report_generator。
修复 LLM 分析器在增量模式下的数据结构错误:UserTitleAnalyzer 报错:在增量模式下,用户活动数据被简化存储,导致 UserTitleAnalyzer 找不到 'hours' 键(Error: 'hours')。
补全数据维度:更新了 AnalysisApplicationService 的增量数据转换逻辑,保留了完整的每小时活跃分布 (hours) 和回复数 (reply_count)。
统一字段名:增量模式下使用了 nickname 字段以匹配分析器的预期(之前被错误转为了 name)。
增强容错性:优化了 UserTitleAnalyzer 的逻辑,现在它能安全地处理 hours 缺失或旧版本数据 schema,不再会因为找不到键而崩溃。
修复增量数据合并逻辑:
更新了 IncrementalMergeService,现在它能正确合并多个批次中的每小时发言统计和回复数统计,确保最终生成的报告数据准确。
2026-02-11 12:54:02 +08:00
SXP-Simon e292558965 fix(IncrementalMergeService): main_incremental_status handle error: unsupported operand type(s) for +: 'int' and 'dict' 2026-02-11 12:21:57 +08:00
SXP-Simon 43c42722ec fix: 白名单使用 UMO 无法分析 2026-02-11 00:40:39 +08:00
SXP-Simon fe8ba0c983 fix(extract_token_usage): 修复 token 计量 2026-02-10 23:29:57 +08:00
SXP-Simon 2cd97a73b7 fix(debug): 增加每次增量分析完成后发送的配置,用于调试 2026-02-10 23:16:07 +08:00
SXP-Simon d05205d815 [v4.7.2] feat(话题分析): 话题分析支持用户头像显示 2026-02-10 23:04:06 +08:00
SXP-Simon 9d4b925400 fix: 获取名称逻辑 2026-02-10 23:00:48 +08:00
SXP-Simon 6b231ddf78 fix: 删除 generators.py 中 generate_image_report 里冗余的本地文件读取逻辑 2026-02-10 22:53:51 +08:00
SXP-Simon 2e2dbfc81c fix: 正确显示话题分析头像 2026-02-10 22:43:45 +08:00
SXP-Simon 3154cf1e56 fix(DiscordAdapter): 修复 Base64 图片解码时缺少 import base64 的问题 2026-02-10 22:26:51 +08:00
SXP-Simon 23fcda8283 fix(ReportGenerator): 修正头像缓存路径至 data/plugin_data 以符合 AstrBot 标准 2026-02-10 22:19:47 +08:00
SXP-Simon 9c839ccce4 fix(ReportGenerator): 降低头像分辨率至 40px 以解决渲染器内存溢出(OOM)问题 2026-02-10 22:12:56 +08:00
SXP-Simon 53ea9e3970 fix(RetryManager): 修复重试逻辑中的 Base64 编码崩溃问题
- 增加了对 html_render 返回本地文件路径的处理 (读取为 bytes)
- 增加了对渲染结果的文件头校验,避免处理错误文本
2026-02-10 22:08:46 +08:00
SXP-Simon a449c18dfb fix(Discord&Generator): 修复 Discord 图片发送失败及渲染错误处理
- DiscordAdapter: 增加对 base64:// 协议的支持
- ReportGenerator: 增加图片文件头校验,防止将渲染器的错误文本(Internal Server Error)当作图片发送
2026-02-10 22:04:13 +08:00
SXP-Simon 69b404bb1f fix(ReportGenerator): 增加本地图片转 Base64 逻辑,彻底解决 Docker 环境下 OneBot 无法发送图片的问题 2026-02-10 21:58:39 +08:00
SXP-Simon 7b3d3beb6c fix(OneBot): 修复图片发送失败(rich media error)
- ReportGenerator: 改为返回 Base64 图片数据而非内部 URL,避免 OneBot 无法访问 Docker 内部服务
- OneBotAdapter: 增加对 base64:// 协议头的支持
2026-02-10 21:54:09 +08:00
SXP-Simon 5a81ffea20 refactor(话题分析): 采用 ID-Only Prompt 策略优化头像展示
- TopicAnalyzer: 仅向 LLM 发送 [ID] 而非昵称,减少 Token 并消除歧义
- _conf_schema.json: 更新默认 Prompt,强制要求 LLM 输出 ID 引用
- Logic: 后端负责将 ID 映射回昵称,实现精确的头像关联
2026-02-10 21:25:25 +08:00
SXP-Simon 472c78e622 feat(话题分析): 用户头像引用展示
- TopicAnalyzer: Prompt中包含 [user_id],引导LLM使用ID引用用户
- ReportGenerator: 解析话题详情中的 [uid] 并替换为内联头像HTML
- Templates: 更新所有主题的 topic_item.html 以支持富文本详情展示
- _conf_schema.json: 更新默认 Prompt,指导 LLM 使用 [用户ID] 引用用户
- ReportGenerator: 实现胶囊样式渲染 (头像+昵称),提升视觉体验
2026-02-10 20:57:51 +08:00