## 你有没有遇到过这种情况?
和TRAE Work聊了半天,做了一个复杂任务,突然之间——它“失忆”了。
你问它:“刚才那个文件改好了吗?”
它说:“什么文件?我没有看到任何文件修改记录。”
你心里一沉:完了,上下文被压缩了。
如果你用TRAE Work做过稍微复杂一点的项目,大概率遇到过这个情况。今天分享我用TRAE Work做真实项目过程中,和对话压缩“攻防”的实战经验。
## 一、踩坑实录:被压缩支配的恐惧
我用TRAE Work做了一个完整项目——从网站搭建、支付系统对接到自动化工作流配置。过程中,对话压缩给我造成了至少三次严重事故。
### 事故1:修Bug修了6次全错方向
有一次网站登录功能报500错误。我和TRAE Work对话已经超过20轮,上下文里积累了大量调试信息。
然后压缩发生了。
压缩后,TRAE Work“忘记”了之前的排查过程,开始从头猜测原因。它猜是hydration问题,改了代码——不对。又猜是CSP策略,改了——还不对。又猜是loading顺序——还是不对。
来回折腾了6次,全错。
最后我打开浏览器控制台看了5秒,发现错误信息清清楚楚写着`undefined.slice()`——一个空值没做兜底。
**6次错误修复,浪费了大量积分,根因就是压缩丢失了之前的排查上下文。**
### 事故2:支付超时排查绕了10+步
又一次,微信支付页面卡在“正在生成二维码”。
上下文压缩后,TRAE Work不记得我已经检查过前端代码了,开始让我去查CSP、查Nginx配置、查数据库连接……绕了一大圈。
最后我学了乖,先SSH连服务器看PM2日志,5秒就找到了原因:`ConnectTimeoutError`——TLS握手超时。
**如果上下文没被压缩,TRAE Work应该记得我之前的排查路径,直接去看日志。**
### 事故3:排障操作把浏览器搞断了
最惨的一次。为了排查浏览器连接问题,我让TRAE Work启动了一个headless Chrome、改了注册表策略、然后杀了所有chrome.exe进程。
结果——TRAE Work内置浏览器面板的Chrome也被杀了,MCP工具完全失联,扩展未加载,browser-bridge未启动。
整个开发环境瘫痪,花了大量时间才恢复。
**根因还是压缩:TRAE Work不记得之前的操作上下文,给出了破坏性的排障建议。**
## 二、根因分析:为什么会压缩?
在论坛上看到一篇好帖[《当前AI跨对话记忆问题痛点,10个解决方案雏形》]( 当前AI跨对话记忆问题痛点,10个解决方案雏形。 ),分析得很透彻:
> 大语言模型本质上是无状态的,每次交互独立运行。当前主流方案将所有历史信息塞入有限的上下文窗口,一旦信息超出窗口边界,模型便产生“灾难性遗忘”。实践中,70%-90%的推理token被反复用于重传历史信息。
翻译成人话:**对话越长,历史消息越多,token消耗越大。达到上限后,TRAE Work会自动压缩旧消息,生成摘要替代原文。摘要必然丢失细节。**
我复盘了自己触发压缩的几个典型场景:
| 场景 | 为什么容易压缩 | 频率 |
|------|-------------|------|
| 一个对话做多个任务 | 任务切换产生大量无关上下文 | 最高频 |
| 大量工具调用(文件读取/浏览器操作) | 每次工具调用结果都进入上下文 | 高频 |
| 长代码文件反复读取 | 代码内容占用大量token | 中频 |
| 调试过程中的反复试错 | 错误尝试的上下文堆积 | 中频 |
## 三、解决方案:5层防压缩体系
踩了足够多的坑之后,我逐步建立了一套防压缩体系,从5个层面减少压缩的发生和影响。
### 第1层:Rules层——把关键规则刻进基因
在`.trae/rules/`目录下放4个核心文件:
``@@BT@
.trae/rules/
├── 核心工作原则.md # 红线+质量闸门+操作前自检
├── 教训库.md # 每错必记,不犯第二次
├── 灵感清单.md # 灵感捕获三步法
└── 在售产品速查表.md # 产品信息快速查询
``@@BT@
**关键点**:这些文件在每次对话开始时自动加载,不依赖上下文记忆。即使压缩发生了,核心规则也不会丢失。
这相当于给TRAE Work装了一个“BIOS”——不管操作系统怎么重启,BIOS里的设置始终都在。
### 第2层:交接区制度——对话级状态持久化
在项目根目录维护一个`全局状态同步档案.md`,每次对话结束前在末尾写“交接区”:
``@@BT@markdown
-–交接区—
日期:2026-08-09 18:30
任务:拼多多0转化率诊断
完成:完成竞品对比分析,确认6个根因
产出:诊断报告存于06-数据中心/01-分析报告/
下一步:准备5款主推产品的新标题和主图方案
注意:拼多多字体防抓取,数据采集需用API绕过
``@@BT@
**关键点**:新对话只需要读交接区(末尾30行),不需要读全文。交接区包含5个要素:任务、完成、产出、下一步、注意。
这相当于给TRAE Work写了一个“存档文件”——每次任务结束先存档,下次开局先读档。
### 第3层:记忆文件系统——跨对话知识沉淀
TRAE Work有内置的记忆系统(`.trae-cn/memory/`),按项目组织:
``@@BT@
.trae-cn/memory/
├── user_profile.md # 用户偏好(跨项目)
└── projects/
└── {project_id}/
├── project_memory.md # 项目级约束
├── 20260809/
│ ├── topics.md # 当日话题汇总
│ └── session_memory\_{id}.jsonl # 会话级记忆
└── 20260810/
└── ...
``@@BT@
**关键点**:记忆文件持久化存储,不受对话压缩影响。每次新对话开始,先做一次“记忆检索”——用关键词搜索相关历史记忆。
### 第4层:一对话一任务——从源头减少上下文膨胀
这是最简单但最难执行的规则:**一个对话只做一件事。**
研究/创作/发布/开发/审计,各自独立对话。如果发现当前对话已经超过10轮工具调用,立即写交接区,开新对话。
**关键点**:不是“不能做多个任务”,而是“不要在同一个对话里做”。任务之间通过交接区衔接,不通过上下文记忆衔接。
### 第5层:高效工具调用——减少上下文膨胀
每次工具调用(文件读取、浏览器操作、命令执行)的结果都会进入上下文。优化工具调用 = 减少上下文膨胀。
几个实操技巧:
- **用Grep搜索代替全文Read**:搜索关键词定位,只读匹配行,不读整个文件
- **批量调用代替逐个调用**:多个独立的文件读取放在一次请求里
- **用文件路径引用代替内容粘贴**:说“参考`src/auth.js`”而不是把代码贴进对话
- **浏览器操作后立即compact**:浏览器snapshot往往很大,用完即压缩
## 四、实战效果
建立这套体系后,改善是明显的:
| 指标 | 改善前 | 改善后 |
|------|--------|--------|
| 压缩频率 | 每个复杂任务必压缩 | 仅超长任务偶尔压缩 |
| 压缩后恢复时间 | 10-30分钟重新解释上下文 | 30秒读交接区即可恢复 |
| 重复犯错率 | 同一个坑踩2-3次 | 教训库拦截,基本不重犯 |
| 积分浪费 | 单任务浪费200-500积分 | 单任务控制在100积分内 |
## 五、总结:3条核心经验
**1. 对话不是记忆,文件才是记忆。**
所有重要状态、决策、教训,必须沉淀到文件。对话上下文是易失性的,文件是持久化的。不要依赖TRAE Work“记住”什么,而是让它“读到”什么。
**2. 压缩不可消灭,但可以管理。**
与其试图阻止压缩,不如建立“压缩后快速恢复”的机制。交接区就是为此设计的——30秒恢复上下文,比重新解释30分钟强。
**3. 每次犯错都沉淀,不犯第二次。**
建立一个教训库,每次踩坑后按“事实经过→根因分析→三问追溯→验证措施”的格式记录。下次类似情况,TRAE Work会在操作前读到教训,避免重蹈覆辙。
-–
以上是我在真实项目中积累的对话压缩攻防经验。如果你也遇到过压缩问题,欢迎在评论区交流你的解决方案。
下一篇计划分享:用TRAE Work从0到1搭建网站的全过程,敬请关注。