

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 内存
<a name="harness-memory"></a>

启用内存后，安全带将在[AgentCore 内存中保持对话状态](memory.md)。在使用相同会话 ID 的后续调用中，代理会在启动之前加载存储的历史记录。

## 记忆是如何工作的
<a name="_how_memory_works"></a>
+  **Short-term 内存**捕获会话中的原始事件（消息、工具调用）。这就是使代理在各个回合之间保持连续性的原因。
+  **Long-term 记忆通过可配置的策略（[语义](semantic-memory-strategy.md)、[摘要](summary-strategy.md)、[用户偏好](user-preference-memory-strategy.md)、[情景或](episodic-memory-strategy.md)[自定义](memory-custom-strategy.md)）**提取持久的知识，并使其可在以后的会话中通过语义搜索进行检索。
+  **Actor ID ** 标识与代理交互的实体（用户、其他代理或系统）。内存事件的作用域由 actorId \+ SessionId 控制，因此每个 actor 都有独立的内存。 Long-term 检索使用 ActorId 作为命名空间路径（例如`/summary/{actorId}/{sessionId}/`）中的模板变量，映射到配置的内存策略。

## 托管内存
<a name="_managed_memory"></a>

当您直接使用服务 API 创建工具并省略内存配置时，该服务会提供托管内存。 AgentCore CLI 使用不同的默认值：除非您选择托管内存或现有内存资源，否则新的 CLI 线束会禁用内存。

**内存充电**  
安全带本身不收取额外费用。Managed M AgentCore emory 对短期事件、存储的长期内存记录和检索请求收取标准内存费用。为避免持续的内存充电，请在创建安全带时禁用内存。有关更多信息，请参阅[了解安全带成本](harness-operations.md#harness-costs)和[亚马逊 Bedrock AgentCore 定价](https://www.amazonaws.cn/bedrock/agentcore/pricing/)。

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

**Example**  

```
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 create --project-name MyHarnessProject --no-agent
cd MyHarnessProject
agentcore add harness \
  --name myagent \
  --memory-mode managed \
  --memory-strategies SEMANTIC,SUMMARIZATION \
  --memory-event-expiry-days 30
agentcore deploy
```
默认情况下，内存处于禁用状态。要在没有内存的情况下创建安全带，请运行以下命令而不是前面的`agentcore add harness`命令：  

```
agentcore add harness --name myagent --no-memory
```
在项目目录`agentcore`中运行，选择**添加**，然后选择Harn ** ess **。该向导包括一个记忆步骤。  

1. 在 “内**存” ** 步骤中，选择 “**无永久内存” ** 或 “**启用**” 为安全带创建永久内存。  
![内存步骤：没有永久内存或已启用](https://docs.amazonaws.cn/bedrock-agentcore/latest/devguide/images/tui/harness-memory-01-memory.png)

1. 当内存处于**启用状态时**，“**高级” 设置中会出现一个额外的**内存调整**选项**。使用**空格将其启用**并**按 Enter ** 来调整检索。  
![高级设置：内存调整选项](https://docs.amazonaws.cn/bedrock-agentcore/latest/devguide/images/tui/harness-memory-02-advanced-memory-tuning.png)

1. （可选）设置消息数量、检索前 K 和相关性分数（可以跳过每个分数）。  
![内存调整：消息数、前 K 名、相关度分数](https://docs.amazonaws.cn/bedrock-agentcore/latest/devguide/images/tui/harness-memory-03-messages-count.png)
确认向导，然后运行`agentcore deploy`进行申请。

托管内存完全由线束管理：
+ 策略配置通过以下方式控制`UpdateHarness`。您仍然可以直接通过内存 API 来查询 read/write 事件和记录。
+ 无法直接通过内存 API 删除托管内存。要将托管内存转换为常规 AgentCore 内存资源，可以通过两种方式将其与工具断开关联：
  + 用于切换`UpdateHarness`到 BYO (`agentCoreMemoryConfiguration`) 或禁用。
  + 改为传递`deleteManagedMemory=false`删除权限以取消关联-默认`DeleteHarness`情况下，级联删除托管内存。

### 可用策略
<a name="_available_strategies"></a>


| Strategy | 说明 | 
| --- | --- | 
|  `SEMANTIC`  | 从对话中提取事实知识，可通过语义搜索检索。 | 
|  `SUMMARIZATION`  | 按参与者和会话范围创建持续的对话摘要。 | 
|  `USER_PREFERENCE`  | 捕获对话期间表达的用户偏好和设置。 | 
|  `EPISODIC`  | 将重要事件和经历记录为离散的情节。 | 

## 添加现有内存 (BYO)
<a name="_add_existing_memory_byo"></a>

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

**Example**  
创建内存实例：  

```
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 create --project-name MyHarnessProject --no-agent
cd MyHarnessProject
agentcore add harness --name myagent \
  --memory-arn "arn:aws:bedrock-agentcore:us-west-2:123456789012:memory/MyMemory-abc123"
agentcore deploy
```

## 禁用内存
<a name="_disable_memory"></a>

要完全禁用内存：

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

## Per-user 使用演员 ID 进行内存范围界定
<a name="_per_user_memory_scoping_with_actor_id"></a>

`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 记忆检索
<a name="_long_term_memory_retrieval"></a>

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

 **默认行为**：
+ 使用每个活动策略的命名空间的默认参数 (`topK=10`,`relevanceScore=0.2`) 自动配置检索。
+ 无需手动配置托管内存或 BYO 内存。

 **覆盖默认值：**如果您在 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`刷新配置来更改策略。

## 上下文截断
<a name="_context_truncation"></a>

当对话历史超出模型的上下文窗口时，该工具会应用截断策略。在每次调用时在安全带上进行配置或覆盖。
+  **`sliding_window`**（默认）-保留最新的 N 条消息。简单且可预测。
+  **`summarization`**-将较旧的消息压缩为摘要，以更少的标记保留更多上下文。
+  **`none`**-没有截断。仅当你自己管理上下文大小时才使用。

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

了解更多：[AgentCore 记忆](memory.md)、[创建内存存储](memory-create-a-memory-store.md)、[长期记忆策略](long-term-configuring-built-in-strategies.md)。

### 相关主题
<a name="_related_topics"></a>
+  [型号和说明书](harness-models.md)-配置模型和系统提示
+  [环境和文件系统](harness-environment.md)-环境、文件系统和自定义容器
+  [技能](harness-skills.md)-附加 Git、S3 或 Amazon 技能中的技能
+  [安全性和访问控制](harness-security.md)-内存访问的执行角色策略
+  [API 文档](harness-get-started.md#api-documentation) 