Commit Graph

2308 Commits

Author SHA1 Message Date
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
liuwei
4cf5a05088 这次实际改的是按钮背后的同步逻辑,不是页面文案本身。现在 /contacts/api/update 触发后会:
个人联系人、公众号:已存在就跳过,不存在才写入。
群:不再删库重建,已有群保留;新群会写入。
群成员:已存在就跳过,不存在就写入。
如果成员这次不在群里了,会把 db/contacts_db.py 里的 status 标成 2,前端会显示“已退群”。
如果整个群查不到了,也不再删除群资料,只把该群历史成员标记为“已退群”。
改动在:

robot.py
db/contacts_db.py
我还做了语法校验,py_compile 通过。需要的话我也可以继续帮你把“更新通讯录”按钮的成功提示改成更明确,比如“已完成增量同步,未删除历史数据”。
2026-04-15 09:28:44 +08:00
liuwei
28e038a25c member_context: split daily weekly monthly digest scheduling 2026-04-14 10:53:46 +08:00
liuwei
1800ae585a fix: show group plugin stats in detail dialog 2026-04-13 17:16:38 +08:00
liuwei
299a32fa16 feat: add real detail views for stats pages 2026-04-13 17:09:21 +08:00
liuwei
29dc59c3f1 style: improve plain button contrast across dashboard 2026-04-13 16:21:49 +08:00
liuwei
7df4bd216f feat: gate media downloads by group and retry douyu checks 2026-04-13 15:53:34 +08:00
liuwei
d581b9650e feat: improve system message display in dashboard 2026-04-13 15:30:33 +08:00
liuwei
fc43321f94 chore: keep traceback out of debug logs 2026-04-13 15:05:13 +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
f7da70e920 chore: drop local emoji test artifacts 2026-04-13 12:22:22 +08:00
liuwei
7ee5ba93ab fix: support spaced emoji media attributes 2026-04-13 12:21:06 +08:00
liuwei
45d97b2989 feat: preview emoji media in message list 2026-04-13 12:10:37 +08:00