View a markdown version of this page

内存 - Amazon Bedrock AgentCore

内存

安全带会自动将对话状态保留在AgentCore 内存中。每次调用时,对话都会被保存,并按会话 ID 进行限定(如果提供,还会按参与者 ID 进行限定)。在使用相同会话 ID 的后续调用中,代理的历史记录会在启动之前从内存中加载——即使在底层 microVM 会话过期之后,它也会记住前几回合中发生的事情。您无需自己传递之前的消息;只需发送新消息即可。

记忆的工作原理

  • Short-term 内存会捕获会话中的原始事件(消息、工具调用)。这就是使代理在回合之间保持连续性的原因。

  • Long-term 记忆通过可配置的策略(语义摘要用户偏好情节自定义)提取持久知识,并在以后的会话中通过语义搜索来检索这些知识。

  • Acto@@ r ID 标识与代理交互的实体(用户、其他代理或系统)。内存事件的作用域由 actorID + sessionID 确定,因此每个角色都有独立的内存。 Long-term 检索使用 actorID 作为命名空间路径中的模板变量(例如/summary/{actorId}/{sessionId}/),映射到配置的内存策略。

托管内存(默认)

默认情况下,该工具会自动为AgentCore 内存实例配置合理的默认值(语义+摘要策略,30 天事件到期)。你不需要创建或配置任何东西——内存可以正常工作。

要在创建时自定义托管内存,请执行以下操作:

AWS CLI/boto3
aws bedrock-agentcore-control create-harness \ --harness-name "MyHarness" \ --execution-role-arn "arn:aws:iam::123456789012:role/MyHarnessRole" \ --memory '{"managedMemoryConfiguration": {"strategies": ["SEMANTIC", "SUMMARIZATION", "USER_PREFERENCE"], "eventExpiryDuration": 60}}'

要更新现有安全带的策略,请执行以下操作:

aws bedrock-agentcore-control update-harness \ --harness-id "MyHarness-UuFdkQoXSL" \ --memory '{"optionalValue": {"managedMemoryConfiguration": {"strategies": ["SEMANTIC", "SUMMARIZATION", "USER_PREFERENCE", "EPISODIC"]}}}'
AgentCore CLI

创建安全带时,默认启用内存:

agentcore create --name myagent agentcore deploy

要跳过托管内存:

agentcore create --name myagent --no-harness-memory
Interactive

在项目目录agentcore中运行,选择添加,然后选择Harn ess。该向导包括内存步骤。

  1. 在 “内存” 步骤中,选择 “无永久内存” 或 “启用”,为安全带创建永久内存。

    内存步骤:无永久内存或已启用
  2. 启用内存后,高级设置中会出现一个额外的内存调整选项。使用空格键将其启用,然后按 Enter 调整检索。

    高级设置:内存调整选项
  3. (可选)设置消息数量、检索前 K 和相关性分数(可以跳过每个分数)。

    内存调整:消息数量、前 K、相关性分数

确认向导,然后运行agentcore deploy以应用。

托管内存完全由安全带管理:

  • 策略配置通过控制UpdateHarness。您仍然可以直接通过内存 API 来查询 read/write 事件和记录。

  • 托管内存不能直接通过内存 API 删除。要将托管内存转换为常规 AgentCore 内存资源,可以通过两种方式将其与安全带断开关联:

    • 用于切换UpdateHarness到 BYO (agentCoreMemoryConfiguration) 或禁用。

    • 改为将删除传递deleteManagedMemory=false给取消关联——默认情况下,DeleteHarness级联删除托管内存。

可用策略

Strategy 说明

SEMANTIC

从对话中提取事实知识,可通过语义搜索检索。

SUMMARIZATION

创建按参与者和会话划分范围的持续对话摘要。

USER_PREFERENCE

捕获对话期间表达的用户偏好和设置。

EPISODIC

将重要事件和经历记录为独立剧集。

添加现有内存 (BYO)

如果您需要的高级配置超出了托管内存提供的范围(自定义命名空间模板、KMS 加密或跨多个线束共享内存),请改为连接现有的AgentCore 内存实例。

AWS CLI/boto3

创建内存实例:

aws bedrock-agentcore-control create-memory \ --name "MyMemory" \ --event-expiry-duration 30 \ --description "Memory for my harness"

将其固定在安全带上:

aws bedrock-agentcore-control update-harness \ --harness-id "MyHarness-UuFdkQoXSL" \ --memory '{"optionalValue": {"agentCoreMemoryConfiguration": {"arn": "arn:aws:bedrock-agentcore:us-west-2:123456789012:memory/MyMemory-abc123"}}}'
AgentCore CLI
agentcore create --name myagent --memory-arn "arn:aws:bedrock-agentcore:us-west-2:123456789012:memory/MyMemory-abc123" agentcore deploy

禁用内存

要完全禁用内存:

aws bedrock-agentcore-control update-harness \ --harness-id "MyHarness-UuFdkQoXSL" \ --memory '{"optionalValue": {"disabled": {}}}'

Per-user 使用演员 ID 进行内存范围界定

actorId在调用时传递,将内存范围限定为特定用户。每个演员都有孤立的短期和长期记忆:

response = client.invoke_harness( harnessArn=HARNESS_ARN, runtimeSessionId=SESSION_ID, actorId="user-123", messages=[{"role": "user", "content": [{"text": "What do you remember about my preferences?"}]}], )

Long-term 内存检索

当线束具有活动内存策略(托管或 BYO)时,检索会自动工作——安全带从内存实例的活动策略中派生出检索配置。每次调用时,代理都会查询相关的长期记忆,并在推理之前将其注入对话上下文中。

默认行为

  • 检索是使用每个活动策略的命名空间的默认参数 (topK=10,relevanceScore=0.2) 自动配置的。

  • 无论是托管内存还是自带内存,都无需手动配置。

覆盖默认值:如果您在 BYO 内存配置retrievalConfig中明确提供,则您的值将优先考虑,并且不会自动推导。这使您可以自定义查询哪些命名空间,调整topK或禁用特定relevanceScore策略的检索。

aws bedrock-agentcore-control update-harness \ --harness-id "MyHarness-UuFdkQoXSL" \ --memory '{"optionalValue": {"agentCoreMemoryConfiguration": {"arn": "arn:aws:bedrock-agentcore:us-west-2:123456789012:memory/MyMemory-abc123", "retrievalConfig": {"/facts/{actorId}/": {"topK": 5, "relevanceScore": 0.5, "strategyId": "FactExtractor-abc123"}}}}}'
重要

如果您在将 BYO Memory 实例连接到安全带后更新了该实例的策略(添加或删除),请调用UpdateHarness刷新检索配置。对于托管内存,策略会通过自动UpdateHarness刷新配置来改变。

上下文截断

当对话历史记录超出模型的上下文窗口时,该工具会应用截断策略。在安全带上进行配置,或者在每次调用时进行覆盖。

  • sliding_window(默认)-保留最新的 N 条消息。简单且可预测。

  • summarization-将较旧的消息压缩为摘要,用更少的标记保留更多的上下文。

  • none-没有截断。只有在您自己管理上下文大小时才使用。

aws bedrock-agentcore-control update-harness \ --harness-id "MyHarness-UuFdkQoXSL" \ --truncation '{"strategy": "sliding_window", "slidingWindowConfig": {"numMessages": 30}}'

了解更多:AgentCore 记忆创建记忆库长期记忆策略