# 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_ban` notice 实时跟踪禁言状态,发送循环内逐条重检 - **审查模式 (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)后验证向量检索准确率 - [ ] 本地工作助手插件(承载长文本/代码生成等能力) - [ ] 跨群聊记忆完全隔离(当前后台思考仍会将各频道记忆混合后统一生成摘要)