> ## Documentation Index
> Fetch the complete documentation index at: https://docs.soloent.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# 合理运用上下文窗口

> 理解上下文窗口的上限与成本，用任务隔离、会话压缩和文档沉淀让长篇创作既省 token 又稳定

## 什么是上下文窗口？

每个会话窗口都有上下文长度限制。在对话框上方可以看到当前窗口已使用的上下文量，例如下图中的 **30.2k / 300.0k**——左侧是已使用的会话大小，右侧是当前会话的上下文上限。

<img src="https://mintcdn.com/soloent/4RpSHkUFmW5kEqcF/assets/images/zh/faq_context.png?fit=max&auto=format&n=4RpSHkUFmW5kEqcF&q=85&s=7b003aaadbb9e0855fb6b283b828e56b" alt="对话框上方的上下文进度条，显示已使用 38.5k，上限 128.0k" style={{ width: '70%', maxWidth: '520px', display: 'block' }} width="928" height="530" data-path="assets/images/zh/faq_context.png" />

## 上下文的上限设置

单个会话的上下文上限由模型能力决定，目前主流大模型的最大上下文已支持到 1M。SoloEnt 支持根据需要，把单个会话的上下文上限设置到合理水平。

<img src="https://mintcdn.com/soloent/4RpSHkUFmW5kEqcF/assets/images/zh/ctx_limit.png?fit=max&auto=format&n=4RpSHkUFmW5kEqcF&q=85&s=e284387ffd12206a23d716ef916b9dd2" alt="模型设置中的「上下文窗口」下拉，可在 300K 与 1M 档位之间选择" style={{ width: '55%', maxWidth: '460px', display: 'block' }} width="844" height="532" data-path="assets/images/zh/ctx_limit.png" />

<Warning>
  **窗口大小并非越大越好。** 过大的窗口会导致模型注意力分散，尤其在反复探索和修改任务时，性能反而下降。
</Warning>

* **建议控制在 200K–300K**。
* 主流实践：参考 Codex Cloud 等成熟 Agent 产品的经验，通常只使用第一档（200K–300K）上下文，极少使用更高档位。

## 为什么不推荐单窗口用满 1M 上下文

<AccordionGroup>
  <Accordion title="单会话长期使用的成本激增风险">
    很多用户认为单窗口使用能带来缓存优势，但部分模型存在**按会话大小的阶梯收费**机制，单会话过长时会带来成本激增的风险。

    <Note>
      举例：某些模型在 256K 以下的输入/输出为一档价格，超过 256K 后会显著上涨，存在明显的阶梯式涨价。
    </Note>
  </Accordion>

  <Accordion title="缓存机制的不确定性">
    虽然大部分新模型提供良好的缓存机制（命中缓存可能仅收取 1/5 至 1/10 的费用），但**跨天或长时间间隔**的会话会导致缓存失效，使单次请求消耗大量 token。
  </Accordion>

  <Accordion title="换模型 = 带着大量上下文重新开始">
    在单个窗口进行到一定程度后换模型执行任务时，新模型实际上需要读完旧模型积累的全部上下文，可能一次性消耗较大的会话额度，非常不经济。**切换模型前务必先对前续会话做一次总结。**
  </Accordion>
</AccordionGroup>

## 最佳实践

切换窗口意味着放弃当前窗口的会话记录，让不少用户感到可惜；但过于依赖单窗口在实践中既不经济，也难以保证长期上下文的质量。

* **任务隔离原则**：建议"一个会话只做一件事"，任务完成后核对完成情况。
  * 下一个任务有关联性：先总结当前会话、落地到项目文件（如 `SOLOENT.md`），再开新会话继续。
  * 下一个任务关联性不强：果断开启新会话，避免历史 token 堆积。
* **使用会话压缩功能**：当会话内容堆积过多时，用 `/compact` 命令把当前内容总结为简短概要，作为新会话的初始输入——既保留核心信息，又降低 token 消耗。

<img src="https://mintcdn.com/soloent/4RpSHkUFmW5kEqcF/assets/images/zh/ctx_compact.png?fit=max&auto=format&n=4RpSHkUFmW5kEqcF&q=85&s=0e0bd83c7c5e54224843e4c9f1d7a2c1" alt="对话框输入 /compact 时弹出的默认命令提示：将当前会话压缩以释放上下文空间" style={{ width: '70%', maxWidth: '520px', display: 'block' }} width="992" height="434" data-path="assets/images/zh/ctx_compact.png" />

* 上下文占用超过约 **200K** 后继续使用，可能带来成本激增；一般建议单个窗口到 **100–150K** 就在合适时机考虑新开窗口。

### 开新窗口前，务必总结与文档沉淀

1. **长篇小说创作**：在项目中用 `/init` 生成 `SOLOENT.md`，把角色、大纲、当前进度等关键上下文写入其中。每次开新窗口，模型都能通过读取 `SOLOENT.md` 快速恢复项目全貌，而不依赖单一会话积累的上下文。
2. **讨论较多时**：如果你和 Agent 有大量讨论导致上下文占用过高，可在切换新窗口（或新模型）前，要求 Agent 对当前讨论做一次汇总，并把结论落地成一个可读文档。切换后先读取该文档，即可快速了解前文。

<CardGroup cols={2}>
  <Card title="SOLOENT.md 指南" icon="file-lines" href="/zh/tips/SoloEnt">
    用记忆文件承载长期上下文，让每个新会话快速恢复项目全貌
  </Card>

  <Card title="命令 Commands" icon="terminal" href="/zh/tips/commands">
    了解 `/compact`、`/init` 等内置命令的用法
  </Card>
</CardGroup>
