Skip to content

feat: 统一关闭 Agent 的用户记忆召回,支持配置恢复 - #773

Merged
origami-chen merged 6 commits into
MemTensor:v1.2.6from
origami-chen:cjq_dev/disable_user_memory_recall
Oct 28, 2026
Merged

origami-chen merged 6 commits into
MemTensor:v1.2.6from
origami-chen:cjq_dev/disable_user_memory_recall

Conversation

@origami-chen

Copy link
Copy Markdown
Collaborator

变更说明

概述

本 PR 在 Memory 服务统一入口默认关闭独立 UserMemory 向 Agent 的直接返回和上下文注入,覆盖 Memmy 自身 Agent,以及通过 hook、插件、skill 或 CLI 接入同一服务的 Codex、Claude、DSH、WorkBuddy 等外部 Agent。

主要修改:

  1. 新增 memmyMemory.algorithm.enableUserMemoryRecall,默认 false;支持通过 MEMMY_ENABLE_USER_MEMORY_RECALL 覆盖并热加载恢复。
  2. 自动召回和主动搜索统一排除 UserMemory,Agent 可见的候选、命中和丢弃记录也不携带该类型;响应增加 user_memory_recall:disabled 状态。内部仍保留用于采集确认、去重和纠错的候选。
  3. 在原有适用范围内保留普通记忆 ceil(1.5 × limit) 的候选名额,不转移 UserMemory 预算;最终返回上限、相关性筛选和上下文预算保持原规则。
  4. 按开关状态隔离 turn.start 和 memory.search 的幂等缓存,避免关闭后重放此前包含 UserMemory 的结果。

其它修改:

  1. 修复 smoke 测试样本与新版 Codex、Claude、Cursor 数据格式及异步采集流程的兼容问题,并为前端记忆标题测试补齐 async/await。
  2. 队列候选检查按完整 SQL 缓存预编译语句,每个存储实例在自己的数据库连接内最多保留 32 条,淘汰最久未使用项;每次执行仍绑定最新参数并读取当前状态,不缓存资格判断结果。

用户记忆的采集、管理页面查看和维护继续可用。L1 历史对话、L3 项目上下文等间接包含的用户信息不在本次隔离范围。SQL 缓存补丁未在本次构建中复测性能提升幅度。

关联问题:MEMMY-416

变更类型

  • 功能新增
  • 问题修复

测试情况

基线:6b40c5f7,macOS arm64,Node 22.23.2、npm 10.9.8。

  • 召回开关、候选名额、队列调度和租约相关回归:7 个文件、168 项通过。
  • SQL 缓存补充检查:7 项通过,覆盖参数更新、实时状态、租约到期、连接隔离、缓存淘汰和向量重试时间变化。
  • npm run lint、npm run typecheck。
  • 三组 smoke 命令完整通过:smoke:memory-layer、smoke:local-agent-memory、smoke:local-agent-memory:cursor;计划及 HTTP 测试分别 10、6、6 项通过(两个本地 Agent 命令重复执行同组 6 项测试)。
  • 前序全量失败后单独补跑 agent:test:tui-cursor:5 项通过。
  • 根目录 npm test 已执行,但首次运行在 Memory 阶段有 3 项大队列测试超时,未整体通过;两份失败测试以单 worker 原阈值复跑,77 项通过。
  • 发布流程:31 项通过、5 项跳过;打包检查:129 项通过、1 项跳过;契约测试 8 项、OpenCode 集成 24 项通过。
  • 使用 VITEST_MAX_WORKERS=2 MEMMY_APP_EDITION=cn npm run workspace:test 补跑完整 workspace 测试;Memory 超时消失,backend 保留 2 项本地版本配置差异。
  • backend 的 cloud-client.test.ts 用临时国内版测试配置单独复跑,28 项通过;没有修改本地 .env 或仓库测试配置。

Workspace 补跑结果:

范围 通过 失败 跳过
Migrations 279 0 1
Memory 2647 0 2
AgentSourceCore 65 0 0
Knowledge 48 0 0
Backend 1030 2 0
Local API contracts 57 0 0
Frontend 2795 0 0
Desktop 1308 0 126

首次超时位于 queue-scheduling-baseline.repro.test.ts 的 2 项测试和 worker-event-loop-yield.test.ts 的 1 项测试,单 worker 复跑及限制为 2 workers 的 Memory 全量均通过。backend 的 2 项失败位于 cloud-client.test.ts,预期请求地区为 cn,但测试配置直接加载本地 .env 中的 intl;临时覆盖为 cn 后通过。

根目录脚本原本会执行 Memory 两次。此次首次执行超时中断,第二次随 workspace 补跑通过,不能将补跑结果表述为原始 npm test 整体通过。

  • macOS arm64 国内版 unsigned 安装包构建成功:App 1.2.4 / Memory 2.1.7,schema 13。
  • DMG 完整性及只读挂载核验通过;包内 240 个 Memory 编译模块与当前源码构建一致,临时数据库创建、迁移及 SQLite / sqlite-vec 加载通过。

安装包:Memmy-1.2.4-darwin-arm64-cn-unsigned.dmg,构建提交 6b40c5f7。
SHA-256:41aa2bff0aa153bc636b207c14b99175086fde30223612a3e3e4627b5a6fa1dd。
安装器放大背景图的可选替换因镜像空间不足未完成,原 DMG 保留且校验通过,调整安装器窗口大小时可能出现白边。

  • 本次安装包人工验证:启动、升级数据保留、核心召回、退出及重启。

跳过的测试单独统计,不计入通过数量。

Reviewer 检查

  • 确认独立 UserMemory 不直接进入 Agent 上下文,采集和维护继续可用。
  • 确认普通记忆候选名额及 SQL 实时状态判断符合原有规则。
  • 核对测试结果、CI 和人工安装验收记录。

@origami-chen
origami-chen merged commit 8fe8cf6 into MemTensor:v1.2.6 Oct 28, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants