🏠 home › reports › 2026-04-28-memex-v2-design-options
tags
[Sentino, Memex, AI, Agent, 记忆, 架构, 工程, v2, 优先级]
created
2026-04-28
updated
2026-04-28
status
draft
type
report
version
1

Executive Summary

2026-04-28 摄取 google-memory-bank 调研后,从 Memory Bank 设计中提炼出 4 个对 sentino-memex v2 演进有参考价值的设计点。本报告对每个借鉴点做工程级拆解(现状 / Memory Bank 做法 / 差异本质 / Memex 实施形态 / 工程量 / 业务驱动力 / 优先级),并给出整体排期建议。

核心结论

  1. 4 个借鉴点没有一个是"看到 Memory Bank 这么做就要跟"——都是 Memex 自身业务驱动的演进方向,Memory Bank 只是给了具体的 API 形态参考。脱离业务需求盲目对标是反模式。

  2. 推荐 P1 必做: - ① 两种写入姿态(CreateMemory)+ ④ source 字段(一起做)— 约 1 周 - ③ Revision History API + IAM 分级 — 约 2-3 周

  3. 推荐 P2 等触发: - ② Scope arbitrary dict — 触发条件是"第二个 agent 类型接入同一客户"或"多 agent 共享平台"出现

  4. 反建议:如果姜涛 / 子昕评估"近 3 个月无合规客户、无多 agent 共享需求",全部缓做也是合理的——Memex 当前的核心瓶颈大概率不在这 4 项上(更可能是 prompt 质量、Reinforce 命中率、合并算法),借鉴点是"给定有空闲产能时排什么"的问题,不是"必须立即对标"。

  5. 业务驱动力最强的是 ③(Revision API + IAM)——合规客户场景的硬卡点。当前 Memex 用 DB 直查糊弄审计,金融 / 医疗 / 政府客户进门第一关就过不了。

缘起

2026-04-28 用户做完 Google Memory Bank 网络调研并通过 /ingest 落入知识库后,追问"memex 借鉴点详细说明"。

知识库当时已有的内容(sentino-memex "待观察 / 改进点" 第 5 条 + google-memory-bank "对 Sentino Memex 演进的具体启示"段)只列了 4 个借鉴点的标题级摘要(约 4 行),没有: - 对每个借鉴点做工程级拆解(具体改什么 API / 字段 / 工程量评估) - 优先级排序与业务驱动力对比 - "什么前提下不应该做"的反建议

本报告的目标是把 4 个借鉴点从"概念列表"提升到"姜涛 / 子昕可以直接拿去排期的工程提案"。带作者立场(推荐 P1/P2/P3 + 反建议),不适合写入"中立 concept 页",因此独立成报告。

4 个借鉴点的原始素材

来自 google-memory-bank "对 Sentino Memex 演进的具体启示"段的 4 条原文:

  1. 两种写入姿态并列(GenerateMemories + CreateMemory)——Memex v2 可考虑增加 memory-as-a-tool 入口,让 agent 在某些场景显式写记忆(如用户说"记住这件事")
  2. Scope 是 arbitrary dict 而非二维固定——Memex 在多客户白标场景下可能需要演进到 arbitrary dict scope(不只是 userId × projectId)
  3. Memory revisions + IAM 可审计——客户合规要求场景下,Memex 需要补可审计层(DB 直查不够,需要 API 层暴露 revision 历史)
  4. Topic 概念化——Memex 当前的 4 类(event / info / schedule / ai_insight)和 Memory Bank 的 4 个 managed topics 概念近似,可对照看是否漏了重要 topic 类型

下面对每条做完整拆解。


借鉴点 ①:两种写入姿态并列(CreateMemory)

Memex 现状

单姿态被动提取——所有写入路径都是 POST /blobs/insert/{userId} 入库,靠 flush(手动 / 自动 50 个 / 10 分钟)触发 LLM 三类提取(summary / profile / reinforce)。

LLM Agent 不能主动说"记下这件事"——只能把这句话作为对话内容进 blob,等流水线判断它是否值得提取成 gist。

Memory Bank 做法

差异本质

不是"主动 vs 被动"的二选一,而是承认两种 Agent 行为模式都合法

模式 触发场景 Memex 当前处理 问题
被动学习用户 用户没意识到自己被记录,agent 在背景里提取 flush 流水线提取 OK
显式记某事 用户说"记住我对花生过敏" 当作普通对话进 blob,等流水线提取 LLM 大概率提取成 USER_PREFERENCE,但语义其实是 EXPLICIT_INSTRUCTION,强度和可信度不同

Memex 当前两种语义被压扁——用户主动说"记住 X"和 LLM 从对话推断"用户喜欢 X"在 gist 表里没有区别。

Memex 实施形态

新增 API:POST /memories/create/{userId} 直接写一条 gist(绕过 blob → summary → gist 流水线)

必填:
  - content(文本)
  - memory_type(event / info / schedule / ai_insight)
  - importance(CORE / IMPORTANT / NORMAL / TRIVIAL)

可选:
  - source = "explicit"(vs 默认 "extracted")
  - 与借鉴点 ④ 配套:source 字段同时支撑 ai_insight 类型重构

行为:
  - 写入即刻可检索,不进 PENDING 队列
  - 默认 importance=IMPORTANT(用户主动说的比 AI 推断的强)
  - 检索时 source=explicit 给更高权重

用法:
  - Sentino Agent 在 prompt 里加 createMemory tool 描述
  - LLM 检测到"记住 X / 别忘了 Y / 我跟你说过 Z"等触发短语时调用

工程量

0.5-1 周 开发: - API 端点 + 跳过流水线的写入路径(0.5 天) - gist 表加 source 字段 + 索引(0.5 天) - 检索权重调整(1 天) - Sentino Agent prompt 改造 + tool 描述(1 天) - 测试 + 联调(1-2 天)

业务驱动力

优先级建议

P1,可与 v2 第一批一起做


借鉴点 ②:Scope 演进为 arbitrary dict

Memex 现状

固定二维:userId × projectId。所有 gist 强制挂在某 user 的某 project 下,跨 project 不可见。

Memory Bank 做法

Scope 是 arbitrary dictionary,开发者自定义键值对:

Scope 形态 隔离粒度
{user_id: '123'} 用户级(跨 session 共享)
{user_id: '123', session_id: '456'} session 级(不跨 session 泄漏)
{tenant: 'walmart', user_id: '123'} 租户内用户级(多客户白标)

同一 scope 内的 memories 才参与 consolidation 和默认检索,跨 scope 仍可显式查询。

差异本质

userId × projectId写死了多租户语义:"客户 = project,终端用户 = user"。

但白标场景的真实结构是三层: - 平台(Sentino) - 客户(Walmart / Yukai / Hotmind) - 终端用户(最终 to C 的人)

当前两维表达不出"同一终端用户在同一客户的不同 agent 实例间"的隔离粒度。具体例子:

Yukai 客户内部有"陪伴 agent"和"日程 agent"两个产品。同一终端用户的"我对花生过敏"是否应当在两个 agent 间共享?现在没有 scope 维度可表达——要么强制共享(隐私问题),要么开两个 project 复制 user(数据冗余)。

Memex 实施形态

激进版:把 userId + projectId 重构为 scope JSONB,所有 query 接受任意 scope 字典做隔离过滤。 - 工程量大 - 数据迁移痛 - 兼容性破坏(所有现有 SDK 接口要重做)

保守版(推荐):保留 userId × projectId 列做主键索引,新增 scope_extra JSONB 字段做扩展维度。

默认行为不变:
  - 按 userId × projectId 隔离(现有客户零迁移)

客户需要更细粒度时:
  - 写入:POST .../insert/{userId} body 带 scope_extra: {agent_id: "companion"}
  - 查询:GET .../context/{userId}?scope_filter={agent_id:"companion"}

不破坏现有客户。

工程量

业务驱动力

优先级建议

P2,等触发条件。提前预研数据模型,但不要现在就重构。


借鉴点 ③:Memory Revisions API + IAM 分级

Memex 现状

维度 Memex 现状 问题
Audit DB 直查(PostgreSQL 表里看 gist 历史,没有应用层 API) 客户审计师拿不到
访问控制 API 层只校验 userId 归属 没有"谁能读 / 谁能写"区分
Revision history UserEventGist 是覆盖更新,改动不留历史 夜间合并把 5 条 gist 合成 1 条后,原 5 条直接消失

Memory Bank 做法

差异本质

合规客户(金融 / 医疗 / 政府)问 Sentino 三类问题:

客户问题 Memex 当前能否答
"用户某天说的话被 AI 改成什么记忆?" 答不了(合并后历史丢失)
"客服能否查终端用户记忆但不能改?" 靠 DB 权限糊弄(不优雅,客户审计过不了)
"审计师能否查所有改动而不影响生产?" 靠 DB 权限糊弄

第 1 个问题是硬卡点——没有 revision history 不可能事后补。第 2、3 个问题是软卡点——技术上 DB 权限能做,但客户审计要求"应用层 API 暴露权限模型",DB 层证明不被认可。

Memex 实施形态

a) Revision history

新增 gist_revisions 表:
  - gist_id(FK)
  - revision_no(自增)
  - content
  - importance
  - source
  - change_reason("merge" / "reinforce" / "ttl_update" / "explicit_update")
  - llm_output_snapshot(如果是 LLM 触发的变更,存当时 prompt + response 摘要)
  - created_at

写入时机:
  - 每次 update / merge / forget 写一条 revision
  - 不删原 gist
  - 合并后原 5 条 gist 状态改为 MERGED,revision 记录指向新 gist_id

新增 API:
  - GET /memories/{gist_id}/revisions → 返回 history
  - GET /memories/audit?user_id=X&from=Y&to=Z → 时间窗口内的所有变更

b) IAM 分级

API 层增加 role 概念:
  - user_token + role claim
  - 三个内置角色:
    - viewer(只读,含 revision history)
    - editor(读 + 显式写,禁触发流水线提取)
    - user(默认全权限)

客户接入时 SDK 选 token 类型决定权限。

c) 细粒度 condition(可选):

类 CEL 表达式("importance == CORE 时禁止 update")。通常合规客户不需要,过度设计——除非有具体客户提出再做。

工程量

业务驱动力

优先级建议

P1,第一批合规客户出现前必须做完。建议姜涛优先排——这是 4 个借鉴点里业务驱动力最强的一个。


借鉴点 ④:Topic 概念化对照

Memex 现状

4 类记忆类型:

类型 含义
event 事件("用户上周去了北京")
info 事实/偏好("用户在 NY")
schedule 日程("用户周三飞 SFO")
ai_insight AI 推断("用户最近压力大")

切分轴是内容性质——这条记忆描述的是什么类型的事实。

Memory Bank 做法

4 个 managed topics(+ custom topics 可扩):

Topic 含义
USER_PERSONAL_INFO 个人信息(姓名/关系/爱好)
USER_PREFERENCES 偏好("喜欢中间座位")
KEY_CONVERSATION_DETAILS 对话里程碑("我订了 JFK-SFO 往返票")
EXPLICIT_INSTRUCTIONS 明确指令("记住我对花生过敏")

切分轴是用户视角——这条记忆来自用户的什么意图 / 哪类对话内容。

差异本质

两套切分轴不正交、不对偶、不能 1:1 映射。逐对照:

Memex 类 最近的 Memory Bank topic 真实关系
event("用户上周去了北京") KEY_CONVERSATION_DETAILS 重叠但不等价——event 也包括 info/schedule 之外的所有时序事实
info("用户在 NY") USER_PERSONAL_INFO + USER_PREFERENCES Memex 把"姓名职业"和"喜好"压到一类;Memory Bank 拆成两类
schedule("用户周三飞 SFO") KEY_CONVERSATION_DETAILS Memory Bank 没有独立 schedule 类型
ai_insight("用户最近压力大") (无对应) Memory Bank 没有"AI 推断"独立类——一切都来自对话提取

两组都漏了一类

Memex 实施形态

不是"加一类"那么简单——是要重新审视切分轴:

维持现有 4 类不动(event / info / schedule / ai_insight)

新增正交维度 source(与借鉴点 ① 配套):
  - extracted(流水线提取)
  - explicit(用户明确指令)
  - ai_insight(AI 综合判断)

ai_insight 的角色变化:
  - 从一种 type 变成一个 source 标签
  - 任何 type 的 gist 都可以是 ai_insight("event 类型 + ai_insight source" = AI 推断的事件)

检索权重调整:
  - source=explicit > source=extracted > source=ai_insight
  - 用户主动说的比 AI 推断的可信

工程量

1 周(DB 加字段 + 检索权重调整 + prompt 改造让 LLM 区分 source)

业务驱动力

优先级建议

P3,不单独做,与 ① 一起做就顺手收益


论点边界

前提敏感性分析

本报告的优先级建议依赖以下默认前提。一旦前提变化,结论需要重新评估:

前提 当前判断 反转后结论变化
近 3-6 个月会有合规客户进场 是(销售在谈) ③ 降级为 P2——没有合规客户硬卡点的紧迫性消失
近 6 个月内 Sentino Agent 平台只有 1 种 agent 类型 ② 升级为 P1——多 agent 共享触发 scope 重构紧迫性
Memex 当前的 prompt 质量 / Reinforce 命中率 / 合并算法已是合格水平 不确定sentino-memex "待观察 / 改进点"前 4 条仍未结清) 全部借鉴点降级——核心瓶颈优先
Memory Bank 在 GA 后能跑出大客户案例 不确定(待观察) 跑通则 ③ 紧迫性显著上升(合规客户拿 Memory Bank 当对照标准)
Sentino 团队有空闲产能做 v2 演进 未确认 没空闲则全部缓做

不应该做的事

明确不推荐借鉴的 Memory Bank 设计点:

  1. 强制绑某个 LLM 厂商:Memory Bank 强制 Gemini 是 Google 战略选择,对 Sentino 是反向警示——Memex "不绑 LLM 厂商"是核心差异化(详见 sentino-memex "对外定位锚点"段)
  2. 扔掉 4 级 TTL × 4 类内容二维结构改成 topic 一维:Memory Bank topic 一维是为简化 API 表面做的妥协,丢失了重要度维度的精细控制——Memex 的二维结构是销售差异化论点之一
  3. 扔掉 Reinforce 改成 GENERATE_UPDATED_TTL:方向不同——Reinforce 是 prompt 主动指向已有 gist 续期(防新增),GENERATE_UPDATED_TTL 是 update 后被动续期(不防新增)。Reinforce 的抗膨胀机制更主动
  4. 扔掉夜间合并改成写入路径自动 contradiction resolution:写入路径合并需要每次写入都跑 LLM,成本高且延迟高;Memex 的夜间合并是工程权衡,不应在 v2 里被替换

反建议的具体场景

如果姜涛 / 子昕评估时出现以下任一信号,建议本报告全部 4 个借鉴点缓做

综合判断

推荐排期(如果姜涛 + 子昕只能选 2 个)

P1 - 必做(约 1 个月投入):
  ① 两种写入姿态(CreateMemory)+ ④ source 字段(一起做)— 1 周
  ③ Revision API + IAM 分级 — 3 周

P2 - 等触发:
  ② Scope arbitrary dict — 触发条件是"第二个 agent 类型接入"或"多 agent 共享平台"

撬动两个明确销售卡点:
  - 合规客户(revision + IAM)— ③ 解
  - 用户体验("记住 X" 立即生效)— ① 解

反建议(与推荐同样重要)

4 个借鉴点没有一个是"看到 Memory Bank 这么做就要跟"——都是 Memex 自己业务驱动的、Memory Bank 只是给了具体的 API 形态参考

如果姜涛说"现在没合规客户、没多 agent 需求",全部缓做也是合理的。Memex 当前的核心瓶颈大概率不在这 4 项上:

当前已知瓶颈(详见 sentino-memex "待观察 / 改进点"前 4 条) 与本报告 4 个借鉴点的关系
Reinforce 的幻觉风险(LLM 编造 gist_id) 借鉴点 ③ 间接帮助(revision 历史可追溯)
夜间合并的"重复窗口期" 无关
Vector embedding 列已建未用 无关
Profile 覆盖式更新冲突处理 无关

结论:借鉴点是"给定有空闲产能时排什么"的问题,不是"必须立即对标"。Memex 的核心瓶颈优先于借鉴点。

不变量(4 个借鉴点都不应触及)

无论选哪个借鉴点做,以下 Memex 设计不应被动摇:

  1. 不绑 LLM 厂商 — 客户多模型策略约束
  2. 4 级 TTL × 4 类内容二维结构 — 销售差异化论点
  3. Reinforce 主动续期机制 — 比 Memory Bank GENERATE_UPDATED_TTL 更主动的抗膨胀
  4. 夜间合并显式定时任务 — 写入路径不放 LLM 调用
  5. 数据主权(自建 Spring Boot 服务) — 销售根本立场

对知识库的修正记录

本报告新建 / 修改的页面:

git commit 哈希:(待审核 git diff 后由用户手动提交,本字段由 commit 后回填)

待验证 / 后续追踪

工程评估待办

数据验证待办

外部信号追踪

战略层待办

引用源

一手文献

框架与对照

知识库内部 raw 沉淀