docs/memory/context.mdx
对话上下文是 Agent 的短期记忆,包含当前会话中的所有消息(用户输入、Agent 回复、工具调用及结果)。合理管理上下文对于 Agent 的推理质量和成本控制至关重要。
每一轮对话由以下消息组成:
用户消息 → Agent 思考 → 工具调用 → 工具结果 → ... → Agent 最终回复
一轮中可能包含多次工具调用(Agent 的决策步数由 agent_max_steps 控制),所有工具调用和结果都会保留在上下文中,直到被压缩或裁剪。
| 参数 | 说明 | 默认值 |
|---|---|---|
agent_max_context_tokens | 上下文最大 token 预算 | 50000 |
agent_max_context_turns | 上下文最大对话轮次 | 20 |
agent_max_steps | 单轮对话最大决策步数(工具调用次数) | 15 |
可通过 config.json 或对话中的 /config 命令修改。
当上下文超出限制时,系统会自动执行压缩以释放空间。整个过程分为多个阶段:
在每次决策循环开始前,系统会检查历史轮次中的工具调用结果。超过 20000 字符 的工具结果会被截断,仅保留首尾内容和截断说明。当前轮次的工具结果不受影响。
当对话轮次超过 agent_max_context_turns 时:
裁剪轮次后,如果 token 数仍超出预算:
当模型 API 返回上下文溢出错误时:
对话消息会持久化到本地数据库,服务重启后自动恢复。恢复策略:
max(3, max_context_turns / 6) 轮对话在对话中可以使用以下命令管理上下文:
| 命令 | 说明 |
|---|---|
/context | 查看当前上下文统计(消息数、角色分布、总字符数) |
/context clear | 清空当前会话上下文 |
/config agent_max_context_tokens 80000 | 调整上下文 token 预算 |
/config agent_max_context_turns 30 | 调整上下文轮次上限 |