管理上下文压缩
压缩把较早的对话整理成一条摘要,同时保留近期轮次,让长任务继续留在同一个会话中。它只改变后续请求使用的会话表示,不会把内容保存成长期 Memory。
配置自动压缩
修改设置前,先打开已有会话,将鼠标悬停在输入区模型控件旁的百分比指示器 上下文用量(Context usage) 上,保持悬停以阅读详情;点击不会将面板固定展开。面板显示占用比例、已用和最大 token 数;有相应数据时,还会显示输入、输出、推理、缓存用量及 输出预留(Output reserve)。不是每个模型响应都会提供全部明细。
输出预留是留给回答的空间,不是已经生成的输出量。出现 将在下次请求前压缩(Will compact before next request) 时,表示待执行的操作,并不代表摘要已经完成。打开面板不会执行压缩。没有这个控件时,表示当前没有可展示的上下文用量数据,不能理解为上下文空间无限。
打开 设置 → 对话行为 → 自动压缩:
| 控件 | 含义 |
|---|---|
| 启用自动压缩 | 在上下文接近限制时自动尝试摘要。 |
| 触发阈值 | 达到所选上下文占用比例时触发;越低越早。 |
| 保留近期消息 | 按最近的用户轮次边界保留,不是简单按消息气泡数量截断。 |
Ghast 还会尽量保留至少约 16% 的近期 token 尾部,因此实际保留内容可能多于设置的轮次数量。
修改控件后点击 保存;在此之前,开关只改变草稿。保存设置用于后续压缩,不会立即运行一次压缩。范围、默认值与真实设置截图见对话行为。
自动触发不只看百分比
自动压缩会在以下任一条件满足时尝试:
- 估算或 Provider 返回的上下文占用达到触发阈值;
- 即使尚未达到阈值,继续请求已经不足以预留模型最大输出空间。
因此,某次对话可能早于滑块百分比压缩。上下文用量菜单是判断接近上限的入口,但最终触发还会考虑模型窗口、系统说明、Tool / Skill 描述、附件和输出预留。
手动运行
在 Chat 或编码输入框单独发送:
/compact
命令必须单独发送,不要在后面附加要求:/compact 保留全部代码 不会触发手动压缩。应在已有历史的会话中操作,而不是从空会话开始。
Ghast 会尝试压缩当前会话,并清空输入框中的命令。成功后刷新消息和上下文用量,不另行弹出成功提示。没有可压缩的早期内容,或摘要不能节省足够空间时,处理可能结束而没有可见变化。
如果错误提示 Not enough messages to compact,先继续对话,积累历史后再尝试;反复发送命令不会增加历史。摘要模型的 Provider 缺失或被禁用时,应先修正模型与 Provider 配置。关闭自动压缩后仍可手动运行。
在以下时机手动压缩:
- 一个阶段已经结束,准备进入下一阶段;
- Tool 输出很长,但后续只需要结论;
- 切换目标前希望保留决定并缩短历史;
- 上下文用量已经很高,不想等待自动触发。
会保留什么
摘要会尽量保留:
- 当前目标、明确限制和完成标准;
- 已作出的决定;
- 文件、命令和外部对象等关键标识;
- 已完成工作、失败原因和剩余步骤;
- 最近的用户轮次;
- 仍有效的任务契约。
压缩不是逐字归档。长日志、重复过程、完整 Tool 输出和早期措辞可能只剩摘要结论。需要逐字保留的内容应写入文件或在压缩后重新附加。
压缩后立即复核
压缩完成后的下一条消息建议包含:
请先复述当前目标、不能做的事、已完成项、未完成项和下一步。
如果摘要中缺少任何关键文件、账号或验收条件,先停下来指出。
继续前核对:
- 目标是否仍是当前目标;
- 禁止项和授权范围是否完整;
- 路径、分支、账号、环境和目标对象是否正确;
- 哪些结论已验证,哪些只是待确认;
- 下一步是否会重复已经执行的外部动作。
失败与冷却
自动摘要失败时,Ghast 保留原始上下文,并进入约 60 秒冷却,避免每次请求立即重复失败。自动失败事件不一定在界面显示错误;如果用量持续很高且没有摘要变化,可等待一分钟后手动运行 /compact。
手动尝试失败时:
- 重试前保留完整错误文本。
- 检查当前会话是否已选择模型,以及对应 Provider 是否启用且配置正确。见配置 Provider。
- 如果错误指出摘要 Provider 缺失或被禁用,反馈时附上该错误原文。自动压缩设置卡片没有摘要模型选择器;修改无关的后台任务模型不是这里的修复步骤。
- 遇到网络或服务错误,先恢复连接或解决 Provider 报错,再尝试压缩。原因未解决前,不要反复发送命令。
编码使用同一套 Chat 压缩链路。Team 会话还会按自己的历史投影和工作线程边界准备上下文,不能把这里的“保留近期消息”设置直接当成 Team 的完整历史规则。
压缩与 Memory
| 目标 | 使用 |
|---|---|
| 让当前长对话继续 | 压缩 |
| 在未来会话复用稳定事实 | Memory |
| 保留完整日志或可审计证据 | 文件、原始消息或目标系统记录 |
不要用 Memory 替代当前任务状态,也不要把压缩摘要当作完整审计日志。