Yuki-QQbot 3.5.1
Yuki-QQbot 3.5.1 发布说明
3.5.1 将长期记忆从“检索后直接注入”扩展为可观测、可衰减、可强化的自适应生命周期,同时
把自动召回、显式读取和写入变更拆成互斥路径。普通回复不再为记忆使用归因等待额外模型请求,
记忆修改也只能依据真实工具回执对外确认。
结构化意图与有界召回
- Planner 在既有一次调用中输出记忆访问方式、召回模式、目的、可信主体提示、实体、绝对时间
范围、偏好类型和请求数量,不增加第二次 Planner 或 rerank 模型。 - 后端先解析真实发送者、当前群、回复、提及和 SELF 可见性;Planner 提示只参与软加分,不能
产生新身份目标或扩大合法检索范围。 - 召回顺序为
FTS / Semantic → RRF → Intent/Activation → MMR → Context Budget,精确命中
和显式偏好继续保留,低 Activation 的高相关旧记忆仍可召回。 - 自动召回按 background、continuation、recall/verify/correct、overview 分别限制为 3、4、6、8
条,每目标最多 4 条;显式工具读取和 Plugin/管理搜索不使用该自动注入限额。
Activation、归因与强化
- Episode、Fact、Preference 和 Explicit 默认半衰期分别为 14、60、120、365 天;读取时计算
指数衰减,不后台改写真实性状态,也不以 Activation 作为硬过滤条件。 - Recall Receipt 记录 candidate、selected、injected、used、reinforced 阶段和数值分数,不保存
用户问题、回复正文或记忆正文,并由维护任务按 30 天保留期清理。 - 主 Agent 不再暴露
report_memory_usage。正文或对应语音发送成功后,进程内 Worker 使用 Flash
对本轮 Exposure 做白名单归因,再异步标记 used 并通过 revision CAS 强化。 - 新前台模型请求可抢占尚在推理的后台归因;队列满、超时、非法输出或重启只跳过本轮强化,
不阻塞聊天,也不改变事实有效性。
读取与写入互斥
- Memory Access 分为
none / automatic / tool / mutation。自动召回首轮不暴露 Memory Scope,
显式读取不自动注入,写入轮次只开放经过权限、来源和风险检查的memory/write_state能力。 - 创建、纠正、撤回和恢复由独立 mutation 完成门收束;未调用写工具、noop、contest、歧义或
未找到时,模型正文不能覆盖真实结果,撤回只称为失效并保留审计记录。 - Locator 支持稳定 key、旧正文、分类和 fact ID。用户可见标签误填为内部 key 时,只返回最多
三条合法候选供 fact ID 重试,不能跨人物、跨群、绕过 SELF 或执行模糊变更。 - DeepSeek 不支持
tool_choice,因此 Chat Completions 和 Responses 请求体始终省略该字段;
正确性由能力隔离、事务回执和后端完成门保证。
数据库与兼容性
- Alembic
0035将last_used_at原值迁移为last_injected_at,新增 Activation State 和 Recall
Receipt;0036仅迁移后台归因配置键,不持久化归因任务或聊天正文。 - Plugin API 保持
1.1;Plugin Memory Facade、管理搜索、Dream、Evidence、Conflict、Mutation
和基于last_confirmed_at的真实性生命周期保持既有语义。 - 升级前建议备份当前镜像和
data/qq_ai_bot.db,再执行alembic upgrade head。
验证
ruff format --check .、ruff check .、mypy src通过。- 全量测试 1111 passed、1 skipped;跳过项为需要显式外部凭据的 Qwen Embedding 在线测试。
- Memory Quality 18/18 cases、38/38 gates 通过,跨人和跨群污染门保持为 0。
- 生产环境完成 SQLite 备份与完整性检查、0036 迁移、Bot 健康和 OneBot 连接核验;真实测试覆盖
创建、自动读取、显式工具读取、纠正、撤回及不存在目标,数据库状态与 mutation receipt 一致。