Memory原理探索

每个用户的记忆路径是:

/users/alice/facts               ← Alice 的长期事实(跨所有会话)
/users/bob/facts                 ← Bob 的长期事实(与 Alice 完全隔离)

/summaries/alice/session-001     ← Alice 第1次会话摘要
/summaries/alice/session-002     ← Alice 第2次会话摘要
/summaries/bob/session-001       ← Bob 第1次会话摘要

{actorId} 就是 user_id,每个用户的记忆在 AWS 服务端完全隔离。

上节演示时为什么能记住 Sarah

两次 agentcore invoke 之间 sleep 2m,说明是跨会话的记忆恢复:

第1次调用: “My name is Sarah…”

   → LLM 识别出用户信息
   → 写入 /users/{actorId}/facts: "name=Sarah, prefers email, bought Smart Watch"
   → 写入 /summaries/{actorId}/{sessionId}: 本次对话摘要

第2次调用: “Do you know anything about me?”

   → session_manager 从 /users/{actorId}/facts 拉取记忆
   → 将 Sarah 的信息注入 Agent 上下文
   → LLM 直接"记得"Sarah 是谁

而这个用户都是同一个,设置成了default-user

image-20260401141452895

多用户场景下怎么区分

调用方(前端/API Gateway)携带身份信息

        │
​        ├── 已认证用户 → user_id = "user-uuid-alice"  (来自 JWT / OAuth)
​        ├── 已认证用户 → user_id = "user-uuid-bob"
​        └── 未认证    → user_id = "default-user"  (fallback,共享记忆,不推荐生产使用)

在生产环境中,user_id 通常来自:

  • JWT Token 中的 sub 字段
  • OAuth 认证后的用户 ID
  • API Key 绑定的账户 ID

而上一节 CLI 演示 (agentcore invoke) 默认使用了同一个 user_iddefault-user),所以两次调用都读到了同一份记忆。

我们可以尝试拉取这个memory中的内容:

aws bedrock-agentcore list-memory-records \
  --memory-id CustomerSupport_SharedMemory-2IMMdyFo0n \
  --namespace "/users/default-user/facts" \
  --region us-east-1

{
    "memoryRecordSummaries": [
        {
            "memoryRecordId": "mem-a456ad8f-b30e-41af-a913-2509f3262526",
            "content": {
                "text": "Sarah recently bought a Smart Watch."
            },
            "memoryStrategyId": "SharedMemory_Semantic-lQWrQw2voW",
            "namespaces": [
                "/users/default-user/facts"
            ],
            "createdAt": "2026-04-01T13:45:23.467000+08:00",
            "metadata": {
                "x-amz-agentcore-memory-recordType": {
                    "stringValue": "BASE"
                }
            }
        },
        {
            "memoryRecordId": "mem-ee05b8fc-0c52-4c50-8bc5-00016af6c268",
            "content": {
                "text": "The user's name is Sarah."
            },
            "memoryStrategyId": "SharedMemory_Semantic-lQWrQw2voW",
            "namespaces": [
                "/users/default-user/facts"
            ],
            "createdAt": "2026-04-01T13:45:23.467000+08:00",
            "metadata": {
                "x-amz-agentcore-memory-recordType": {
                    "stringValue": "BASE"
                }
            }
        },
        {
            "memoryRecordId": "mem-ca4f1eb5-9580-4b45-8a43-86089665de6c",
            "content": {
                "text": "Sarah prefers email updates."
            },
            "memoryStrategyId": "SharedMemory_Semantic-lQWrQw2voW",
            "namespaces": [
                "/users/default-user/facts"
            ],
            "createdAt": "2026-04-01T13:45:23.467000+08:00",
            "metadata": {
                "x-amz-agentcore-memory-recordType": {
                    "stringValue": "BASE"
                }
            }
        }
    ]
}

查看所有用户:

aws bedrock-agentcore list-actors \
  --memory-id CustomerSupport_SharedMemory-2IMMdyFo0n \
  --region us-east-1|jq

目前只有default-user:

image-20260401141314300