---
title: 上下文连续性
summary: Holon 如何在不重放全部对话记录的前提下，让长期 Agent 的上下文保持连贯。
order: 12
---

# 上下文连续性

Holon 的 Agent 要跨多个轮次、唤醒、任务和模型调用持续工作。上下文连续性
是一项产品契约：它让 Agent 在不重放整份对话记录的情况下，始终看得见当前
目标、重要结果和来源。

Holon 的做法是把上下文当作运行时投影，而不是聊天日志。持久记录仍然保留，
供审计和恢复使用；每一次模型轮次只拿到经过筛选、有界的一部分“此刻重要的
信息”。

## 模型看到什么

Holon 的提示词由若干段落拼装而成，各司其职：

| 段落 | 作用 |
|---------|---------|
| **当前输入与延续锚点** | 唤醒 Agent 的事件，以及它要延续的可信操作者意图。 |
| **当前工作项** | 活动目标、持久计划、todo 列表，以及任何等待状态。 |
| **当前工作引用（work refs）** | 运行时为当前工作项推导出的引用：文件、工具、issue、PR、任务、等待、记忆记录。 |
| **相关片段记忆** | 按相关度和预算挑选的已归档完成工作。 |
| **近期运行时证据** | 直接有用时纳入的近期消息、结果简报、任务结果、工具执行和唤醒。 |
| **执行环境** | 当前工作区、运行时能力，以及作用域内的指引。 |

这些段落不是彼此竞争的事实来源，而是运行时证据的投影。持久账本仍然是审计
轨迹，提示词只是用于下一次模型决策的有界视图。当段落内容重叠时，以当前工作
项作为任务生命周期的唯一事实来源；相关片段记忆只是历史证据，不应覆盖活动
工作项的目标、计划、todo 列表或等待状态。

## 轮次是因果单元

Holon 用运行时轮次作为保持连续性的主要单位。一个轮次就是 Agent 的一次激活：
一条操作者消息、一个任务结果、一次外部唤醒、一次调度器心跳，或一次 provider
恢复尝试。

重点不只在触发源。轮次还会把发生的事情串起来：

- 引发该轮次的操作者输入或外部事件；
- 该轮次中观察到的任务结果或工具执行；
- 为操作者生成的结果简报；
- 工作项更新、等待和完成报告；
- 相关输入的来源与信任分类。

这样相关事实就能保持在一起。例如，一次 CI 唤醒可以显示为原“修复这个 issue”
请求的延续，而不是把该请求替换成最新意图。完成报告也能继续关联它完成的工作
项，而不是变成一段无关的总结。

## 投影不是截断对话记录

简单的截断在上下文窗口填满后丢掉最旧的文本。对长期 Agent 来说这远远不够：
旧文本里可能有操作者最初意图、已经定下的决策、任务结果事实，或 Agent 正在
等待的原因。

Holon 用的是投影：

1. **钉住必须保持权威的内容**，例如可信操作者意图、活动工作项状态、等待和
   生命周期转换。
2. **按延续链、保留优先级和预算挑选有用的近期轮次**。
3. **折叠低价值的运行时噪声**，例如重复唤醒、重试、fallback 尝试、空转的
   调度器心跳或反复的 pending 轮询。
4. **把较早的已完成工作渲染成结构化片段**，带来源引用和权威边界。

结果是更短的提示词，同时仍保留 Agent 为何行动、已经做了什么、哪些证据支持
当前状态。这种基于轮次的上下文投影，就是 Holon 在不渲染无界对话记录的前提
下保持连续性的方向。

## 压缩保留来源

压缩是让上下文有界的手段，不是改写历史的许可。

较早的轮次范围超出热提示预算后，Holon 可以把它们归档为结构化片段。片段会
记录覆盖的轮次范围、来源轮次 ID、来源引用、决策、结果、验证、未决事项、
操作者意图和模型推断。

默认情况下，提示拼装只会召回覆盖轮次范围早于 `recent_turns` 窗口的片段。
近期轮次提供当前交互的高保真视图，片段则为不再直接展示的轮次提供压缩的中期
存档。诊断模式可以选择两者都显示，但普通提示应避免重复重放同一份轮次证据。

模型生成的摘要可以帮助描述片段，但它们只是证据，不是权威。它们不会改变输入
的信任级别、覆盖操作者意图、决定工作项状态，也不会决定什么可以丢弃。来源
引用始终可用于审计和恢复。

## 工作项、任务、简报与最终回答

连续性依赖于把运行时对象区分清楚：

- **工作项** 保存持久目标、计划、todo 列表、等待和完成状态。
- **任务** 代表受监督的命令或子 Agent。任务结果可以唤醒 Agent，并延续更早的
  操作者请求。
- **简报（Brief）** 是一个轮次产生的面向用户或面向提示词的输出。一个轮次可以
  产生多份简报，包括工作项完成报告。
- **最终回答** 是操作者就当前交互看到的内容。它们是投递产物，不是唯一的记忆
  机制。

这些对象通过轮次相互关联，因此 Agent 可以回答“那个 issue 我们做了什么”或
“你为什么在等待”，而不用搜索非结构化的对话记录。

## 面向用户的契约

用户可以依赖这些行为：

- 当前目标和可信操作者意图在唤醒和任务结果延续之间保持可见；
- 活动工作项状态被当作权威运行时状态；
- 压缩保留来源，不会悄悄抹平信任边界；
- 已完成的工作可以通过片段记忆和完成报告召回；
- 提示上下文有界，因此旧的对话文本不会总是被重放。

内部的精确 schema、token 预算和保留评分属于实现细节。对外的契约是：Holon
通过有类型的运行时证据保持连续性，而不是把聊天记录当作唯一记忆来源。

## Holon 如何保持工作连续

连续性让 Agent 能够先停下、之后再接着做。有三样东西跟着运行时走，而不是跟着你的
客户端走：

- **Agent** 保留自己的身份、指导文件和记忆。
- **目标** 作为工作项被持续跟踪，连同计划和进度。
- **执行** 作为任务继续运行，即使客户端已经断开。

重新连上时，你看到的是当前状态，而不是从头重放。工作结束时，结果以简报的形式
送到你面前。你不需要一直开着终端，工作也会继续。

## 另见

- [运行时模型](/zh-CN/concepts/runtime-model.md) — Agent、工作项、任务与唤醒
- [记忆系统](/zh-CN/concepts/memory.md) — 工作项、work refs、片段记忆、持久账本与搜索
- [信任边界](/zh-CN/concepts/trust-boundaries.md) — 来源与信任分类
- RFC：[基于轮次的上下文投影](https://github.com/holon-run/holon/blob/main/docs/rfcs/turn-based-context-projection.md)
- RFC：[长期上下文记忆](https://github.com/holon-run/holon/blob/main/docs/rfcs/long-lived-context-memory.md)
