Commit Graph

806 Commits

Author SHA1 Message Date
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
55c3b951d5 修复群总结转图假死:增加阶段进度日志与超时保护
变更项:1) 移除图片渲染前截断,保持完整内容转图。2) 群总结转图增加总超时,超时后快速降级文本,避免任务长期阻塞。3) markdown_to_image 增加每10秒进度心跳日志,定位卡在 markdown_to_html 或 html_to_image。4) 分阶段超时与阶段开始日志完善,解决无错误无进度的问题。
2026-04-17 09:16:26 +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
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
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
014985ac4a feat(plugin-schedule): add DB-driven plugin scheduler and xiuren scheduled push 2026-04-16 15:24:23 +08:00
liuwei
f0414e0dff feat(plugin): support auto bot injection and file-based hot reload 2026-04-16 13:54:56 +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
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
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
liuwei
28e038a25c member_context: split daily weekly monthly digest scheduling 2026-04-14 10:53:46 +08:00
liuwei
7df4bd216f feat: gate media downloads by group and retry douyu checks 2026-04-13 15:53:34 +08:00
liuwei
ce9726d37d fix: improve douyu scheduled check error logging 2026-04-13 14:48:45 +08:00
liuwei
2a79c5cb3e refactor: tighten group member change filtering 2026-04-13 13:04:58 +08:00
liuwei
e2b19c0614 refactor(ai_auto_response): relax short reply truncation 2026-04-13 09:55:23 +08:00
liuwei
b10ec3493a feat(message_summary): beautify overview stats pills 2026-04-13 09:54:42 +08:00
liuwei
8ccf96d6de 优化一下总结布局 2026-04-13 09:35:29 +08:00
liuwei
0f0acc1729 feat(message_summary): add group overview stats section 2026-04-13 09:18:44 +08:00
liuwei
0e3eda8865 tune(ai_auto_response): shorten llm replies 2026-04-13 09:05:41 +08:00
liuwei
4e7a8e6798 fix(ai_auto_response): clean think noise from parsed fields 2026-04-10 17:06:13 +08:00
liuwei
52392edcc0 fix(ai_auto_response): sanitize dify wrapped think output 2026-04-10 16:59:18 +08:00
liuwei
f3354d39a8 fix(ai_auto_response): keep complete social short replies 2026-04-10 16:54:12 +08:00
liuwei
0c90c5d74f fix(ai_auto_response): avoid forced split of single short replies 2026-04-10 16:51:11 +08:00
liuwei
5e80287530 切换到dify,还是不要直连,dify更方便 2026-04-10 16:41:14 +08:00
liuwei
f96e891ad9 tune(ai_auto_response): loosen short reply limits for persona flavor 2026-04-10 13:45:50 +08:00
liuwei
a1aa05e3b9 feat(ai_auto_response): add admin-controlled persona switching 2026-04-10 13:15:35 +08:00
liuwei
c280fa8dab rebalance ai_auto_response participation tuning 2026-04-10 10:44:10 +08:00
liuwei
3f9ae6442d tighten ai_auto_response participation and spam guard 2026-04-10 09:56:34 +08:00
liuwei
d2856bee2e soften ai_auto_response group domain steering 2026-04-10 09:45:39 +08:00
liuwei
ef283c1818 tune ai_auto_response short reply and followup gating 2026-04-10 09:39:33 +08:00
liuwei
a67b8c296d update message summary default time range 2026-04-10 09:27:08 +08:00
liuwei
42b2014f12 unify plugin llm clients on shared utils layer 2026-04-10 09:13:42 +08:00
liuwei
a99bbcca39 add ai_auto_response llm client compatibility shim 2026-04-10 09:06:53 +08:00
liuwei
c0620e6cee shrink ai_auto_response prompt pipeline 2026-04-10 09:04:22 +08:00
liuwei
f580c69736 refactor ai_auto_response plugin architecture 2026-04-09 17:46:30 +08:00
liuwei
cc65378544 feat(ai_auto_response): handle image follow-up more safely 2026-04-09 10:06:39 +08:00
liuwei
3900d38952 fix(douyu): compact long audience trends adaptively 2026-04-09 09:52:19 +08:00
liuwei
5dfc17f811 fix(douyu): aggregate audience trend by minute 2026-04-09 09:50:21 +08:00
liuwei
867ed0a2ec feat(douyu): add audience trend chart to daily report 2026-04-08 17:03:43 +08:00
liuwei
8909b8c386 fix: avoid clipping douyu report shadows 2026-04-08 14:55:29 +08:00
liuwei
7e93ca730f feat: refine douyu active user display 2026-04-08 14:44:44 +08:00