Commit Graph

91 Commits

Author SHA1 Message Date
liuwei
2fe6cbb758 放宽回复长度为0到30字并降低人格提示对输出的干扰 2026-04-24 15:32:38 +08:00
liuwei
aa94687c19 去除本地回复硬裁剪并改为分段多次发送 2026-04-24 15:28:07 +08:00
liuwei
ee1532b2f5 放宽自动回复长度为自然浮动并统一30字上限 2026-04-24 15:24:48 +08:00
liuwei
66b0fe16da 拆分群昵称与正文避免话题识别被昵称污染 2026-04-24 15:19:14 +08:00
liuwei
5dc72bf7d2 放宽最近上下文到30条并取消中途截断 2026-04-24 15:12:42 +08:00
liuwei
cd2024dfb5 优化 ai_auto_response 仅回复同群最新消息
- 为同群消息引入递增序号,记录当前群的最新消息版本
- 在出队前跳过已被同群更新消息覆盖的旧消息
- 在发送前再次检查消息是否已被覆盖,避免 LLM 慢返回后补发旧回复
- 保持实现仅影响同一群内的消息时效,不干扰其他群的并行处理
2026-04-24 15:06:05 +08:00
liuwei
7cee7a99e2 优化 ai_auto_response 队列过期丢弃与超时策略
- 为 ai_auto_response 队列消息记录入队时刻,并增加消息过期丢弃机制
- 在出队前与发送前各检查一次消息是否过期,避免补发过时群聊回复
- 为 skip 日志补充 age 字段,便于观察排队老化情况
- 将 ai_auto_response 外层总超时收紧到 20 秒,并新增 message_expire_sec=12 配置
- 将 Dify auto_reply.group 请求超时收紧到 15 秒,并关闭重试以提升群聊时效性
2026-04-24 15:03:35 +08:00
liuwei
ed7af06555 修复 ai_auto_response 思考标签泄露清洗问题
- 增强 LLMResultParser 对 <think> 思考块的清洗能力
- 兼容完整的 <think>...</think> 返回
- 兼容只有开标签、没有闭合标签的不完整思考块,避免将 Thinking about your request 透传到群里
- 兼容单独残留的 </think> 碎片标签
2026-04-24 14:47:57 +08:00
liuwei
f593f5dd90 优化 ai_auto_response 模型侧定向辱骂响应策略
- 增加 directed abuse 场景识别,只作为模型输入信号,不做本地硬编码回复
- 在触发与规划层为定向挑衅场景单独标记,并强制走 social_short 短回复模式
- 将 abuse_directed 信号写入 Dify control,帮助模型稳定识别被点名挑衅场景
- 优化 Dify 主提示词与保守降级提示词,要求 abuse_directed 时默认短回且不要空掉
- 保持回复仍由模型生成,避免本地模板化回复暴露机器人痕迹
2026-04-24 14:44:33 +08:00
liuwei
058a7aec80 收紧 ai_auto_response 群内问句主动回复策略
- 为疑问句增加 question_detected 形态标记,区分问句形态与真正指向 bot 的提问
- 仅在 @bot、点 bot 名字或明确定向时才把疑问句升级为问答触发
- 阻断普通群问句通过 topic 主动接话路径进入模型,避免 bot 抢答群友互问
- 将 social call 收紧为 名字/别名 + 召唤词 的组合,减少 帮忙看/看看 等泛词误触发
- 在配置中增加 bot_name_keywords 与 social_call_verb_patterns,便于后续按人格扩展
2026-04-24 14:26:08 +08:00
liuwei
571008a04b 优化 ai_auto_response 三套人格与 Dify 工作流
- 收紧小牛、于谦、林志玲三套人格描述,使其更适合群聊短回复且保留各自特点
- 同步调整人格 preset 的 style 文案,增强三种人格的区分度
- 优化 Dify 工作流主提示词,强化 control 长度约束、按需使用记忆和严格 JSON 输出
- 下调主模型温度并将失败分支改为更保守的降级生成策略
- 修复降级分支仍指向主输出节点的问题,补充单独的降级输出节点
- 将 images 输入改为非必填,并为工作流补充中文注释说明
2026-04-24 14:21:13 +08:00
liuwei
23544dca7a 优化 ai_auto_response 拟人化短回复并统一走 Dify 链路
- 移除普通 chat 调用分支,统一通过 Dify 请求生成回复
- 收紧小牛人格描述,强化短句、熟人感和非客服式表达
- 新增提示策略,按场景启用成员记忆/群事实/向量记忆,降低记忆压迫感
- 下调回复长度与上下文压缩配置,使默认回复更接近 10 字级别
- 通过 compileall 验证 ai_auto_response 插件语法可用
2026-04-24 14:12:26 +08:00
liuwei
7b6bd19781 feat: 引入LLM场景路由与后台拓扑管理能力
变更项:

1. 新增 llm.scenes 场景路由层,支持 scene->backend 统一映射,并补充默认场景配置。

2. 扩展 LLMRegistry,新增 scene 解析逻辑;当声明 scene 时强制按场景路由结果生效,保持旧 backend 配置兼容。

3. 扩展后台 /api/system/llm_config 读写能力,支持 scenes 配置保存;新增插件 LLM 依赖扫描与拓扑数据输出。

4. 升级 system_llm 页面:新增场景路由管理区、插件依赖拓扑表,支持可视化查看 插件->scene->backend->provider。

5. 迁移核心插件配置到 scene 模式(保留兼容字段):dify/global_news/game_task/message_summary/ai_auto_response/member_context/douyu。

6. 调整部分插件初始化默认 llm_config,补充 scene 字段,确保后台场景切换可直接生效。
2026-04-20 14:36:56 +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
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
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
e2b19c0614 refactor(ai_auto_response): relax short reply truncation 2026-04-13 09:55:23 +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
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
aecb62cb4d refactor: centralize llm backend configuration 2026-04-08 13:43:41 +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
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