编辑记忆
ID:20260517-002
创建:2026-05-17 00:27:22
更新:2026-07-01 06:08:25
主题 topic
类型 type(单选)
未分类
Milestone
Commitment
Turning Point
Deep Talk
Interaction Moment
Preference
Real World
Lesson
可同时选择多个,保存后会存成逗号分隔字符串。
标签 tags
重要程度 importance,1 到 10
内容 content
## 一、卡片字段 ### 数据库字段(memory.db memories表) id(TEXT PK, YYYYMMDD-NNN) / ai_scope / source_conversation_id / topic / content / tags / importance(1-10) / type(8项单选) / entities(JSON数组,已冻结) / last_used_at / use_count / created_at / updated_at / embedding(768维) 其他表:memory_history(快照,每卡限2条)/ entity_dict(已冻结)/ dialogues(对话暂存) ### type 分类(8项单选) | type值 | 含义 | |--------|------| | milestone | 关系里程碑 | | commitment | 约定/承诺 | | turning_point | 感受或认知转向 | | deep_talk | 深度谈话 | | interaction_moment | 日常高光瞬间 | | preference | 稳定生活偏好 | | real_world | 现实重要事件 | | lesson | 不能再犯的错 | ### entities 字段(已冻结 2026-05-16 02:47) - remember 工具不再要求填写 entities - 写入时默认 [] - 检索时不再使用 EntityOverlap 和 EntityFieldMatch - entity_dict 表不再更新 - 前端已隐藏 entities 显示 - 数据库字段和表保留不删,存量数据不清理,以后规模扩大可恢复 ## 二、写入 - **唯一路径**:AI通过 remember 工具主动写入 - 后端自动生成 id、时间戳、embedding - **前端管理页写入**:/memory/new 和 /memory/edit 已补齐 embedding 生成(2026-05-16),维度768 - **前端提示**:写入中"📝 正在写入记忆…" → 完成"✓ 已记录"+卡片标题 - **注意**:长卡片建议在管理页手动改,不要让 AI 用 update_memory,因为 tool use 循环会把整张卡片内容在上下文中复制两遍,token 开销巨大 ## 三、检索与注入 ### 检索架构 双路并行:向量余弦相似度 + 关键词LIKE → 合并去重 ### 注入流程 召回候选 → 硬过滤(排除当前对话写入的卡片)→ FinalScore打分 → 阈值0.50过滤 → MMR去重 → 注入0~滑块上限条(默认3) ### search_memory 返回 - 每条记忆返回时携带 embedding 字段(768维数组),供 ref 自动判定使用 ### 注入记录 - gateway.db messages 表新增 injected_memories 字段(TEXT) - 存储格式:JSON数组,每项含 id 和 topic,如 [{"id":"20260516-003","topic":"新屋基础信息"}] - 记录在 role='user' 的消息上(检索发生在处理用户消息时) - 前端:AI 消息下方显示 🤖 图标(无注入则不显示),点击展开/收起注入的记忆卡片 topic 列表 - 纯展示,不跳转 ### FinalScore 公式(2026-05-16 02:47 更新) ``` FinalScore = 0.50*Relevance + 0.20*TypeFit + 0.15*Importance_norm + 0.15*Recency Relevance = 0.70*VectorSim + 0.30*KeywordScore KeywordScore = 0.90*ContentMatch + 0.10*TagMatch Importance_norm = importance / 10 ``` ### Intent 分类(5项最终版) seeking / reflective / casual / deep_discussion / practical ### TypeFit 矩阵(5-intent最终版) ``` TYPEFIT_MATRIX = { "milestone": {"seeking": 0.6, "reflective": 0.7, "casual": 0.3, "deep_discussion": 0.5, "practical": 0.2}, "commitment": {"seeking": 0.5, "reflective": 0.7, "casual": 0.3, "deep_discussion": 0.5, "practical": 0.3}, "turning_point": {"seeking": 0.8, "reflective": 0.8, "casual": 0.3, "deep_discussion": 0.8, "practical": 0.2}, "deep_talk": {"seeking": 0.8, "reflective": 0.8, "casual": 0.3, "deep_discussion": 1.0, "practical": 0.3}, "interaction_moment": {"seeking": 0.5, "reflective": 0.5, "casual": 1.0, "deep_discussion": 0.3, "practical": 0.3}, "preference": {"seeking": 0.3, "reflective": 0.4, "casual": 0.7, "deep_discussion": 0.4, "practical": 0.8}, "real_world": {"seeking": 0.4, "reflective": 0.5, "casual": 0.4, "deep_discussion": 0.4, "practical": 1.0}, "lesson": {"seeking": 0.9, "reflective": 0.9, "casual": 0.2, "deep_discussion": 0.7, "practical": 0.2}, } ``` ### Recency 衰减 - NO_DECAY_TYPES(lesson)→ 永远1.0 - importance >= 9 → 1.0 - created_at或last_used_at 30天内 → 1.0 - 以上均不满足 → max(0.2, exp(-days_since_active/30)) ### MMR 去重 - 普通:λ=0.75 - 高价值(NO_DECAY_TYPES):λ=0.85 ## 四、ref 自动判定(2026-05-17 00:44 更新) ### 旧机制(已废弃) - 要求 AI 在回复末尾手写 `<!--ref:ID1,ID2-->` 标记 - 问题:AI 回复情绪性内容时频繁漏标,ref 提示指令会污染回复质感 - 已删除:ref 提示指令、`<!--ref:...-->` 正则解析、前端清理逻辑 ### 新机制:后端余弦自动判定 - **时机**:AI 回复流式完成后,异步执行,不阻塞 SSE 流 - **流程**: 1. 拿本轮 injected_memories 列表及其 embedding(search_memory 返回时已携带) 2. 对 AI 完整回复文本调一次 get_embedding(Gateway 本地能力) 3. 对每张注入卡片,算回复 embedding 与卡片 embedding 的余弦相似度 4. 相似度 ≥ REF_COSINE_THRESHOLD(0.35)的卡片 ID,收集调一次 ref_update 5. 无卡片超阈值则不调用 - **余弦计算**:纯 Python,不依赖 numpy - **日志**:`[REF] auto ref: {card_id} cosine={sim:.4f}` / `[REF] no cards above threshold` - **原则**:注入不等于使用,只有内容相关的卡片才续命,防止虚假续命 - **开销**:1次 embedding API + 最多1次 MCP ref_update 调用 ## 五、embedding - Embedding:Qwen3-Embedding-0.6B,硅基流动 https://api.siliconflow.cn/v1 - 统一 768 维 - MCP 服务(embedding_utils.py):768(常量 EMBED_DIMS) - Gateway 前端管理页(/memory/new、/memory/edit):768 ## 六、已完成清单 - ✅ lesson NO_DECAY_TYPES(2026-05-16) - ✅ entities 冻结(2026-05-16 02:47) - ✅ 前端管理页 embedding 生成补齐(2026-05-16) - ✅ 空向量回填(2026-05-16,4条) - ✅ 摘要管理栏加入 /memory 页面(2026-05-16) - ✅ ref 标记指令从 system prompt 移至记忆注入区块末尾(2026-05-16 20:36) - ✅ 注入记录存储 + 前端 🤖 图标展示(2026-05-16 21:44) - ✅ 前端管理页 embedding 维度修复 256→768 + 5张坏向量回填(2026-05-17 00:00) - ✅ ref 机制从 AI 手动标记改为后端余弦自动判定(2026-05-17 00:44) - ⏳ 根骨提示词重写(持续修改中)
首页
聊天
房间
记忆
设置