# 上下文管理

> PentAGI 如何透過摘要每個 agent 鏈中較早的部分，將長 flows 保持在模型的上下文視窗內，以及用於調整此功能的設定。

長時間的 [flows](https://pentagi.com/zh-tw/docs/glossary/#flow) 所產生的對話量，往往超出任何模型所能容納的上限。PentAGI 透過**鏈結摘要**機制，將每個 [agent](https://pentagi.com/zh-tw/docs/glossary/#agent) 的鏈結維持在合理範圍內：每當 agent 完成一輪操作後，系統會壓縮較舊的區段，而最近的區段則保持完整內容，除非其大小超過限制。若 PentAGI 從其內建的模型目錄，或從回報模型清單的自訂端點得知模型的上下文視窗，且鏈結仍無法容納，系統會在呼叫模型前再次進行壓縮。Ollama 模型及其他上下文視窗未知的模型不會執行此步驟，因此對於上下文視窗較小的模型，請降低下方的大小設定。

```mermaid
flowchart TD
  accTitle: Chain summarization steps after each agent turn and before each model call
  A[Agent turn finished] --> B[Condense each older section into one summary]
  B --> C[Keep the recent sections within their size limits]
  C --> D[Summarize old question-answer pairs]
  D --> E{Next model call: fits the context window?}
  E -->|Yes| F[Send the chain]
  E -->|No| G[Compact to the window size]
  G --> F
```

## [調整](https://pentagi.com/zh-tw/docs/concepts/context/#tuning)

預設值適用於大多數模型。Agents 與互動式 [assistant](https://pentagi.com/zh-tw/docs/glossary/#assistant) 擁有獨立的設定；assistant 會保留更多近期歷史記錄。

| 設定                                     | Agents                            | Assistant                                   |
| -------------------------------------- | --------------------------------- | ------------------------------------------- |
| 限制近期區段                                 | `SUMMARIZER_PRESERVE_LAST=true`   | `ASSISTANT_SUMMARIZER_PRESERVE_LAST=true`   |
| 近期區段大小限制                               | `SUMMARIZER_LAST_SEC_BYTES=51200` | `ASSISTANT_SUMMARIZER_LAST_SEC_BYTES=76800` |
| 單一 [tool](https://pentagi.com/zh-tw/docs/glossary/#tool) 結果最大大小 | `SUMMARIZER_MAX_BP_BYTES=16384`   | `ASSISTANT_SUMMARIZER_MAX_BP_BYTES=16384`   |
| 保留的問答區段數量                              | `SUMMARIZER_MAX_QA_SECTIONS=10`   | `ASSISTANT_SUMMARIZER_MAX_QA_SECTIONS=7`    |
| 這些區段的大小                                | `SUMMARIZER_MAX_QA_BYTES=65536`   | `ASSISTANT_SUMMARIZER_MAX_QA_BYTES=76800`   |
| 近期區段未合併                                | `SUMMARIZER_KEEP_QA_SECTIONS=1`   | `ASSISTANT_SUMMARIZER_KEEP_QA_SECTIONS=3`   |

使用 `false` 時，近期區段本身沒有大小限制，且單一工具結果限制也不適用。

`SUMMARIZER_USE_QA` 用於啟用問答策略（預設開啟），而 `SUMMARIZER_SUM_MSG_HUMAN_IN_QA` 則會同時對該策略中您自己的訊息進行摘要（預設關閉）。兩者僅適用於 agent：assistant 一律使用該策略，且從不摘要您的訊息。