Commit Graph
100 Commits
Author SHA1 Message Date
liuwei 382f3967bd 修复斗鱼日报Dify 400请求并增强错误诊断
变更项:\n1. 在斗鱼插件新增 daily_report_include_structured_inputs 配置(默认 false),Dify 入参默认改为精简字段(task_type/query/system_prompt/user_prompt/room_id 等),避免复杂对象输入触发 400。\n2. 调整 _build_dify_daily_report_inputs:仅在 include_structured_inputs=true 时才附带 report_payload_json,大幅降低 Workflow 入参类型不匹配风险。\n3. 在初始化流程中读取 report_api.include_structured_inputs,支持按环境开关结构化入参。\n4. 在 UnifiedLLMClient 的 Dify 调用中新增 HTTPError 细粒度处理,last_error 与日志会追加 response_body 片段,便于快速定位 Dify 侧具体报错原因。\n5. 更新 douyu 配置模板注释,明确复杂输入导致 400 的风险与开关用途,方便后续维护。
2026-04-20 13:36:56 +08:00
liuwei 6386cd5940 修复斗鱼日报手动触发未走Dify的问题
变更项:\n1. 将普通命令
2026-04-20 13:31:50 +08:00
liuwei a89eedff15 群聊总结默认改回markdown渲染以保证样式稳定
变更项:\n1. 将 message_summary 插件代码中的 summary_image_mode 默认值从 template 调整为 markdown,确保配置缺失时也走历史稳定样式。\n2. 更新 plugins/message_summary/config.toml 的默认渲染模式为 markdown,立即生效并避免模板样式未完善导致展示异常。\n3. 保留 template 模式能力与失败回退逻辑,后续模板优化完成后可通过配置无缝切回。
2026-04-20 13:29:54 +08:00
liuwei f719b10c4a 模板化改造斗鱼日报与群聊总结图片渲染,支持HTML模板独立维护
变更项:\n1. 将 plugins/douyu/report_template.py 从内联HTML重构为模板渲染,新增 plugins/douyu/templates/daily_report.html 承载完整样式与结构,Python侧仅保留数据组装与安全注入。\n2. 修复斗鱼日报模板迁移后的样式缺失问题,补齐 metric-card、insight-card、badge-wall、active-user-grid、chart 等所有关键类样式,确保视觉与旧版一致。\n3. 在 plugins/message_summary/main.py 新增模板化图片渲染链路:优先使用 HtmlTemplateRenderer + html_to_image 生成总结图片,模板异常时自动回退 convert_md_str_to_image,保证稳定性。\n4. 新增 plugins/message_summary/templates/summary_card.html 作为群聊总结卡片模板,后续可仅改模板文件完成UI迭代。\n5. 扩展 plugins/message_summary/config.toml 输出配置,增加 summary_image_mode 与 summary_image_template_path,支持模板模式与回退模式按配置切换。\n6. 保持原有业务流程与发送逻辑不变,仅改造渲染层,降低后续维护成本。
2026-04-20 13:23:54 +08:00
liuwei f1a6f6d565 新增通用HTML模板渲染器并将机器人菜单改为模板驱动输出 2026-04-20 13:12:44 +08:00
liuwei cfb8af334b 调整菜单卡片功能标题与功能键字号为12 2026-04-20 13:06:11 +08:00
liuwei 77a0fbe33f 移除菜单图片中设计风格来源外露文案 2026-04-20 13:03:45 +08:00
liuwei d8a57a768d 下调菜单功能卡片字体尺寸以提升三列紧凑展示密度 2026-04-20 13:03:07 +08:00
liuwei ee368d697b 菜单生图固定三列卡片并移除响应式折叠逻辑 2026-04-20 12:27:27 +08:00
liuwei 7541bba4cd 菜单功能卡片调整为三列紧凑布局并补充分级响应式断点 2026-04-20 12:24:58 +08:00
liuwei 311655de5a 按PlayStation设计规范重构菜单生图并恢复全量功能卡片展示 2026-04-20 12:22:58 +08:00
liuwei adee05290d 菜单改为小卡片形态并在功能卡片展示开启关闭状态 2026-04-20 12:00:16 +08:00
liuwei 90266804dc 按技能规范重构菜单UI为纵向紧凑风格并聚焦用户可用指令 2026-04-20 11:56:43 +08:00
liuwei 73c92c0735 优化菜单图片风格为纵向紧凑布局并增强视觉层次 2026-04-20 11:53:23 +08:00
liuwei 08810c98c3 优化菜单生图为紧凑使用手册并移除状态与管理员展示 2026-04-20 11:50:03 +08:00
liuwei 64e7e82712 优化积分流水写入为昵称优先并覆盖打劫/保释场景 2026-04-20 11:44:26 +08:00
liuwei 00f874665d 限制群级插件配置仅开放群成员变更监控并增加后端白名单校验 2026-04-20 11:28:05 +08:00
liuwei f5dfe0b296 feat(群级配置): 优化群显示、模板入口和JSON编辑体验
- 列表中群信息改为群名主展示,ID弱化展示
- 模板入口改为按插件动态显示:仅选择群成员变更监控时显示欢迎模板按钮
- 移除顶部通用快捷模板,减少误导
- JSON编辑区升级为多行自适应编辑器,增加等宽字体与格式化按钮
2026-04-20 11:23:55 +08:00
liuwei 492711ea0c feat(通讯录): 在群权限面板内嵌进群欢迎表单配置
在通讯录-群详情-群功能权限区域新增群级欢迎配置表单,支持文本与卡片模板的直观维护、变量提示与实时预览;打开群详情自动加载当前群欢迎配置,保存时直接调用群级配置接口写入MySQL并刷新Redis,避免跳转到独立页面查找配置。
2026-04-20 11:01:21 +08:00
liuwei 7d45fdd61d fix(群级配置): 增加结构化表单快捷入口并补充引导提示 2026-04-20 10:53:41 +08:00
liuwei d4732d79ee feat(群级配置): 新增结构化表单模式降低JSON维护门槛
- 为群成员变更监控/welcome 配置新增标准表单编辑模式,覆盖欢迎文本与卡片关键字段
- 保留高级JSON模式,支持标准表单与JSON双模式切换
- 新增变量提示与实时预览,便于运营同学所见即所得配置文案
- 增加URL与必填项校验,保存前拦截常见配置错误
- 标准表单字段变更实时同步JSON文本,确保两种模式数据一致
2026-04-20 10:48:31 +08:00
liuwei d4b7cb32f6 feat(群级配置): 新增MySQL+Redis持久缓存并接入进群欢迎差异化配置
新增群级插件配置表与服务层,采用MySQL持久化+Redis长期缓存(TTL=-1);后台新增群级插件配置管理页面与API,支持按群按插件维护JSON配置并在修改后同步回填MySQL和刷新Redis;已将群成员变更监控插件接入该配置,支持欢迎文案与卡片URL等按群差异化。
2026-04-20 10:42:46 +08:00
liuwei 6cf90c02e5 refactor(菜单): 抽离菜单渲染工具为独立模块便于维护\n\n- 新增 plugins/robot_menu/menu_render_tool.py,封装菜单渲染与图片发送能力\n- 将输出模式归一化、Markdown/HTML 生成、自定义样式模板、发送与回退策略统一迁移到工具类\n- main.py 仅保留菜单业务流程与命令处理,改为调用独立工具,降低主文件复杂度\n- 使用相对导入接入新工具模块,减少路径耦合风险\n- 补充详细中文注释,说明拆分目的与关键设计 2026-04-20 10:27:14 +08:00
liuwei b9edf51ca8 feat(菜单): 使用自定义HTML样式生成菜单图片并增强指令展示\n\n- 新增机器人菜单专用 HTML 模板与 CSS 视觉样式,不再依赖 md2image 默认 Markdown 样式\n- 菜单图片新增基础命令区、管理员命令区、功能明细卡片区,展示更规范\n- 每个功能卡片增加状态徽标、功能键、触发方式与启用/关闭管理命令示例\n- 图片发送逻辑改为优先 html_to_image 渲染,自定义模板失败时仍可回退 Markdown 转图兜底\n- 补充详细中文注释,明确渲染策略、兼容策略与超时保护设计 2026-04-20 10:22:43 +08:00
liuwei 9819b43656 feat(菜单): 支持菜单文本/图片可配置输出并接入md2image\n\n- 新增 RobotMenu.output_mode 配置,支持 text 与 image 两种菜单发送模式\n- 新增图片相关配置:image_fallback_to_text、image_render_timeout_seconds、image_render_retries\n- 菜单与菜单状态命令支持按配置走 md2image 生成图片后发送\n- 新增菜单 Markdown 生成逻辑,图片中展示每个插件的序号、功能键、状态、说明、指令信息\n- 图片发送失败时按配置决定是否回退文本,并补充失败提示与日志\n- 补充详细中文注释并保持原文本发送逻辑兼容 2026-04-20 10:19:16 +08:00
liuwei 7768cebe42 加入斗鱼总结dify内容 2026-04-20 09:35:43 +08:00
liuwei 674ecce4e0 新增斗鱼Dify工作流配置文件
1. 参考群总结AI.yml导出格式创建斗鱼日报AI工作流。\n2. 补充斗鱼插件调用所需输入字段:task_type、system_prompt、user_prompt、report_payload_json、room_id、anchor_day、nickname、max_length。\n3. 配置workflow输出字段为text,便于直接对接斗鱼插件workflow_output_key=text。\n4. 提示词中增加任务路由规则,兼容daily_report与danmu_summary两种生成模式。
2026-04-20 09:16:56 +08:00
liuwei a933881ab9 斗鱼日报切换Dify工作流并补齐迁移文档
1. douyu插件新增Dify专用日报调用封装,按provider分流,Dify走run(inputs)并传task_type与结构化payload。\n2. 修正斗鱼日报与弹幕总结生成路径,统一改为新封装,保证Dify workflow可接收完整提示词与元信息。\n3. 新增llm后端dify_workflow_douyu_daily_report模板配置,约定workflow_output_key=text与更高超时。\n4. 斗鱼插件report_api后端切换为dify_workflow_douyu_daily_report。\n5. 新增Dify工作流设计文档,包含输入字段、节点编排、代码节点示例与上线检查步骤。
2026-04-20 09:13:49 +08:00
liuwei 23d2f2562e 启用md2img强保活模式:移除浏览器主动关闭逻辑
1. safe_close_browser 改为保活模式下直接返回,不执行 browser.close\n2. 去除 safe_close_browser 中的 terminate/kill 进程树逻辑\n3. 保留函数签名与调用链,确保现有流程兼容\n4. 增加中文注释说明长期常驻场景下的设计意图
2026-04-17 11:46:35 +08:00
liuwei cc5c49954f 调整md2img保活策略:取消截图后立即重建,改为心跳确认后再自愈
1. 去除截图后探测失败即刻 restart_browser 的逻辑\n2. 改为仅记录告警并推进断连计数,交由心跳任务统一确认后重建\n3. 保留截图失败时的重试重建能力,避免功能不可用\n4. 增加详细中文注释,明确保活优先与误判抑制设计
2026-04-17 11:44:28 +08:00
liuwei 02e34960d3 优化md2img浏览器健康探测,减少截图后误判断连重建
1. _is_browser_alive 增加短重试机制,避免单次瞬时失败被判定为断连\n2. 截图后健康检查由单次探测改为多次探测(超时与间隔可控)\n3. 保留真实断连自动重建能力,但降低误触发概率\n4. 补充详细中文注释,说明探测策略与设计意图
2026-04-17 11:27:27 +08:00
liuwei 59a044a0e2 新增强制重生成日报指令,支持跳过缓存验证弹幕总结效果
1. 新增指令:#强制斗鱼弹幕日报(支持带日期参数)\n2. 强制指令执行时跳过日报缓存读取,直接重生成文本与图片并覆盖缓存\n3. _send_daily_reports 增加 force_regenerate 参数并向下传递\n4. 保留原 #斗鱼弹幕日报 行为不变,兼容既有使用方式\n5. 补充中文注释,说明强制重生成的用途与行为
2026-04-17 11:19:28 +08:00
liuwei 5098c191de 优化斗鱼弹幕总结:新增粉丝向弹幕萃取区块并调整提示词语气 2026-04-17 11:17:16 +08:00
liuwei e56c0069cc 优化自动回复触发逻辑:疑问句默认仅@机器人时触发
变更项:

1. 在 triggers 中新增 question_requires_at 配置,默认要求@机器人才将疑问句升级为 question_trigger。

2. 在 response_planner 中收紧问答兜底策略,疑问句仅在 directed 场景进入模型。

3. 在 config.toml 增加 priority.question_requires_at=true,避免群聊普通疑问句高频误触发。
2026-04-17 10:38:30 +08:00
liuwei 1cf2cfd6e3 修复md2img运行时并发单例问题,避免预热双启动日志 2026-04-17 10:28:35 +08:00
liuwei 3d98b3c0a2 修复转图运行时重复启动与高频误重建问题
变更项:\n1. 修复 md2img 运行时并发启动竞争,新增启动中标记,避免同名线程被重复拉起。\n2. 优化浏览器心跳探测策略:由高频激进重建改为断连连续判定后再重建,降低误判。\n3. 新增截图进行中保护,截图期间心跳跳过探测,避免与业务并发导致误重建。\n4. 为浏览器重建增加 reason 日志字段,便于线上追踪重建触发原因。\n5. 保留截图后断连自愈能力,但改为更稳健的触发路径,减少无意义重建。
2026-04-17 10:26:10 +08:00
liuwei 97bc4560b6 增强转图浏览器保活:截图后探活并自动重建,增加后台心跳巡检 2026-04-17 10:14:04 +08:00
liuwei 2a87863d9c 修复转图任务返回时序误判:等待runtime任务完成后再返回,避免先报失败后截图 2026-04-17 10:12:15 +08:00
liuwei c49f5e509c 新增转图运行时健康监控与手动预热
变更项:\n1. 在 markdown_to_image 增加 get_md2img_health_snapshot 健康快照能力,输出 runtime 线程、事件循环、浏览器连接、启动来源与 PID 状态。\n2. 新增系统接口 GET /api/system/md2img_health,支持后台查询转图运行时健康信息。\n3. 新增系统接口 POST /api/system/md2img_warmup,支持后台手动触发转图预热并返回最新状态。\n4. 在资源监控页面接入转图健康状态条,展示运行时在线状态、浏览器连接状态及关键摘要信息。\n5. 在资源监控页面增加转图预热与状态刷新按钮,便于线上快速自愈与排障。\n6. 补充中文注释与错误提示,保持后端与前端可观测性一致。
2026-04-17 10:04:18 +08:00
liuwei 5a84c60b2c 统一转图为单运行时常驻浏览器
变更项:\n1. 新增 md2img 专用运行时(独立线程 + 单事件循环),确保浏览器生命周期只在一个 loop 内维护。\n2. 新增运行时任务投递与异步等待封装,支持任意调用方线程/loop 统一提交截图任务。\n3. 调整浏览器预热逻辑:预热改为在 md2img 专用运行时执行,避免预热与业务截图分属不同 loop。\n4. 调整 html_to_image:统一在专用运行时内完成截图,彻底规避跨事件循环复用导致的重建。\n5. 增强中文注释与运行日志,便于定位 runtime loop 与预热状态。
2026-04-17 10:00:25 +08:00
liuwei 3b9bd02b5f 修复转图浏览器预热跨事件循环失效问题
变更项:\n1. 新增 async_job 启动钩子能力 add_startup_job,在调度器事件循环中执行一次性初始化任务。\n2. 将 main.py 的 Markdown 转图预热从独立线程改为调度器 loop 内执行,确保预热实例可被后续任务复用。\n3. 增强 markdown_to_image 常驻浏览器管理:记录 owner loop、检测跨 loop 复用并自动重建。\n4. 补充预热与常驻浏览器日志,输出 loop 标识和浏览器 PID,便于线上排查进程状态。\n5. 保持现有转图超时与重试逻辑不变,仅修复预热生效链路与可观测性。
2026-04-17 09:55:03 +08:00
liuwei c39b3ba566 补齐插件默认配置并消除启动缺失告警
变更项:\n1. 新增 epic_free 默认配置文件,补充调度与 Epic 参数默认值。\n2. 新增 daily_ranking 默认配置文件,补充排行参数默认值。\n3. 新增 daily_news 默认配置文件,补充新闻源默认值。\n4. 新增 sehuatang_push 默认配置文件,补充推送默认参数。\n5. 全部配置文件加入中文注释,便于后续后台统一维护与扩展。
2026-04-17 09:42:00 +08:00
liuwei 3226fabcec 新增定时任务重启漏执行补偿机制
变更项:1) 系统任务与插件调度重载后基于应执行时间和执行日志对账,判定是否漏执行。2) 仅在应执行时间已过且日志未覆盖时补跑一次,避免重复补偿。3) system_job_db 与 plugin_schedule_db 新增 get_latest_log_time 查询。4) 增加容差窗口与中文注释,降低误判概率。
2026-04-17 09:38:15 +08:00
liuwei 6af91756d3 支持服务启动后自动预热转图浏览器
变更项:1) markdown_to_image 新增预热方法 warmup_md2img_browser/warmup_md2img_browser_sync,用于提前拉起常驻浏览器。2) main.py 启动流程新增后台预热线程,服务启动后自动执行转图浏览器预热。3) 预热失败仅记录日志不阻塞主服务,运行期仍可按需自动重建浏览器。4) 补充中文注释说明预热目的与降级策略。
2026-04-17 09:28:36 +08:00
liuwei f90c0720b3 实现转图浏览器常驻复用并支持失败自动重建
变更项:1) 新增常驻浏览器管理器,避免每次截图都冷启动 Chromium。2) 截图流程改为复用同一 Browser,每次仅创建并关闭 context/page,提升稳定性与性能。3) 增加浏览器失联检测与自动重建机制,截图失败后重建一次并重试。4) 保留多候选浏览器启动策略(system/playwright-cache/bundled),并输出准确来源日志。5) 补充中文注释,明确常驻设计目标与故障恢复逻辑。
2026-04-17 09:26:23 +08:00
liuwei 43c334354f 增强转图浏览器启动健壮性并修正日志来源标识
变更项:1) html_to_image 改为候选浏览器逐个尝试启动,避免单一路径失败导致整体异常。2) Linux 增加系统浏览器路径探测(google-chrome/chromium)并保留 Playwright 缓存路径作为候选。3) 修正启动日志来源标识,区分 system 与 playwright-cache,避免误判。4) 所有候选失败时自动回退到 bundled 浏览器,提高转图成功率。
2026-04-17 09:18:02 +08:00
liuwei 55c3b951d5 修复群总结转图假死:增加阶段进度日志与超时保护
变更项:1) 移除图片渲染前截断,保持完整内容转图。2) 群总结转图增加总超时,超时后快速降级文本,避免任务长期阻塞。3) markdown_to_image 增加每10秒进度心跳日志,定位卡在 markdown_to_html 或 html_to_image。4) 分阶段超时与阶段开始日志完善,解决无错误无进度的问题。
2026-04-17 09:16:26 +08:00
liuwei 6b68de7f4e 修复系统定时任务时间显示格式异常
变更项:1) 在 system_jobs 蓝图新增时间归一化方法,统一输出为 yyyy-MM-dd HH:mm:ss。2) 系统任务列表接口对 next_run_at 与 last_run_at 做后端格式化。3) 系统任务日志接口对 triggered_at 做后端格式化,避免出现 Fri, 17 Apr ... 的 RFC 时间串。4) 补充中文注释说明格式化策略。
2026-04-17 09:09:48 +08:00
liuwei 60cfcea1ad 修复插件调度日志时间显示格式异常
变更项:1) 在 plugin_schedules 蓝图新增时间归一化方法,统一输出为 yyyy-MM-dd HH:mm:ss。2) 在调度列表接口对 next_run_at/last_run_at/created_at/updated_at 做后端格式化。3) 在调度日志接口对 triggered_at 做后端格式化,避免返回 Fri, 17 Apr 2026 ... 的 RFC 字符串。4) 补充中文注释,说明时间兼容与格式化意图。
2026-04-17 09:00:22 +08:00
liuwei e57e521900 优化Epic免费游戏推送:对齐官网活动并支持变化推送
变更项:1) 数据源切换为Epic官方freeGamesPromotions接口,不再依赖第三方页面抓取。2) 活动识别升级:区分当前可领与即将免费,仅提取0%折扣活动,按活动窗口过滤脏数据。3) 推送策略从周五固定时点改为小时级检查,并支持 only_on_change 变化去重,避免重复刷屏。4) 新增地区/语言参数(locale、country、allow_countries)与是否包含即将免费配置。5) 增强推送内容:发行商、原价到现价、开始/截止时间、直达链接,信息更贴近官网展示。6) 增加Redis摘要缓存与中文注释,保证活动变化判断稳定可追踪。
2026-04-16 17:59:26 +08:00
liuwei 879e64fb7c 修复插件定时任务星期与时间格式显示问题
变更项:1) async_job 触发文案把每周数字改为中文星期(周一到周日),消除星期显示歧义。2) async_job 时间序列化改为 yyyy-MM-dd HH:mm:ss,去掉 ISO 格式中的 T。3) 插件定时任务页面统一使用 formatDateTime 渲染下次执行、上次执行与日志触发时间,前端兜底去除 T。4) 补充中文注释说明显示层与调度层格式化意图。
2026-04-16 17:41:53 +08:00
liuwei 09eff21761 通讯录群详情新增手动同步群公告按钮
变更项:1) 新增POST接口用于手动同步群公告,仅在手动触发时调用Group/GetChatRoomInfoDetail。2) 同步逻辑采用基础群信息与Detail信息合并后再落库,确保公告可更新且不破坏原有群资料。3) 群详情页公告区域新增同步按钮和加载态,避免重复点击。4) 同步成功后自动刷新当前群资料。5) 补充中文注释说明手动同步链路。
2026-04-16 17:24:49 +08:00
liuwei da1cf5bd02 修复老库群公告字段缺失导致群详情报错
变更项:
1. 新增字段探测与补列逻辑:启动时通过 information_schema 检查 t_chatrooms.chat_room_announcement,不依赖 ADD COLUMN IF NOT EXISTS。
2. save_chatroom_info 改为字段存在才写入群公告,避免 Unknown column。
3. get_chatroom_profile 增加降级查询:字段不存在时返回空公告,不再直接引用缺失列。
4. 增加字段可用性缓存与中文注释,降低重复探测开销。
2026-04-16 17:09:34 +08:00
liuwei 77fc15d1fd 完善通讯录群详情展示:补齐群公告/群主/群管理信息
变更项:
1. 数据层新增群资料聚合查询,直接复用 is_owner/is_admin 字段返回群主与管理员列表。
2. 同步群信息时兼容提取群公告并落库,历史库启动时自动补齐 chat_room_announcement 字段。
3. 新增 /contacts/api/group_profile/<roomid> 接口,统一返回群公告、群主、管理员、成员数。
4. 通讯录群详情弹窗新增群主/群成员数/群管理/群公告展示,并在打开详情时自动加载。
5. 补充群成员精简查询头像字段,更新初始化 SQL 中 t_chatrooms 公告字段定义。
2026-04-16 17:04:55 +08:00
liuwei d8bfdd54e3 后台UI优化:统计区间并入二级标题栏
将统计区间控件从内容区移至二级导航栏

控件与二级菜单同排显示,节省正文纵向空间

保持 timeRange 与 loadData 交互不变
2026-04-16 16:52:51 +08:00
liuwei 3b633b1b1d 后台UI优化:统计区间改为右上角紧凑悬浮控件
- 将基础模板中的统计区间从整行卡片改为右上角小胶囊控件\n- 保留原有 timeRange 与 loadData 功能,不影响统计页面交互\n- 新布局减少纵向占用,避免挤压主内容区
2026-04-16 16:50:18 +08:00
liuwei 6b07be6a33 后台交互优化:移除系统/插件定时页按表重载按钮
- 系统定时任务页面移除按表重载按钮,保留刷新按钮\n- 插件定时任务页面移除按表重载按钮,保留刷新按钮\n- 清理前端未使用的 reload 方法,避免误导用户\n- 说明:保存配置后已自动重载到运行时,手动重载接口保留用于运维兜底
2026-04-16 16:39:56 +08:00
liuwei 410db34acd 后台导航调整:系统定时任务归入系统菜单
将系统定时任务从消息分组移除

在系统分组新增系统定时任务入口

路由保持 /system_jobs 不变,仅调整菜单归类
2026-04-16 16:32:58 +08:00
liuwei 1a1306ec71 系统定时任务日志持久化:新增入库与后台查询
- 新增系统任务日志表 t_system_job_logs,持久化记录每次执行结果、摘要、耗时、详情JSON\n- SystemJobLoader 注册任务时增加执行包装器:成功/失败均写入数据库日志,失败后继续抛出保证运行态状态一致\n- 系统任务后台日志接口改为查询数据库日志(不再依赖仅内存的 async_job logs),解决重启后日志丢失问题\n- 保持前端日志字段兼容,接口返回映射为 time/level/message 结构
2026-04-16 16:27:53 +08:00
liuwei 3873596399 修复:系统任务重载日志NameError
- 修复 utils/system_jobs.py 中 logger 未定义导致的启动异常\n- 补回 loguru.logger 导入,确保无处理器任务打印 warning 时不会抛错\n- 已执行 py_compile 校验通过
2026-04-16 16:18:52 +08:00
liuwei bb73d07809 重构:新增定时插件业务逻辑内聚到各自插件目录
- daily_news 插件内置百度新闻与60s图片获取逻辑,移除对 base.func_news 的业务依赖\n- epic_free 插件内置周五判断与免费游戏抓取逻辑,移除对 base.func_epic 的业务依赖\n- daily_ranking 插件内置排行生成与积分奖励逻辑,不再依赖 MessageStorage 业务封装\n- sehuatang_push 改为引用插件目录内的抓取与PDF生成实现,将核心业务代码迁入插件目录\n- 确保新插件可独立承载自身业务逻辑,平台层仅提供调度与基础设施能力
2026-04-16 16:16:07 +08:00
liuwei 547c5533d7 重构:移除Robot中的业务任务实现,统一下沉到插件层
- 删除 Robot 内历史业务方法:新闻/Epic/PDF/秀人下载/排行推送等实现\n- 删除仅服务上述业务方法的群发辅助函数,避免平台层承载业务逻辑\n- 清理对应无用 import 依赖(News、Epic、Sehuatang、Xiuren 业务模块等)\n- 保留系统刚需任务方法(登录巡检、消息计数入库)不变,保持系统层职责单一
2026-04-16 16:09:36 +08:00
liuwei 9652c2594e 系统业务任务插件化迁移:下沉7项非刚需任务并接入平滑迁移
- 系统任务保留刚需三项:登录巡检、消息计数入库、媒体补偿处理;移除新闻/Epic/排行/PDF/秀人维护等业务型系统任务定义\n- 新增 daily_news、epic_free、daily_ranking、sehuatang_push 四个插件,将原系统业务任务改为插件可调度动作\n- 扩展 xiuren_image 插件调度动作,新增秀人下载、绅士R15下载、图片缓存更新三项维护任务\n- 新增系统任务到插件任务的幂等迁移逻辑:按旧 job_key 映射到插件 action,同步 trigger_type/trigger_config/enabled,并通过 payload 标记防止反复覆盖\n- 在 Robot 启动流程中接入迁移执行与重载,并清理已迁移的历史系统任务记录,避免后台双份维护\n- 扩展插件调度数据库操作:支持按 plugin_name + action_key 精确查询,便于迁移与对账
2026-04-16 16:05:59 +08:00
liuwei 1166323ab5 插件定时能力扩展:接入天气/群总结/百科问答/成员画像并补齐周月触发器编辑
- 将 weather、message_summary、game_task、member_context 从硬编码 async_job 注册迁移为插件调度能力(get_schedule_actions/run_scheduled_action)\n- 保持原有默认时间与默认启用行为,新增执行统计结果用于后台日志展示\n- 为群总结与天气推送增加目标群范围适配,支持按后台配置选择 all/白名单/单群执行\n- 成员交互摘要支持日/周/月三类动作接入调度中心,兼容指定群与全量群刷新\n- 后台插件调度页面新增 every_week_time 与 every_month_last_day_time 的编辑支持
2026-04-16 15:49:02 +08:00
liuwei 184999b175 feat(plugin-schedule): support group dropdown selector for whitelist and single target 2026-04-16 15:34:32 +08:00
liuwei 014985ac4a feat(plugin-schedule): add DB-driven plugin scheduler and xiuren scheduled push 2026-04-16 15:24:23 +08:00
liuwei 9d6609990b fix(schedule): reseed default system jobs before DB reload 2026-04-16 14:57:51 +08:00
liuwei c4ed29c27c chore: remove unintended AGENTS.md from schedule changes 2026-04-16 14:54:36 +08:00
liuwei 66a9b7c4a3 feat(schedule): move system jobs to DB-driven config and dashboard management 2026-04-16 14:54:23 +08:00
liuwei cb0d11e657 chore(plugin): set hot-reload watcher interval to 60s 2026-04-16 13:57:37 +08:00
liuwei f0414e0dff feat(plugin): support auto bot injection and file-based hot reload 2026-04-16 13:54:56 +08:00
liuwei 041a3f30d8 调整插件执行顺序:ai_auto_response改为最后兜底
- 在消息插件调度中增加排序逻辑\n- 通过 feature_key/模块名/插件名识别 ai_auto_response\n- 保持其他插件原有顺序,确保命令类插件优先命中\n- ai_auto_response 放到末位执行,避免前置抢占
2026-04-16 11:38:08 +08:00
liuwei 5eb1e3294f 优化ai_auto_response提示词与短回复策略:场景优先级、防冲突压缩、记忆相关性筛选、可配置长度限制
- 增加场景优先级规则,技术群优先结论与排查点,降低人设冲突\n- Dify 入参新增上下文压缩、画像与记忆去重、低相关记忆过滤\n- 回复后处理支持配置化长度阈值,并增加总字数上限裁剪\n- 新增 prompt_compact/reply 配置项,便于后续按群微调
2026-04-16 11:24:41 +08:00
liuwei a68d6d5e6c 优化引用上下文质量并修复无效引用噪声
变更项:

1. 扩展引用发送者解析字段,新增 fromusr/fromnickname/sourceusername/sourcedisplayname 等兼容项。

2. 增加引用质量门控:发送者、标题、正文均缺失时直接丢弃 quote_context,避免污染 LLM。

3. 构建引用补充时不再输出“被引用发送者:未知成员”等低价值字段。

4. 增加兜底策略:仅剩引用类型且无正文标题时不输出引用补充。
2026-04-16 11:12:16 +08:00
liuwei b4b3fa92e0 优化ai_auto_response回复长度并强化@画像回复
变更项:

1. 收紧回复长度策略:social_short/qa_fast/qa_with_context 全部缩短,减少长句与说明文风格。

2. 强化提示词约束:默认30字内、最多2句且总长不超过55字,禁止大段铺垫。

3. 新增@画像高优先通道:当消息为@或强定向时,构建并注入 at_member_profile_prompt。

4. Dify输入同步注入@画像与 is_at/is_directed 控制字段,保证不同LLM后端行为一致。
2026-04-16 11:03:55 +08:00
liuwei a145335f49 补全RAG功能清单为完整插件列表
变更项:

1. 重写 docs/rag/04_功能详解_逐插件.md,整理为完整插件总表。

2. 覆盖命令触发、自动触发、后台任务、管理运维四类插件,并标注主要命令与触发方式。

3. 补充目录中存在但不可加载插件(无main.py)说明,避免文档与运行态认知偏差。

4. 增加后续维护规则,便于只维护局部插件条目。
2026-04-16 10:48:03 +08:00
liuwei 93d5eff6df 拆分RAG用户文档为可维护分册结构
变更项:

1. 新增 docs/rag 目录及 README 索引,定义分册用途与维护规则。

2. 拆分用户文档为五个专题文件:快速开始、指令清单、管理员指南、FAQ、逐插件详解模板。

3. 保留用户向表达,便于后续仅维护受影响章节,不必整份重写。

4. 补充RAG落地约定(分片策略与元数据建议),便于直接接入向量库。
2026-04-16 10:41:49 +08:00
liuwei 6122add576 新增面向RAG的ABOT用户使用指南
变更项:

1. 新增 docs/RAG_用户使用指南.md,聚焦群成员与群管理员的用户向说明。

2. 提供按场景整理的指令清单,覆盖菜单、AI、新闻、天气、积分、签到、媒体、游戏、推送、系统管理等常见功能。

3. 补充新手上手路径、管理员操作手册与FAQ,提升自助使用效率。

4. 增加RAG落地建议(拆分目录、分片策略、元数据模板、检索测试问法),可直接用于知识库建设。
2026-04-16 10:32:10 +08:00
liuwei ec040e1620 Revert "优化robot_menu交互:支持@问答式功能清单"
This reverts commit fe316ced81.
2026-04-16 10:24:22 +08:00
liuwei 33373ece2e Revert "新增robot_menu指令清单展示能力"
This reverts commit 9f08a7ad96.
2026-04-16 10:24:22 +08:00
liuwei 9f08a7ad96 新增robot_menu指令清单展示能力
变更项:

1. 新增“菜单 指令清单、菜单 指令、菜单 命令清单”入口,返回本群可用触发指令。

2. 从功能描述方括号中自动提取命令并去重,生成可直接复制的指令列表。

3. 优化主菜单文案,增加“常用指令清单”区块,帮助用户快速上手。

4. 扩展@语义关键词,支持“指令清单、命令清单”等问法触发菜单。
2026-04-16 10:21:41 +08:00
liuwei fe316ced81 优化robot_menu交互:支持@问答式功能清单
变更项:

1. 新增@语义入口:群内@机器人并包含“功能清单、怎么用、帮助”等关键词时自动回复菜单。

2. 菜单输出改为用户友好格式:按功能展示名称、触发方式和一句话说明,提升可读性与可操作性。

3. 保留原指令入口(菜单/功能菜单),并统一走新的直观菜单文案。

4. 增加对Feature描述的解析逻辑,自动提取方括号中的触发命令作为使用方法。
2026-04-16 10:17:04 +08:00
liuwei bac8a01ed8 调整ai_auto_response为非阻断模式
变更项:

1. 修改 ai_auto_response.process_message 的返回策略。

2. 消息入队成功时由 processed=True 改为 processed=False,避免截断后续插件链。

3. 队列满时同样不阻断,让其他插件继续处理消息。
2026-04-16 09:56:05 +08:00
liuwei 7ad8570c08 修复首页顶部未铺满问题并恢复栅格稳定性
变更项:

1. 移除 hero-row 的 flex 覆盖样式,避免与 Element 栅格宽度计算冲突。

2. 保留顶部行断点比例配置,继续支持大屏与中小屏响应式切换。

3. 仅调整顶部行样式,不改下方新增指标区布局。
2026-04-15 17:37:24 +08:00
liuwei 45133464ce 修复首页顶部行响应式兼容问题
变更项:

1. 仅调整首页顶部 Hero 行栅格断点配置,替代固定 span 比例。

2. 当前账号卡片改为 xl=7/lg=9/md~xs=24,右侧指标区改为 xl=17/lg=15/md~xs=24。

3. 保证中等屏和移动端自动上下堆叠,提升这一行的响应式表现。
2026-04-15 17:34:56 +08:00
liuwei cad64bc9c9 回退下方新增指标布局调整,仅保留顶部宽度优化
变更项:

1. 回退下方新增用户数/群渗透率/群健康分区域的结构与样式调整。

2. 保持下方新增指标区不变,避免影响既有展示。

3. 仅保留首页顶部当前账号区域宽度调整(8:16)。
2026-04-15 17:32:24 +08:00
liuwei 16eacdbe99 调整首页当前账号卡片宽度比例
变更项:

1. 仅调整首页顶部 Hero 区栅格比例,从 9:15 改为 8:16。

2. 缩小当前账号卡片宽度,提升右侧核心指标区的展示空间。

3. 未调整下方新增用户数、群渗透率、群健康分区域布局。
2026-04-15 17:31:02 +08:00
liuwei d9ce3ce33e 修复仪表盘摘要接口Decimal类型计算报错
变更项:

1. 修复 /api/dashboard_summary 中 success_rate 为 Decimal 与 float 混算导致的异常。

2. 将 success_rate 与 avg_response_time 统一转换为 float,避免后续健康分计算类型冲突。

3. 恢复首页热门信息接口返回,避免因接口失败导致榜单空白。
2026-04-15 17:28:55 +08:00
liuwei fd21ebf681 修复首页热门信息为空问题并增加历史兜底
变更项:

1. 保留热门用户/热门群组/热门插件逻辑,未移除任何热门模块。

2. 为热门数据增加兜底策略:最近N天无数据时自动回退到全量历史Top5。

3. 覆盖插件、用户、群组三类热门榜单,避免首页出现整块空表。
2026-04-15 17:25:19 +08:00
liuwei 26c534540d 修复首页指标区不规整和留白问题
变更项:

1. 将首页 Hero 区指标恢复为 6 张基础卡片,避免左侧用户信息卡被异常拉高。

2. 将新增用户数、群渗透率、群健康分拆分为独立一行展示,解决中间空位与视觉不规整。

3. 补充 metric-extended-row 的响应式样式,确保桌面与移动端布局一致。
2026-04-15 17:23:54 +08:00
liuwei d472b1523b 优化首页指标展示并修复群唯一用户统计
变更项:

1. 修复首页卡片等高问题,统一用户信息与右侧指标区高度,统一热门用户/群组/插件卡片高度。

2. 首页新增三个分析指标:新增用户数、群渗透率、群健康分,并完成前端数据绑定。

3. 优化仪表盘摘要接口,新增 new_users、avg_group_penetration、group_health_score 返回字段。

4. 修复 t_group_stats.unique_users 统计口径,改为按 group_id+plugin_name+command+user_id 去重统计,避免跨群串数据。

5. 新增 t_group_command_user_stats 表结构及索引,并补充到 init.sql。
2026-04-15 17:19:38 +08:00
liuwei b37396db50 Revert "feat(dashboard): unify global UI theme across all admin templates"
This reverts commit cb8adc40ce.
2026-04-15 17:02:34 +08:00
liuwei cb8adc40ce feat(dashboard): unify global UI theme across all admin templates 2026-04-15 17:00:15 +08:00
liuwei ee5c1ebadc 只用表情 XML 里的 md5 + len/totallen 作为发送参数。
不再用图片文件大小、文件名等回退逻辑去“猜参数”。
发送接口不再“先返回发送中”,而是直接调用 SendEmoji 并等待结果:
成功才返回 表情发送成功
失败直接返回具体错误(不会再假成功)
2026-04-15 11:36:22 +08:00
liuwei d0fa823557 改动结果:
聊天窗口工具栏新增了“表情”按钮,打开表情库弹窗。
表情库会从历史“已下载落盘的表情消息”里自动聚合。
选中后直接通过 send_emoji_message(wxid, md5, total_length) 发原生表情,不是当普通图片发。
仍保持你现在的发送通道和聊天刷新逻辑。
主要改动文件:

后端接口与发送支持:contacts.py
表情资源查询:message_storage.py
前端表情面板与发送交互:contacts_management.html
新增接口:

GET /contacts/api/emojis:返回聚合后的表情库(md5、total_length、预览图)。
POST /contacts/api/send_message 新增 type=emoji。
我也做了 Python 语法检查,相关后端文件都通过了。
你可以直接在聊天弹窗里点“表情”试一下。如果表情库为空,通常是该群还没落盘到 image_path,让媒体下载功能先抓几条表情就会出现。
2026-04-15 11:29:18 +08:00
liuwei d326ad164f 改动结果:
聊天窗口工具栏新增了“表情”按钮,打开表情库弹窗。
表情库会从历史“已下载落盘的表情消息”里自动聚合。
选中后直接通过 send_emoji_message(wxid, md5, total_length) 发原生表情,不是当普通图片发。
仍保持你现在的发送通道和聊天刷新逻辑。
主要改动文件:

后端接口与发送支持:contacts.py
表情资源查询:message_storage.py
前端表情面板与发送交互:contacts_management.html
新增接口:

GET /contacts/api/emojis:返回聚合后的表情库(md5、total_length、预览图)。
POST /contacts/api/send_message 新增 type=emoji。
我也做了 Python 语法检查,相关后端文件都通过了。
你可以直接在聊天弹窗里点“表情”试一下。如果表情库为空,通常是该群还没落盘到 image_path,让媒体下载功能先抓几条表情就会出现。
2026-04-15 11:24:46 +08:00
liuwei 47f8bd5717 改动结果:
聊天窗口工具栏新增了“表情”按钮,打开表情库弹窗。
表情库会从历史“已下载落盘的表情消息”里自动聚合。
选中后直接通过 send_emoji_message(wxid, md5, total_length) 发原生表情,不是当普通图片发。
仍保持你现在的发送通道和聊天刷新逻辑。
主要改动文件:

后端接口与发送支持:contacts.py
表情资源查询:message_storage.py
前端表情面板与发送交互:contacts_management.html
新增接口:

GET /contacts/api/emojis:返回聚合后的表情库(md5、total_length、预览图)。
POST /contacts/api/send_message 新增 type=emoji。
我也做了 Python 语法检查,相关后端文件都通过了。
你可以直接在聊天弹窗里点“表情”试一下。如果表情库为空,通常是该群还没落盘到 image_path,让媒体下载功能先抓几条表情就会出现。
2026-04-15 11:21:32 +08:00
liuwei 96f50d929b 关键调整:
social_short 从“1句 + 1条”改成“最多2句 + 最多2条”,允许续发,避免戛然而止。
qa_fast / qa_with_context 也改为允许分条续发,避免中间硬断。
smart_clip 的弱标点回看窗口从 4 提高到 12,更容易切在自然停顿处(逗号/顿号等)。
同步更新了长度规则文案:明确“必要时可拆两条,保证语义完整”。
你给的这句原文在新逻辑下会优先拆成两条,而不是第一条被截到“我听着怎么这”这种半句。
2026-04-15 10:52:33 +08:00
liuwei 5ce60cbd95 我已经把群总结这块从“前 120 字硬砍”改成了“关键句提炼 + 更高上限”。
已改文件:

context_builder.py
具体优化:

原来:
group_memory_summary 超过 120 字就直接 summary[:117] + "...",很容易把后面的关键结论截掉。
现在:
新增 _compact_group_summary(...)。
先按句拆分,再给句子打分,优先保留包含“结论/风险/报错/配置/策略/优化”等关键词的句子。
同时保留首句和末句,避免上下文断裂。
最终摘要上限提高到 420 字、最多 6 句,再做兜底截断。
prompt 字段名也改成 群长期摘要关键句,让模型更明确这是提炼后的重点。
2026-04-15 10:37:27 +08:00
liuwei 265f3835b4 已按你说的改成“命中即跳出 + 后台入队处理”,插件调度仍然是独占策略,没有做并行插件处理。
主要改动在 main.py:

process_message(...) 现在只做入队,立刻返回 True, "queued",主链路立即释放。
原来的完整处理逻辑迁到 _process_message_impl(...),由后台 worker 消费队列执行。
新增队列 worker 循环 _message_worker_loop(...),并在 start()/stop() 管理生命周期。
增加 _ensure_workers_started(),避免插件在无事件循环阶段 create_task 报错(延迟到有 loop 时启动)。
保留了之前的 LLM 防阻塞措施:to_thread + semaphore + timeout。
配置也加在 config.toml 的 [runtime]:

llm_max_concurrency = 3
llm_call_timeout_sec = 120
queue_worker_count = 2
queue_maxsize = 500
已做语法校验:py_compile 通过。
2026-04-15 10:23:05 +08:00