稷然如此

  • 首页
  • 文章分类
    • AI
    • Android
    • Java
    • Golang
    • Shell
    • Vue
    • C#
    • Python
    • 数据库
    • 组件
    • 其他
    • Game
  • 常用命令
    • Docker
    • Git
    • Linux
  • 操作系统
    • CentOS
    • Ubuntu
    • Windows
    • Kylin
    • Euler
  • 工具
    • IntelliJ IDEA
    • Visual Studio Code
稷然如此
不积跬步,无以至千里
  1. 首页
  2. 文章分类
  3. AI
  4. 正文

关于 AI 对话上下文压缩之不完全指北

2026年5月22日 5点热度 0人点赞

Codex 长对话 Context 压缩与最佳实践

一、为什么会出现 Token 爆炸

在 Codex、Claude Code、Cline、RooCode 等 Agent 工具中,真正消耗 Token 的通常不是用户输入,而是:

  • 历史对话
  • 系统 Prompt
  • 工具 Schema
  • RAG 检索内容
  • 代码扫描
  • XML / SQL / 日志
  • Reasoning 推理

尤其是以下开发场景:

  • Spring Boot
  • 达梦数据库(DM8)
  • Oracle
  • Vue3 + TypeScript
  • 大型 SQL
  • Mapper XML
  • 长日志排错

这些都属于高 Token 密度内容。


二、为什么输入很少,累计 Token 很大

例如:

累计 Token:852.1M
输入:76.8M
输出:4.0M

原因:

  • 模型会重复发送历史消息
  • Agent 会重新扫描代码
  • 工具调用会返回大量 JSON
  • Reasoning 模型会产生隐藏推理 Token
  • 长上下文会不断重复进入 Attention

因此:

真实内部 Token
可能是用户可见 Token 的 5~20 倍

三、真正正确的做法

不要依赖无限长对话。

最佳实践:

短 Session
+
阶段性总结
+
AGENTS.md 永久规则
+
SESSION.md 状态恢复

四、最佳 Context 压缩时机

推荐阈值

Context 使用率 状态 建议
0% ~ 50% 安全 正常开发
50% ~ 70% 开始变重 准备压缩
70% ~ 85% 风险区 立即 compact
85% 以上 高危 容易降智 / 遗忘

五、如何判断模型已经开始“失忆”

1. 开始重复读文件

Reading UserService.java...
Reading UserService.java...
Reading UserService.java...

说明模型已经装不下旧上下文。

2. 忘记之前的约束

例如:

你刚说:
达梦不能用 limit

结果模型又生成:

LIMIT 10

说明重要上下文已经被挤出。

3. 重新分析整个项目

我先分析一下项目结构...

说明模型已经忘记架构。

4. Tool Call 明显变慢

通常是 Context 已经过长。

5. 开始输出大量废话

为了确保系统稳定性,我们可以进一步优化...

但没有真正代码。

说明有效上下文已经严重稀释。


六、最重要:不要依赖自动 compact

自动 compact 会:

  • 丢失细节
  • 丢失 Tool Output
  • 丢失架构决策
  • 多轮 compact 后质量明显下降

因此:

不要一直聊到 95%
再 compact

正确做法:

60% ~ 70%
主动生成阶段摘要

七、正确工作流(非常重要)

Step 1:阶段结束后生成状态摘要

例如:

  • 修完 Redis
  • 修完 SQL
  • 修完 CORS
  • 修完分页

让 Codex 输出:

当前工作状态摘要

Step 2:保存为 SESSION.md

project/
├── AGENTS.md
├── TASK.md
├── SESSION.md
├── TODO.md
└── docs/

Step 3:开启新 Session

/new

Step 4:恢复上下文

请先阅读:

1. AGENTS.md
2. TASK.md
3. SESSION.md

然后继续开发。

八、AGENTS.md 的真正用途

AGENTS.md 用于保存:

  • 架构规则
  • 代码规范
  • SQL 规范
  • 数据库兼容性
  • 接口约束

示例:

# SQL Rules

- 禁止 select *
- 达梦兼容优先
- LISTAGG 替代 GROUP_CONCAT
- 分页统一 ROW_NUMBER()

# Backend Rules

- Controller 不写业务逻辑
- Result<T> 统一返回

九、SESSION.md 的真正用途

SESSION.md 不是聊天记录。

而是:

可恢复工作状态

推荐内容:

  • 当前目标
  • 已完成内容
  • 修改过的文件
  • 当前 Bug
  • 架构决策
  • 下一步计划

十、推荐的 Context 压缩 Prompt

请生成“可恢复工作状态摘要”,用于新 Session 恢复上下文。

保留:

1. 当前任务目标
2. 已完成内容
3. 关键架构决策
4. 修改过的文件
5. 未解决问题
6. 下一步计划
7. 关键错误日志

要求:

- 使用 markdown
- 使用 checklist
- 不要解释过程
- 不要自然语言总结
- 保留精确路径
- 保留关键 SQL
- 控制在 1200 token
- 输出必须适合 AI 继续接手开发

十一、真正最省 Token 的技巧

不是压缩聊天。

而是:

限制扫描范围

错误:

分析整个项目

正确:

只分析:

- UserMapper.xml
- UserService.java

不要扫描其他目录

这个通常能节省几十倍 Token。


十二、推荐 Session 时长

任务类型 建议时长
普通聊天 2~3小时
SQL 排错 30~60分钟
大型重构 1小时
Debug 30分钟

十三、最终推荐工作流

AGENTS.md         ← 永久规则
TASK.md           ← 当前目标
SESSION.md        ← 阶段状态
TODO.md           ← 待办事项
ARCHITECTURE.md   ← 架构说明

每次新 Session:

请先阅读:

1. AGENTS.md
2. TASK.md
3. SESSION.md

理解后继续开发。

十四、核心结论

长对话的问题,不是 Token 贵。

而是:

模型会逐渐失忆

因此:

短 Session
+
阶段摘要
+
文件化状态
+
限制扫描范围

才是目前 Agent 编程最稳定的方案。

标签: AI token
最后更新:2026年5月22日

Akim

犇 骉 古法 AI 双修者 Java、C#、Python、Go、Android、Vue、Bootstrap

点赞
< 上一篇
文章目录
  • Codex 长对话 Context 压缩与最佳实践
    • 一、为什么会出现 Token 爆炸
    • 二、为什么输入很少,累计 Token 很大
    • 三、真正正确的做法
    • 四、最佳 Context 压缩时机
      • 推荐阈值
    • 五、如何判断模型已经开始“失忆”
      • 1. 开始重复读文件
      • 2. 忘记之前的约束
      • 3. 重新分析整个项目
      • 4. Tool Call 明显变慢
      • 5. 开始输出大量废话
    • 六、最重要:不要依赖自动 compact
    • 七、正确工作流(非常重要)
      • Step 1:阶段结束后生成状态摘要
      • Step 2:保存为 SESSION.md
      • Step 3:开启新 Session
      • Step 4:恢复上下文
    • 八、AGENTS.md 的真正用途
    • 九、SESSION.md 的真正用途
    • 十、推荐的 Context 压缩 Prompt
    • 十一、真正最省 Token 的技巧
      • 限制扫描范围
    • 十二、推荐 Session 时长
    • 十三、最终推荐工作流
    • 十四、核心结论

Copyright © 2026 aianran.com All Rights Reserved.

免责申明 | 隐私政策 | 服务条款 | 关于我们

黔ICP备2023008200号-1

贵公网安备 52010202003594号