Commit Graph
100 Commits
Author SHA1 Message Date
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
liuwei ada1b656e0 feat: dedupe and schedule emoji media downloads 2026-04-13 12:06:58 +08:00
liuwei 9698f9577f feat: revamp contacts chat workspace 2026-04-13 11:47:34 +08:00
liuwei e20d57b291 chore: remove legacy robot navigation copy 2026-04-13 11:21:00 +08:00
liuwei f52ace9487 refactor: merge group permissions into contacts 2026-04-13 11:18:59 +08:00
liuwei ec6c1308db feat: add group detail dashboard insights 2026-04-13 11:04:20 +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 762b6d5252 删除测试代码 2026-04-10 16:53:13 +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 cc59447be8 切换到十号的grok 2026-04-10 16:12:55 +08:00
liuwei 29a624eb5c chore(config): update ai auto response llm endpoint 2026-04-10 13:47: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 4e2dea86af fix(dashboard): avoid blocking admin web requests 2026-04-09 09:20:47 +08:00
liuwei cf675db2da chore: remove local douyu debug artifacts from repo 2026-04-08 17:05:37 +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
liuwei b56822b196 feat: polish douyu active user cards 2026-04-08 14:36:05 +08:00
liuwei 41c8ce403c chore: adjust douyu daily report schedule 2026-04-08 14:29:03 +08:00
liuwei ea3a088c63 feat: enrich douyu daily summary cards 2026-04-08 14:26:46 +08:00
liuwei b73594975d fix: restore douyu core active users in daily reports 2026-04-08 14:23:52 +08:00
liuwei 772f45cb2f feat: separate global llm settings from monitor page 2026-04-08 14:16:37 +08:00
liuwei 3d671c0da0 feat: improve llm settings ui and douyu daily fallback 2026-04-08 14:09:21 +08:00
liuwei 1ab0f61e2f fix: resolve dify init and douyu session errors 2026-04-08 13:57:57 +08:00
liuwei 480ebee8c7 feat: add idempotent douyu daily report command 2026-04-08 13:51:51 +08:00
liuwei 28a4911c13 chore: remove douyu local llm secrets 2026-04-08 13:45:27 +08:00
liuwei aecb62cb4d refactor: centralize llm backend configuration 2026-04-08 13:43:41 +08:00
liuwei df1939d60b chore(douyu): enable llm daily reports 2026-04-08 13:21:15 +08:00
liuwei 66f4a3e604 feat(douyu): add daily danmu report pipeline 2026-04-08 13:17:29 +08:00
liuwei 6401ec02de Refine member context profiling detail 2026-04-08 10:27:14 +08:00
liuwei fa98c9e6a5 tune xiaoniu config 2026-04-08 09:43:55 +08:00
liuwei f4715f104a adjust xiaoniu runtime config 2026-04-08 09:38:21 +08:00
liuwei 67eec32f7f unify xiaoniu topic selection and reply planning 2026-04-08 09:23:10 +08:00
liuwei 8ead2c43bf stabilize xiaoniu anti-spam and silent defenses 2026-04-08 08:53:47 +08:00
liuwei 1671bea3a3 fix: fallback quoted image lookup by md5 2026-04-07 17:58:34 +08:00
liuwei d99f1a07d1 fix: only use downloaded media paths for quoted images 2026-04-07 17:50:08 +08:00
liuwei f9417a201f fix: prefer local quoted media paths in dashboard 2026-04-07 17:46:55 +08:00
liuwei 238e478f52 fix: reuse referenced message media in dashboard quotes 2026-04-07 17:44:15 +08:00
liuwei e823c1049f fix: proxy quoted media in dashboard messages 2026-04-07 17:40:10 +08:00
liuwei 867f00435c feat: improve quoted message rendering in dashboard 2026-04-07 17:35:03 +08:00
liuwei 3d56b3895a harden xiaoniu defenses and directed cooldowns 2026-04-07 17:26:13 +08:00
liuwei 02bde14d52 improve xiaoniu reply chunk splitting 2026-04-07 16:48:00 +08:00
liuwei 9545664318 relax xiaoniu reply planner gating 2026-04-07 16:31:29 +08:00
liuwei c8a7958e2b move xiaoniu runtime logs to debug 2026-04-07 16:25:34 +08:00
liuwei 96432039cc add retry for xiaoniu api requests 2026-04-07 16:17:58 +08:00
liuwei 2b6deff4ba filter invalid xiaoniu model echoes 2026-04-07 16:06:52 +08:00
liuwei 271954cfbb adjust xiaoniu runtime config 2026-04-07 16:04:33 +08:00
liuwei 58faa4322c fix xiaoniu mention gating and vector memory config 2026-04-07 16:00:31 +08:00
liuwei fabcb92f3f use richer member memory in xiaoniu replies 2026-04-07 15:47:32 +08:00
liuwei 0ac08c45c0 tune xiaoniu address style by group 2026-04-07 15:38:52 +08:00
liuwei a29b625bc6 refine xiaoniu natural name mentions 2026-04-07 15:37:01 +08:00
liuwei 19d2938870 improve xiaoniu recipient cues and name-prefixed replies 2026-04-07 15:32:38 +08:00
liuwei 9e95b805ec require directed questions for xiaoniu replies 2026-04-07 15:21:45 +08:00
liuwei 5ca9a8d1d9 tune xiaoniu low-frequency social interjections 2026-04-07 14:52:38 +08:00
liuwei 5a02121ace allow multi-part replies for xiaoniu qa responses 2026-04-07 14:39:41 +08:00
liuwei 42feb29a40 add dota2 match history boundary for xiaoniu 2026-04-07 14:12:48 +08:00
liuwei daf5170008 tune xiaoniu mention reply behavior 2026-04-07 14:09:31 +08:00
liuwei acf3177571 use latest group image for xiaoniu image followups 2026-04-07 14:00:08 +08:00
liuwei 7c12738967 add multimodal quote handling for xiaoniu bot 2026-04-07 13:51:15 +08:00
liuwei 61edbbe987 fix: simplify emoji message display in dashboard 2026-04-07 13:29:35 +08:00