79b1b9a3fa
- 新增 dev-plan/15: 6-7月功能升级与修复汇总 (Platform Bridge/记忆/Thinker/群聊等) - 更新 dev-plan README: 版本日期 + 新文档索引 - 更新架构分析文档: 日期、已知限制、服务端口加入Platform Bridge - .gitignore: 开放 docs/dev-plan/ 和关键架构文档纳入版本管理 Co-Authored-By: Claude <noreply@anthropic.com>
5.1 KiB
5.1 KiB
2026年6-7月功能升级与修复汇总
日期:2026-07-07 时期:2026年6月下旬 - 7月上旬 分支:
dev
一、Platform Bridge — 多平台接入
多账号 QQ 适配器
- 平台桥接 (
platform-bridge) 负责统一管理所有第三方平台适配器 - 支持同一平台类型多个实例(如
obv11和obv11-main),通过 config name 区分 - 110+ 条官方 QQ Bot API 表情映射,支持表情名称解析
- WebSocket 连接管理:client/server 双模式、自动重连、禁言检测
群聊行为控制
- 消息发送间隔:群聊 ≥3 秒/条,最多 2 条/轮,单条 ≤500 字自动截断防封控
- 禁言检测:通过
group_bannotice 实时跟踪禁言状态,发送循环内逐条重检 - 审查模式 (group_ambient):非 @ 消息由 LLM 自主判断是否插话
- 管理员审查模式:管理员消息在 group_ambient 下仍保留工具使用权
- 消息日志:每配置独立日志文件,按
AdapterName命名
主动消息平台推送
- 后台思考生成的主动消息可通过 QQ 适配器推送到群聊/私聊
- 支持
【QQ私聊:QQ号】和【QQ群聊:群号】目标格式 ProactiveGuard统一频控,跨 Web/QQ 双通道
二、记忆系统升级
嵌入模型两级降级
| 级别 | 方案 | 配置 |
|---|---|---|
| L1 | OpenAI 兼容 /embeddings API (如 Ollama bge-m3) |
EMBEDDING_API_URL + EMBEDDING_MODEL |
| L2 | 本地 n-gram FNV 哈希向量 (0依赖) | 默认,L1 不可用时自动启用 |
- 启动时自动测试嵌入 API 可用性
- DeepSeek 等不提供 embedding 的 API 不会静默失败
- 保存记忆时同步生成向量嵌入
检索增强
- 向量检索 + n-gram 滑动窗口关键词匹配,按分数排序
- 2-4 字中文分词窗口匹配 content/summary/keywords
- pgvector
<=>余弦距离检索 8 条 + 关键词匹配 100 条去重合并
记忆归属
- persona 规则:记忆不全是开拓者的,需分辨发送者再归因
- 群聊规则:不要把群友的事说成开拓者做的
三、后台思考系统 (Thinker)
死锁修复 (11+ 轮)
- 根因:Go
sync.Mutex不可重入,defer是函数作用域非块作用域 defer t.muUnlock()在 for 循环和跨 LLM 调用时导致 self-deadlock- 修复函数:
performThink,lightThinkLoop,performLightThink,storeThought,UpdatePresence,TriggerReminderMessage,PushPlatformMessage,resetSilenceTimer,buildThinkingUserPrompt
上下文隔离
thinkSessionID绑定思考周期触发时的会话,防止跨群串台- 思考过程中其他群的消息不再覆盖 activeSessionID
- convHistory 和 thought push 均使用绑定的 session
轻量思考 + 平台观察
lightThinkLoop:高频轻量轮询(~60s),简短状态确认/话题发起platformThink:定期(~600s)聚合各频道记忆生成平台观察摘要
四、对话引擎 (Orchestrator + Synthesizer)
群聊人格强化
- #1 审查模式:非 @ 消息由 LLM 判断是否回复,支持
【不发送】自我审查 - #2 回复长度:最多 1-2 句,允许多段落但需双换行分隔
- #3 闭嘴服从:识别"别说话""闭嘴"等指令,持续遵守
- #4 发送者识别:根据消息前缀中的昵称称呼对方
- #5 简体中文:强制输出简体中文,防止群友繁体昵称传染
- #6 拒绝长内容:禁止生成代码/长文,告知等待本地工作助手插件
- #7 记忆归因:不同人的言行分清,不张冠李戴
- #8 禁用数字 ID:用昵称而非 QQ 号称呼人
管理员功能
- 多层防御:
AdminOnly字段 → plugin manager 自动拦截 → IoT provider 执行级检查 - 身份提示:管理员以名字标注,数字 UID 从昵称中移除
- 权限区分:设备控制/系统管理等 admin-only 工具对非管理员温柔拒绝
工具系统
- 后台工具结果自动推送(成功/失败),失败结果不再触发 LLM 跟进避免噪音
- 工具名称输出过滤(
vision_analyze,web_search等) - 双换行消息拆分
五、搜索与其他
web_search (SearXNG)
- 引擎精简为
bing+sogou(移除 baidu 安全验证拦截 + 360 不稳定) - 超时 25s,SearXNG 内部 timeout=20s
- 添加 User-Agent
LLM API
- HTTP 连接池:
MaxIdleConns=100,MaxIdleConnsPerHost=20,IdleConnTimeout=90s TLSHandshakeTimeout=15s防止握手卡死
降级回复
- 仅在管理员私聊时发送降级消息,群聊静默避免怪话
六、新增环境变量
| 变量 | 默认值 | 说明 |
|---|---|---|
EMBEDDING_API_URL |
LLM_API_URL |
嵌入 API 地址,可指向 Ollama 等独立服务 |
EMBEDDING_MODEL |
text-embedding-3-small |
嵌入模型名 |
PLATFORM_BRIDGE_URL |
http://localhost:8095 |
platform-bridge 地址 |
七、已知待办
- 嵌入 API 接入真实模型(Ollama bge-m3)后验证向量检索准确率
- 本地工作助手插件(承载长文本/代码生成等能力)
- 跨群聊记忆完全隔离(当前后台思考仍会将各频道记忆混合后统一生成摘要)